# 📚 ÔN THI NHANH ISTQB CTFL v4.0
### *Tài liệu tóm tắt học nhanh — In ra ôn thi*

---

## PHẦN 1 — 7 NGUYÊN TẮC TESTING
### *(Seven Testing Principles)*

---

### 1️⃣ Testing shows the presence of defects, not their absence
> **Kiểm thử chứng minh có lỗi, không chứng minh không có lỗi**

- Dù test nhiều đến đâu, bạn **không thể khẳng định** phần mềm hoàn toàn không có bug
- Testing giúp **giảm rủi ro**, không loại trừ hoàn toàn
- **Ví dụ:** Test 1000 test case không tìm thấy bug ≠ phần mềm không có bug. Vẫn có thể còn bug ở các tình huống chưa được test

---

### 2️⃣ Exhaustive testing is impossible
> **Không thể test tất cả mọi thứ**

- Không thể test tất cả tổ hợp input, điều kiện, dữ liệu
- Thay vào đó: **ưu tiên hóa** dựa trên rủi ro và tầm quan trọng
- **Ví dụ:** Một form với 5 trường, mỗi trường 100 giá trị → 100⁵ = 10 tỷ tổ hợp. Không thể test hết → phải chọn lọc theo risk

---

### 3️⃣ Early testing saves time and money
> **Test sớm tiết kiệm thời gian và tiền bạc**

- Lỗi tìm càng sớm → chi phí sửa càng thấp
- Test nên bắt đầu từ **phase đầu của SDLC** (review requirement, design)
- **Ví dụ:** Lỗi sai requirement phát hiện ở phase phân tích: sửa 1 ngày. Phát hiện sau khi release: sửa 1 tháng + ảnh hưởng khách hàng

---

### 4️⃣ Defect clustering
> **Lỗi thường tập trung ở một số module nhất định**

- ~80% lỗi thường nằm trong ~20% module (quy tắc Pareto 80/20)
- Tập trung testing vào các **vùng nguy hiểm** đã biết
- **Ví dụ:** Module thanh toán và đăng nhập thường chứa nhiều lỗi nhất → ưu tiên test kỹ hơn module cài đặt ngôn ngữ

---

### 5️⃣ Tests wear out (Pesticide Paradox)
> **Thuốc trừ sâu mất tác dụng — test cũ không tìm được bug mới**

- Chạy mãi cùng một bộ test case → không tìm thêm bug mới
- Cần **cập nhật, sửa đổi, bổ sung** test case thường xuyên
- **Ví dụ:** Regression test suite chạy 6 tháng không đổi → cần thêm test case mới để cover các scenario mới hoặc vùng code vừa thay đổi

---

### 6️⃣ Testing is context dependent
> **Testing phụ thuộc vào ngữ cảnh**

- Không có phương pháp test "one-size-fits-all"
- Test cho **safety-critical system** (máy bay, y tế) ≠ test ứng dụng mobile game
- **Ví dụ:** Hệ thống kiểm soát tàu hỏa cần test formal verification nghiêm ngặt; app đọc truyện chỉ cần test chức năng cơ bản và UX

---

### 7️⃣ Absence of defects is a fallacy
> **Không có lỗi không có nghĩa là phần mềm tốt**

- Phần mềm không bug nhưng **không đáp ứng nhu cầu người dùng** = vẫn thất bại
- Verification (làm đúng sản phẩm?) PHẢI đi kèm Validation (làm đúng sản phẩm cần thiết?)
- **Ví dụ:** App quản lý kho không có bug kỹ thuật, nhưng UI phức tạp đến mức nhân viên kho không thể dùng được → sản phẩm thất bại

---

## PHẦN 2 — CÁC KỸ THUẬT TEST (Test Techniques)

---

### 🔹 2.1 Equivalence Partitioning (EP)
**Phân vùng tương đương**

| Mục | Nội dung |
|-----|----------|
| **Định nghĩa** | Chia input thành các **nhóm (partition)** mà mọi giá trị trong nhóm được xử lý như nhau. Chỉ cần test **1 đại diện** mỗi nhóm |
| **Nguyên tắc** | Có valid partition (dữ liệu hợp lệ) và invalid partition (dữ liệu không hợp lệ) |
| **Khi nào dùng** | Khi input có dải giá trị lớn, muốn giảm số lượng test case mà vẫn cover tốt |
| **Ví dụ** | Tuổi nhập vào: hợp lệ 18–60. Partition: `< 18` (invalid) / `18–60` (valid) / `> 60` (invalid). Test: 10, 30, 70 |

