admin01
42
17-04-2024
Sự khác biệt giữa TDD và BDD từ góc độ tổng quan: TDD lấy developer làm trung tâm, xoay quanh tính chính xác của code, với các framework dành riêng cho ngôn ngữ lập trình. Mặt khác, BDD lấy người dùng làm trung tâm, xoay quanh hành vi của hệ thống và thúc đẩy sự hợp tác giữa các stakeholders bằng domain-specific language. Hãy cùng Cole tìm hiểu chi tiết trong bài viết dưới đây.
Behavior Driven Development (BDD) là một kỹ thuật phát triển tập trung nhiều hơn vào hành vi của ứng dụng phần mềm. Chủ yếu, nó tạo ra một đặc tả có thể thực thi được nhưng không thành công do tính năng tương ứng không tồn tại, sau đó viết các đoạn code đơn giản nhất có thể khiến đặc tả đó vượt qua và kết quả là chúng ta có được hành vi cần thiết được triển khai trong hệ thống. Trên thực tế, đây là một team methodology trong đó Developers, Customer, QAs tham gia vào đó.
Quy trình Behavior Driven Development (BDD) bao gồm:
Test Driven Development (TDD) là một kỹ thuật phát triển tập trung nhiều hơn vào việc triển khai một tính năng của ứng dụng/sản phẩm phần mềm. Chủ yếu nó đề cập đến việc viết một trường hợp kiểm thử bị lỗi do chức năng được chỉ định không tồn tại và sau đó cập nhật code có thể làm cho trường hợp kiểm thử đó vượt qua và kết quả là triển khai được tính năng trong hệ thống. Trên thực tế, đó là một hoạt động phát triển trong đó các developers tham gia vào nó.
Quy trình Test Driven Development (TDD) bao gồm:
So sánh | Test-Driven Development (TDD) | Behavior-Driven Development (BDD) |
Quan điểm chính | Triển khai chức năng của code thông qua phương pháp thử nghiệm đầu tiên | Collaboration, shared understanding và xác nhận hành vi của hệ thống từ góc độ của người dùng |
Thuật ngữ và khả năng đọc | Các trường hợp thử nghiệm được viết bằng thuật ngữ programming-centric | Các kịch bản được viết ở định dạng ngôn ngữ tự nhiên, dễ hiểu đối với cả thành viên team kỹ thuật và phi kỹ thuật |
Hợp tác và giao tiếp | Hợp tác giữa developers và testers | Hợp tác giữa developers, testers và business stakeholders để xác định và xác thực hành vi của hệ thống |
Mức độ trừu tượng | Tập trung vào các low-level unit tests để xác minh hành vi của các code units riêng lẻ | Tập trung vào các higher-level tests mô phỏng tương tác của người dùng hoặc các tình huống từ đầu đến cuối |
Test organization | Các thử nghiệm được tổ chức dựa trên code structure và cách tiếp cận phân cấp hoặc modules. | Các kịch bản được sắp xếp xung quanh hành vi mong muốn, thường được nhóm theo các tính năng hoặc chức năng cụ thể |
Mục đích | Đảm bảo tính chính xác của code thông qua automated tests | Thúc đẩy các hiểu biết chung, giao tiếp và xác nhận hành vi của hệ thống |
Quy trình phát triển | Các bài test được viết trước khi triển khai code tương ứng | Các kịch bản được xác định bằng hình thức cộng tác trước khi triển khai code. Có thể triển khai TDD trong BDD. |
Phạm vi thử nghiệm | Phạm vi hẹp, thường tập trung vào các code units riêng lẻ | Phạm vi rộng, bao gồm nhiều code units làm việc cùng nhau |
Test case style | Tập trung vào kỹ thuật và thực hiện | Tập trung vào người dùng và hành vi |
Kiểm tra độ chi tiết | Chi tiết, kiểm tra các code units riêng lẻ một cách riêng biệt | Chi tiết hơn, kiểm tra hành vi của hệ thống nói chung |
Lặp đi lặp lại sàng lọc và phản hồi | Tinh chỉnh code lặp đi lặp lại thông qua các lỗi kiểm tra và sửa đổi code tiếp theo | Tinh chỉnh lặp đi lặp lại các kịch bản và hành vi thông qua cộng tác và phản hồi |
Tham khảo một số frameworks Test Driven Development phổ biến dưới đây:
csUnit là unit testing framework có mã nguồn mở được thiết kế riêng cho .NET Framework, đảm bảo khả năng tương thích với mọi ngôn ngữ tuân thủ .NET. Nó đã trải qua quá trình kiểm tra nghiêm ngặt với C#, Visual Basic .NET, Managed C++ và J#. Ưu điểm đáng chú ý của cSUnit so với NUnit chính là sự linh hoạt trong hoạt động cấp phép, cho phép nó được tích hợp liền mạch vào các closed-source products thương mại mà không phải chịu bất kỳ chi phí nào.
Ưu điểm của csUnit:
Nhược điểm của csUnit:
PyUnit, còn được gọi là unittest, đóng vai trò là framework thử nghiệm đơn vị tiêu chuẩn cho Python. Nó cung cấp một framework tích hợp trong thư viện chuẩn Python, giúp các Python developers có thể truy cập dễ dàng. PyUnit không yêu cầu cài đặt bổ sung vì nó đã được bao gồm trong thư viện chuẩn. Framework này kế thừa syntax đơn giản và thân thiện với người dùng mà Python nổi tiếng, giúp việc tạo thử nghiệm trở nên đơn giản.
Ưu điểm của PyUnit:
Nhược điểm của PyUnit:
TestNG là một testing framework dành cho Java lấy cảm hứng từ JUnit đồng thời bổ sung thêm các tính năng và khả năng bổ sung. Nó cung cấp tính năng hỗ trợ viết và thực hiện các bài kiểm tra trong Java, cung cấp các tính năng như test grouping, test dependencies, parallel test execution và cấu hình kiểm tra nâng cao. TestNG cũng vượt trội trong việc cung cấp các tùy chọn cấu hình thử nghiệm linh hoạt và báo cáo mạnh mẽ. Nó tích hợp hoàn hảo với các IDE Java và các công cụ xây dựng, khiến nó trở thành lựa chọn phổ biến cho Java developers.
Ưu điểm của PyUnit:
Nhược điểm của PyUnit:
Tham khảo một số frameworks Behavior Driven Development phổ biến dưới đây:
Cucumber testing là phương pháp kiểm thử phát triển theo hướng hành vi (BDD), sử dụng công cụ Cucumber để xác định, tự động hóa và thực hiện các trường hợp kiểm thử theo định dạng dễ hiểu đối với cả các bên liên quan về kỹ thuật và phi kỹ thuật.
Trong thử nghiệm Cucumber, các kịch bản thử nghiệm được viết bằng định dạng ngôn ngữ tự nhiên, thường sử dụng cú pháp Gherkin. Syntax này sử dụng các từ khóa như Given, When và Then để mô tả các bước của một trường hợp thử nghiệm. Điều này cho phép các business analysts và chủ sở hữu sản phẩm viết các kịch bản thử nghiệm bằng ngôn ngữ phù hợp với hiểu biết của họ về hệ thống đang được thử nghiệm.
Ưu điểm của Cucumber:
Nhược điểm của Cucumber:
SpecFlow là một testing framework tạo điều kiện thuận lợi cho việc phát triển code và cộng tác giữa các developers. Nó hỗ trợ BDD giúp các nhà phát triển viết và kiểm tra code dễ dàng hơn.
Ưu điểm của SpecFlow:
Nhược điểm của SpecFlow:
Vậy là bạn đã khám phá sâu hơn sự khác biệt giữa TDD và BDD thông qua các yếu tố của thử nghiệm thực tế và tìm hiểu về các testing frameworks TDD và BDD phổ biến. Theo dõi Cole và tham gia khoá học ba để cập nhật các kiến thức mới nhất về lập trình và khoa học dữ liệu.
>> Xem thêm: Phân tích sự khác biệt giữa UML và BPMN