🥒 Gherkin là gì?
Cú pháp Given When Then để viết kịch bản test.
1
Hiểu nó là gì
Gherkin dùng các từ khoá Given, When, Then để viết tình huống theo lối kể chuyện, rồi công cụ như Cucumber nối từng dòng đó với code chạy thật.
Nói theo đời thường:
Như công thức nấu ăn chia mục rõ ràng: có sẵn gì, làm gì, ra kết quả gì. Đọc là hình dung được ngay.
Như công thức nấu ăn chia mục rõ ràng: có sẵn gì, làm gì, ra kết quả gì. Đọc là hình dung được ngay.
⚠ Chỗ ẩn dụ này hỏng
Công thức nấu ăn thì đọc là làm được. Gherkin thì mỗi dòng phải có một đoạn code đứng sau nó, và đoạn code đó ai đó phải viết.
Viết Gherkin mất 2 phút, viết step definition cho nó mất 2 giờ. Đó là chi phí ẩn khiến nhiều đội bỏ giữa chừng. Và nếu mỗi kịch bản dùng một cách diễn đạt khác nhau, số bước cần code sẽ phình không kiểm soát.
2
Code trông thế nào
# Kịch bản Khi tôi đăng nhập bằng mật khẩu sai // Đoạn code đứng sau nó — phần tốn công When('tôi đăng nhập bằng mật khẩu sai', async () => { await page.getByLabel('Mật khẩu').fill('sai') await page.getByRole('button', { name:'Đăng nhập' }).click() })
Mẹo sống còn: dùng lại y nguyên câu chữ giữa các kịch bản để tái dùng được bước.
3
Khi nào bạn dùng nó
✓ Dùng khi
- Đã chọn làm BDD và có người nghiệp vụ tham gia
- Cần tài liệu mà đọc xong chạy được luôn
✗ Đừng dùng khi
- Chỉ đội kỹ thuật dùng với nhau
- Chưa đủ người để nuôi lớp step definition
Chưa cần biết: Scenario Outline, bảng dữ liệu, hook, gắn thẻ kịch bản.
Để dành tới Mốc 2 — Tự viết được cái đầu tiên: Bạn viết được một test mở trang, bấm nút, kiểm tra chữ hiện ra — và nó chạy xanh trên máy bạn.
Dấu hiệu bạn đã cần học nó: Khi bạn có 8 kịch bản giống hệt nhau chỉ khác mỗi con số.
4
Đi đâu tiếp
- BDDPhương pháp mà Gherkin phục vụ.
- Test ScriptStep definition thực chất là test script.
- Test CaseGherkin là một cách trình bày ca test.