Lợi nhuận:
- Khả năng đọc các số liệu như mức độ phù hợp của đường, nhánh và tình trạng dưới dạng bản đồ chứ không phải độ tin cậy và hiểu rằng mức độ phù hợp cao có thể mang lại độ tin cậy giả
- Khả năng đặt phạm vi yêu cầu bên cạnh phạm vi mã và hiển thị các khoảng trống trong khả năng truy xuất nguồn gốc bằng trí tuệ nhân tạo
- Khả năng chấm điểm các tính năng với công thức rủi ro = xác suất × tác động, hướng nỗ lực thử nghiệm hạn chế đến rủi ro cao nhất và ghi lại tài liệu có chủ ý ngoài phạm vi
Bạn không thể kiểm tra mọi phần mềm mãi mãi; Thời gian và nguồn lực có hạn. Vì vậy, câu hỏi thực sự là: nỗ lực thử nghiệm hạn chế ở đâu? Hai khái niệm trả lời câu hỏi này. Phạm vi kiểm thử—một thước đo đo lường mức độ mã hoặc yêu cầu được kiểm thử—thể hiện những gì đang được kiểm thử. Thử nghiệm dựa trên rủi ro - phương pháp xác định mức độ ưu tiên thử nghiệm theo xác suất suy thoái của một khu vực và thiệt hại mà nó sẽ gây ra khi nó xuống cấp - hướng nỗ lực đến mức rủi ro cao nhất. Trí tuệ nhân tạo (AI) là một đối tác phân tích mạnh mẽ trong cả hai lĩnh vực: nó làm rõ những khoảng trống trong phạm vi bao phủ, gợi ý các khu vực rủi ro. Nhưng lưu ý trung tâm vẫn là: số lượng phạm vi mà AI nhìn thấy có thể gây hiểu nhầm; Thậm chí có thể đạt được phạm vi bao phủ 100% hàng bằng các thử nghiệm không xác minh được gì. Công việc của bạn là đọc phạm vi như một bản đồ chứ không phải một sự tin cậy.
Đọc số liệu phạm vi bảo hiểm một cách chính xác
Có một số loại phạm vi và không phải tất cả đều có ý nghĩa như nhau:
- Phạm vi dòng: Có bao nhiêu dòng mã được thực thi ít nhất một lần. Tiêu chí phổ biến nhất nhưng yếu nhất; Chỉ vì một đường dây hoạt động không phải là bằng chứng cho thấy nó hoạt động đúng.
- Phạm vi nhánh: Liệu mọi nhánh if (cả đúng và sai) đã được kiểm tra hay chưa. Ý nghĩa hơn một dòng.
- Phạm vi điều kiện: Kiểm tra từng điều kiện phụ trong các điều kiện phức tạp một cách riêng biệt.
- Phạm vi đường dẫn: Sự kết hợp của các đường dẫn logic trong mã. Nó là toàn diện nhất nhưng khó đạt được đầy đủ trong thực tế.
Thận trọng: Tỷ lệ phần trăm phù hợp không phải là "điểm chất lượng". Mức độ bao phủ hàng 100% cho bạn biết rằng các hàng đang hoạt động; không phải là nó tạo ra kết quả chính xác (pass giả trong đơn vị 1). Sử dụng phạm vi như một câu trả lời cho câu hỏi “tôi chưa bao giờ nhìn vào đâu”, chứ không phải để đảm bảo rằng “mọi thứ đã được kiểm tra”.
Phạm vi điểm mù
Số liệu phạm vi bao phủ chỉ đo lường số lượng mã đã được thực thi; không thể thấy: (1) các yêu cầu chưa được kiểm tra (mã tồn tại nhưng quy tắc kinh doanh sai), (2) mã bị thiếu (không có phạm vi cho điều khiển chưa bao giờ được viết), (3) kết hợp dữ liệu/trạng thái, (4) khả năng sử dụng, hiệu suất, bảo mật. Do đó, phạm vi yêu cầu (mỗi tiêu chí chấp nhận phải được đáp ứng bởi ít nhất một thử nghiệm) nên được đặt bên cạnh phạm vi mã. AI rất hữu ích trong việc tạo ra ánh xạ kiểm tra yêu cầu (ma trận truy xuất nguồn gốc).
Thử nghiệm dựa trên rủi ro: chúng ta nỗ lực ở đâu?
Rủi ro = xác suất (khả năng bị vỡ) × tác động (tác hại nếu bị vỡ). Với AI, bạn có thể chấm điểm danh sách tính năng trên hai trục này và tạo bản đồ nhiệt. Xác suất cao × tên miền cao (thanh toán, xác thực, tính toàn vẹn dữ liệu) xứng đáng được thử nghiệm cường độ cao nhất; vùng thấp × vùng thấp (màn hình ưu tiên hiếm khi được sử dụng) kiểm tra ánh sáng là đủ.
khu vực
xác suất
tác động
Rủi ro
Mật độ kiểm tra
Luồng thanh toán
trung bình
rất cao
cao
Tự động hóa sâu +
xác thực
trung bình
rất cao
cao
Bảo mật sâu +
Tìm kiếm sản phẩm
cao
trung bình
Trung bình-Cao
Tự động hóa + khám phá
Ảnh hồ sơ
thấp
thấp
thấp
điều khiển ánh sáng
Trang trợ giúp
thấp
quá thấp
quá thấp
đánh giá
Cái bẫy của phạm vi theo đuổi
Đặt tỷ lệ phần trăm bao phủ thành mục tiêu (ví dụ: quy tắc “nhóm phải vượt qua tỷ lệ bao phủ 90%)” có tác dụng phụ nguy hiểm: các nhà phát triển và người thử nghiệm tập trung vào việc tăng tỷ lệ phần trăm hơn là giải quyết rủi ro thực tế. Kết quả thường là một phạm vi cồng kềnh không có xác nhận hoặc kiểm tra tầm thường - con số có vẻ đẹp nhưng không có sự bảo vệ. Đây là hiện tượng tiêu chí bị hư hỏng khi bản thân nó trở thành mục tiêu: “khi thước đo trở thành mục tiêu thì nó không còn là thước đo tốt nữa”. Sử dụng phạm vi làm công cụ chẩn đoán chứ không phải thẻ báo cáo hiệu suất.
Một cách tiếp cận lành mạnh hơn là đọc phạm vi theo hướng: "Tại sao phạm vi chi nhánh bị kẹt ở mức 40% trong mô-đun thanh toán quan trọng?" Câu hỏi đặt ra là "phạm vi bao phủ tổng thể có đạt 90% không?" Nó có giá trị hơn nhiều so với câu hỏi. Yêu cầu AI chia nhỏ báo cáo phạm vi theo mô-đun và mức độ rủi ro; Làm nổi bật các khu vực có nguy cơ cao với mức độ bao phủ thấp. Do đó, phạm vi trở thành một chiếc la bàn định hướng lao động chứ không phải là một tỷ lệ phần trăm mù quáng.
Thận trọng: Khẩu hiệu “bảo hiểm 100%” là một cái bẫy. Kiểm tra một số mã (bộ truy cập đơn giản, các bộ phận được tạo tự động) có giá trị thấp; nỗ lực bỏ ra ở đó bị đánh cắp khỏi các quy tắc kinh doanh có rủi ro cao. Mục tiêu là kiểm tra mọi hành vi và rủi ro quan trọng chứ không phải mọi dòng.
Dấu nhắc yếu / Dấu nhắc mạnh
Yếu: “Tăng phạm vi thử nghiệm của tôi.”
Strong: "Dựa vào danh sách tiêu chí chấp nhận này và các trường hợp thử nghiệm hiện có này. (1) Bảng các tiêu chí chấp nhận chưa được đáp ứng bởi bất kỳ thử nghiệm nào (khoảng cách bao phủ yêu cầu). (2) Cho điểm mỗi tính năng từ 1-5 theo trục xác suất và tác động; xếp hạng theo rủi ro = xác suất × tác động. (3) Trong thời gian có hạn của tôi, hãy đề xuất 5 khoảng trống nào tôi nên đóng trước, bắt đầu với rủi ro cao nhất. Không lấy phạm vi dòng mã làm tiêu chí duy nhất; ưu tiên rủi ro kinh doanh. Tiêu chí: [...] Kiểm tra: [...]"
Lời nhắc mạnh mẽ; kết hợp phạm vi với rủi ro kinh doanh và ưu tiên lao động hạn chế.
Bốn mẫu có thể sao chép
1) Khoảng cách phạm vi yêu cầu:
Cho các tiêu chí chấp nhận sau đây và các trường hợp thử nghiệm này. Tạo bảng truy xuất nguồn gốc: mỗi tiêu chí -> (các) bài kiểm tra đáp ứng tiêu chí đó. Các tiêu chí không có bất kỳ bài kiểm tra nào được gọi là "KHOẢNG CÁCH BẢO HIỂM" và các bài kiểm tra không kết nối với bất kỳ tiêu chí nào được gọi là "CẦN THIẾT?" Điểm: Tiêu chí:[.../ Bài kiểm tra:[...]
2) Chấm điểm rủi ro:
Cho điểm danh sách các tính năng/mô-đun này từ 1-5 theo xác suất (khả năng bị gãy) và trục tác động (thiệt hại nếu bị gãy). Rủi ro = xác suất × tác động. Sắp xếp vào bảng và chỉ định loại thử nghiệm được đề xuất (đơn vị/API/UI/trinh sát/bảo mật) cho từng khu vực có rủi ro cao. Danh sách: […]
3) Giải thích phạm vi:
Báo cáo bảo hiểm sau đây đã được đưa ra (dòng %, nhánh %). Hãy cho tôi biết điều này:- Những con số này KHÔNG chứng minh điều gì?- Những khu vực nào có thể gặp rủi ro mặc dù phạm vi bao phủ hàng cao?- Bạn sẽ đề xuất thử nghiệm bổ sung nào cho những khoảng trống mà phạm vi phủ sóng không nhìn thấy (yêu cầu, kết hợp dữ liệu, bảo mật)?Báo cáo: [dán]
4) Kế hoạch giới hạn thời gian:
Còn [X giờ] nữa là đến giờ phát sóng. Sau đây là xếp hạng rủi ro và khoảng trống bảo hiểm. Trong giai đoạn này, kế hoạch kiểm tra sẽ giảm thiểu rủi ro tối đa được chuẩn bị theo thứ tự ưu tiên. Nêu rõ những gì KHÔNG nên kiểm tra một cách có ý thức và rủi ro được chấp nhận khi làm như vậy.Dữ liệu: […]
ba trường hợp nhỏ
Trường hợp 1 - Bảo hiểm 100%, không tin cậy. Một đội tự hào về mức độ bao phủ đường truyền 94%. Phân tích "Giải thích phạm vi" cho thấy hầu hết các thử nghiệm đều không có xác nhận, nghĩa là chúng chạy các dòng nhưng không xác minh bất kỳ điều gì. Phạm vi bảo vệ thực tế thấp hơn nhiều. Nhóm không tập trung vào các con số mà vào thử nghiệm đột biến (đơn vị 10); tỷ lệ bắt lỗi thực tế tăng gấp đôi.
Trường hợp 2 - Bản đồ rủi ro đã điều chỉnh mức độ ưu tiên. Một nhóm đã dành 40% nỗ lực thử nghiệm của họ cho màn hình báo cáo hiếm khi được sử dụng, bỏ qua luồng thanh toán vì nó "chỉ hoạt động". Việc chấm điểm rủi ro AI cho thấy sự mất cân bằng này. Lao động được phân phối lại; Hai tuần sau, một lỗi có ảnh hưởng lớn được phát hiện trong quy trình thanh toán và đã bị đóng trước khi hoạt động.
Trường hợp 3 - Ý thức ngoài phạm vi. Sau 4 giờ phát hành, nhóm đã quyết định thử nghiệm những gì và bỏ qua những gì với mẫu "lịch trình có giới hạn". Hai luồng có nguy cơ cao đã được thử nghiệm ở độ sâu; sàng lọc ưu tiên rủi ro thấp được ghi nhận là “rủi ro được chấp nhận” và bị bỏ qua. Quyết định này minh bạch và hợp lý; Phiên bản đã ra mắt một cách an toàn.
Những lỗi thường gặp
- Tỷ lệ phủ sóng nhầm lẫn với chất lượng. Đọc mức độ phù hợp của hàng cao là sự đảm bảo "đã được thử nghiệm".
- Chỉ cần nhìn vào phạm vi bảo hiểm mã. Bỏ qua phạm vi yêu cầu (kiểm tra từng tiêu chí chấp nhận).
- Kiểm tra như nhau mà không tính đến rủi ro. Phân bổ lao động đến các khu vực có rủi ro thấp và bỏ qua các luồng quan trọng.
- Ẩn ngoài phạm vi. Không ghi lại những gì chưa được kiểm tra khi không có đủ thời gian; Những bất ngờ sau khi phát hành.
- Chấp nhận điểm rủi ro của AI mà không cần thắc mắc. AI không biết đầy đủ bối cảnh của sản phẩm; Điều chỉnh điểm số bằng con mắt chuyên gia.
Tóm lại
Phạm vi kiểm thử và kiểm thử dựa trên rủi ro là hai công cụ hướng nỗ lực hạn chế đến đúng nơi. Số liệu phạm vi (dòng, nhánh, điều kiện, đường dẫn) hiển thị nội dung được chạm nhưng không chứng minh rằng nó hoạt động chính xác; Phạm vi là một bản đồ, niềm tin thì không. Đặt phạm vi yêu cầu bên cạnh phạm vi mã. Cho điểm các đặc điểm bằng công thức rủi ro = xác suất × tác động và nỗ lực hướng tới rủi ro cao nhất. AI làm rõ những khoảng trống, ghi điểm rủi ro, lập kế hoạch có giới hạn thời gian; nhưng ưu tiên cuối cùng và quyết định “từ chối có ý thức” thuộc về chuyên gia hiểu rõ bối cảnh kinh doanh.
Nhiệm vụ ứng dụng
Chọn một mô-đun từ dự án của riêng bạn. Chạy mẫu “khoảng cách phạm vi yêu cầu” với AI và tìm ra tiêu chí chấp nhận nào chưa được kiểm tra. Sau đó xếp hạng các tính năng phụ của mô-đun theo trục xác suất × tác động với “điểm rủi ro”. Phân bổ 3 giờ thử nghiệm (giả định) mà bạn có với "lịch trình có hạn"; Viết ra những gì bạn sẽ không thử nghiệm một cách có ý thức và rủi ro được chấp nhận. Thêm một thử nghiệm cụ thể sẽ thu hẹp khoảng cách bảo hiểm có rủi ro cao nhất mà bạn tìm thấy.
danh sách kiểm tra
- [ ] Tôi đọc tỷ lệ phần trăm phủ sóng dưới dạng bản đồ chứ không phải chất lượng.
- [ ] Bên cạnh phạm vi bảo hiểm mã, tôi cũng loại bỏ phạm vi bảo hiểm yêu cầu.
- [ ] Tôi cho điểm các đặc điểm theo xác suất × tác động và xếp hạng chúng theo rủi ro.
- [ ] Tôi đã chuyển hướng nỗ lực thử nghiệm sang mức rủi ro cao nhất.
- [ ] Tôi đã ghi lại các lĩnh vực chưa được kiểm tra một cách có ý thức và thừa nhận rủi ro.
- [ ] Tôi đã xem xét điểm rủi ro của AI dựa trên bối cảnh sản phẩm của mình.