FresherKỹ thuậtKiểm thử Backend
Một unit test tốt có những đặc điểm gì?
Thử trả lời trước
Đáp án mẫu
Một unit test tốt thì nhanh, cô lập, lặp lại được, tự kiểm tra và dễ đọc. Các đặc điểm này hay được nhớ qua chữ FIRST.
- Nhanh: chạy trong mili giây, nên mọi người chạy nó liên tục.
- Cô lập: không phụ thuộc vào test khác, thứ tự chạy hay state dùng chung.
- Lặp lại được: cùng một code cho cùng kết quả trên mọi máy, không phụ thuộc đồng hồ, mạng hay giá trị ngẫu nhiên.
- Tự kiểm tra: tự assert kết quả, không ai phải đọc log để quyết định test có pass hay không.
- Dễ đọc: tên nêu kịch bản và kết quả mong đợi, ví dụ
rejects_order_with_negative_quantity, còn phần thân thể hiện rõ arrange, act và assert.
Nó cũng chỉ test một hành vi, để khi fail thì chỉ ra một nguyên nhân. Và nó fail vì đúng lý do: làm hỏng code thì test đỏ, còn refactor giữ nguyên hành vi thì không.
Test tốt là một bản đặc tả ngắn và sẽ fail khi hành vi bị phá vỡ.
Ý chính
- Nhanh và cô lập, không dùng state chung hay phụ thuộc thứ tự
- Lặp lại được, không phụ thuộc đồng hồ, mạng hay giá trị ngẫu nhiên
- Tự kiểm tra bằng assertion thay vì đọc log
- Tên test nêu kịch bản và kết quả mong đợi
Câu hỏi nối tiếp thường gặp
- Một unit test có nên chứa nhiều hơn một assertion không?
Lỗi thường gặp
- Đặt tên test là test1, test2 hay testOrder
- Để một test phụ thuộc vào dữ liệu do test khác tạo