Lập trình Go 22/09/2026 11 phút

Property-based testing trong Go: khẳng định tính chất, để máy tìm phản ví dụ

Test ví dụ kiểm từng cặp input-output cụ thể; property-based testing khẳng định một tính chất đúng với mọi input rồi để máy sinh hàng vạn input tìm phản ví dụ. Đo thật trong Go với testing/quick: bất biến sắp xếp qua 100k input, và round-trip lộ bug logic khi list rỗng ra [0] — thứ fuzzing trần bỏ lọt.

Lập trình 22/09/2026 8 phút

Property-based testing đo thật: bốn hàm thuần với bốn lỗi tinh vi — test ví dụ viết tay xanh 4/4, test tính chất đỏ 4/4 ngay ca đầu tiên với phản ví dụ thu nhỏ còn 1 xu, 4 ký tự, 1 phần tử; và một test ví dụ đã đóng băng luôn hành vi sai

Bốn hàm thuần có lỗi tinh vi: định dạng tiền mất dấu với số âm dưới 1 đồng, slug không luỹ đẳng, phân trang thừa một trang rỗng khi chia hết, gộp khoảng bỏ qua hai khoảng chạm biên. Test ví dụ viết tay 42 dòng xanh cả bốn. Test tính chất 78 dòng với pgregory.net/rapid đỏ cả bốn ngay ca sinh đầu tiên vì rapid thử giá trị biên trước, phản ví dụ thu nhỏ: cents bằng -1, chuỗi 4 ký tự, một phần tử với size 1, hai khoảng {0,3} và {3,3}. testing/quick trả phản ví dụ 20 ký tự không đọc nổi. Sửa xong, 40.000 ca chạy trong 44 ms, và test ví dụ Paginate đỏ vì nó đã khẳng định đúng hành vi sai.