Agile Testing là gì? Nguyên tắc và vòng đời của Agile Testing

Agile Testing giữ vai trò vô cùng quan trọng trong kiểm thử phần mềm. Agile Testing là gì? Agile Testing sở hữu những ưu điểm nổi bật nào? Ở bài viết này sẽ đề cập tới khái niệm Agile Testing và những nguyên tắc của Agile Testing, mời mọi người tham khảo.

1. Agile Testing là gì?

Agile Testing là một phương pháp kiểm thử phần mềm tuân theo các quy tắc và nguyên tắc phát triển phần mềm agile. Khác với phương pháp Waterfall thì Agile Testing có thể thực hiện ngay từ thời điểm bắt đầu dự án với sự kết hợp liên tục giữa phát triển và kiểm thử. Phương pháp Agile Testing không tuần tự (nghĩa là nó chỉ được thực hiện sau giai đoạn viết mã) mà liên tục.

2. Nguyên tắc của Agile Testing

Một số nguyên tắc thiết yếu của Agile Testing:

  • Trong mô hình Agile Testing này, phần mềm hoạt động được là thước đo tiến độ chính.
  • Các nhóm tự tổ chức có thể đạt được kết quả tốt nhất. Thay vì chờ đợi ở một vị trí được chỉ định, những người thử nghiệm Agile bắt đầu hành động tại mọi thời điểm trong quy trình. Họ tích cực tìm kiếm các vấn đề và tập hợp mọi người lại với nhau để giải quyết chúng.
  • Cung cấp thông tin phản hồi liên tục: người thử nghiệm Agile không chỉ đơn giản là kiểm tra liên tục. Họ cũng chịu trách nhiệm phân phối kết quả của những thử nghiệm đó và tạo điều kiện cung cấp phản hồi từ khách hàng cho nhà phát triển để tạo ra một sản phẩm mạnh mẽ hơn.
  • Các nhà phát triển phần mềm phải hành động để thu thập hàng ngày trong suốt dự án.
  • Tăng cường sự linh hoạt thông qua cải tiến kỹ thuật liên tục và thiết kế tốt.
  • Cung cấp giá trị cho khách hàng: Đây là nguyên tắc tối quan trọng. Mục tiêu cuối cùng của mọi hành động được thực hiện bởi người thử nghiệm Agile là tạo ra sản phẩm tốt nhất có thể cho khách hàng.
  • Trong quy trình Agile Test, chúng ta cần thực hiện quy trình kiểm thử trong quá trình triển khai, giúp giảm thời gian phát triển.
  • Quá trình thử nghiệm trong Agile nên hoạt động theo tốc độ phát triển nhất quán.
  • Cung cấp những phản ánh thường xuyên về cách trở nên hiệu quả hơn.
  • Các cấu trúc, yêu cầu và thiết kế tốt nhất xuất hiện từ các nhóm tự tổ chức.
  • Mỗi khi nhóm họp, nhóm sẽ xem xét và điều chỉnh hành vi của mình để trở nên hiệu quả hơn.
  • Cho phép giao tiếp trực tiếp: Vai trò của người thử nghiệm Agile là giảm sự nhầm lẫn và sai sót bằng cách giao tiếp trực tiếp với nhà phát triển, cũng như cho phép khách hàng giao tiếp trực tiếp với nhà phát triển.

3. Vòng đời kiểm tra Agile

Vòng đời thử nghiệm nhanh bao gồm 5 giai đoạn sau:

  • Đánh giá tác động
  • Lập kế hoạch Agile testing
  • Sẵn sàng phát hành
  • Scrum hàng ngày
  • Kiểm thử linh hoạt

4. Test Plan dành cho Agile Testing

Không giống như mô hình Waterfall, trong mô hình Agile, Test Plan được viết và cập nhật liên tục cho từng giai đoạn của dự án. Agile Test Plan bao gồm các loại kiểm thử được thực hiện trong giai đoạn đó như: yêu cầu dữ liệu kiểm thử, cơ sở hạ tầng, môi trường kiểm thử và kết quả kiểm thử. Một Agile Test Plan điển hình thường bao gồm:

  • Phạm vi test (Testing Scope)
  • Các chức năng mới đang được test
  • Cấp độ hoặc Loại thử nghiệm dựa trên độ phức tạp của tính năng
  • Load Testing và Performance Testing
  • Xem xét cơ sở hạ tầng
  • Kế hoạch giảm thiểu rủi ro
  • Cung cấp nguồn nhân lực và tài nguyên test
  • Sản phẩm bàn giao và các mốc quan trọng của dự án

5. Chiến lược cho Agile Testing

Vòng đời thử nghiệm cho Agile Testing trải qua bốn giai đoạn

Iteration 01

Trong giai đoạn đầu tiên hay giai đoạn Iteration 0, các phần việc thiết lập ban đầu sẽ được thực hiện. Nó bao gồm việc xác định nhân lực để thực hiện test, cài đặt công cụ test, sắp xếp các tài nguyên test (ví dụ: các thiết bị test, môi trường test...) Các bước sau đây sẽ được thực hiện trong Iteration 0:

  • Xây dựng các test cases logic chính (business case) cho dự án
  • Thiết lập các điều kiện biên và phạm vi dự án
  • Phác thảo các yêu cầu chính và các trường hợp sử dụng (use cases) để đảm bảo phần mềm được xây dựng theo đúng thiết kế
  • Phác thảo lại một hoặc nhiều các bản thiết kế dự án
  • Xác định rủi ro
  • Dự toán chi phí và chuẩn bị một dự án sơ bộ

Construction Iterations

