Kĩ thuật Estimation trong kiểm thử
What is Software Test Estimation?
Test Estimation là một hoạt động quản lý ước lượng thời gian, chi phí... cần thiết để hoàn thành một công việc kiểm thử. Estimating cho kiểm thử là một trong những hoạt động quan trọng trong Test Management.
Why Test Estimation?
Có hai câu hỏi được đặt ra trước khi bắt đầu kiểm thử một dự án là
Đối với các dự án nhỏ, những câu hỏi này được trả lời khá dễ dàng. Nhưng với các dự án lớn, cần nhiều sự phân tích để trả lời được những câu hỏi đó.
What to Estimate?
- Resources: Nguồn lực được yêu cầu để thực hiện các công việc trong dự án. Đó có thể là con người, thiết bị, công cụ, kinh phí hoặc bất kì việc gì được yêu cầu để hoàn thành các hoạt động trong dự án.
- Times : Thời gian là tài nguyên quý giá nhất trong một dự án. Mọi dự án đều có deadline để hoàn thành.
- Human Skills : Kĩ năng của con người nghĩa là các kiến thức, kinh nghiệm của các thành viên trong team. Những điều này ảnh hưởng đến việc estimate. Ví dụ, trong một team, nếu các thành viên thiếu kĩ năng sẽ mất nhiều thời gian để kết thúc dự án hơn các thành viên có nhiều kinh nghiệm.
- Cost: Cost là ngân sách của dự án. Nói chung, nó có nghĩa là mất bao nhiêu tiền để kết thúc được dự án.
How to estimate?
Một số kĩ thuật có thể áp dụng để Estimate trong kiểm thử phần mềm:
- Work Breakdown Structure
- 3-Point Software Testing Estimation Technique
- Wideband Delphi technique
- Function Point/Testing Point Analysis
- Use – Case Point Method
- Percentage distribution
- Ad-hoc method
Sau đây là quy trình 4 bước để thực hiện estimate
Bước 1) Chia project thành nhiều subtask
Task là một bộ phận công việc được giao cho ai đó. Để chia được task, bạn có thể sử dụng kĩ thuật Work Breakdown Structure.
Trong kĩ thuật này, một dự án phức tạp được chưa thành nhiều module. Các module được chưa thành các sub-module. Mỗi sub-module lại được chia thành các chức năng. Tóm lại là chia dự án thành các task nhỏ nhất có thể.
Ví dụ: Sử dụng Work BreakDown Structure để chia công việc test trong dự án thành các task nhỏ hơn
Sau đó, bạn có thể chia các task thành các sub-task. Mục đích của việc này là tạo được các task chi tiết nhất có thể.
Task | Sub task |
---|---|
Analyze software requirement specification | Investigate the soft requirement specs |
Interview with the developer & other stakeholders to know more about the website | |
Create the Test Specification | Design test scenarios |
Create test cases | |
Review and revise test cases | |
Execute the test cases | Build up the test environment |
Execute the test cases | |
Review test execution results | |
Report the defects | |
Create the Defect reports | |
Report the defects |
Bước 2) Phân công task cho member phù hợp
Trong bước này, mỗi task được phân công cho member phù hợp trong team dự án. Ví dụ phân công task như sau
Task | Members |
---|---|
Analyze software requirement specification | All the members |
Create the test specification | Tester/Test Analyst |
Build up the test environment | Test Administrator |
Execute the test cases | Tester, Test Administrator |
Report defects | Tester |
Bước 3) Estimate effort cho các task
Có 2 phương pháp có thể áp dụng để estimate cho các task là
- Functional Point Method
- Three Point Estimation
Nhưng ở bài viết này, tôi sẽ chỉ trình bày về Functional Point Method.
Ở phương pháp này, Test manager sẽ estimate Size, Duration, và Cost cho các task.
A) Estimate size cho các task
Sau khi chia dự án thành các task nhỏ, bạn cần estimate size cho các task đó. Size của các task phụ thuộc vào độ phức tạp của chức năng cần thực hiện. Ở đây, đơn vị size của task là Function point, tức là chức năng càng phức tạp thì Function point càng lớn.
Giả sử bạn tham gia vào dự án "Quản lý thư viện" với các module được liệt kê ở dưới. Bạn cần estimate size cho công việc "Viết testcase cho trang web quản lý". Dựa vào độ phức tạp, bạn xác định được Function point cho mỗi module.
No. | Module name | Role | Description | Function Point |
1 | Đăng kí | Customer | Khách hàng đăng kí tài khoản | 3 |
2 | Login, Logout | Customer Manager | Đăng nhập, đăng xuất | 3 |
3 | Profile | Customer | Khách hàng thay đổi thông tin tài khoản, mật khẩu | 2 |
4 | Book list | Customer Manager | Customer: Xem danh sách sách, báo. Manager: Xem, thêm, xoá, sửa. | 8 |
5 | Mượn sách | Customer Manager | Customer: Đăng kí mượn sách. Manager: Phê duyệt mượn sách. | 8 |
6 | Trả sách | Customer Manager | Customer: Đăng kí trả sách. Manager: Xác nhận trả sách. | 8 |
7 | Quản lý khách hàng | Manager | Quản lý thông tin khách hàng. | 5 |
B) Estimate duration cho task
Duration nghĩa là cần bao lâu để hoàn thành task.
- Total Effort: Tổng thời gian để hoàn thành task.
- Total Function Points: Tổng số function point của task.
- Estimate defined per Function Points: Thời gian trung bình để hoàn thành một function point. Giá trị này phụ thuộc vào năng lực của member phụ trách task.
Tiếp tục với ví dụ trên, ta có Total Effort = 37*5=185(h) với thời gian trung bình để hoàn thành 1 point là 5h.
Ví dụ trên cũng cho thấy tầm quan trọng của các thành viên trong team. Nếu bạn có những thành viên tài năng và kinh nghiệm, các task được hoàn thành nhanh hơn và dự án hoàn thành sớm hơn deadline.
C) Estimate Cost cho các task.
Bước này giúp bạn trả lời câu hỏi “How much does it cost?”
Giả sử, mức lương trung bình trong team của bạn là $5 per hour. Thời gian yêu cầu cho task viết testcase là 185h. Như vậy, chi phí nhân sự cho task này là 5*185= $925.
Bước 4) Validate the estimation
Sau khi estimate cho tất cả các task, bạn cần chuyển cho người quản lý để xem xét và phê duyệt.
Ban quản lý sẽ review và thảo luận với bạn về việc estimate và bạn có thểt giải thích với họ một cách logic và hợp lý về bản estimate đó để được chấp thuận.
Trên đây là phương pháp estimate cho công việc của bạn, có thể áp dụng cho nhiều loại công việc không chỉ riêng testing. Mong rằng bài viết có thể giúp bạn estimate công việc tốt hơn.
Chúc bạn một ngày tốt lành :))))
Link tham khảo: Software Test Estimation Techniques (guru99.com)