**Công thức tính coverage:**
```
EP Coverage = (Số partition đã test / Tổng số partition) × 100%
```

---

### 🔹 2.2 Boundary Value Analysis (BVA)
**Phân tích giá trị biên**

| Mục | Nội dung |
|-----|----------|
| **Định nghĩa** | Test các **giá trị tại biên** của partition — nơi lỗi hay xảy ra nhất |
| **2-value BVA** | Test giá trị **min** và **max** của mỗi boundary |
| **3-value BVA** | Test **min-1, min, min+1** và **max-1, max, max+1** |
| **Khi nào dùng** | Khi có điều kiện giới hạn rõ ràng (tuổi, số tiền, số lượng, ngày tháng) |
| **Ví dụ** | Giới hạn: 1–100. 2-value: test {1, 100}. 3-value: test {0, 1, 2, 99, 100, 101} |

> ⚠️ **BVA dùng SAU EP** — BVA áp dụng trên các boundary đã xác định từ EP

---

### 🔹 2.3 Decision Table Testing
**Kiểm thử bảng quyết định**

| Mục | Nội dung |
|-----|----------|
| **Định nghĩa** | Mô hình hóa **tổ hợp điều kiện** và **hành động tương ứng** dưới dạng bảng |
| **Cấu trúc** | Cột = rule (tổ hợp); Hàng trên = conditions; Hàng dưới = actions |
| **Khi nào dùng** | Logic nghiệp vụ phức tạp, nhiều điều kiện kết hợp nhau, tránh bỏ sót case |
| **Ví dụ** | Hệ thống giảm giá: Thành viên VIP? + Đơn > 500k? → 4 tổ hợp → 4 mức giảm giá khác nhau |

**Ví dụ bảng quyết định:**

| Conditions | R1 | R2 | R3 | R4 |
|------------|----|----|----|----|
| Thành viên VIP? | Y | Y | N | N |
| Đơn hàng > 500k? | Y | N | Y | N |
| **Actions** | | | | |
| Giảm 20% | ✓ | | | |
| Giảm 15% | | ✓ | | |
| Giảm 10% | | | ✓ | |
| Không giảm | | | | ✓ |

---

### 🔹 2.4 State Transition Testing
**Kiểm thử chuyển trạng thái**

| Mục | Nội dung |
|-----|----------|
| **Định nghĩa** | Test hành vi của hệ thống khi **chuyển từ trạng thái này sang trạng thái khác** dựa trên sự kiện/điều kiện |
| **Thành phần** | States (trạng thái) + Events (sự kiện) + Transitions (chuyển đổi) + Actions (hành động) |
| **Khi nào dùng** | Hệ thống có nhiều trạng thái rõ ràng: ATM, đặt vé, đăng nhập, vòng đời đơn hàng |
| **Ví dụ** | ATM: `Idle` → `Card Inserted` → `PIN Entry` → `Transaction` → `Idle`. Test: nhập PIN sai 3 lần → card bị khóa |

**Coverage levels:**
- **0-switch:** Cover mọi state
- **1-switch:** Cover mọi transition (state → state)
- **2-switch:** Cover mọi chuỗi 2 transition liên tiếp

---

### 📊 So sánh nhanh 4 kỹ thuật

| Kỹ thuật | Phù hợp với | Điểm mạnh |
|----------|-------------|-----------|
| EP | Dải giá trị rộng | Giảm số test case |
| BVA | Giới hạn số học | Bắt lỗi "off-by-one" |
| Decision Table | Logic nhiều điều kiện | Không bỏ sót tổ hợp |
| State Transition | Hệ thống có trạng thái | Test workflow, sequence |

---

## PHẦN 3 — GLOSSARY 20 THUẬT NGỮ QUAN TRỌNG

