Phát triển phần mềm theo hƣớng kiểm thử chấp nhận (Acceptance Test- Driven Development - ATDD) là một quy trình kiểm chứng và đặc tả yêu cầu phần mềm. ATDD nhằm tự động hóa kiểm thử chấp nhận và đặc tả yêu cầu phần mềm thông qua các ví dụ cụ thể. Mục đích viê ̣c kiểm thử chấp nhận tự động nhằm giữ cho các thành phần tham gia vào quy trình tập trung vào mục đích của dự án phần mềm trong khi khách hàng vẫn nắm đƣợctính năng và các thuộc tính kiểm thử chấp nhận.
Trong quy trình ATDD có 3 nhóm tác nhân chính gồm: khách hàng, kiểm thử viên và lập trình viên. Kết quả của ATDD là một tập các kiểm thử chấp nhận có thể thực hiện đƣợc. Quy trình phát triển phần mềm theo hƣớng kiểm thử chấp nhậnthƣ̣c hiê ̣n ba hoạt động nhƣ sau (Hình 1-6):
Hình 1-6. Quy trình ATDD
1. Viết các kiểm thử chấp nhận
Một kiểm thử viên sẽ làm việc cùng với khách hàng để tìm ra các kiểm thử mô tả hành vi dự kiến tƣơng ứng với một yêu cầu.
Tất cả các biến thể của hành vi đó đƣợc quy định cụ thể thông qua các ví dụ có đầu vào, đầu ra rõ ràng và đƣợc thêm vào các đặc tả mô tả tiêu chí kiểm thử chấp nhận. Tài liệu kiểm thử phải đƣợc viết bằng ngôn mô hình hoặc ngôn ngữ tự nhiên để khách hàng có thể hiểu đƣợc.
2. Kiểm thử chấp nhận tự động
Dƣ̣a vào tài liệu kiểm thƣ̉ mô tả hành vi của hê ̣ thống đã viết ở bƣớc trên để làm cơ sở cho việc kiểm thử chấp nhận . Mặc dù các kiểm thử đƣợc mô tả bằng các ví dụ cụ thể nhƣng không thể sử dụng trƣ̣c tiếp để làm hƣớng dẫn kiểm thử. Ở giai đoạn này, mộtlập trình viên sẽ làm việc với một kiểm thử viên để chuyển các khái niệm trong ví dụ đó thành các hàm hay các phƣơng thức kiểm thƣ̉ viết bằng mã chƣơng trình. Viê ̣c cài đă ̣t các phƣơng thƣ́c kiểm thƣ̉ có thể đƣợc thƣ̣c hiê ̣n tự động nhờ vào các công cu ̣ hỗ trợ , và lậptrình viên chỉ việc bổ sung các mã nguồn theo đúng ví dụ mô tả.
Lập trình viên sẽ thiết kế và cài đặt các chức năng để hệ thống làm việc đúng với các yêu cầu, các chức năng sẽ đƣợc hoàn thiện dần để đáp ứng các tiêu chí kiểm thử chấp nhận đã đƣợc mô tả trong tài liê ̣u yêu cầu.
Trong phƣơng pháp này , đầu tiên các tiêu ch í kiểm thử chấp nhận có thể đƣợc viết cho tất cả các yêu cầu phần mềm, sau đó hê ̣ thống sẽ đƣợc cài đă ̣t và kiểm thƣ̉ dần tƣ̀ng phần mô ̣t thông qua các vòng lă ̣p . Viê ̣c kiểm thƣ̉ thƣờng xuyên và thông qua các công cu ̣ hỗ trợ kiểm thƣ̉ chấ p nhâ ̣n tƣ̣ đô ̣ng sẽ làm cho hê ̣ thống cuối cùng dễ dàng đáp ƣ́ng các tiêu c hí mà ngƣời dùng mong muốn . Tại mỗi vòng lă ̣p , hê ̣ thống đƣợc tƣ̣ đô ̣ng kiểm thƣ̉ hồi quy , giúp tránh các lỗi phát sinh trong quá trình bổ sung các tí nh năng mới mà các phƣơng pháp kiểm thƣ̉ khác hay gă ̣p phải.