Liệu TDD có còn chỗ đứng trong phát triển phần mềm?

cho em hỏi trong môi trường các anh/chị đi làm có còn phất triển phần mêm theo mô hình TDD không?
TDD có ưu điểm, nhược điểm đối với lập trình viên nói riêng và mô hình phát triển PM nói chung.
a/c có thể hướng dẫn e một chút về các yêu cầu khi viết unit test.
thank you so much!

dù làm mô hình gì đi nữa vẫn phải viết Unit Test, vì đây chính là sự đánh giá chất lượng của phần mềm, ko có bộ UT đi kèm sản phẩm trong quá trình phát triển thì sản phẩm có thể đc coi là không có giá trị về chất lượng, cũng có thể hiểu là một bản đánh giá chất lượng ISO :v

TDD là mô hình thực hiện viết test trước rồi mới viết code, RED - GREEN - REFACTOR. Theo mô hình này thì code luôn đảm bảo 100% coverage và có độ hoàn hảo về chất lượng gần như tuyệt đối.

nó là một mô hình và nó đc áp dụng được khá nhiều trên thế giới, với các công ty vừa hay lớn thì họ thường áp dụng TDD. Tuy nhiên tuỳ thuộc vào môi trường và điều kiện, thì các công ty sẽ chọn mô hình phù hợp nhất để tăng hiệu suất công việc và chất lượng sản phẩm.

ở việt nam nói riêng thì ít công ty làm TDD vì khá nhiều yếu tố khách quan, vài ví dụ như:

  • làm tốn mất nhiều thời gian, tư tưởng viết sản phẩm chạy là được, có lỗi thì sửa chắp vá.
  • làm outsource thì vì giá rẻ, deadline ngắn nên ko cần thiết phải viết tests.
  • các thanh niên lập trình viên chưa viết test bao giờ, nghe test là cái gì đó kinh khủng hãi hùng dã man lắm, ko dám làm, kiếm lí do lờ đi.

Cơ mà nói trong một hai năm trở lại đây thì cũng có nhiều công ty Việt Nam áp dụng TDD trong Scrum, Pair Programming, và thấy hiệu quả đáng kể. Cái này thấy rõ ở các công ty làm sản phẩm riêng dùng Ruby on Rails. Vô mấy nhóm Ruby on Rails Việt là thấy nhiều cao thủ TDD :smile:

Ưu điểm:

  • Vì code dựa theo bản test nên đảm bảo code tỉ lệ bug coi như là 0 %, gần như hoàn hảo vì độ coverage đạt đc 100%.
  • Đảm bảo chất lượng sản phẩm ngon.
  • Rèn luyện khả năng tư duy đánh giá trong khi code cho lập trình viên.
  • Luyện được skill refactoring code :))
  • Cục tests chính là documentation của code luôn. Nhìn tests là biết code làm gì.

Nhược điểm:

  • Vì viết test song song với code nên sản phẩm sẽ mất thời gian hơn để phát triển.
  • Với lập trình viên mới tập tành làm quen TDD thì sẽ mất nhiều thời gian ban đầu để quen đc mô hình.

Cơ bản là thế.

Tóm lại, với các fresh developers, sau 2-3 năm làm kha khá TDD là cũng ổn rồi.

6 Likes

bài viết đầy đủ quá, thank anh @laptrinhio nhiều ạ.
thực sự đọc bài này xong thấy đầu óc sáng sủa (không sủa ạ :smiley: ) ra nhiều. một lần nữa thay mặt các bạn có cùng quan tâm e chân thành cảm ơn :innocent:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?