| # | Thuật ngữ (EN) | Tên tiếng Việt | Định nghĩa ngắn |
|---|---------------|----------------|-----------------|
| 1 | **Test Basis** | Cơ sở kiểm thử | Tài liệu dùng làm nền tảng thiết kế test (requirement, design doc, code) |
| 2 | **Test Case** | Ca kiểm thử | Tập hợp input, điều kiện thực thi, kết quả mong đợi để verify một mục tiêu test cụ thể |
| 3 | **Test Condition** | Điều kiện kiểm thử | Khía cạnh có thể kiểm tra được xác định từ test basis |
| 4 | **Defect** | Khiếm khuyết/Lỗi | Điểm sai trong code/tài liệu gây ra failure khi thực thi |
| 5 | **Failure** | Sự cố | Khi component/system không thực hiện đúng chức năng mong đợi |
| 6 | **Error** | Sai sót | Hành động của con người gây ra defect (nhầm lẫn khi code, design) |
| 7 | **Root Cause** | Nguyên nhân gốc rễ | Nguyên nhân ban đầu dẫn đến defect (process, skill, communication) |
| 8 | **Test Oracle** | Nguồn chuẩn | Nguồn thông tin để xác định kết quả test pass/fail (spec, output mẫu) |
| 9 | **Regression Testing** | Kiểm thử hồi quy | Test lại sau thay đổi để đảm bảo không có bug mới xuất hiện |
| 10 | **Confirmation Testing** | Kiểm thử xác nhận | Test lại sau khi bug đã sửa để xác nhận bug đã được fix |
| 11 | **Test Coverage** | Độ phủ kiểm thử | % các test item đã được cover bởi test suite |
| 12 | **Risk-based Testing** | Kiểm thử dựa trên rủi ro | Ưu tiên test dựa trên khả năng xảy ra và mức độ ảnh hưởng của rủi ro |
| 13 | **Exploratory Testing** | Kiểm thử khám phá | Test không có script, tester tự do khám phá đồng thời học, design và thực thi test |
| 14 | **Static Testing** | Kiểm thử tĩnh | Review code/tài liệu **không** chạy phần mềm (review, inspection, walkthrough) |
| 15 | **Dynamic Testing** | Kiểm thử động | Thực thi code/phần mềm để tìm lỗi |
| 16 | **Test Level** | Cấp độ kiểm thử | Nhóm test activity theo mức độ: Unit → Integration → System → Acceptance |
| 17 | **Test Type** | Loại kiểm thử | Phân loại theo mục tiêu: Functional, Performance, Security, Usability... |
| 18 | **Entry Criteria** | Tiêu chí vào | Điều kiện phải đạt được **trước khi** bắt đầu một giai đoạn test |
| 19 | **Exit Criteria** | Tiêu chí ra | Điều kiện phải đạt được để **kết thúc** một giai đoạn test |
| 20 | **Test Charter** | Phiếu kiểm thử | Tài liệu xác định phạm vi, mục tiêu, cách tiếp cận cho exploratory testing session |

---

## PHẦN 4 — TIPS LÀM BÀI THI ISTQB

---

### 🎯 Hiểu 3 mức độ câu hỏi K1/K2/K3

---

#### 📌 K1 — Remember (Nhớ)
> **Câu hỏi yêu cầu:** Ghi nhớ, nhận biết, liệt kê

**Từ khóa đề bài:** *"Which of the following is...", "What is the definition of...", "Identify...", "Which statement is TRUE/FALSE..."*

**Cách làm:**
- Học thuộc **định nghĩa chính xác** theo ISTQB Glossary
- Nhớ **danh sách** (7 principles, 4 test levels, test types...)
- Loại trừ đáp án sai rõ ràng trước
- Không cần phân tích sâu — câu trả lời nằm trong định nghĩa

**Ví dụ câu K1:**
> *"Which of the following is NOT one of the seven testing principles?"*
> → Nhớ đúng 7 nguyên tắc, chọn cái không thuộc danh sách

---

#### 📌 K2 — Understand (Hiểu)
> **Câu hỏi yêu cầu:** Giải thích, phân loại, so sánh, diễn giải tình huống

**Từ khóa đề bài:** *"Which BEST describes...", "Which statement MOST accurately...", "Explain why...", "What is the PRIMARY purpose of..."*

