Chỉ tạo một dự án thử nghiệm và viết một số phương thức thử nghiệm là một loại TDD, nhưng theo kinh nghiệm của tôi, nó không giúp ích được gì trừ khi bạn đang làm việc trên một thư viện nơi có các lệnh gọi API và phương thức tương ứng trực tiếp với thứ mà người dùng mong đợi . Bạn cần đưa ra danh sách các bài kiểm tra phù hợp và đối với một ứng dụng không tầm thường, điều đó có thể thực sự khó thực hiện.
Tôi khuyên bạn nên thử SpecFlow - nó tiếp tục xác định các kiểm tra tách biệt với việc triển khai và cấu trúc của các tệp tính năng buộc bạn phải suy nghĩ về những gì bạn đang thực sự kiểm tra.
Khi bạn xác định một tính năng, bạn chỉ cần viết một cái gì đó như
When a user is saved
Then the user should exist
Vì tại thời điểm này, bạn không có tệp mã, nên bạn không muốn nghĩ về các chi tiết triển khai như phương thức nào được gọi để tạo người dùng hoặc thậm chí lớp nào được triển khai. Bạn có thể sử dụng thẻ để chọn các triển khai khác nhau, Vì vậy, ở cấp độ này, không quan trọng việc "người dùng được lưu" có nghĩa là một cuộc gọi đến CreatUser hoặc mở trình duyệt và gửi biểu mẫu.
Khi bạn đã xác định các tính năng, tất cả các thử nghiệm được tạo và sẽ bắt đầu vượt qua khi bạn triển khai các định nghĩa bước và mã ứng dụng thực tế đang được thử nghiệm.
Đối với một ứng dụng đơn giản, bạn chỉ có thể tạo các tệp tính năng, nhưng đối với bất kỳ điều gì phức tạp hơn, sẽ rất hữu ích khi kết hợp một thông số kỹ thuật đầy đủ hơn trước đó. Tôi sử dụng một ứng dụng mindmapping iPad cho việc này, nhưng bạn có thể sử dụng bất kỳ công cụ nào bạn thấy thoải mái nhất.
Bắt đầu với một danh sách các tính năng cấp cao như "Đăng ký người dùng". Chúng có xu hướng quá rộng để viết các bài kiểm tra trực tiếp, vì vậy hãy chia chúng thành các tính năng phụ có thể được xác định rõ ràng và thường ánh xạ tới một hành động người dùng cụ thể như "Lưu người dùng" hoặc "Xem người dùng hiện tại".
Mỗi tính năng phụ này sẽ cần một danh sách các kịch bản cùng nhau xác định hoàn toàn tính năng này có hoạt động hay không, những thứ như "Có thể lưu người dùng hợp lệ" và "Không thể lưu người dùng với tên người dùng trùng lặp".
Khi bạn xây dựng danh sách này, nó sẽ trở nên rõ ràng nơi cấu trúc cần được điều chỉnh - nếu bạn không thể đưa ra bất kỳ thử nghiệm kịch bản nào cho một tính năng hoặc bạn kết thúc với quá nhiều tính năng trong một tính năng thì tính năng đó có thể được xác định tại mức độ sai và cần phải được chia hoặc thay đổi.