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ể.

TaskSub task
Analyze software requirement specificationInvestigate the soft requirement specs
Interview with the developer & other stakeholders to know more about the website
Create the Test SpecificationDesign test scenarios
Create test cases
Review and revise test cases
Execute the test casesBuild 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

TaskMembers
Analyze software requirement specificationAll the members
Create the test specificationTester/Test Analyst
Build up the test environmentTest Administrator
Execute the test casesTester, Test Administrator
Report defectsTester

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à

  1. Functional Point Method
  2. 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 nameRoleDescriptionFunction Point
1Đăng kíCustomerKhách hàng đăng kí tài khoản3
2Login, LogoutCustomer
Manager
Đăng nhập, đăng xuất3
3ProfileCustomerKhách hàng thay đổi thông tin tài khoản, mật khẩu2
4Book listCustomer
Manager
Customer: Xem danh sách sách, báo.
Manager: Xem, thêm, xoá, sửa.
8
5Mượn sáchCustomer
Manager
Customer: Đăng kí mượn sách.
Manager: Phê duyệt mượn sách.
8
6Trả sáchCustomer
Manager
Customer: Đăng kí trả sách.
Manager: Xác nhận trả sách.
8
7Quản lý khách hàngManagerQuả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)