Lập trình TDD, có nên hay không ?
Bài viết này sẽ đề cập đến TDD, một phương pháp lập trình khá phổ biến ngày nay. Vậy TDD là gì ? TDD (Test Driven Development) là một phương thức lập trình mà lập trình viên phải thực hiện các bước nhỏ sau: Viết 1 test case cho hàm mới. Đảm bảo rằng test sẽ fail. Chuyển qua viết code sơ khai ...
Bài viết này sẽ đề cập đến TDD, một phương pháp lập trình khá phổ biến ngày nay. Vậy TDD là gì ?
TDD (Test Driven Development) là một phương thức lập trình mà lập trình viên phải thực hiện các bước nhỏ sau:
- Viết 1 test case cho hàm mới. Đảm bảo rằng test sẽ fail.
- Chuyển qua viết code sơ khai nhất cho hàm đó để test có thể pass.
- Tối ưu hóa đoạn code của hàm vừa viết sao cho đảm bảo test vẫn pass và tối ưu nhất cho việc lập trình kế tiếp
- Lặp lại cho các hàm khác từ bước 1
Mục đích quan trọng nhất của TDD đó là thay đổi tư duy của người lập trình mà ở đó họ phải suy nghĩ về thiết kế, đặc tả chức năng của chương trình trước khi bắt tay vào viết mã nguồn. Qua đó người lập trình sẽ hiểu sâu về yêu cầu và kết quả trả về của chương trình.
Sơ đồ chu trình phát triển phần mềm theo TDD
Giờ ta sẽ phân tích những ưu nhược điểm của TDD:
- Ưu điểm
- Người lập trình viên phải suy nghĩ về thiết kế, yêu cầu trước khi viết mã, do đó giảm tình trạng phát triển sai với yêu cầu.
- Việc viết các test case giúp đảm bảo giảm số bug khi implement mã nguồn.
- TDD là sự kết hợp giữa phương pháp Phát triển kiểm thử trước (Test First Development) và phương pháp Điều chỉnh lại mã nguồn (Refactoring) nó giúp tăng chất lượng, độ tối ưu của mã nguồn.
- Đặc biệt phù hợp với kiểu làm việc theo Pair programming, một người viết test case, một người viết mã nguồn, sau đó đổi vai trò cho nhau. Như vậy cả 2 sẽ cùng hiểu về chương trình mà họ viết.
- Ngoài những ưu điểm lớn kể trên thì TDD cũng có những nhược điểm:
- Viết test case song song với implement nên mất thời gian và công sức phát triển.
- Nó cần người có kinh nghiệm trong việc viết test case. Bởi nếu test case không chính xác nó khiến những ưu điểm của TDD không còn tác dụng.
- TDD cần thay đổi tư duy lập trình viên nên gây khó khăn cho những người chưa có kinh nghiệm lập trình hoặc mới bắt đầu tiếp cận phương pháp này.
Qua những phân tích trên có thể thấy TDD không phải là phải pháp cho mọi vấn đề. Tuy từng kiểu dự án mà áp dụng cho phù hợp. TDD không thay thế phương pháp kiểm thử truyền thống, thay vào đó nó định nghĩa một cách thức để đảm bảo việc thực hiện các unit test một cách hiệu quả. Hiệu ứng phụ của TDD là các test case cung cấp một đặc tả hoạt động cho mã nguồn. Với những ưu điểm lớn mang lại, tôi tin TDD sẽ còn phát triển và được nhiều lập trình viên tin tưởng trong thời gian tới.