Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Viết test thì nhiều người biết, nhưng viết test để vài tháng sau vẫn đọc được và vẫn đáng tin thì không dễ. Hai yếu tố quyết định là tên test rõ ràng và tính độc lập của từng test. Bài này đưa ra các quy tắc thực tế để suite test của bạn không trở thành gánh nặng.
Khi test thất bại, tên test là thứ đầu tiên bạn nhìn thấy trên báo cáo. Một tên tốt cho biết ngay đang kiểm tra cái gì, trong hoàn cảnh nào, kết quả mong đợi ra sao mà không phải mở code.
// Mơ hồtest('test1', ...)test('cart works', ...)// Rõ ràngtest('trả về 0 khi giỏ hàng rỗng', ...)test('áp dụng giảm 10% khi mã GIAM10 hợp lệ', ...)test('ném lỗi khi số lượng là số âm', ...)Một công thức dễ nhớ là [đơn vị] + [hoàn cảnh] + [kết quả mong đợi], ví dụ calculateTotal_emptyCart_returnsZero hoặc dạng câu văn "should return zero when cart is empty". Chọn một kiểu và dùng nhất quán trong cả dự án.
Hầu hết framework cho phép gom test theo ngữ cảnh. Với Jest:
describe('applyCoupon', () => {describe('khi mã hợp lệ', () => {test('giảm đúng phần trăm', () => { /* ... */ });});describe('khi mã hết hạn', () => {test('không giảm giá và trả về thông báo', () => { /* ... */ });});});Báo cáo lỗi sẽ đọc như một câu hoàn chỉnh: "applyCoupon khi mã hết hạn không giảm giá và trả về thông báo".
Test độc lập nghĩa là có thể chạy riêng lẻ, theo bất kỳ thứ tự nào, và kết quả không đổi. Nếu test B chỉ qua được khi test A chạy trước, bạn sẽ gặp những lỗi rất khó hiểu: chạy cả bộ thì xanh, chạy riêng một test thì đỏ, hoặc đổi thứ tự là hỏng.
beforeEach / afterEach (Jest) hoặc fixture (pytest) để mỗi test bắt đầu với trạng thái sạch.let cart;beforeEach(() => {cart = createEmptyCart(); // mỗi test có giỏ hàng mới});test('thêm sản phẩm làm tăng số lượng', () => {cart.add({ id: 1, qty: 1 });expect(cart.count()).toBe(1);});test('giỏ hàng mới luôn rỗng', () => {expect(cart.count()).toBe(0);});Flaky test là test lúc qua lúc hỏng mà không thay đổi code. Nếu để chúng tồn tại, cả nhóm sẽ quen với việc "chạy lại cho xanh" và mất niềm tin vào test, đến lúc có lỗi thật thì không ai để ý. Khi gặp flaky test, hãy tìm nguyên nhân gốc (thường là một trong các điểm ở trên), đừng chỉ tăng thời gian chờ hay thử lại cho qua.
Tên test tốt giúp bạn khoanh vùng lỗi chỉ qua một dòng báo cáo, còn test độc lập giúp kết quả luôn đáng tin. Đầu tư một chút vào hai thói quen này, suite test sẽ là tài sản chứ không phải gánh nặng.
Nếu bạn đang học kiểm thử và muốn luyện qua dự án thật, hãy tìm hiểu thêm các khóa học tại codebem.com.
Nguyễn Đình Cường
0 comment