12 mẹo viết Unit Test cho Lập Trình Viên
Nội dung
1. Viết Unit Test để giảm các rủi ro
2. Viết một Test Case cho mỗi component quan trọng
3. Viết Abstract Test Case và Test Utilities
4. Viết các test hiệu quả (smart tests)
5. Thiết lập môi trường phù hợp cho mỗi test
6. Sử dụng Mock Object để viết test hiệu quả hơn
7. Refactor các test khi refactor code
8. Viết test trước khi sửa lỗi
9. Sử dụng Unit Test để bảo đảm hiệu suất (performance)
10. Viết test cho concurrent code
11. Thực thi các test một cách thường xuyên
12. Lời kết
——————————————————————————————————————————-
Lời nói đầu
Unit Testing là một trong những phần trọng yếu của phương pháp phát triển phần mềm linh hoạt (Agile Software Development), được giới thiệu lần đầu tiên bởi Kent Beck. Unit Testing giúp lập trình viên giảm thiểu tối đa các lỗi (bug), giảm thời gian tìm kiếm lỗi (debug), tạo ra được những phần mềm có tính ổn định cao.
Hầu hết mọi người đều xem nhẹ Unit Test, nếu có viết thì cũng viết cho qua loa, lấy lệ vì mọi người bảo rằng viết Unit Test mất thời gian. Đây là một suy nghĩ không đúng. Theo kinh nghiệm của mình thì đây chính là một phần gây ra việc mất thời gian debug về sau mỗi khi xảy ra lỗi, thời gian này tiêu tốn gấp nhiều lần đối với việc viết unit test.
Trong bài viết này mình đưa ra 12 mẹo mà các lập trình viên có thể áp dụng, không quan tâm đến môi trường hay ngôn ngữ lập trình nào. Mỗi ngày mình sẽ viết 2 mẹo. Nếu các bạn có ý định phổ biến bài viết này ở nơi khác xin hãy giữ nguyên tác giả và hãy để liên kết đến bài viết này trên blog của mình.
Hôm nay mình viết 2 mẹo đầu tiên
- Viết Unit Test để giảm các rủi ro Một lập trình viên nào đó có thể hỏi: Tại sao tôi nên viết các test case? Chứ không phải việc testing nhàm chán này có nhóm QA lo rồi sao? Với tinh thần này chúng ta sẽ không có chỗ đứng trong môi trường công nghệ phần mềm hiện đại ngày nay. Mục tiêu chính của một nhóm phát triển phần mềm là phải làm sao tạo ra được những sản phẩm phần mềm có chất lượng tốt nhất. Người dùng cuối (end-user) rất khó chấp nhận các phần mềm bị lỗi, thiếu ổn định. Hiện nay hầu hết các thư viện (lib), web service và IDE (Integrated Development Environment) đều hỗ trợ refactor và unit testing, vì thế sẽ không có lời xin lỗi nào cho những phần mềm, đoạn mã chương trình bị lỗi.
Ý tưởng đằng sau Unit Testing là tạo ra tập hợp các test cho mỗi thành phần của phần mềm (software component). Unit Test tạo thuận tiện cho việc phần mềm được test liên tục; chi phí thực hiện các test này khá rẻ so với test thủ công (manual test)
Mỗi test case được xem như là giấy bảo hiểm cho hệ thống phần mềm của bạn. Có một lỗi (bug) trong mã chương trình, điều đó có nghĩa là có một rủi ro tiềm ẩn trong hệ thống. Việc viết các unit test sẽ giúp cho lập trình viên giảm số lượng lỗi và các rủi ro với các đoạn mã chương trình. - Viết một Test Case cho mỗi component quan trọngKhi bắt đầu unit testing, hãy luôn đặt ra cho mình câu hỏi: Những test nào mình nên viết?
Ban đầu nên đẩy mạnh việc viết các cụm test chức năng, nghĩa là kiểm tra thăm dò các chức năng của hệ thống. Điều này không đúng. Chỉ tạo ra một test case (một tập hợp các test) cho mỗi thành phần quan trọng (major component) của hệ thống phần mềm.
Tại một thời điểm chỉ tập trung viết test cho một component . Trong phạm vi một component, hãy nhìn vào interface của component đó mà viết test. Các bạn nên viết ít nhất một test cho một phương thức public thuộc interface đề cập ở trên.
Hôm nay mình tạm dừng tại đây. Hẹn các bạn ở các mẹo tiếp theo.
Duy Đỗ
Comments
12 comments in this post. Add your comments below
oh
ong dang doc cuon nao vay ?
chuong trinh minh dang thieu unit test tram trong .
haha
Cái này mình viết dựa theo kinh nghiệm trong quá trình làm việc và tìm hiểu của mình, có tham khảo từ nguyên bản tiếng Anh ở http://www.readwriteweb.com.
Uhm, ý kiến hay đó !!!
Thử sức đi chú em, anh tin em có thể trở thành 1 tác gia viết sách Lập Trình, anh ủng hộ em
!!!
anh Thuận
Khá wá ,lâu wá k gặp hay liên lạc j nhỉ.
Dạo này sao rồi bé,khỏe chứ hả?Có j cho anh hỏi thăm chút về Java nha
Bài này hơi quen quen, hehe
Chào các cô các chú, cháu còn bé lắm, nhưng cháu có ý định đi theo con đường của một Lập trình viên, nên cháu lấy bài của chú Duy Đỗ để tích lũy.
Chú Duy Đỗ ơi, sao chú không viết hết luôn một lần 12 cái cho cháu lấy một lúc luôn cho đủ. Chắc chú mệt?
Chú ơi, bao giờ chú viết tiếp? Nhanh lên nghen chú?
Cháu cảm ơn chú nhiều lắm.
ừ, ai cũng nói anh già cả :-S
giup minh bai tap java duoc khong?minh moi hoc java…huu
class phuongtienvantai//phuong tien^ van^ tai
thank you !
duydo
Ban Duy Do viet hay qua. Ban co the viet tiep 10 meo con lai cho ba con cung tham khao khong. To dang lam bai tieu luan ve Unit Testing vay ban co the post len ngay duoc khong. Cam on ban nhieu.
Viet xong co 2 cai meo. rui chuon^` luon a. Du’ng la me`o