Nếu bạn có hứng thú với công việc phát triển phần mềm hay kiểm thử phần mềm, hẳn bạn đã từng nghe qua nhiều lần về Test Driven Development - TDD và Behavior Driven Development. Ở bài viết này, BAC sẽ cùng bạn tìm hiểu rõ ràng hơn về hai khái niệm này cũng như một số ưu nhược điểm của hai từ khóa trên, từ đó giúp bạn có cái nhìn sâu hơn về lĩnh vực phát triển phần mềm. 
 
Test Driven Development và Behavior Driven Development
 
Test Driven Development và Behavior Driven Development
1. TDD - Test Driven Development
Test Driven Development 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), là một phần cốt lõi của Extreme Program (XP).
 
Mục tiêu của TDD là giúp cho mã nguồn được đảm bảo chất lượng, gọn gàng, chạy được trơn tru (Bizflycloud.vn). TDD xuất hiện không phải để thay thế phương pháp kiểm thử truyền thống, mà là nhằm đảm bảo cho việc thực hiện Unit testing - kiểm thử đơn vị (là một phương pháp được sử dụng để kiểm thử logic thực hiện của các đơn vị khối code riêng lẻ) đạt được hiệu quả tối đa. Hiện TDD là phương pháp được sử dụng khá rộng rãi, ở những công ty có dùng phương pháp Agile - Mô hình phát triển linh hoạt. 
  • Lưu ý khi sử dụng phương pháp TDD: 
TDD được áp dụng theo các bước như sau:
  1. Chuẩn bị script cho kế hoạch kiểm thử phần mềm.
  2. Viết một test cho hàm và đảm bảo rằng test đó sẽ lỗi.
  3. Viết lại test đủ để test được pass.
  4. Tối ưu hóa đoạn code của hàm vừa viết, loại bỏ code trùng lặp nếu có, đảm bảo cho test vẫn được pass. 
  5. Lặp lại các bước trên cho những hàm sau.
Theo như Javier Saldana để sử dụng TDD cần nắm rõ 2 nguyên tắc sau:
  1. Chỉ viết đủ số lượng Unit test để fail. 
  2. Chỉ viết đủ số lượng Production code để test fail trở thành pass. 
Chu trình của TDD có thể được gói gọn bởi ba từ khóa : Red - Green - Refactor
 
Quy trình khi áp dụng TDD theo nguồn : Bizflycloud.vn
Quy trình khi áp dụng TDD theo nguồn : Bizflycloud.vn
 
Red/màu đỏ: Viết một test fail, và chạy thử xem nó gặp lỗi thế nào.
Green/màu xanh lá: Viết lại code ở mục Red để hoàn thành test.
Refactor: Tối ưu hóa code, kiến trúc test, loại trừ code bị trùng lặp (ibm.com). 
  • Ưu điểm của TDD:
  1. Tăng độ chính xác của code, giảm thiểu các vấn đề lỗi trùng lặp về sau.
  2. Tối ưu hóa quy trình kiểm thử, hạn chế việc lãng phí công sức ( khi chỉ sử dụng đủ unit test cần thiết và không cần kiểm tra thủ công ).
  3. Nắm được logic hoạt động của code.
  • Nhược điểm của TDD:
  1. Làm script kỳ công và tốn thời gian ( ảnh hưởng đến thời gian phát triển sản phẩm nói chung).
  2. Cần duy trì chạy thử nghiệm thường xuyên.
  3. Việc thực hiện kiểm thử cần trình độ, kinh nghiệm cao nếu không sẽ rất dễ lan man và sai bước thực hiện.
2. BDD - Behavior Driven Development
Behavior Driven Development
Behavior Driven Development
 
BDD được hiểu đơn giản là dạng mở rộng từ TDD, phát triển hành vi kết hợp với các kỹ thuật và nguyên tắc TDD chung. Tuy nhiên TDD thì tập trung vào việc kiểm thử code, quy trình kiến trúc nội bộ. Còn BDD tập trung vào việc kiểm thử hành vi, chức năng của phần mềm. Có thể nói TDD kiểm thử từng chi tiết code nhỏ trong phần mềm, còn BDD thì kiểm thử chức năng hành vi tổng quát. Thông thường, BDD được viết dưới dạng Plain Text Language gọi là Gherkin, sau đó lưu file dưới dạng Extension là .feature. 
  • Lưu ý khi sử dụng phương BDD:
