Kiểm thử phần mềm
Xếp hạng vị trí nghi lỗi từ dấu vết bao phủ
Tính điểm Ochiai và đọc thứ hạng như gợi ý kiểm tra mã.
Thích và đánh giá Bình luận và hỏi đáp1. Từ triệu chứng tới vị trí cần đọc
Giả sử một số ca đạt, một số ca thất bại. Ta biết mỗi ca đã chạy qua những câu lệnh nào. Một câu lệnh xuất hiện nhiều trong ca lỗi và ít trong ca đạt có thể được ưu tiên xem xét. Cách đánh giá dựa vào tương quan của dấu vết thực thi, nên cần đối chiếu mã và đặc tả để xác định nguyên nhân.
2. Tính ba đại lượng đầu vào
Với một câu lệnh, ef là số ca lỗi chạy qua, ep là số ca đạt chạy qua và F là tổng số ca lỗi. Điểm Ochiai dùng ef chia cho căn bậc hai của F nhân với ef cộng ep. Trong ví dụ, S2 chỉ xuất hiện trong cả hai ca lỗi, nên đạt 1. S1 xuất hiện ở mọi ca và có điểm khoảng 0,707. S3 có điểm 0,5.
3. Kiểm tra công thức bằng ma trận nhỏ
Mẫu Python công bố toàn bộ ma trận, tính điểm và sắp theo điểm giảm dần. Khi bằng điểm, dùng mã dòng để thứ tự lặp lại được. Nếu mẫu số bằng 0, mã trả 0. Trong báo cáo, nên tách trường hợp không có ca lỗi, vì lúc đó dữ liệu chưa cung cấp sự đối chiếu lỗi–đạt cần thiết cho phép định vị.
Chạy ví dụ bằng python test_dinh_vi_loi_ochiai.py.
Môi trường thực hành. Python 3.10 trở lên. Ví dụ dùng thư viện chuẩn Python.
from math import sqrt, isclose
loi = [False, False, True, True]
phu = {
"S1": [True, True, True, True],
"S2": [False, False, True, True],
"S3": [True, False, True, False],
}
def ochiai(da_chay):
ef = sum(f and r for f, r in zip(loi, da_chay, strict=True))
ep = sum(not f and r for f, r in zip(loi, da_chay, strict=True))
tong_loi = sum(loi)
mau = sqrt(tong_loi * (ef + ep))
return ef / mau if mau else 0
diem = {dong: ochiai(cot) for dong, cot in phu.items()}
assert isclose(diem["S1"], 1 / sqrt(2))
assert diem["S2"] == 1
assert diem["S3"] == 0.5
thu_tu = sorted(diem, key=lambda dong: (-diem[dong], dong))
assert thu_tu == ["S2", "S1", "S3"]
print([(dong, round(diem[dong], 3)) for dong in thu_tu])4. Thiết kế đánh giá tránh suy rộng
Bổ sung ca đạt chạy qua S2 rồi quan sát thứ hạng thay đổi. Một dòng nghi lỗi cao có thể chỉ là vị trí chung của đường đi gây lỗi. Để đánh giá công cụ, xác định trước cách tính số dòng phải xem khi đồng hạng, dùng lỗi có vị trí xác nhận và so trên cùng bộ ca. Công bố cả các lỗi không được ca thử kích hoạt.
Đọc thêm Nghiên cứu của Abreu và cộng sự về định vị lỗi từ phổ thực thi.