Session 2 — Technique: Prompt Engineering cho Tester
Bạn sẽ học cách viết prompt có cấu trúc, áp dụng 4 kỹ thuật chính, và xây dựng thư viện prompt cá nhân tái sử dụng được — những kỹ năng thực tế nhất để tăng năng suất QA hằng ngày.
Prerequisite: Session 1 — Mindset
✅ Mục tiêu — Sau session này bạn có thể
- [ ] Phân tích cấu trúc của một prompt hiệu quả (4 thành phần)
- [ ] Áp dụng 4 kỹ thuật prompt chính vào công việc QA hằng ngày
- [ ] Xây dựng thư viện prompt cá nhân tái sử dụng được
- [ ] Xử lý khi AI trả về kết quả sai hoặc thiếu
- [ ] Thực hiện multi-turn prompting để làm giàu kết quả
PHẦN 1 — LÝ THUYẾT
1.1 Giải phẫu một prompt tốt
Một prompt hiệu quả cho Tester gồm 4 thành phần:
┌─────────────────────────────────────────────────────────┐
│ [ROLE] → Vai trò AI đóng │
│ [CONTEXT] → Bối cảnh dự án │
│ [TASK] → Nhiệm vụ cụ thể │
│ [FORMAT] → Định dạng output mong muốn │
└─────────────────────────────────────────────────────────┘
flowchart LR
R["ROLE\nVai trò AI đóng"] --> C["CONTEXT\nBối cảnh dự án"]
C --> T["TASK\nNhiệm vụ cụ thể"]
T --> F["FORMAT\nĐịnh dạng output"]
F --> O["✅ Output\nhiệu quả"]
style R fill:#74c0fc,stroke:#1971c2
style C fill:#b2f2bb,stroke:#2f9e44
style T fill:#ffd43b,stroke:#e67700
style F fill:#e5dbff,stroke:#7950f2
style O fill:#ffc9c9,stroke:#c92a2a
Ví dụ đầy đủ:
[ROLE] Bạn là QA Engineer kỹ lưỡng với 5 năm kinh nghiệm test API
[CONTEXT] Dự án là hệ thống quản lý bệnh viện, user là bác sĩ và y tá
[TASK] Hãy tạo test case cho tính năng "Đặt lịch khám"
[FORMAT] Trả về dưới dạng bảng: STT | Loại | Mô tả | Expected result
| Thành phần | Vai trò | Ví dụ cụ thể |
|---|---|---|
| ROLE | Định hướng "góc nhìn" của AI | "Bạn là QA Engineer kỹ lưỡng với 5 năm kinh nghiệm..." |
| CONTEXT | Cung cấp bối cảnh dự án | "Dự án là hệ thống quản lý bệnh viện, user là bác sĩ và y tá" |
| TASK | Nhiệm vụ rõ ràng, đo lường được | "Tạo test case cho tính năng Đặt lịch khám" |
| FORMAT | Định dạng output cụ thể | "Bảng: STT | Loại | Mô tả | Expected result" |
1.2 Bốn kỹ thuật Prompt chính
Kỹ thuật 1: Zero-shot Prompting
Đưa ra yêu cầu trực tiếp không cần ví dụ. Tốt cho các tác vụ đơn giản và phổ biến.
Tạo 5 test case cho chức năng "Đăng ký tài khoản" của ứng dụng mobile.
Bao gồm: positive case, negative case, và boundary value.
Dùng khi: Tác vụ quen thuộc, output format đơn giản.
Kỹ thuật 2: Few-shot Prompting
Cung cấp 1–3 ví dụ mẫu trước khi yêu cầu AI làm. Tốt cho output có định dạng phức tạp.
Tôi cần tạo test case theo format sau. Đây là 2 ví dụ:
Ví dụ 1:
TC-001 | Positive | Đăng nhập thành công | Email và password đúng | Vào được dashboard
Ví dụ 2:
TC-002 | Negative | Sai mật khẩu | Password sai 3 lần | Tài khoản bị khóa 15 phút
Bây giờ tạo thêm 5 test case tương tự cho chức năng "Đặt lại mật khẩu".
Dùng khi: Format output phức tạp, muốn AI "bắt chước" cách viết của team.
Kỹ thuật 3: Chain-of-Thought (CoT)
Yêu cầu AI suy nghĩ từng bước trước khi đưa ra kết quả. Tốt cho bug analysis và risk assessment.
Hãy phân tích bug sau đây bằng cách sử dụng suy nghĩ từng bước:
Bug: "Ứng dụng crash khi user upload file PDF lớn hơn 10MB"
Bước 1: Liệt kê các nguyên nhân có thể gây ra bug này
Bước 2: Xác định nguyên nhân có khả năng cao nhất
Bước 3: Đề xuất các test case để verify fix
Bước 4: Đánh giá severity và priority
Dùng khi: Phân tích phức tạp, cần lý luận có logic.
Kỹ thuật 4: Role Prompting
Gán cho AI một vai trò cụ thể để có cách nhìn chuyên sâu hơn.
Đóng vai QA Lead với 10 năm kinh nghiệm test hệ thống ngân hàng.
Hãy review test plan sau và chỉ ra 3 rủi ro lớn nhất bị bỏ sót...
| Vai trò giao cho AI | Khi nào dùng |
|---|---|
| "Đóng vai QA Lead với 10 năm kinh nghiệm..." | Review test plan, đánh giá rủi ro |
| "Đóng vai hacker mũ trắng (ethical hacker)..." | Sinh security test case |
| "Đóng vai end-user là người cao tuổi không giỏi công nghệ..." | UX / accessibility testing |
| "Đóng vai developer review code của Automation Tester..." | Review automation script |
📺 Video tham khảo — Prompt Engineering từ cơ bản đến nâng cao
"Prompt Engineering Tutorial – Master ChatGPT and LLM Responses" — freeCodeCamp · 1 giờ · Tiếng Anh
Hướng dẫn toàn diện về prompt engineering: zero-shot, few-shot, chain-of-thought, và best practices với ChatGPT/LLM. Bao gồm thực hành thực tế.
flowchart TD
Start["Bắt đầu viết Prompt"] --> Q{"Loại tác vụ?"}
Q -->|"Đơn giản, quen thuộc"| ZS["1️⃣ Zero-shot\nYêu cầu thẳng, không ví dụ"]
Q -->|"Cần format phức tạp"| FS["2️⃣ Few-shot\nCho 1–3 ví dụ mẫu trước"]
Q -->|"Phân tích, bug analysis"| CoT["3️⃣ Chain-of-Thought\nYêu cầu suy nghĩ từng bước"]
Q -->|"Cần góc nhìn chuyên sâu"| RP["4️⃣ Role Prompting\nGán vai trò chuyên gia cho AI"]
ZS & FS & CoT & RP --> R{"Output tốt?"}
R -->|"Có"| Done["✅ Sử dụng output"]
R -->|"Chưa đủ"| Fix["Followup / Chỉnh prompt\nThêm context hoặc ví dụ"]
Fix --> Q
style ZS fill:#e7f5ff,stroke:#1971c2
style FS fill:#ebfbee,stroke:#2f9e44
style CoT fill:#fff9db,stroke:#e67700
style RP fill:#f3f0ff,stroke:#7950f2
style Done fill:#b2f2bb,stroke:#2f9e44
1.3 Xử lý khi AI trả về sai — 3 chiến lược
| Vấn đề | Chiến lược xử lý |
|---|---|
| Output quá chung, không cụ thể | Thêm context: mô tả hệ thống, user, business rule |
| AI bỏ sót trường hợp quan trọng | Followup: "Bây giờ focus vào các trường hợp lỗi và edge case" |
| Format không đúng ý | Cho ví dụ mẫu cụ thể (chiến lược few-shot) |
| AI hallucinate (bịa thông tin) | Yêu cầu AI chỉ đưa ra những gì chắc chắn, đánh dấu rõ nếu không chắc |
PHẦN 2 — THỰC HÀNH
🛠️ Bài tập 2.1 — Xây dựng Prompt Library cá nhân
Thời gian ước tính: 40 phút | Công cụ: ChatGPT hoặc Claude.ai + Notion / Google Doc / bất kỳ ứng dụng ghi chú nào
Bước 1: Tạo một file ghi chú mới (Notion, Google Doc, hoặc Notepad đều được). Đặt tên: Prompt Library — QA.
Bước 2: Copy lần lượt 4 prompt template bên dưới vào file của bạn.
Bước 3: Với mỗi prompt, thay thế các phần trong [DẤU NGOẶC VUÔNG] bằng thông tin thực tế từ dự án của bạn (hoặc dùng một dự án mẫu nếu chưa có dự án thực).
Bước 4: Chạy thử từng prompt đã điền vào AI và xem output. Ghi chú lại những gì cần điều chỉnh.
🎯 Chú ý theo role: Bạn không cần dùng tất cả 6 prompt. Hãy ưu tiên những prompt phù hợp với công việc hằng ngày của bạn — cột "Dành cho" giúp bạn chọn nhanh.
PROMPT 1 — Test Case Generation (Dành cho: Mọi role)
[ROLE] Bạn là Senior QA Engineer với kinh nghiệm test [DOMAIN DỰ ÁN CỦA BẠN].
[CONTEXT] Hệ thống: [MÔ TẢ HỆ THỐNG]. User chính: [MÔ TẢ USER].
[TASK] Tạo test case cho tính năng: [TÊN TÍNH NĂNG]
Bao gồm: happy path, negative cases, boundary values, edge cases.
[FORMAT] Bảng Markdown: STT | Loại | Tên test case | Precondition | Steps | Expected | Priority (P1/P2/P3)
PROMPT 2 — Bug Report Enhancement (Dành cho: Manual Tester, QA Lead)
Tôi có bug report sau đây còn sơ sài:
---
[PASTE BUG REPORT VÀO ĐÂY]
---
Hãy làm rõ bug report này bằng cách:
1. Viết lại tiêu đề rõ ràng hơn
2. Thêm Steps to Reproduce chi tiết
3. Phân biệt rõ Actual result vs Expected result
4. Đề xuất Severity và Priority với lý do
5. Gợi ý: Attachments/evidence cần có
PROMPT 3 — API Test Creation (Dành cho: Automation Engineer, Manual Tester dùng Postman)
Hãy suy nghĩ từng bước để tạo Postman test collection cho API sau:
[PASTE API SPEC / ENDPOINT VÀO ĐÂY]
Bước 1: Liệt kê các test scenarios chính
Bước 2: Xác định test data cần thiết
Bước 3: Viết test cases với request/response examples
Bước 4: Thêm assertions cho mỗi test case
PROMPT 4 — Sprint Risk Analysis (Dành cho: QA Lead, QA Manager)
Đóng vai QA Lead với 8 năm kinh nghiệm, hãy đánh giá rủi ro của sprint sau trước khi release:
---
[PASTE SPRINT NOTES / CHANGELOGS]
---
Trả về:
- Top 5 rủi ro kiểm thử (sắp xếp theo mức độ)
- Các tính năng có thể bị ảnh hưởng ngoài ý muốn
- Đề xuất: Nên test gì trước nếu ít thời gian
PROMPT 5 — Acceptance Criteria Review (Dành cho: Manual Tester, BA, QA Lead)
Xu hướng 2025: AI đang được dùng để phát hiện AC mơ hồ ngay từ giai đoạn grooming — trước khi dev viết một dòng code. Đây là một trong những ứng dụng có ROI cao nhất của AI trong QA.
[ROLE] Bạn là QA Engineer có kinh nghiệm đánh giá chất lượng requirement.
[CONTEXT] Dự án: [MÔ TẢ NGẮN]. Giai đoạn: Pre-development / Sprint grooming.
[TASK] Review Acceptance Criteria sau và chỉ ra:
1. AC nào chưa testable (không đo lường được, mơ hồ)?
2. Edge case quan trọng nào đang bị bỏ sót?
3. Business rule nào có thể hiểu nhiều cách — cần làm rõ với BA/PO?
4. Viết lại các AC yếu theo format Given/When/Then rõ ràng hơn.
AC cần review:
---
[PASTE ACCEPTANCE CRITERIA VÀO ĐÂY]
---
[FORMAT] Bảng: AC gốc | Vấn đề phát hiện | Đề xuất cải thiện
PROMPT 6 — Test Execution Report (Dành cho: Manual Tester, QA Lead, QA Manager)
Thay vì viết báo cáo sprint test thủ công mỗi lần, dùng prompt này để tạo draft trong 2 phút — sau đó chỉ cần review và điều chỉnh.
[ROLE] Bạn là QA Engineer tổng hợp kết quả kiểm thử cuối sprint.
[CONTEXT] Dự án: [TÊN DỰ ÁN]. Sprint: [SỐ SPRINT]. Ngày: [NGÀY].
[TASK] Tạo Test Execution Report từ dữ liệu sau:
---
[PASTE KẾT QUẢ TEST: tổng số TC, số pass/fail/blocked, danh sách bug chính, tính năng đã test/chưa test]
---
Report cần bao gồm:
1. Executive Summary: tổng số TC, pass rate, trạng thái tổng thể
2. Top 3 rủi ro còn lại chưa được giải quyết trước khi release
3. Đề xuất: ✅ Go / ⚠️ Conditional Go / ❌ No-go — kèm lý do rõ ràng
4. Action items cụ thể cho team (dev, PM, QA)
[FORMAT] Markdown, có thể paste thẳng vào Confluence, Notion, hoặc email cho stakeholder
✅ Kết quả mong đợi:
Bạn có một file ghi chú chứa ít nhất 3 prompt đã được cá nhân hóa cho dự án và role của mình. Khi chạy thử, output của mỗi prompt phải liên quan trực tiếp đến ngữ cảnh bạn điền vào — không còn chung chung. Đây là tài sản bạn sẽ dùng lại hằng ngày và liên tục cải tiến theo kinh nghiệm thực tế.
❓ Tự kiểm tra: - [ ] Bạn đã chọn ít nhất 3 prompt phù hợp với role của mình chưa? - [ ] Mỗi prompt có đủ 4 thành phần (Role, Context, Task, Format)? - [ ] Bạn có sử dụng ít nhất 2 trong 4 kỹ thuật đã học? - [ ] Output AI trả về có đúng với nhu cầu thực tế không — hay vẫn còn chung chung? - [ ] Bạn đã thử chỉnh sửa prompt ít nhất 1 lần sau khi thấy output chưa đủ?
💡 Gợi ý khi bị kẹt: Nếu chưa có dự án thực tế, dùng: domain = "e-commerce", hệ thống = "ứng dụng mua sắm online", user = "khách hàng phổ thông". Điều quan trọng là luyện tập điền đủ 4 thành phần — không phải tính chính xác của dữ liệu mẫu. Prompt Library tốt nhất là cái bạn tự chỉnh từ template, không phải copy nguyên xi.
🛠️ Bài tập 2.2 — Prompt Battle cá nhân
Thời gian ước tính: 30 phút | Công cụ: ChatGPT hoặc Claude.ai
Bài tập này giúp bạn tự trải nghiệm sự khác biệt giữa 4 kỹ thuật prompt với cùng một user story.
User Story:
"Là một khách hàng, tôi muốn có thể hủy đơn hàng trong vòng 2 giờ sau khi đặt, với điều kiện đơn hàng chưa được xử lý."
Bước 1: Viết và chạy 4 prompt riêng biệt cho user story trên, mỗi prompt dùng một kỹ thuật khác nhau:
| Lượt | Kỹ thuật | Yêu cầu của bạn |
|---|---|---|
| Lượt 1 | Zero-shot | Yêu cầu thẳng, không ví dụ, không role |
| Lượt 2 | Few-shot | Cho 2 ví dụ test case trước, sau đó yêu cầu tạo thêm |
| Lượt 3 | Chain-of-Thought | Yêu cầu AI suy nghĩ từng bước trước khi tạo test case |
| Lượt 4 | Role prompting | Cho AI đóng vai QA Lead kỹ tính, yêu cầu review kỹ |
Bước 2: Sau khi có cả 4 output, so sánh và điền vào bảng sau vào notes của bạn:
| Kỹ thuật | Số test case tạo được | Có edge case không? | Chất lượng tổng thể (1–5) |
|---|---|---|---|
| Zero-shot | |||
| Few-shot | |||
| Chain-of-Thought | |||
| Role prompting |
Bước 3: Chọn kỹ thuật cho output tốt nhất. Viết lại một prompt kết hợp cả 4 kỹ thuật.
✅ Kết quả mong đợi:
Zero-shot thường cho output nhanh nhưng có thể bỏ sót edge case. Few-shot cho format nhất quán. Chain-of-Thought thường có độ sâu phân tích tốt hơn. Role prompting cho góc nhìn chuyên sâu. Prompt kết hợp cả 4 thường cho output tốt nhất — nhưng cũng dài nhất.
❓ Tự kiểm tra: - [ ] Bạn thấy sự khác biệt rõ ràng giữa 4 kỹ thuật không? - [ ] Kỹ thuật nào phù hợp nhất với loại công việc QA bạn hay làm?
💡 Gợi ý khi bị kẹt: Nếu output các lượt trông giống nhau, hãy làm cho prompt khác biệt hơn. Ví dụ: lượt Few-shot phải có ít nhất 2 ví dụ cụ thể trước khi yêu cầu; lượt CoT phải có "Hãy suy nghĩ từng bước:" ở đầu prompt.
💡 TÌNH HUỐNG THỰC TẾ: "Prompt quá chung, output vô dụng"
Bối cảnh: Trung là Manual Tester mới học dùng AI. Anh nhập prompt:
AI trả về 10 test case rất chung chung, không liên quan đến dự án ngân hàng của anh. Trung bực bội, nghĩ rằng "AI không tốt cho việc này".
Bài tập: Ghi lại câu trả lời của bạn vào notes — không có đáp án duy nhất, miễn là bạn có thể giải thích lý do.
- Nguyên nhân thật sự là gì? (AI hay Prompt?)
- Viết lại prompt tốt hơn cho tình huống của Trung.
- Nguyên tắc nào trong Technique model bị vi phạm?
- Làm thế nào để Trung không mắc lỗi này lần sau?
🛠️ Bài tập 2.3 — Multi-turn Prompting
Thời gian ước tính: 20 phút | Công cụ: ChatGPT hoặc Claude.ai
Một prompt hiếm khi là đủ. Bài tập này luyện kỹ năng tiếp nối cuộc hội thoại để làm giàu dần kết quả.
Bước 1: Mở một cuộc hội thoại mới với AI.
Bước 2: Gửi lần lượt 5 prompt sau (mỗi prompt trong cùng một cuộc hội thoại — đừng mở tab mới):
→ Đọc output, sau đó gửi tiếp: → Đọc output, sau đó gửi tiếp: (Thay [X] bằng số thứ tự của test case bạn thấy quan trọng nhất)→ Đọc output, sau đó gửi tiếp:
→ Đọc output, sau đó gửi tiếp:Bước 3: Đọc output cuối cùng (Turn 5). So sánh với output Turn 1. Ghi lại nhận xét vào notes.
✅ Kết quả mong đợi:
Output ở Turn 5 sẽ chi tiết, có cấu trúc, và sát thực tế hơn rất nhiều so với Turn 1. Đây là cách làm việc thực tế với AI — không phải chạy 1 prompt rồi dùng ngay, mà là lặp lại và tinh chỉnh.
❓ Tự kiểm tra: - [ ] Output Turn 5 có tốt hơn Turn 1 rõ rệt không? - [ ] AI có "nhớ" context từ các turn trước không? - [ ] Bạn sẽ áp dụng multi-turn như thế nào vào công việc hằng ngày?
💡 Gợi ý khi bị kẹt: Nếu AI "quên" context ở turn sau, hãy nhắc lại ngắn gọn: "Tiếp tục với danh sách test case ở trên, hãy..."
PHẦN 3 — TỰ ĐÁNH GIÁ
📋 "Fix the Prompt"
Dưới đây là các prompt kém. Nhiệm vụ của bạn: phân tích vấn đề và viết lại prompt tốt hơn. Ghi câu trả lời vào notes.
Prompt kém 1:
- Vấn đề:_______________
- Prompt tốt hơn: _______________
Prompt kém 2:
- Vấn đề:_______________
- Prompt tốt hơn: _______________
Prompt kém 3:
- Vấn đề:_______________
- Prompt tốt hơn: _______________
💡 Gợi ý khi bị kẹt: Với mỗi prompt kém, hãy hỏi: thiếu thành phần nào trong [Role] + [Context] + [Task] + [Format]? Câu trả lời đó chính là "vấn đề", và prompt tốt hơn là phiên bản bổ sung các thành phần còn thiếu.
📝 Tổng kết
- ✅ Prompt tốt = [Role] + [Context] + [Task] + [Format]
- ✅ 4 kỹ thuật: Zero-shot (đơn giản), Few-shot (có mẫu), CoT (phân tích), Role (chuyên sâu)
- ✅ Output sai ⇒ Chỉnh prompt, không phải đổi bot AI
- ✅ Multi-turn: Dùng followup để làm giàu dần kết quả
- ✅ Xây dựng Prompt Library cá nhân — tài sản quý giá nhất sau khóa học này
🗒️ Cheat Sheet
Template chuẩn:
[Đóng vai X] [Bối cảnh Y] [Làm việc Z] [Trả về định dạng W]
Zero-shot : Đưa yêu cầu thẳng, không cần ví dụ
Few-shot : "Đây là 2 ví dụ... bây giờ làm tương tự cho..."
CoT : "Hãy suy nghĩ từng bước trước khi trả lời..."
Role : "Đóng vai [vai trò cụ thể] với [X] năm kinh nghiệm..."
Fix output:
→ Thêm context
→ Cho ví dụ mẫu (few-shot)
→ Yêu cầu chi tiết hơn trong followup
📚 Bài tập về nhà
Xây dựng Prompt Library 10 prompt cho dự án hiện tại của bạn. Mỗi prompt phải có đủ 4 thành phần và đã được test thực tế. Lưu vào Notion / Google Doc để dùng lại.