Tuesday, November 10, 2015

(Unit Test) Những luật cần thiết để viết unit test

Trước giờ mình làm những dự án trên iOS ít khi nào khách hàng đòi hỏi mình phải viết unit test cho họ. Hiện tại mình cũng đang tập viết unit test trên iOS nên có vài kinh nghiệm khi nghiên cứu về nó, nếu bạn nào có kinh nghiệm nào khác xin chia sẻ tại đây để chúng ta có thể tìm ra hướng giải quyết tốt nhất.

- Khái niệm unit test: Unit test là một đơn vị kiểm tra tự động nhỏ, được viết bởi người lập trình viên để kiểm tra những dòng code của ứng dụng thực tế, chúng phải được viết một cách độc lập.

- 5 luật đơn giản nên tuân theo trước khi viết unit test là F.I.R.S.T. Chữ này được viết tắt của những chữ như:
  • Fast — nhanh: Unit test phải chạy thường xuyên, do đó cần phải viết sao cho chạy nhanh.
  • Isolated — tách biệt: Unit test không nên phụ thuộc vào các yếu tố bên ngoài, hoặc kết quả của unit test này phụ thuộc vào kết quả của unit test khác.
  • Repeatable — lặp lại: Unit test phải trả ra cùng kết quả mỗi khi chúng được thực thi.
  • Self-verifying — tự kiểm tra: Unit test phải dùng những hàm tự kiểm tra kết quả, không phụ thuộc vào yếu tố con người.
  • Timely — hợp thời: Unit test nên được viết với code chạy thực tế. Viết test trước hay sau khi viết code thực tế? 
- Trước khi bạn viết 1 hàm hay trước khi viết unit test bạn nên suy nghĩ và viết trước những trường hợp test (Todo list) của hàm này, để có cái nhìn bao quát nhất mỗi khi bạn viết test case và để không bị sót trường hợp nào. Luật như sau: T . S . W
  • Test + tên hàm hay chức năng
  • Should return + true (false), giá trị (value)
  • When input + giá trị
- Những test case nào liên quan đến database hay connection thì gọi là integration testing. Vì thế bạn có thể viết tên hàm test có đánh số thứ tự để có thể chạy test theo mức độ ưu tiên. Nếu bạn test database bạn phải đảm bảo dữ liệu phải rollback trở lại. Ví dụ những hàm như sau:
  • test1CreateDatabase
  • test2InsertItem
  • test3UpdateItem
  • test4DeleteItem

Tài liệu tham khảo:

https://www.objc.io/issues/15-testing/bad-testing-practices/#good-practices-101
https://pragprog.com/magazines/2012-01/unit-tests-are-first

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.