2012-09-24 23 views
6

Tôi yêu cách tiếp cận BDD để phát triển, nhưng tôi đã gặp phải một mối quan tâm với cách xa. Nhận xét này từ Thought gần đây nhất Radar mang lại cho tôi tạm dừng:Làm cách nào để chúng tôi xử lý các hoán vị nhỏ của các tình huống BDD?

"Sự ra đời của thiết kế hành vi điều khiển (BDD) khuôn khổ kiểm tra như dưa chuột, kết hợp với các công cụ tự động hóa trình duyệt như Selenium, đã khuyến khích sử dụng rộng rãi chấp nhận kiểm tra tại Điều này không may khuyến khích làm phần lớn các thử nghiệm mà chi phí để chạy các bài kiểm tra là lớn nhất, thay vào đó, chúng ta nên kiểm tra ở mức thích hợp, càng gần mã càng tốt, để kiểm tra có thể chạy với hiệu quả tối đa. Kiểm tra trình duyệt cấp nên được đóng băng trên bánh, được hỗ trợ bởi sự chấp nhận và kiểm tra đơn vị được thực hiện ở các lớp thích hợp. "

Vì vậy, đây là kịch bản của tôi (ý định chơi chữ):

Tôi đã có một ứng dụng CRUD cơ bản với một yêu cầu kinh doanh để lọc dữ liệu hiển thị dựa trên các tiêu chí người dùng cuối được phép chọn. Để dễ dàng thảo luận, hãy nói đây là ứng dụng dành cho công ty điện lực và tôi đang hiển thị mức sử dụng năng lượng hàng tháng hiện tại cho từng khách hàng. Người dùng ứng dụng này có thể thu hẹp dữ liệu bằng cách chọn một khách hàng, nhiều khách hàng, không có khách hàng hoặc "Tất cả khách hàng". Dữ liệu được hiển thị sẽ thay đổi dựa trên những gì họ chọn.

Đối với một bên liên quan sản phẩm, chúng thực sự đại diện cho 4 trường hợp riêng biệt. Tuy nhiên từ góc nhìn của nhà phát triển, chúng thực sự giống nhau, với sự khác biệt duy nhất là một tham số được truyền cho DB. Vì vậy, câu hỏi trở thành: lợi ích của việc có mỗi hoán vị được đánh vần lớn hơn chi phí chạy và duy trì chúng?

Tôi nghĩ nguyên tắc BDD có lẽ sẽ nói "có" vì thông tin liên lạc về hành vi mong đợi rõ ràng hơn, nhưng tôi không chắc chắn. Nó chắc chắn có cảm giác với tôi về quá mức cần thiết. Các kịch bản có thể sẽ có rất nhiều bản sao-dán với những thay đổi nhỏ.

Độ nghiêng của tôi là bao gồm chức năng này với một trường hợp duy nhất nắm bắt được giá trị kinh doanh cốt lõi ("khi tôi chọn khách hàng tôi thấy dữ liệu sử dụng năng lượng"), và sau đó bao gồm các hoán vị khác với một tập hợp non-UI dựa trên các bài kiểm tra tích hợp hợp lệ dịch vụ/truy vấn trả về dữ liệu chính xác. Đây có phải là suy nghĩ sai? Câu trả lời hay nhất để đảm bảo các kịch bản này được đề cập đến, mà không đầu hàng lợi ích của BDD là gì?

Trả lời

4

Quy tắc của tôi cho BDD là các nhà phát triển dễ dàng có thể tìm ra các kịch bản từ bất kỳ hành vi nào được mô tả và nếu không thể, minh họa hành vi với các tình huống.

BDD hữu ích nhất khi nó mô tả những điều phức tạp; hoặc khi truyền đạt kiến ​​thức chuyên môn đến các nhà phát triển hoặc thu hẹp hành vi cho đến khi phát hiện ra sự không chắc chắn. Trong một ứng dụng CRUD với các bộ lọc cơ bản, hành vi thực sự dễ hiểu.

Những gì bạn mô tả có thể được che phủ tốt nhất là "Bánh gừng" của Dan North: lấy công thức cho một thứ khác, nhưng với một khía cạnh khác với hành vi khác (hoặc trong trường hợp này hiểu khía cạnh của hành vi). Ông cũng sử dụng sao chép-dán một chút, và tôi nghi ngờ đặc biệt cho loại hành vi này.

Vì vậy, độ nghiêng của bạn là hoàn toàn chính xác. Nếu tự động hóa, tôi có thể tự động chỉ một ví dụ và cho phép kiểm tra đơn vị và tích hợp bao gồm phần còn lại.

Tôi cũng muốn biết lý do dự án này đang được theo đuổi. Phải có điều gì đó thú vị về điều đó hoặc điều đó sẽ không xảy ra.Tìm điều đó, và đó có thể là một nơi tuyệt vời để bắt đầu thảo luận về các tình huống.

+0

Cảm ơn, Liz, điều đó rất hữu ích. Tôi nghĩ rằng sự đổ vỡ mà chúng ta đang thâm nhập ở đây vẫn đang suy nghĩ về những hành vi như thử nghiệm. Chúng tôi muốn thử nghiệm toàn diện, vì vậy chúng tôi muốn các kịch bản toàn diện. Gotta thay đổi suy nghĩ đó. Ngoài ra, tôi có thể tìm hiểu thêm một chút về mẫu "Bánh gừng" này ở đâu? Google đã không tăng lên nhiều cho tôi ngoại trừ một số công thức nấu ăn bánh đẹp ... :) –

+0

@ ryan-nelson Dan North hy vọng sẽ được viết một cuốn sách tại * một số * điểm ... khác hơn thế, xem video của mình. Về cơ bản bạn có một công thức cho một số phần mềm được hiểu rõ về phần mềm (bánh sô-cô-la), và thay thế bit bạn cần để thay thế bằng một thứ khác (sôcôla thay thế bằng gừng). Bạn không cần phải giải thích toàn bộ công thức cho một đầu bếp - hoặc một nhà phát triển - để có được nó. – Lunivore

+0

Tìm thấy một video ở đây, nơi ông giải thích nó: http://oredev.org/2011/sessions/patterns-of-effective-gelivery –

0

Nếu bạn đang tái cấu trúc kịch bản, thường là bằng cách trích xuất ít bảng từ tập lệnh trùng lặp, thì chi phí bảo trì có thể sẽ không làm bạn tổn thương chút nào. Tuy nhiên, điều này không giải quyết được vấn đề về chi phí thời gian thực hiện. Trong tình huống như vậy, tôi có thể đề nghị tự động hóa cả hai kịch bản đơn giản nhất (không có khách hàng) và phức tạp nhất (nhiều khách hàng phù hợp với bộ lọc, nhưng không phải tất cả), và để lại các hoán vị khác cho các bài kiểm tra lập trình tập trung hơn. Tôi sẽ bao gồm trường hợp "không có khách hàng" chỉ bởi vì mọi người có xu hướng nhận được một sai lầm khủng khiếp, như đôi khi bị rơi chương trình. (Bạn không chạy tập lệnh dữ liệu hạt giống ?!)

+0

"Vì bạn không có khách hàng ... ý bạn là gì, bạn không có khách hàng? Bạn là người quản lý khách hàng! Tại sao bạn thậm chí còn cố gắng sử dụng chương trình này? Nhận điện thoại và nhận một số khách hàng đẫm máu!" <- cuộc trò chuyện về những việc cần làm khi bạn không có khách hàng, với người quản lý khách hàng thực sự! – Lunivore