Giai đoạn này được cho là một tập hợp các lần lặp lại việc test để tìm ra giải pháp cho các vấn đề hiện hữu. Trong Construction Iterations, nhóm agile tuân theo các yêu cầu ưu tiên trên thực tế: Với mỗi lần lặp lại, họ sẽ lấy các yêu cầu thiết yếu nhất trước để thực hiện trước.

Giai đoạn này cũng được chia thành 2 phần, confirmatory testing (kiểm thử xác nhận) và investigative testing (kiểm thử điều tra).

Tóm lại, Confirmatory testing có hai quan điểm để test như sau: dành cho developers và agile acceptance testing (kiểm thử chấp nhận trong agile). Cả hai đều được tự động hóa để cho phép thử nghiệm hồi quy liên tục trong suốt vòng đời.

Giai đoạn release hoặc chuyển Phase (Release End Game Or Transition Phase)

Mục tiêu của phiên bản Release là để triển khai hệ thống của bạn thành công. Các hoạt động trong giai đoạn này là hướng dẫn end-users, người hỗ trợ và người vận hành sử dụng hệ thống. Ngoài ra, nó bao gồm tiếp thị phát hành sản phẩm, sao lưu và phục hồi, hoàn thiện tài liệu hệ thống và người dùng.

Giai đoạn thử nghiệm cuối cùng bao gồm full system testing và acceptance testing. Để hoàn thành giai đoạn thử nghiệm cuối cùng mà không gặp bất kỳ trở ngại nào, tester nên kiểm tra sản phẩm chặt chẽ hơn trong khi nó đang trong quá trình lặp lại xây dựng) construction iterations).

Production (Sản phẩm đã hoàn thành)

Sau giai đoạn release, sản phẩm sẽ chuyển sang môi trường product.
The Agile Testing Quadrants

Agile testing quadrants chia toàn bộ quá trình test thành 4 phần:

a. Agile Quadrant I
Chất lượng của mã code nội bộ là trọng tâm chính trong phần này và nó bao gồm các trường hợp test mà được điều khiển bởi công nghệ và được triển khai để hỗ trợ nhóm test, bao gồm:

  1. Unit Tests
  2. Component Tests

b. Agile Quadrant II
Giai đoạn này sẽ tiến hành thực hiện các test cases mà theo các luồng logic chính (function chính). Các loại Test được thực hiện trong giai đoạn này là:

  1. Test các khả năng xảy ra của các scenarios and workflows
  2. Kiểm thử trải nghiệm người dùng như nguyên mẫu
  3. Kiểm thử theo cặp (Pair testing)

c. Agile Quadrant III
Phần này đưa ra các feedback của Quadrant 1 và 2. Các trường hợp kiểm thử có thể được sử dụng làm cơ sở để thực hiện automation testing, đồng thời nhiều vòng đánh giá lặp (iteration reviews) sẽ được thực hiện nhằm tạo niềm tin cho sản phẩm. Các loại Test được thực hiện trong giai đoạn này là:

  1. Usability Testing
  2. Exploratory Testing
  3. Pair testing with customers
  4. Collaborative testing
  5. User acceptance testing

d. Agile Quadrant IV
Phần này tập trung vào các yêu cầu phi chức năng như hiệu suất, bảo mật, ổn định, v.v ... Với phần test này, ứng dụng được tạo ra với chất lượng và giá trị đạt mong đợi. Các loại Test được thực hiện trong giai đoạn này là:

  1. Kiểm thử phi chức năng như stress testing và performance testing
  2. Kiểm thử bảo mật liên quan đến xác thực và hacking
  3. Infrastructure testing
  4. Data migration testing
  5. Scalability testing
  6. Load testing

6. Thách thức của QA với agile software development

  • Khả năng xảy ra lỗi sẽ cao hơn trong kiểm thử agile, vì tài liệu requirement không phải ưu tiên hàng đầu nên có thể được cung cấp sau, từ đó gây nhiều trở ngại cho nhóm QA
  • Các tính năng mới được đưa ra một cách liên tục, phải tốn thêm thời gian để xác định xem các tính năng mới nhất có phù hợp với yêu cầu hay không và nó có thực sự giải quyết các vấn đề kinh doanh không, điều này làm ảnh hưởng lớn đến ước lượng thời gian kiểm thử ban đầu của QA
  • Testers đôi khi phải đóng vai trò của một semi-developer
  • Các chu kỳ thực hiện test xảy ra liên tục và liên tiếp nhau
  • Rất ít thời gian để chuẩn bị kế hoạch test
  • Chỉ có một khoảng thời gian tối thiểu để thực hiện kiểm thử hồi quy
  • Tester phải thay đổi vai trò của họ từ việc trở thành người kiểm tra chất lượng hay trở thành người đưa ra những yêu cầu trong việc quản lý chất lượng
  • Việc thay đổi và cập nhật về yêu cầu vốn là thuộc tính trong agile và nó cũng là thách thức lớn nhất đối với QA

7. Kết luận

Agile testing là việc thực hiện test càng sớm càng tốt trong vòng đời phát triển phần mềm. Nó đòi hỏi việc tham gia thường xuyên của khách hàng vào quá trình test và mã code ngay khi có thể. Code phải đủ ổn định để có thể thực hiện system testing. Kiểm thử hồi quy mở rộng có thể được thực hiện để đảm bảo rằng các lỗi đã được sửa và kiểm thử. Và quan trọng hơn cả, việc giao tiếp giữa các teams chính là yếu tố làm cho agile testing thành công !!!

Tài liệu tham khảo:
https://www.guru99.com/agile-testing-a-beginner-s-guide.html