Một số điểm thú vị về TDD
Bài viết này mình muốn ghi chú lại những điểm thú vị mình đúc kết được trong quá trình dùng TDD của bản thân vào các dự án.
TDD có làm giảm đi số lượng bug?
Việc duy trì mỗi dòng code được viết ra được bảo chứng bởi ít nhất một dòng code test không giúp cho việc giảm số lượng bug liên quan đến hiểu sai yêu cầu, hoặc sai lầm về thiết kế. Bởi vì bản chất của các lỗi này không thể được kiểm chứng thông qua test.
Tuy nhiên, TDD giúp cho việc hạn chế những sai lầm lớn về thiết kế nhờ hướng tiếp cận tuần tự tịnh tiến từng bước nhỏ. Ở mỗi bước nhỏ nhất, ta đưa ra thiết kế đơn giản và tối ưu nhất. Nhờ vậy mà những sai lầm do các thiết kế không chạm đến hiện thực sẽ không xuất hiện. Tất nhiên, vẫn có những lúc các thiết kế nhỏ này của ta vẫn có sai lầm, vì việc ta hiểu về các khái niệm xung quanh domain hoặc các yếu tố ngoại vi cần tích hợp có thể sai lầm.
TDD giúp làm giảm đi đáng kể số lượng bug xuất hiện do regression (mình gọi vui là: thêm một dòng code làm tan nát hệ thống). Mà trong software development, đây mới là thảm họa về chi phí và thời gian cho cả team.
Liệu có mất nhiều thời gian để làm TDD?
TDD không quá mất thời gian như mọi người tưởng tượng. Nó chỉ là sự thay đổi về thói quen. Khi áp dụng TDD thuần thục, chi phí regression sẽ giảm đi khá nhiều và ta tự tin hơn mỗi khi release rất nhiều. Bản thân mình chưa dám gọi bản thân là thuần thục TDD. Tuy nhiên, càng vận dụng nó, mình càng thấy nó đem lại nhiều giá trị rất hữu ích.
Ngoài ra, thời gian để debug và fix các bug liên quan đến regression sẽ giảm đến mức tối thiểu. Do đó, về mặt hiệu suất, mình thấy tự tin hơn rất nhiều với hướng tiếp cận TDD.
Mất bao lâu để làm quen với TDD?
Mỗi người sẽ có khả năng học và đáp ứng khác nhau. Bản thân mình mất khoảng 2-5 ngày đầu tiên để làm quen với cách làm TDD. Mình xem TDD như một thói quen. Theo nghiên cứu khoa học, bạn sẽ cần gần 21 ngày để tạo ra một thói quen. Vì vậy, nếu đưa một ước lượng có phần khá bi quan, mình có thể nói: chỉ cần maximum 21 ngày để tạo ra thói quen TDD cho một developer.
Làm việc với TDD liệu có làm cho ta mất đi hình dung về bức tranh lớn?
Nhiều người có suy nghĩ này, vì mỗi bước trong TDD rất ngắn. Mất maximum 10 phút (nếu quen nhịp, bạn có thể thực hiện mỗi bước trong 3 phút) để hiện thực một bước trong TDD. Một bước ở đây có thể là thêm vào một dòng test mới, hoặc hiện thực để pass một test, hoặc refactor test case đang có, hoặc refactor những dòng code vừa thêm. Vì vậy, nhiều người cho rằng: khi đi sâu vào việc cặm cụi hiện thực từng bước nhỏ, ta dễ bị mất hình dung về bức tranh toàn cảnh của hệ thống.
Câu trả lời là: Không. Hãy tưởng tượng tổng thể của hệ thống sẽ xây dựng là một bức tranh. TDD giúp ta dễ hình dung hơn về bức tranh sẽ hoàn thiện ở từng bước nhỏ. Mỗi bước này, ta lại có thêm một điểm ảnh sáng tỏ hơn về thứ ta sẽ xây. Từ ý tưởng phác thảo (yêu cầu tổng thể), bức tranh được hình thành một cách rõ ràng hơn, thực tế hơn.
Khi có thời gian mình sẽ viết thêm về chủ đề này. Cùng chờ đón những bài viết sau nhé.
Trân trọng!
Comments ()