Khi viết câu trả lời này, tôi đã nhận ra rằng nó không phải là về thử nghiệm, mà là về tài liệu. Trước tiên bạn nên đọc bản tuyên ngôn nhanh :
[Chúng tôi đánh giá] phần mềm làm việc trên tài liệu toàn diện
Vì vậy, bạn nên làm cho các thông số kỹ thuật của bạn có thể thực thi được, tức là viết chúng dưới dạng một bộ kiểm tra hoàn toàn tự động.
Là viết thông số kỹ thuật dựa trên câu chuyện là một ý tưởng tốt?
Vâng, imho, nó là. Nó được gọi là "phát triển theo hướng hành vi" hoặc "đặc tả bằng ví dụ". Trong ruby có một công cụ dưa chuột tuyệt vời giúp ích rất nhiều.
Vấn đề bây giờ là bởi vì có quá nhiều câu chuyện, không rõ ràng ngay lập tức, đối với bất kỳ phần nào của hệ thống mà câu chuyện liên quan đến nó.
Tại sao bạn muốn nó rõ ràng? Ý tôi là, bạn có thực sự cần một ma trận truy xuất nguồn gốc "test / code" không? Ưu điểm của việc viết các bài kiểm tra như một đặc điểm kỹ thuật là bạn không cần truy xuất nguồn gốc "yêu cầu / kiểm tra" riêng biệt, bởi vì các bài kiểm tra trở thành yêu cầu. Đối với mục đích kiểm tra tích hợp, bạn nên coi toàn bộ phần mềm của mình, không phải là các phần riêng biệt.
Bạn có thể cần một công cụ bảo hiểm để xem nếu có các mô-đun "chết", các phần trong hệ thống của bạn không nằm trong các thử nghiệm đặc điểm kỹ thuật của bạn. Nhưng bạn thực sự không nên quan tâm đặc điểm kỹ thuật mà mã đặc biệt này tương ứng với. Nó phải là ngược lại: từ một đặc điểm kỹ thuật cụ thể, bạn nên biết phần nào của hệ thống tương ứng với nó. Bạn không nên lo lắng về một số trùng lặp trong thông số kỹ thuật của bạn. Và nếu bạn áp dụng nguyên tắc DRY cho mã của mình, sẽ có hàng tá thông số kỹ thuật thực thi cùng mã.
Nó hoạt động vào thời điểm của các nhà phát triển, mỗi lần chạy nước rút các nhà phát triển chỉ cần có một thông số cụ thể về những gì họ cần làm và những thay đổi họ cần thực hiện. Nhưng về mặt duy trì danh sách câu chuyện này và để thử nghiệm, nó bắt đầu gặp lỗi rất khó theo dõi và nói chung chỉ duy trì thông số kỹ thuật, bởi vì một phần chức năng trong màn hình có thể đã được ghi nhận ở một số nơi khác nhau do nó bị chia theo câu chuyện.
Không có gì lạ khi hàng trăm bài kiểm tra tích hợp bị phá vỡ bởi một thay đổi nhỏ trong một mô-đun quan trọng. Đó là nơi đơn vị thử nghiệm bước vào.
Bạn nên cấu trúc các bài kiểm tra của mình sao cho có thể biết liệu một bài kiểm tra cụ thể có đáp ứng yêu cầu cấp cao hay chỉ là một chi tiết tinh tế của nó. Nếu sau này, bạn nên tách bài kiểm tra này khỏi bộ kiểm tra tích hợp. Mục đích của kiểm tra đơn vị là để bản địa hóa lỗi. Vì vậy, nếu bạn giới thiệu một lỗi, sẽ có một và chỉ một lỗi kiểm tra.
Chúng ta đã viết những câu chuyện sai cách?
Tôi nghĩ rằng, bạn chỉ cần sắp xếp các câu chuyện của mình thành sử thi theo người dùng, ví dụ: "Khách hàng", "Trợ lý" hoặc theo tính năng / màn hình / quy trình làm việc ("Mua hàng", "Hoàn tiền").
Và một lần nữa, kiểm tra đặc điểm kỹ thuật không phải là một thay thế cho kiểm tra đơn vị. Đọc thêm