Thật khó và không thực tế để duy trì dữ liệu giả lớn. Nó thậm chí còn khó hơn khi cấu trúc cơ sở dữ liệu trải qua những thay đổi.
Sai trái.
Kiểm tra đơn vị không yêu cầu dữ liệu giả "lớn". Nó đòi hỏi đủ dữ liệu giả để kiểm tra các kịch bản và không có gì hơn.
Ngoài ra, các lập trình viên thực sự lười biếng yêu cầu các chuyên gia về vấn đề tạo ra các bảng tính đơn giản của các trường hợp thử nghiệm khác nhau. Chỉ là một bảng tính đơn giản.
Sau đó, lập trình viên lười biếng viết một tập lệnh đơn giản để chuyển đổi các hàng bảng tính thành các trường hợp kiểm thử đơn vị. Nó khá đơn giản, thực sự.
Khi sản phẩm phát triển, bảng tính của các trường hợp thử nghiệm được cập nhật và các thử nghiệm đơn vị mới được tạo. Do đó tất cả các thời gian. Nó thật sự có hiệu quả.
Ngay cả với MVVM và khả năng kiểm tra GUI, cũng cần rất nhiều mã để tạo lại kịch bản GUI.
Gì? "Tái sản xuất"?
Quan điểm của TDD là Thiết kế mọi thứ cho Khả năng kiểm tra (Phát triển ổ đĩa thử nghiệm). Nếu GUI phức tạp, thì nó phải được thiết kế lại để đơn giản hơn và dễ kiểm tra hơn. Đơn giản hơn cũng có nghĩa là nhanh hơn, dễ bảo trì hơn và linh hoạt hơn. Nhưng chủ yếu là đơn giản hơn sẽ có nghĩa là dễ kiểm tra hơn.
Tôi có kinh nghiệm rằng TDD hoạt động tốt nếu bạn giới hạn nó theo logic kinh doanh đơn giản. Tuy nhiên logic kinh doanh phức tạp rất khó kiểm tra vì số lượng kết hợp kiểm tra (không gian kiểm tra) là rất lớn.
Điều đó có thể đúng.
Tuy nhiên, yêu cầu các chuyên gia về vấn đề cung cấp các trường hợp thử nghiệm cốt lõi ở dạng đơn giản (như bảng tính) thực sự có ích.
Các bảng tính có thể trở nên khá lớn. Nhưng không sao, vì tôi đã sử dụng một tập lệnh Python đơn giản để biến các bảng tính thành các trường hợp thử nghiệm.
Và. Tôi đã phải viết một số trường hợp thử nghiệm bằng tay vì các bảng tính không đầy đủ.
Tuy nhiên. Khi người dùng báo cáo "lỗi", tôi chỉ cần hỏi trường hợp kiểm tra nào trong bảng tính là sai.
Tại thời điểm đó, các chuyên gia về chủ đề sẽ sửa bảng tính hoặc họ sẽ thêm các ví dụ để giải thích những gì sẽ xảy ra. Các báo cáo lỗi có thể - trong nhiều trường hợp - được xác định rõ ràng là một vấn đề trường hợp thử nghiệm. Thật vậy, từ kinh nghiệm của tôi, việc xác định lỗi là một trường hợp thử nghiệm bị hỏng làm cho cuộc thảo luận trở nên đơn giản hơn nhiều.
Thay vì lắng nghe các chuyên gia cố gắng giải thích một quy trình kinh doanh siêu phức tạp, các chuyên gia phải đưa ra các ví dụ cụ thể về quy trình.
TDD yêu cầu các yêu cầu là chính xác 100%. Trong những trường hợp như vậy, người ta có thể mong đợi rằng các yêu cầu xung đột sẽ được nắm bắt trong quá trình tạo các bài kiểm tra. Nhưng vấn đề là đây không phải là trường hợp phức tạp.
Không sử dụng TDD hoàn toàn bắt buộc các yêu cầu phải chính xác 100%. Một số người cho rằng TDD có thể chấp nhận các yêu cầu không đầy đủ và thay đổi, trong đó cách tiếp cận không TDD không thể hoạt động với các yêu cầu không đầy đủ.
Nếu bạn không sử dụng TDD, mâu thuẫn được tìm thấy muộn trong giai đoạn thực hiện.
Nếu bạn sử dụng TDD, mâu thuẫn được tìm thấy trước đó khi mã vượt qua một số thử nghiệm và thất bại các thử nghiệm khác. Thật vậy, TDD cung cấp cho bạn bằng chứng về sự mâu thuẫn sớm hơn trong quy trình, rất lâu trước khi thực hiện (và các đối số trong quá trình kiểm tra chấp nhận của người dùng).
Bạn có mã vượt qua một số bài kiểm tra và thất bại những người khác. Bạn nhìn vào chỉ những kiểm tra và bạn tìm thấy những mâu thuẫn. Nó hoạt động thực sự, thực sự tốt trong thực tế bởi vì bây giờ người dùng phải tranh luận về mâu thuẫn và đưa ra các ví dụ cụ thể, nhất quán về hành vi mong muốn.