Mở đầu
Agile làm một phương thức phát triển phẩm mềm linh hoạt rất phổ biến hiện nay. Mô hình phát triển phần mềm Agile nhấn mạnh vào 4 giá trị cốt lõi sau:
- “Cá nhân và sự tương hỗ quan trọng hơn quy trình và công cụ”
- “Sản phẩm xài được quan trọng hơn tài liệu về sản phẩm”
- “Cộng tác với khách hàng quan trọng hơn đàm phán hợp đồng”
- “Phản hồi với sự thay đổi quan trọng hơn bám theo kế hoạch”
Không giống như mô hình WaterFall, việc kiểm thử trong mô hình Agile có thể thực hiện ngay từ khi bắt đầu dự án, trong đó việc phát triển và kiểm thử được tiến hành song song với nhau. Nếu quy trình phát triển trong mô hình WaterFall là tuần tự, việc kiểm thử chỉ được thực hiện sau khi giai đoạn phát triển đã hoàn thành xong thì với Agile việc kiểm thử diễn ra liên tục từ đầu cho đến khi kết thúc dự án. Trong mô hình Agile, việc kiêm thử sẽ tiến hành trong từng vòng lặp (Iteration), mỗi vòng lặp diễn ra trong một khoảng thời gian ngắn từ 1 đến 4 tuần. Những kiến thức cơ bản về kiểm thử Agile sẽ được trình bày trong 4 vấn đề sau:
- Test Plan trong Agile.
- Agile Testing Strategies.
- Agile Testing Quadrant.
- Những thách thức đối với QA trong Agile test.
- Rủi ro trong Agile test.
1. Test Plan trong Agile.
Không như trong mô hình WaterFall, test plan trong mô hình Agile được viết và update liên tục trong mỗi vòng lặp bao gồm:
- Phạm vi test
- Những chức năng mới sẽ cần test
- Test level và test type
- Load test và Performance test
- Phân tích cơ sở hạ tầng
- Các rủi ro và giải pháp
- Nguồn lực
- Sản phẩm bàn giao và mốc thời gian
2 . Agile Testing Strategies.
Quy trình kiểm thử trong mô hình Agile gồm 4 trạng thái sau:
(a) Iteration 0:
Trong giai đoạn đầu tiên của iteration 0, bạn sẽ thực hiện những task khởi tạo đã được thiết lập bao gồm xác định những người tham gia kiểm thử, cài đặt tool test, lên kế hoạch quản lý resource. Cụ thể bao gồm:
- Thành lập các business case cho project
- Thiết lập các boundary condition và phạm vi project
- Vạch ra những yêu cầu và use case quan trọng cần cân nhắc để triển khai
- Phác thảo một vài kiên trúc có thể áp dụng cho project
- Xác định các rủi ro
- Estimate chi phí và chuẩn bị một project phác thảo
(b) Construction Iterations
Pha thứ 2 trong quá trình kiểm thử đó là Construction Iterations, phần lớn các công việc kiểm thử sẽ được thực hiện trong giải đoạn này. Pha này được xem như là một tập các vòng lặp và tăng trưởng, qua đó giải pháp dần được xây dựng. Để làm được điều đó, trong mỗi một vòng lặp team sẽ thực thi một cách hiện thực Agile như XP, Scrum, Agile modeling, hay agile data.
Trong Construction Iteration, team sẽ thực hiện các requirement được ưu tiên. Trong mỗi vòng lặp requirement thiết yếu nhất sẽ được chọn từ backlog và thực hiện. Construction Iteration được phân lớp thành 2 phần: Confirmatory tesing và Investigative tesing. Confirmatory tesing tập chung vào xác minh xem hệ thống có đáp ứng được mục đích của stakeholder giống như mô tả mà team nhận và thực hiện hay không? Investigative testing phát hiện ra các vấn đề mà team đã bỏ sót hoặc bỏ qua, ngoài ra Investigative testing còn kèn thêm integration testing, load/stress tesing và security testing.
(c) Release (End Game)
Mục tiêu của “Release, End Game” là để deploy hệ thống một cách thành công lên production. Hoạt động trong pha này bao gồm training end user, support mọi người sử dụng sản phẩm. Ngoài ra, nó còn bao gồm maketing sản phẩm, back-up, restoration, hoàn thiện hệ thống và tài liệu.
Giai đoạn kiểm thử cuối cùng bao gồm system testing và acceptance testing. Để giai đoạn này có thể kết thúc tốt đẹp, bạn cần đảm bảo đã kiểm thử một cách kĩ lưỡng sản phẩm khi nó còn ở trong các vòng lặp.
(d) Production
Sau giai đoạn release, sản phẩm sẽ chuyển sang giai đoạn production.
3. The Agile Testing Quadrant
Agile Testing Quadrant tách tiến trình kiểm thử thành 4 góc giúp ta hiểu về cách thực hiện kiểm thử trong Agile
(a) Agile Quadrant I
Chất lượng cuả mã nguồn là mục tiêu chính cần quan tâm trong Quadrant này. Nó bao gồm các ca kiểm thử (theo hướng công nghệ) bao gồm:
- Unit tests
- Component Test
(b) Agile Quadrant II
Các ca kiểm thử phần này tập chung vào bussiness logic dựa trên requirement. Các loại kiểm thử trong Quadrant này bao gồm:
- Scenario và workflows testing
- User experience testing
- Pair testing
(c) Agile Quadrant III
Quadrant này cung cấp các phản hồi cho Quadrant I và Quadrant II. Các ca kiểm thử ở Quadrant này sẽ được sử dụng để là cơ sở thực hiện Automation test. Trong Quadrant này, việc kiểm thử của vòng lặp được review và thực hiện để đảm bảo tính tin cậy của sản phẩm. Các loại kiểm thử được thực hiện trong Quadrant này gồm có:
- Usability Testing
- Exploratory Testing
- Pair testing with customers
- Collaborative testing
- User acceptance testing
(d) Agile quadrant IV
Quadrant này tập chung vào kiểm tra các yêu cầu phi chức năng của như performance, security, stability… Các loại kiểm thử trong Quadrant này bao gồm:
- Non-fucntion test như stress test, performance test
- Security test
- Infrastructure test
- Data migration test
- Scalability test
- Load test
4. Những thách thức đối với QA trong Agile test
- Trong Agile, QA có cơ hội phát hiện lỗi sớm, tuy nhiên tài liệu lại ít được coi trọng hơn do đó phải mất nhiều effort để study Spec
- Các feature mới được đưa ra nhanh chóng, QA team không có đủ thời gian để xác định xem liệu tính năng này có đang tuân theo requirement và liệu rằng nó có giải quyết được các bussiness suit hay không
- Tester thường được yêu cầu phải tham gia một semi- developer role
- Chu kì thực hiện execute test bị dồn lại rất nhiều
- Có rất ít thời gian để chuẩn bị test plan
- Chỉ có một khoảng thời gian tối thiểu để thực hiện test hồi qui
- Vai trò của QA cũng có sự thay đổi, từ một người quản lý chất lượng đơn thuần dưới những yêu cầu đã có sẵn sang một partner, một người tham gia vào phân tích, đóng góp ý kiến về chất lượng sản phẩm cùng khách hàng và đội phát triển.
- Luôn phải đối mặt với thay đổi và cập nhật liên tục
Kết luận
Agile testing yêu cầu việc kiểm thử phải được tiến hành càng sớm càng tốt. Nó đòi hỏi có sự tham gia của khách hàng, mã nguồn phải được kiểm thử ngay khi sẵn sàng. Mã nguồn cũng phải đủ ổn định mới nên đưa vào thử nghiệm trong hệ thống. Kiểm thử hồi qui có thể hoàn thành để đảm bảo bug được fix và retest thành công. Và quan trọng hơn là sự giao tiếp, phối hợp làm việc giữa các team để Agile testing thành công tốt đẹp.