Thực hành tốt nhất luôn có một mục đích, một lý do đằng sau chúng. Luôn luôn là một ý tưởng tốt để xem xét những lý do này trong thiết kế của bạn - đặc biệt là khi bạn đang cố gắng quyết định cách thức và mức độ khó để làm theo các thực tiễn tốt nhất này.
Trong trường hợp này, lý do chính đằng sau việc thực hiện mọi bài kiểm tra là một điều duy nhất là nếu điều thứ nhất thất bại, thì điều thứ hai sẽ không được kiểm tra. Vì có quá nhiều người đưa ra ý kiến dường như tìm thấy công đức trong việc phá vỡ mọi thứ thành các bit nhỏ nhất có thể và gói mọi bit vào càng nhiều càng tốt, điều này đã sinh ra ý tưởng rằng mọi bài kiểm tra nên chứa một khẳng định duy nhất.
Đừng làm theo điều này một cách mù quáng. Ngay cả khi mọi bài kiểm tra nên kiểm tra một điều, bạn vẫn nên suy nghĩ quyết định xem mỗi "điều" đó lớn hay nhỏ như thế nào, và để làm như vậy, bạn phải ghi nhớ lý do tại sao bạn muốn mọi bài kiểm tra kiểm tra một điều - để đảm bảo một lỗi trong điều đầu tiên là không để điều thứ hai chưa được kiểm tra.
Vì vậy, bạn cần phải tự hỏi - "tôi có thực sự cần sự đảm bảo này ở đây không?"
Giả sử có một lỗi trong trường hợp thử nghiệm đầu tiên - mã phản hồi HTTP thì không 200
. Vì vậy, bạn bắt đầu hack mã, tìm hiểu lý do tại sao bạn không nhận được mã phản hồi bạn nên có và khắc phục sự cố. Còn bây giờ thì sao?
- Nếu bạn tự chạy lại bài kiểm tra, để xác minh rằng bản sửa lỗi của bạn đã giải quyết được vấn đề, bạn nên gặp phải bất kỳ vấn đề nào khác được ẩn bởi lỗi đầu tiên.
- Nếu bạn không chạy thủ công (có thể vì mất quá nhiều thời gian?) Và chỉ cần sửa lỗi chờ máy chủ kiểm tra tự động chạy mọi thứ, thì bạn có thể muốn đưa các xác nhận khác nhau vào các thử nghiệm khác nhau. Các chu kỳ trong trường hợp này rất dài, do đó, đáng để nỗ lực khám phá càng nhiều lỗi trong mỗi chu kỳ.
Có một vài điều nữa để xem xét:
Khẳng định phụ thuộc
Tôi biết các bài kiểm tra bạn mô tả chỉ là một ví dụ và các bài kiểm tra thực tế của bạn có thể phức tạp hơn - vì vậy những gì tôi sẽ nói có thể không hợp lệ với nhiều sức mạnh trong các bài kiểm tra thực tế, nhưng nó vẫn có thể hiệu quả phần nào vì vậy bạn có thể muốn xem xét nó.
Nếu bạn có một dịch vụ REST (hoặc bất kỳ giao thức HTTP nào khác) trả về các phản hồi ở định dạng JSON, bạn thường viết một lớp máy khách đơn giản cho phép bạn sử dụng các phương thức REST như các phương thức thông thường trả về các đối tượng thông thường. Giả sử rằng khách hàng có các thử nghiệm riêng biệt để đảm bảo nó hoạt động, tôi sẽ bỏ 3 xác nhận đầu tiên và chỉ giữ lại 4!
Tại sao?
- Khẳng định đầu tiên là dự phòng - lớp máy khách sẽ đưa ra một ngoại lệ nếu mã phản hồi HTTP không phải là 200.
- Khẳng định thứ hai là không cần thiết - nếu phản hồi trống, đối tượng kết quả sẽ là null hoặc một số đại diện khác của một đối tượng trống và bạn sẽ không có nơi nào để đặt khóa X.
- Khẳng định thứ ba là không cần thiết - nếu JSON không hợp lệ, bạn sẽ gặp ngoại lệ khi bạn cố phân tích cú pháp.
Vì vậy, bạn không cần phải chạy tất cả các thử nghiệm này - chỉ cần chạy thử nghiệm thứ tư và nếu có bất kỳ lỗi nào trong ba lần thử đầu tiên phát hiện thì thử nghiệm sẽ thất bại với một ngoại lệ thích hợp trước khi bạn nhận được xác nhận thực tế.
Bạn muốn nhận báo cáo như thế nào?
Giả sử bạn không nhận được email từ máy chủ thử nghiệm, nhưng thay vào đó, bộ phận QA sẽ chạy thử nghiệm và thông báo cho bạn về các thử nghiệm thất bại.
Jack từ QA gõ cửa nhà bạn. Ông nói rằng phương thức thử nghiệm đầu tiên đã thất bại và phương thức REST trả về mã phản hồi xấu. Bạn cảm ơn anh ấy, và bắt đầu tìm kiếm nguyên nhân gốc rễ.
Sau đó, Jen đến từ QA và nói rằng phương thức thử nghiệm thứ ba đã thất bại - phương thức REST không trả về JSON hợp lệ trong phần thân phản hồi. Bạn nói với cô ấy rằng bạn đã xem phương thức đó và bạn tin rằng điều tương tự khiến nó trả về mã thoát xấu cũng khiến nó trả về một thứ không phải là JSON hợp lệ và trông giống như dấu vết ngăn xếp ngoại lệ.
Bạn quay lại làm việc, nhưng sau đó Jim từ QA đến, nói rằng phương pháp thử nghiệm thứ tư đã thất bại và không có phím X trong phản hồi ...
Bạn thậm chí không thể tìm lý do vì thật khó để xem mã khi bạn không có màn hình máy tính. Nếu Jim đủ nhanh, anh có thể tránh kịp ...
Email từ máy chủ thử nghiệm dễ dàng bị loại bỏ hơn, nhưng vẫn vậy - bạn có muốn thông báo cho ONCE rằng có gì đó không đúng với phương pháp kiểm tra và tự mình xem nhật ký kiểm tra có liên quan không?