Kiểm thử phần mềm
Kiểm chứng thời hạn phản hồi trên vết hữu hạn
Phân biệt yêu cầu quá hạn với yêu cầu chưa quan sát đủ lâu.
Thích và đánh giá Bình luận và hỏi đáp1. Xác định quan hệ giữa yêu cầu và phản hồi
Mỗi yêu cầu trong ví dụ có mã duy nhất và mốc gửi. Phản hồi cần mang cùng mã. Hợp đồng đòi có ít nhất một phản hồi trong khoảng từ lúc gửi tới lúc gửi cộng hạn. Nếu chỉ kiểm tra có một phản hồi nào xuất hiện trong toàn nhật ký, một phản hồi quá muộn vẫn có thể bị chấp nhận nhầm.
2. Dùng mốc quan sát để tránh lỗi giả
Khi yêu cầu B được gửi ở mốc 1 và hạn bằng 3, ta phải quan sát tới mốc 4 mới kết luận B đã quá hạn nếu chưa có phản hồi. Vết dừng ở mốc 2 chỉ cho kết quả chưa đủ dữ liệu. Mốc này cần biểu thị phạm vi đã thu thập đầy đủ, thay vì đơn thuần là thời gian hiện tại trên một máy.
3. Chạy ba vết có kết quả khác nhau
Mã so một phản hồi B ở mốc 5, một phản hồi ở đúng mốc 4 và một vết mới quan sát tới 2. Ba kết quả lần lượt là quá hạn, đạt và chưa đủ dữ liệu. Mẫu chấp nhận phản hồi đúng ngưỡng. Nếu có nhiều phản hồi, nó xét phản hồi hợp lệ sớm nhất theo mã yêu cầu.
Chạy ví dụ bằng python test_han_phan_hoi_theo_vet.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.
def danh_gia(gui, nhan, han, da_quan_sat_den):
ket_qua = {}
for ma, bat_dau in gui.items():
moc_han = bat_dau + han
cac_lan = [t for t in nhan.get(ma, []) if bat_dau <= t <= da_quan_sat_den]
if cac_lan:
ket_qua[ma] = "đạt" if min(cac_lan) <= moc_han else "quá hạn"
else:
ket_qua[ma] = "quá hạn" if da_quan_sat_den >= moc_han else "chưa đủ dữ liệu"
return ket_qua
gui = {"A": 0, "B": 1}
assert danh_gia(gui, {"A": [2], "B": [5]}, 3, 5) == {"A": "đạt", "B": "quá hạn"}
assert danh_gia(gui, {"A": [2], "B": [4]}, 3, 4) == {"A": "đạt", "B": "đạt"}
assert danh_gia(gui, {"A": [2]}, 3, 2) == {"A": "đạt", "B": "chưa đủ dữ liệu"}
print("Phân biệt đạt, quá hạn và vết chưa quan sát đủ.")4. Kiểm tra đồng hồ và sự đầy đủ của log
Trong hệ thống phân tán, mốc từ hai máy có thể lệch. Có thể đo thời gian từ cùng một phía hoặc dùng thông tin đồng bộ có sai số đã biết. Đặt quy tắc cho yêu cầu bị hủy và mã được tái sử dụng. Trước khi kết luận vi phạm, kiểm tra xem log có bị mất bản ghi hoặc tới trễ hay không.
Đọc thêm Đồng hồ đơn điệu trong tài liệu Python.