Test Plan tuy là một mục khá nhỏ, nhưng mình vẫn muốn đi qua sớm ở một bài viết riêng biệt.
Khái niệm
Test Plan về cơ bản là kế hoạch để thực hiện hoạt động kiểm thử. Nó phải được hoàn thiện và đưa vào vận hành ngay từ khi sprint (hay dự án) bắt đầu. Nó quy định ra phương hướng, nội dung, chiến lược, thời gian,... của hoạt động kiểm thử.
Ai sẽ làm viết Test Plan ? - người đứng đầu đội test trong dự án, thường là Test Lead. Thời điểm để viết Test Plan là vào giai đoạn lên kế hoạch của sprint - planning phase.
Test Plan sẽ được viết ra căn cứ vào:
- Kế hoạch của dự án - Project Plan
- Yêu cầu cần thực hiện của sprint - Requirements
- Tiêu chí chấp nhận - Acceptance criteria
Nếu bạn quên yêu cầu/requirement là gì, có thể quay về đọc bài viết SDLC hoặc muốn biết cụ thể hơn hãy đọc bài viết Requirement
Giải thích qua một chút, đầu tiên là Project Plan - kế hoạch dự án, nghe cái tên là đủ hiểu nó là gì, và cũng phụ thuộc vào cụ thể dự án mà nó sẽ có một kiểu thù hình khác nhau, nên chúng ta không cần nói đến ở đây.
Acceptance criteria - tiêu chí chấp nhận là tiêu chí để sản phẩm phần mềm được coi là hoàn thành và có thể được chấp nhận bởi khách hàng. Lý do nó quan trọng đối với test plan là vì dựa vào acceptance criteria mà chúng ta có thể biết được sản phẩm đã sẵn sàng để bàn giao và nghiệm thu hay chưa. Nó sẽ quy định các điều kiện để một tính năng hay chức năng được coi là hoàn thiện.
Ví dụ, với một tính năng "Đăng nhập", các tiêu chí chấp nhận:
-
Người dùng có thể nhập vào tài khoản, mật khẩu và đánh captcha xác nhận
-
Người dùng chỉ có thể đăng nhập với tài khoản và mật khẩu hợp lệ
-
Cần tính năng quên mật khẩu
-
Người dùng nếu nhập sai mật khẩu 5 lần liên tiếp sẽ bị tạm khoá tài khoản
Nếu bây giờ bản build được bàn giao bởi dev chưa có tính năng tạm khoá nếu sai mật khẩu 5 lần, tức là tính năng chưa được coi là hoàn thiện, thì sẽ không thể bàn giao cho khách hàng, mặt khác, nếu có tính năng này nhưng ví dụ như không phải là 5 lần mà mới có 3 lần đã khoá, tức là không thoả mãn tiêu chí chấp nhận, thì ta cũng trả về cho dev.
Test Plan được tạo ra sẽ có cấu trúc như sau:
- Introduction - Giới thiệu, nôm na về kế hoạch kiểm thử, ai viết, những ai tham gia, v.v...
- Requirements - yêu cầu của khách hàng
- Acceptance criteria - tiêu chí chấp nhận
- Strategy - chiến lược thực hiện kiểm thử
- Resource - Tài nguyên thực hiện kiểm thử, tài nguyên về người - tester, dev,..., về phần cứng , về công cụ,...
- Milestone - Cột mốc sự kiện và thời gian của giai đoạn kiểm thử
- Deliverable - Sản phẩm làm việc của kiểm thử
- Exit criteria - Điều kiện ngừng kiểm thử
Trong số này có lẽ dấu hỏi chấm lớn nhất là ở Strategy và Exit criteria, vậy thì mình sẽ giải thích
-
Strategy là chiến lược, nó nêu ra:
- Phạm vi kiểm thử : Nêu ra cái gì sẽ được kiểm thử và cái gì không
- Các Test Levels: Nêu ra các levels và ai sẽ thực hiện nó, thực hiện lúc nào, đọc lại nếu cần Test Levels
- Test Type : Các loại kiểm thử sẽ được thực hiện, cụ thể sẽ ở một bài viết sau
- Test Technique: Kỹ thuật kiểm thử, mình cũng sẽ có một bài viết cụ thể về nó
- Test Tools: Nêu ra những công cụ sẽ sử dụng
- ...
-
Exit criteria là tiêu chí để ngừng kiểm thử, về cơ bản có thể hiểu là các yêu cầu về mặt chất lượng mà các tính năng được yêu cầu trong Acceptance criteria phải đạt được. Nôm na hiểu Acceptance criteria quy định về lượng, Exit criteria quy định về chất lượng. Ngoài ra exit criteria cũng vươn ra rộng hơn đến các tiêu chí về độ bao phủ, tỉ lệ lỗi tồn đọng và rủi ro.
Vì bản chất chúng ta sẽ không thể đạt được một sản phẩm phần mềm hoàn hảo (bug-free), vì thế, không thể thực hiện kiểm thử mãi mãi.
Ví dụ về exit criteria:
-
Tỉ lệ lỗi tồn đọng (severity Major trở lên) dưới 5%: Đảm bảo rằng các lỗi nghiêm trọng đã được giải quyết trước khi release.
-
Độ bao phủ code (branch coverage) trên 80%: Đạt được mức độ bao phủ code đầy đủ để giảm thiểu rủi ro từ code chưa được kiểm tra.
-
Tỉ lệ lỗi không được phát hiện (trong quá trình System Test) dưới 5%: Hạn chế số lượng lỗi lọt qua giai đoạn kiểm thử hệ thống.
Typical question: What is the purpose of a test plan? - Mục đích của Test Plan là gì?
Typical question: What is the content of a test plan? - Nội dung của Test Plan bao gồm những gì?
Typical question: What is the difference between acceptance criteria and exit criteria? - Sự khác biệt giữa acceptance criteria và exit criteria là gì?