Viết test case bằng AI - Vì sao nên thử ngay hôm nay?
AI làm được gì trong quy trình test case?
Khi được cung cấp đúng context, ChatGPT và Claude có thể:
- Sinh test case từ user story, acceptance criteria hoặc mô tả tính năng bằng tiếng Việt.
- Tự động đề xuất negative test và edge case mà người làm thủ công hay bỏ sót.
- Format output theo đúng template bạn cần: bảng Excel, Gherkin (BDD), pytest, Cypress…
- Refactor hoặc dịch test case sang ngôn ngữ/framework khác trong vài giây.
Giới hạn cần biết trước
AI không thay thế hoàn toàn QA — và không nên cố làm vậy. Những điều AI không làm tốt:
- Hiểu sâu business logic nếu bạn không cung cấp đủ context.
- Tự động phát hiện lỗi trong code (AI viết test case, không chạy test).
- Đảm bảo 100% coverage nếu requirements mơ hồ.
💡 Quy tắc vàng
Chất lượng output của AI phụ thuộc 80% vào chất lượng prompt. Prompt tốt → test case tốt. Prompt mơ hồ → output vô dụng.
Chuẩn bị trước khi viết test case bằng AI
Thứ 1: Input rõ ràng
User story cần có đủ 3 yếu tố: Actor (ai sẽ sử dụng), Action (để làm gì), Expected Result (kết quả mong đợi). Acceptance criteria nên ở dạng checklist, càng cụ thể càng tốt.
| User story kém | User story tốt |
|---|---|
| "Người dùng có thể đăng nhập" |
"Là người dùng đã đăng ký, tôi muốn đăng nhập bằng email + mật khẩu để truy cập dashboard. AC: email hợp lệ + mật khẩu đúng → redirect về /dashboard trong ≤ 2s." |
Thứ 2: Xác định loại test case cần tạo
| Loại test | Dùng AI sinh? | Ghi chú |
|---|---|---|
| Unit test | ✅ Luôn luôn | AI rất mạnh, nên dùng mặc định |
| Integration / API test | ✅ Khi có API spec | Cung cấp endpoint + schema |
| E2E / UI test | ✅ Khi có flow rõ | Mô tả từng bước màn hình |
| Regression test | ✅ Dựa trên bộ test cũ | Cho AI xem test case cũ làm ví dụ |
| Performance test | ⚠️ Một phần | AI gợi ý scenario, không viết script load |
| Security test | ⚠️ Cẩn thận | AI cho checklist OWASP, không thay pentest |
Thứ 3: Chọn format output
- Bảng Markdown / Excel: paste vào Jira, Confluence, TestRail.
- Gherkin (Given/When/Then): dùng với Cucumber, SpecFlow.
- Code Python: pytest, unittest.
- Code JavaScript/TypeScript: Jest, Cypress, Playwright.
Quy trình 4 bước viết test case bằng AI
Bước 1: Đặt Role (System Prompt)
Bạn là một Senior QA Engineer 7 năm kinh nghiệm, chuyên về Agile/Scrum. Nhiệm vụ: viết test case đầy đủ bao gồm positive, negative và edge case. Format mặc định: bảng Markdown với cột: Test ID | Title | Precondition | Steps | Expected Result | Priority. Hỏi lại nếu thông tin chưa đủ để viết test case chính xác.
Bước 2: Cung cấp User Story và Acceptance Criteria
Dùng template dưới đây để cung cấp context đầy đủ cho AI:
User Story: [Paste user story đầy đủ vào đây] Acceptance Criteria: [Paste AC dạng checklist vào đây] Tech stack: [VD: React 18, Node.js 20, PostgreSQL 15] Môi trường test: [VD: Chrome 120+, màn hình 1920x1080] Yêu cầu: Viết test case đầy đủ cho user story này. Bao gồm positive case, negative case và edge case. Format output dạng bảng Markdown: Test ID | Title | Precondition | Steps | Expected Result | Priority. Hỏi lại nếu thông tin chưa đủ để viết test case chính xác.
Bước 3: Yêu cầu bổ sung Edge Case
AI thường cho happy path trước. Luôn follow-up bằng prompt này:
Tốt. Bây giờ hãy bổ sung thêm: 1. Negative test: input sai định dạng, thiếu field bắt buộc, vượt giới hạn ký tự, giá trị âm. 2. Boundary value: min, max, min-1, max+1 cho các trường số. 3. Edge case đặc thù: múi giờ khác nhau, ký tự đặc biệt, unicode tiếng Việt, đồng thời nhiều user cùng thao tác. Đánh số Test ID tiếp nối từ bộ trước.
Bước 4: Chuyển đổi sang format cần dùng
`client` là Flask test client,
`db` là SQLAlchemy session đã có dữ liệu seed.
Dùng parametrize cho các test có input khác nhau.Prompt mẫu để viết test case bằng AI phân theo tính năng
10 prompt dưới đây được thiết kế sẵn — chỉ cần thay nội dung trong dấu [] và paste vào ChatGPT hoặc Claude.
Prompt 1: Đăng nhập / xác thực
Viết test case đầy đủ cho tính năng đăng nhập gồm:
– Đăng nhập email + mật khẩu
– Đăng nhập Google OAuth
– Chức năng “Quên mật khẩu”
Bao gồm: positive, negative, edge case, bảo mật cơ bản
(brute force, SQL injection attempt). Format: bảng Markdown.
Promt 2: Form validation
Tôi có form đăng ký với các trường:
– Họ tên: bắt buộc, 2-100 ký tự, chỉ chữ cái và dấu cách
– Email: bắt buộc, format chuẩn, duy nhất trong hệ thống
– Số điện thoại: tùy chọn, format Việt Nam (09x, 03x…)
– Mật khẩu: bắt buộc, ≥8 ký tự, chữ hoa + số + ký tự đặc biệt
Viết test case validation đầy đủ, tập trung boundary value
và các ký tự đặc biệt.
Prompt 3: REST API endpoint
Viết test case cho API endpoint:
POST /api/v1/orders
Request body:
{ “user_id”: string (UUID),
“items”: array of { product_id: string, quantity: integer },
“payment_method”: “cod” | “bank_transfer” | “momo”,
“shipping_address”: { province, district, ward, detail } }
Response: 201 Created với order_id, hoặc 4xx error.
Bao gồm: status code, response body, headers. Format: bảng.
Prompt 4: Phân quyền (RBAC)
Hệ thống có 3 role: Admin, Manager, User.
Trang /admin/users: chỉ Admin.
Trang /reports: Admin và Manager, User bị từ chối.
Nút “Xóa dữ liệu”: chỉ Admin.
Viết test case kiểm tra tất cả combination role × action × resource.
Cột: Role | Hành động | Resource | Expected Result | Priority.
Prompt 5: Quy trình thanh toán
Viết test case cho quy trình checkout 5 bước:
1. Thêm vào giỏ → 2. Chọn địa chỉ → 3. Chọn thanh toán →
4. Xác nhận → 5. Redirect trang thành công.
Trạng thái thanh toán: success, failed, pending, timeout.
Edge case: sản phẩm hết hàng giữa chừng, voucher hết hạn,
mất kết nối giữa luồng. Format: bảng Markdown.
Prompt 6: Upload file
Viết test case cho chức năng upload ảnh đại diện:
– Định dạng chấp nhận: JPG, PNG, WEBP
– Kích thước tối đa: 5MB
– Resize về 400x400px (crop hình vuông)
Edge case: file 0 byte, file đổi extension giả,
upload cùng lúc 2 file, ảnh EXIF xoay, kết nối chậm.
Prompt 7: Tìm kiếm và lọc
Tính năng tìm kiếm sản phẩm với bộ lọc:
– Từ khóa: full-text, không phân biệt hoa thường
– Khoảng giá: min-max
– Danh mục: multi-select
– Sắp xếp: giá tăng/giảm, mới nhất, bán chạy nhất
Viết test case: kết hợp nhiều bộ lọc, không có kết quả,
ký tự đặc biệt trong từ khóa, khoảng giá âm hoặc min > max.
Prompt 8: Email trigger
Hệ thống gửi email tự động khi:
1. Đăng ký tài khoản → email xác nhận
2. Đặt hàng thành công → email xác nhận đơn
3. Đơn hàng giao thành công → email đánh giá
4. Sai mật khẩu 5 lần → email cảnh báo
Kiểm tra: trigger đúng, nội dung đúng, không gửi trùng,
xử lý email không tồn tại / full inbox.
Prompt 9: Mobile responsive
Viết test case kiểm tra responsive trang danh sách sản phẩm
trên: 375px (iPhone SE), 768px (iPad),
1280px (laptop), 1920px (desktop).
Kiểm tra: layout không vỡ, font đọc được, nút bấm được tay,
ảnh không méo, modal đúng, scroll mượt.
Prompt 10: Test case từ bug report
Bug: “Khi user nhập SĐT 10 số bắt đầu bằng 05 và submit form,
server trả về 500 thay vì báo lỗi validation.
Tái hiện trên Chrome 120, không tái hiện trên Firefox.”
1. Viết test case regression để verify bug đã fix.
2. Viết thêm test case phòng regression tương tự.
Nếu thấy 10 prompt hữu ích — hãy thực hành với dự án thật của bạn
Khóa Practical AI for Tester đi sâu hơn: Trang bị cho bạn tư duy đúng khi dùng AI – Hiểu cách AI vận hành để xây prompt đúng cho kết quả tốt nhất – Tặng bộ 100+ Prompt mẫu đã được tinh chỉnh qua các dự án thực tế, kèm AI Toolset Guide và Template System cho từng loại tài liệu QA.
Mẹo nâng cao để AI viết test case chất lượng hơn
1. Few-shot prompting — Cho AI xem ví dụ mẫu.
Trước khi yêu cầu AI viết, hãy paste 1–2 test case mẫu của team bạn. AI sẽ bắt chước đúng format, style, và mức độ chi tiết bạn kỳ vọng.
2. Chain of Thought — Yêu cầu AI liệt kê luồng logic trước.
Thêm câu “Trước tiên hãy liệt kê các luồng nghiệp vụ chính, sau đó mới viết test case.” AI sẽ tư duy có cấu trúc hơn, ít bỏ sót scenario.
3. Chia nhỏ user story phức tạp.
Đừng nhồi cả epic vào 1 prompt. Mỗi lần tập trung 1 flow nhỏ. Output sẽ sâu hơn và dễ review hơn.
4. Lưu System Prompt vào Custom Instructions hoặc Project.
ChatGPT: vào Settings → Custom Instructions. Claude: tạo Project và paste role prompt vào Project instructions. Không phải gõ lại mỗi session.
5. Kiểm tra coverage sau khi có bộ test case.
Hỏi tiếp: “Tôi đang bỏ sót loại test nào? Có OWASP risk hoặc performance concern cần test thêm không?” AI sẽ tự kiểm tra lại output của chính nó.
Lỗi thường gặp khi dùng AI viết test case
| Lỗi | Nguyên nhân | Cách khắc phục |
|---|---|---|
| Test case quá generic, thiếu data thực | Prompt không cung cấp business context | Thêm ví dụ data thực tế vào prompt |
| Bỏ sót edge case quan trọng | Chỉ dùng 1 lần prompt | Luôn follow-up yêu cầu edge case riêng |
| Output bị lặp, test case trùng nhau | AI padding để dài hơn | Thêm "Mỗi test case phải unique và có giá trị riêng" |
| Test step mơ hồ | Thiếu context UI / API | Cung cấp tên button, endpoint, response code |
| AI bịa expected result | Không có spec để đối chiếu | Cung cấp wireframe, API contract rõ ràng |
Nên dùng ChatGPT hay Claude?
| Tiêu chí | ChatGPT (GPT-4o) | Claude (Sonnet 4) |
|---|---|---|
| Context window | 128K token | 200K token |
| Format output | Tốt | Rất nhất quán, ít bị drift |
| Xử lý PRD / spec dài | Được | Tốt hơn nhờ context lớn |
| Code generation | Tốt (đặc biệt GPT-4o) | Tốt, code sạch và có comment |
| Instruction following | Tốt | Xuất sắc — giữ format xuyên suốt |
| Tiếng Việt | Tốt | Tốt |
| Nên dùng khi | Quen workflow ChatGPT, cần code gen mạnh | Tài liệu dài, cần output nhất quán |
Bước tiếp theo: nâng cấp từ đọc bài → làm được việc thật
Bạn vừa đọc xong lý thuyết. Nhưng khoảng cách lớn nhất giữa "hiểu" và "dùng được" là thực hành có hướng dẫn. Khóa Practical AI for Tester lấp khoảng cách đó — với lab thực hành trên dự án mẫu, feedback từ mentor, và cộng đồng QA đang ứng dụng AI mỗi ngày.
Bắt đầu học – Practical AI for Tester →Bạn đang có băn khoăn nào cần được giải đáp?
Có — nếu bạn cung cấp đủ context. AI viết test case từ user story + acceptance criteria rõ ràng thường đạt 80–90% chất lượng so với thủ công. Phần còn lại cần QA review để bổ sung domain knowledge và xác nhận expected result.
Không. Bạn có thể yêu cầu AI tạo test case dạng bảng và paste thẳng vào Jira, TestRail hoặc Confluence. Chỉ cần biết lập trình nếu muốn AI tạo automation test code.
Không. AI là công cụ hỗ trợ, không phải thay thế. AI giỏi sinh draft nhanh và bắt edge case đơn giản, nhưng thiếu domain knowledge và không thể kiểm chứng expected result từ đầu. QA Engineer giỏi dùng AI như "copilot" để tăng năng suất.
Prompt hiệu quả gồm 3 phần: (1) Role — giao cho AI vai Senior QA Engineer, (2) Context — user story + acceptance criteria + tech stack, (3) Format — chỉ định rõ bảng Markdown, Gherkin, hay code. Xem Bước 1 và Bước 2 trong bài để có template đầy đủ.
Mỗi công cụ đều có ưu điểm riêng. Claude có lợi thế với tài liệu dài nhờ context window 200K token. ChatGPT mạnh hơn ở code generation. Nhiều team dùng song song cả hai — ChatGPT cho automation code, Claude cho tài liệu spec dài.


