Các kỹ thuật ước lượng
Ước lượng efforts để kiểm thử phần mềm là một trong những nhiệm vụ chính và quan trọng trong quy trình phát triển phần mềm. Việc ước lượng chính xác sẽ giúp phần mềm được kiểm thử với độ bao phủ tối đa. Bài viết này sẽ đưa ra một số kỹ thuật hữu ích trong việc ước lượng nguồn lực cần thiết để kiểm thử phần mềm.
1. Ước lượng kiểm thử phần mềm là gì?
Ước lượng Kiểm thử là hoạt động ước lượng thời gian một Task (Task) sẽ hoàn thành.
Ước lượng effort cho kiểm thử là một trong những task chính và quan trọng trong Quản lý kiểm thử.
2. Tại sao phải Ước lượng kiểm thử?
Hai câu hỏi bạn có thể mong đợi từ khách hàng khi thảo luận về các cam kết khả năng kiểm thử là:
Bài viết này được đăng tại [free tuts .net]
Đối với các dự án nhỏ, những câu hỏi này tương đối dễ trả lời. Nhưng đối với các dự án lớn, bạn phải suy nghĩ kỹ để trả lời những câu hỏi đó.
3. Ước lượng những gì?
- Tài nguyên: Tài nguyên được yêu cầu để thực hiện các task của dự án, có thể là nhân lực, thiết bị, phương tiện, cơ sở vật chất...
- Thời gian: Thời gian là tài nguyên quý giá nhất trong một dự án. Mỗi dự án đều có thời hạn bàn giao sản phẩm.
- Kỹ năng của con người: Kỹ năng của con người có nghĩa là kiến thức và kinh nghiệm của các thành viên trong team. Kỹ năng ảnh hưởng đến ước lượng của bạn. Ví dụ, một nhóm có thành viên có kỹ năng kiểm thử thấp sẽ mất nhiều thời gian hơn để hoàn thành dự án so với nhóm có kỹ năng kiểm thử cao.
- Chi phí: Chi phí là ngân sách dự án, ước lượng mất bao nhiêu tiền để hoàn thành dự án.
4. Ước lượng như thế nào?
Có 3 kỹ thuật tiêu biểu:
Sau đây là quy trình ước lượng.
Bạn sẽ kết hợp các kỹ thuật này để ước lượng cho dự án Guru99 Bank.
Bước 1: Chia toàn bộ tasks trong dự án thành các tasks nhỏ
Task là một phần công việc đã được giao cho ai đó. Bạn có thể sử dụng kỹ thuật Work Breakdown Structure để phân chia tasks.
Trong kỹ thuật này, một dự án phức tạp được chia thành các mô-đun. Các mô-đun được chia thành các mô-đun con. Mỗi mô-đun phụ được chia thành chức năng, có nghĩa là chia toàn bộ task (tasks) trong dự án thành các tasks nhỏ (sub tasks).
Sử dụng cấu trúc Work Breakdown để chia dự án Guru99 Bank thành 5 tasks.
Sau đó, bạn có thể chia ra từng task thành nhiều sub tasks. Mục đích của hoạt động này là tạo ra task càng chi tiết càng tốt.
Task | Sub task |
Phân tích đặc tả yêu cầu phần mềm | Nghiên cứu các thông số kỹ thuật yêu cầu |
Trao đổi với developer và các bên liên quan khác để biết thêm về trang web | |
Tạo đặc tả kiểm thử | Thiết kế kịch bản kiểm thử |
Tạo test cases | |
Xem và update các test cases | |
Thực hiện các test cases | Xây dựng môi trường kiểm thử |
Thực hiện các test cases | |
Xem lại kết quả thực hiện kiểm thử | |
Báo cáo các lỗi | Tạo các báo cáo lỗi |
Báo cáo các lỗi |
Bước 2: Phân bổ các task cho các thành viên trong nhóm
Trong bước này, mỗi task sẽ được giao cho thành viên phù hợp trong nhóm dự án. Bạn có thể thực hiện giao tasks như sau:
Task | Các thành viên |
Phân tích đặc tả yêu cầu phần mềm | Tất cả các thành viên |
Tạo đặc tả kiểm thử | Tester / Test Analyst |
Xây dựng môi trường kiểm thử | Test Administrator |
Thực hiện các test cases | Tester, Test Administrator |
Báo cáo lỗi | Tester |
Bước 3: Ước lượng effort cho các tasks
Có 2 kỹ thuật có thể áp dụng để ước lượng effort cho các tasks
- Phương pháp điểm chức năng
- Ước lượng 3 điểm
Phương pháp 1: Phương pháp điểm chức năng
Trong phương pháp này, Test Manager ước lượng Kích thước, Thời lượng và Chi phí cho các tasks
Bước A: Ước lượng kích thước cho task
Ở Bước 1, bạn đã chia toàn bộ task dự án thành task nhỏ bằng cách sử dụng phương thức WBS. Bây giờ bạn ước lượng kích thước của những task. Hãy cùng thực hành với một task cụ thể: Tạo đặc tả kiểm thử
Kích thước của task này phụ thuộc vào kích thước chức năng được kiểm thử. Kích thước chức năng phản ánh số lượng chức năng có liên quan đến người dùng. Số lượng chức năng càng nhiều, hệ thống càng phức tạp.
Trước khi bắt đầu ước lượng effort thực tế, các điểm chức năng được chia thành ba nhóm Phức tạp, Trung bình, Đơn giản như sau:
Dựa trên độ phức tạp của các chức năng, Test Manger phải cung cấp đủ trọng số cho từng điểm chức năng. Ví dụ:
Nhóm | Trọng số |
Phức tạp | 5 |
Trung bình | 3 |
Đơn giản | 1 |
Hãy làm một ví dụ đơn giản để hiểu rõ hơn:
Hãy xem thông số kỹ thuật của trang web Guru99 Bank tại đây, kỹ sư phần mềm đã mô tả chi tiết các mô-đun, bạn có thể xác định mức độ phức tạp của các tính năng bằng cách đưa ra trọng số cho từng mô-đun không?
Điểm chức năng phức tạp hơn sẽ cần nhiều effort hơn để kiểm thử. Trang web được chia thành 12 điểm chức năng, bạn có thể xác định độ phức tạp của từng điểm chức năng như sau:
STT | Tên mô-đun | Quyền thực hiện | Mô tả | Trọng số |
1 | Kiểm thử số dư | Manager Customer |
Customer: Một Customer có thể có nhiều tài khoản ngân hàng. Customer chỉ có thể xem số dư tài khoản của mình.
Manager: Manager có thể xem số dư của tất cả các Customer chịu sự giám sát của manager đó. |
3 |
2 | Chuyển quĩ | Manager Customer |
Customer: Một Customer có thể chuyển tiền từ tài khoản của riêng mình vào bất kỳ tài khoản đích nào.
Manager: Manager có thể chuyển tiền từ bất kỳ tài khoản ngân hàng nguồn nào sang tài khoản đích. |
5 |
3 | Bản sao kê Mini | Manager Customer |
Một Bản sao kê Mini sẽ hiển thị 5 giao dịch cuối cùng của một tài khoản.
Customer: Một Customer có thể thấy bản sao kê Mini chỉ các tài khoản của riêng mình. Manager: Manager có thể thấy Bản sao kê Mini của bất kỳ tài khoản nào. |
3 |
4 | Bản sao kê tùy chỉnh | Manager Customer |
Một Bản sao kê tùy chỉnh cho phép bạn lọc và hiển thị các giao dịch trong tài khoản dựa trên ngày, giá trị giao dịch.
Customer: Một Customer có thể thấy Bản sao kê Tùy chỉnh chỉ các tài khoản của riêng mình. Manager: Manager có thể thấy Bản sao kê Tùy chỉnh của bất kỳ tài khoản nào. |
5 |
5 | Đổi mật khẩu | Manager Customer |
Customer: Một Customer chỉ có thể thay đổi mật khẩu tài khoản của mình.
Manager: Manager chỉ có thể thay đổi mật khẩu tài khoản của mình, không thể thay đổi mật khẩu của Customer. |
1 |
6 | Thêm Customer mới | Manager | Manager: Manager có thể thêm một Customer mới.
Manager: Manager có thể chỉnh sửa chi tiết như địa chỉ, email, điện thoại của Customer. |
3 |
7 | Thêm Tài khoản mới | Manager | Hiện tại hệ thống cung cấp 2 loại tài khoản: Tiết kiệm và Hiện hành.
Manager: Manager có thể thêm tài khoản mới cho một Customer đang tồn tại. |
5 |
8 | Chỉnh sửa tài khoản | Manager | Manager: Manager có thể chỉnh sửa tài khoản cho tài khoản hiện có. | 1 |
9 | Xóa tài khoản | Manager | Manager: Manager có thể thêm xóa tài khoản Customer. | 1 |
10 | Xóa Customer | Manager | Một Customer chỉ có thể bị xóa nếu họ không có tài khoản hiện hành hoặc tài khoản tiết kiệm.
Manager: Manager có thể xóa Customer. |
1 |
11 | Tiền gửi | Manager | Manager: Manager có thể gửi tiền vào bất kỳ tài khoản nào. Thường được thực hiện khi tiền mặt được gửi tại chi nhánh ngân hàng. | 3 |
12 | Rút tiền | Manager | Manager: Manager có thể rút tiền từ bất kỳ tài khoản nào. Thường được thực hiện khi rút tiền mặt tại chi nhánh ngân hàng. | 3 |
Bước B: Ước lượng thời gian thực hiện task
Sau khi phân loại độ phức tạp của các điểm chức năng, bạn phải ước lượng thời lượng để kiểm thử chúng. Thời lượng có nghĩa là bao nhiêu thời gian cần để hoàn thành task.
- Total Effort: Effort để kiểm thử tất cả các chức năng của trang web.
- Total Function Points: Tổng số mô-đun của trang web.
- Estimate defined per Function Points: Effort trung bình để hoàn thành một điểm chức năng. Giá trị này phụ thuộc vào năng suất của thành viên sẽ đảm nhận task này.
Giả sử nhóm dự án đã ước lượng được mỗi Điểm chức năng là 5 giờ / điểm. Bạn có thể ước lượng toàn bộ effort để kiểm thử tất cả các tính năng của trang web Guru99 Bank như sau:
Trọng số | Số điểm chức năng | Tổng | |
Phức tạp | 5 | 3 | 15 |
Trung bình | 3 | 5 | 15 |
Đơn giản | 1 | 4 | 4 |
Tổng số điểm Chức năng (Function Total Points) |
34 | ||
Ước lượng xác định cho mỗi điểm (Estimate define per point) |
5 | ||
Tổng effort ước lượng (Total Estimated Effort) |
170 |
Như vậy, tổng effort để hoàn thành task “Tạo đặc tả kỹ thuật kiểm thử” của Guru99 Bank là khoảng 170 giờ.
Khi bạn hiểu được effort cần có, bạn có thể chỉ định các tài nguyên để xác định thời gian thực hiện task, sau đó bạn có thể ước lượng chi phí lao động và phi lao động.
Ví dụ trên cũng cho thấy tầm quan trọng của thành viên trong nhóm. Nếu bạn có các thành viên tài năng và có kinh nghiệm, bạn có thể hoàn thành task được giao trong thời gian nhỏ và dự án sẽ hoàn thành vào đúng thời hạn hoặc sớm hơn.
Bước C: Ước lượng chi phí cho các tasks
Bước này giúp bạn trả lời câu hỏi cuối cùng của khách hàng: "Chi phí là bao nhiêu?"
Giả sử, trung bình mức lương của đội bạn là 5 đô la mỗi giờ. Thời gian cần thiết cho task “Tạo đặc tả kỹ thuật kiểm thử” là 170 giờ. Theo đó, chi phí cho task là 5 * 170 = $ 850. Bây giờ bạn có thể tính toán ngân sách cho các tasks khác trong WBS và cả ngân sách tổng thể cho dự án.
Là quản lý của dự án, bạn phải quyết định làm thế nào để có được lợi tức cao nhất cho khoản đầu tư của công ty. Ước lượng chi phí dự án càng chính xác, khả năng quản lý ngân sách dự án của bạn càng tốt.
Phương pháp 2: Ước lượng 3 điểm
Ước lượng ba điểm là một trong những kỹ thuật có thể được sử dụng để ước lượng một task. Sự đơn giản của ước lượng ba điểm làm cho nó trở thành một công cụ rất hữu ích cho Project Manager ước lượng.
Trong ước lượng 3 điểm, ba giá trị được tạo ban đầu cho mọi tasks dựa trên kinh nghiệm trước đó hoặc dự đoán tốt nhất như sau:
Khi ước lượng một task, Test Manager cần cung cấp ba giá trị như được chỉ định ở trên. Ba giá trị được xác định, ước lượng những khả năng xảy ra ở trạng thái tối ưu, khả năng cao nhất hoặc những gì chúng ta nghĩ đó sẽ là trường hợp xấu nhất.
Hãy cùng xem cách sử dụng ba giá trị trên trong ví dụ sau:
Đối với task "tạo đặc tả kiểm thử", bạn có thể ước lượng effort kiểm thử không? Hãy nhớ rằng phải bao gồm tất cả các mô-đun của trang web Guru99 Bank như đã được thực hiện trong Phương thức điểm chức năng.
Bạn có thể ước lượng như sau:
- Trường hợp tốt nhất để hoàn thành task này là 120 giờ (khoảng 15 ngày). Trong trường hợp này, bạn có một đội ngũ tài năng, họ có thể hoàn thành task trong thời gian nhỏ nhất.
- Trường hợp có khả năng nhất để hoàn thành task này là 170 giờ (khoảng 21 ngày). Đây là một trường hợp thông thường, bạn có đủ tài nguyên và khả năng để hoàn thành task.
- Trường hợp xấu nhất để hoàn thành task này là 200 giờ (khoảng 25 ngày). Bạn cần thực hiện nhiều công việc hơn vì các thành viên trong nhóm của bạn không có kinh nghiệm.
Bây giờ, gán giá trị cho từng tham số như dưới đây:
Effort hoàn thành task có thể được tính bằng công thức phân bố tam giác (double-triangular distribution) như sau:
Trong công thức trên, tham số E được gọi là Trung bình trọng số. Đó là ước lượng của task “Tạo đặc tả kiểm thử”.
Nhưng sếp có thể hỏi bạn: Xác suất mà bạn ước lượng có chính xác không?
Trong ước lượng trên, bạn chỉ cần xác định một giá trị có thể và không phải là một giá trị nhất định, xác suất ước lượng là chính xác. Bạn có thể sử dụng công thức sau:
Trong công thức trên, SD có nghĩa là Độ lệch chuẩn, giá trị này có thể cung cấp cho bạn thông tin xác suất ước lượng là chính xác.
Bây giờ bạn có thể kết thúc việc ước lượng cho task “tạo đặc tả kiểm thử”.
Để hoàn thành task “tạo đặc tả kiểm thử” trang web của Guru99 Bank, bạn cần 166,6 ± 13,33 giờ (153,33 đến 179,99 giờ).
Bước 4: Xác thực ước lượng
Khi bạn ước lượng cho tất cả các tasks được đề cập trong WBS (Work Breakdown), bạn cần chuyển nó đến ban quản lý, người sẽ xem xét và phê duyệt nó.
Thành viên của ban quản lý có thể bao gồm CEO, Project Manager và các bên liên quan khác.
Ban quản lý sẽ xem xét và thảo luận về kế hoạch Ước lượng với bạn. Bạn có thể giải thích cho họ một cách hợp lý để họ có thể phê duyệt kế hoạch Ước lượng của bạn.
5. Làm sao để Ước lượng Kiểm thử tốt nhất?
Dưới đây là những lời khuyên để ước lượng kiểm thử chính xác.
- Thêm một thời gian đệm: Nhiều trường hợp không thể đoán trước có thể xảy ra với dự án, chẳng hạn như một thành viên nhóm tài năng đột ngột rời bỏ công việc của mình, việc kiểm thử mất nhiều thời gian hơn... Có một bộ đệm trong ước lượng cho phép đối phó với bất kỳ sự trì hoãn nào có thể xảy ra.
- Lập kế hoạch ước lượng nguồn lực: Bạn nên làm gì nếu một số thành viên trong nhóm nghỉ phép? Nó có thể trì hoãn dự án. Lập kế hoạch nguồn trong Ước lượng đóng một vai trò quan trọng. Sự sẵn có của các nguồn lực sẽ giúp đảm bảo rằng các ước lượng là thực tế. Ở đây bạn phải xem xét các trường hợp thành viên trong nhóm nghỉ việc hay chuyển dự án…
- Sử dụng kinh nghiệm trong quá khứ làm tài liệu tham khảo: Kinh nghiệm rút ra từ các dự án trong quá khứ đóng vai trò quan trọng trong khi ước lượng thời gian. Bởi vì một số dự án có thể được ước lượng tương tự, bạn có thể sử dụng lại ước lượng của dự án cũ. Ví dụ: nếu bạn sử dụng để thực hiện một dự án như kiểm thử trang web, bạn có thể học hỏi từ kinh nghiệm đó, cố gắng tránh tất cả những khó khăn hoặc vấn đề đã gặp phải trong các dự án trước đây.
- Bám sát ước lượng của bạn: Ước lượng có thể sai lệch. Trong giai đoạn đầu của dự án, bạn nên thường xuyên xem lại các ước lượng kiểm thử và thực hiện sửa đổi nếu cần. Chúng ta không nên mở rộng ước lượng sau khi sửa nó, trừ khi có những thay đổi lớn trong yêu cầu hoặc bạn phải thương lượng với khách hàng về việc ước lượng lại.
Mẫu ước lượng kiểm thử phần mềm
Tải file Ước lượng kiểm thử phần mềm mẫu dạng Excel (.xlsx)
6. Các kỹ thuật khác
Bạn có thể sử dụng các kỹ thuật ước lượng phổ biến khác như :
- Kỹ thuật Wideband Delphi
- Phương pháp Use – Case Point
- Phân phối tỷ lệ phần trăm
- Phương pháp Ad-hoc
- Phương pháp IFPUG
- Phương pháp Mark-II