**Cách làm:**
- Hiểu **tại sao** chứ không chỉ **cái gì**
- Đọc kỹ scenario trong câu hỏi
- Tìm đáp án **phù hợp nhất** với ngữ cảnh
- Chú ý từ **BEST, MOST, PRIMARY, MAIN** — thường có 2 đáp án đúng một phần, chọn đúng nhất
- Áp dụng nguyên tắc/khái niệm vào tình huống cụ thể

**Ví dụ câu K2:**
> *"A tester found that running the same tests repeatedly found fewer and fewer defects. Which testing principle BEST explains this?"*
> → Nhận ra đây là Pesticide Paradox (Principle 5)

---

#### 📌 K3 — Apply (Áp dụng)
> **Câu hỏi yêu cầu:** Thực hiện kỹ thuật, tính toán, thiết kế test case

**Từ khóa đề bài:** *"How many test cases are needed...", "Using BVA, which values should be tested...", "Apply EP to...", "Which test cases are required to achieve..."*

**Cách làm:**
- Đọc kỹ yêu cầu — xác định **kỹ thuật nào** đang được hỏi
- Thực hiện từng bước **theo đúng quy trình** kỹ thuật
- Với EP: xác định tất cả partition (valid + invalid)
- Với BVA: xác định biên, quyết định dùng 2-value hay 3-value
- Với Decision Table: đếm đúng số rule = 2ⁿ (n = số condition)
- Với State Transition: vẽ state diagram trước khi chọn đáp án
- **Kiểm tra lại** bằng cách đếm/tính toán

**Ví dụ câu K3:**
> *"A field accepts values from 10 to 20. Using 3-value BVA, which set of values should be tested?"*
> → Tính: {9, 10, 11, 19, 20, 21} → chọn đáp án chứa đúng 6 giá trị này

---

### ⚡ Mẹo làm bài tổng quát

```
✅ DO — NÊN LÀM
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
□ Đọc KỸ câu hỏi — chú ý BEST, NOT, EXCEPT, MOST
□ Dùng phương pháp loại trừ (eliminate clearly wrong options)
□ Tin vào ISTQB Glossary — dùng định nghĩa chính xác
□ Với K3: thực hiện bước tính toán trên giấy nháp
□ Quản lý thời gian: ~1.5 phút/câu (40 câu / 60 phút)
□ Đánh dấu câu khó, làm câu dễ trước, quay lại sau
□ Đọc lại câu hỏi SAU KHI chọn đáp án để verify

❌ DON'T — TRÁNH LÀM
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
□ ĐỪNG áp dụng kinh nghiệm thực tế nếu trái với ISTQB
□ ĐỪNG bỏ qua từ NOT/EXCEPT trong câu hỏi
□ ĐỪNG chọn đáp án "nghe có vẻ đúng" mà không verify
□ ĐỪNG đổi đáp án trừ khi có lý do chắc chắn
□ ĐỪNG để trống — không có điểm trừ, đoán nếu cần
```

---

### 📋 Bảng tra nhanh — Điểm thi & Cấu trúc

| Thông tin | Chi tiết |
|-----------|----------|
| Số câu hỏi | 40 câu trắc nghiệm |
| Thời gian | 60 phút |
| Điểm đậu | 65% (26/40 câu) |
| Hình thức | Multiple choice (1 đáp án đúng) |
| Tỷ lệ K1/K2/K3 | ~20% K1 / ~60% K2 / ~20% K3 |
| Tài liệu | Không được mang vào |

---

### 🗺️ Phân bổ chương — Trọng số đề thi CTFL v4.0

| Chương | Nội dung | Số câu (approx.) |
|--------|----------|-----------------|
| Ch.1 | Fundamentals of Testing | ~8 câu |
| Ch.2 | Testing Throughout SDLC | ~6 câu |
| Ch.3 | Static Testing | ~4 câu |
| Ch.4 | Test Analysis & Design (Techniques) | ~12 câu |
| Ch.5 | Managing the Test Activities | ~9 câu |
| Ch.6 | Test Tools | ~1 câu |

> 💡 **Ưu tiên ôn:** Chương 4 (kỹ thuật) và Chương 1 (nguyên tắc, khái niệm) chiếm nhiều điểm nhất!

---

*📌 Tài liệu này dựa trên ISTQB CTFL Syllabus v4.0 — Phiên bản 2023*
*🔗 Tham khảo thêm: istqb.org | Glossary chính thức: glossary.istqb.org*