Theo Maria Filina của Redwerk, BDD được áp dụng theo các bước như sau:
  1. Viết script trên Gherkin cho kế hoạch kiểm thử hành vi.
  2. Tiến hành chạy test theo script và kiểm tra các hoạt động của hệ thống phần mềm
  3. Xác định các tình huống, hành vi khi thực hiện theo script.
  4. Kiểm tra từng tình huống, hành vi để xác định nếu có lỗi sai.
  5. Xác định và điều chỉnh các chức năng, hành vi cần thiết để hoàn thành test.
  6. Tiến hành chạy test lại lần nữa, nếu có lỗi thì lặp lại các bước trên.
  • Ưu điểm của BDD:
  1. Cung cấp cái nhìn trực quan, tổng thể cho phần mềm.
  2. Do được thực hiện dưới dạng ngôn ngữ tối giản Plain Text Language cho nên tất cả mọi người dù có ngoài chuyên môn vẫn có thể hiểu được, khách hàng cũng có thể biết được nhà phát triển có đang đi đúng hướng yêu cầu hay không. Từ đó nhà phát triển biết được chính xác nhu cầu của khách hàng.
  3. Vì mang tính chất kiểm thử hành vi tổng quát phần mềm, thay vì kiểm thử các code phức tạp thì BDD có nhìn được khách quan về chức năng nào cần thiết và không cần thiết cho khách hàng.
  • Nhược điểm của BDD:
  1. Vì BDD được phát triển thêm qua TDD nên để thực hiện BDD thì bạn cũng cần có kiến thức tổng quát về phương pháp TDD để nắm được những quy tắc, khái niệm về kiểm thử phần mềm một cách khoa học nhất.
  2. Không có tính chất kiểm thử độc lập như TDD mà khi áp dụng BDD, cần có sự kết nối chặt chẽ giữa người phát triển phần mềm và người viết file .feature. Bởi nếu người kiểm thử hành vi không hiểu ý tưởng của người phát triển phần mềm thì sẽ không thể kiểm thử một cách khách quan, hợp lý.
  3. Việc dễ giao tiếp, hiểu yêu cầu của khách hàng là một ưu điểm, đồng thời cũng là một nhược điểm khiến quá trình kiểm thử hành vi có thể trở nên tốn thời gian, công sức nếu bạn phải thực hiện theo từng yêu cầu từ cần thiết đến không cần thiết của khách hàng. 
Bài viết trên hy vọng có thể giải đáp được những thắc mắc của bạn đọc về TDD cũng như BDD và ưu nhược điểm của cả hai phương pháp kiểm thử. Nếu bạn có quan tâm về những kiến thức liên quan đến mảng phát triển hay kiểm thử phần mềm. Hy vọng rằng những chia sẻ của BAC sẽ giúp ích cho bạn. Đừng quên đón đọc các bài viết mới nhất được qua các kiến thức bổ ích tại BAC's Blog.
 
Nguồn tham khảo: 
 

Nhu cầu đào tạo doanh nghiệp

BAC là đơn vị đào tạo BA đầu tiên tại Việt Nam. Đối tác chính thức của IIBA quốc tế. Ngoài các khóa học public, BAC còn có các khóa học in house dành riêng cho từng doanh nghiệp. Chương trình được thiết kế riêng theo yêu cầu của doanh nghiệp, giúp doanh nghiệp giải quyết những khó khăn và tư vấn phát triển.
 
 

CÁC KHOÁ HỌC BUSINESS ANALYST BACs.VN DÀNH CHO BẠN

Khoá học Online:

Khoá học Offline:

Tại Tp.HCM:

Tại Hà Nội:

Tham khảo lịch khai giảng TẤT CẢ các khóa học mới nhất

Ban biên tập nội dung - BAC