# ✅ Checklist Thực Hành Cho Fresher Tester
## Jira & Postman Practice Guide

> 📌 **Hướng dẫn sử dụng:** Đánh dấu vào ô checkbox khi hoàn thành từng bước. Đọc kỹ phần ghi chú trước khi thực hiện.

---

## 📋 PHẦN 1: Checklist Setup Jira

> 🎯 **Mục tiêu:** Thiết lập môi trường Jira để quản lý công việc và theo dõi bug

| # | ☐ | Bước thực hiện | Ghi chú giải thích |
|---|---|----------------|--------------------|
| 1 | ☐ | **Tạo tài khoản Atlassian** | Truy cập [atlassian.com](https://atlassian.com) → Click **"Sign up"** → Điền email công việc hoặc email cá nhân → Xác nhận qua email. *Lưu ý: Dùng email thật vì cần xác minh.* |
| 2 | ☐ | **Đăng nhập vào Jira Software** | Sau khi xác nhận email → Vào [jira.atlassian.com](https://jira.atlassian.com) → Chọn **Jira Software** (bản Free cho phép tối đa 10 users). |
| 3 | ☐ | **Tạo Project mới** | Click **"Create project"** → Chọn template **"Scrum"** hoặc **"Kanban"** → Đặt tên project (VD: `MyFirstProject`) → Chọn **"Team-managed"** cho người mới. |
| 4 | ☐ | **Tạo các Issue Type cần thiết** | Vào **Project Settings** → **Issue types** → Đảm bảo có đủ 3 loại: `Story`, `Task`, `Bug`. Đây là 3 loại phổ biến nhất trong testing. |
| 5 | ☐ | **Tạo Board và cấu hình cột** | Vào **Board** của project → Click **"Board settings"** → Cấu hình các cột: `To Do` → `In Progress` → `In Review` → `Done`. Mỗi cột đại diện cho một trạng thái công việc. |
| 6 | ☐ | **Tạo ít nhất 1 Sprint (nếu dùng Scrum)** | Vào **Backlog** → Click **"Create Sprint"** → Đặt tên Sprint (VD: `Sprint 1`) → Thêm vài task vào Sprint → Click **"Start Sprint"** để kích hoạt. |
| 7 | ☐ | **Mời thành viên vào Project** | Vào **Project Settings** → **People** → Click **"Add people"** → Nhập email → Chọn role: `Administrator`, `Member`, hoặc `Viewer`. *Thực hành: Mời 1 bạn cùng học vào project.* |

**✨ Kết quả mong đợi:** Có 1 project Jira hoạt động với board, sprint và ít nhất 2-3 task được tạo.

---

## 🔧 PHẦN 2: Checklist Test API với Postman

> 🎯 **Mục tiêu:** Làm quen với việc gửi request và kiểm tra response API sử dụng Postman
> 
> 💡 **API thực hành miễn phí:** [jsonplaceholder.typicode.com](https://jsonplaceholder.typicode.com)

| # | ☐ | Bước thực hiện | Ghi chú giải thích |
|---|---|----------------|--------------------|
| 1 | ☐ | **Cài đặt Postman** | Tải Postman tại [postman.com/downloads](https://postman.com/downloads) → Cài đặt → Tạo tài khoản miễn phí hoặc **"Skip and go to app"**. *Khuyến nghị: Tạo tài khoản để sync data.* |
| 2 | ☐ | **Tạo Workspace mới** | Click **"Workspaces"** → **"Create Workspace"** → Đặt tên (VD: `Fresher Tester Practice`) → Chọn **"Personal"** → Click **"Create"**. Workspace giúp tổ chức các project API riêng biệt. |
| 3 | ☐ | **Tạo Collection mới** | Trong Workspace → Click **"+"** hoặc **"New Collection"** → Đặt tên (VD: `JSONPlaceholder API Tests`) → Thêm description mô tả mục đích. Collection giống như folder chứa các request liên quan. |
| 4 | ☐ | **Gửi GET Request đầu tiên** | Tạo request mới trong Collection → Chọn method **GET** → Nhập URL: `https://jsonplaceholder.typicode.com/posts` → Click **"Send"** → Quan sát Response. *Expected: Status 200 OK, body chứa danh sách 100 posts.* |
| 5 | ☐ | **Verify Status Code và Response Body** | Sau khi nhận response → Kiểm tra: ① **Status Code** = `200 OK` (góc trên phải) ② **Response Body** có dạng JSON array `[{...}, {...}]` ③ **Response Time** < 1000ms ④ **Size** hiển thị dung lượng response. |
| 6 | ☐ | **Gửi GET Request với Parameter** | Tạo request mới → **GET** `https://jsonplaceholder.typicode.com/posts/1` → Vào tab **"Params"** → Thêm key: `id`, value: `1` → **Send**. *Expected: Trả về 1 object post duy nhất có id=1.* |
| 7 | ☐ | **Gửi POST Request tạo dữ liệu mới** | Tạo request mới → Chọn method **POST** → URL: `https://jsonplaceholder.typicode.com/posts` → Vào tab **"Body"** → Chọn **"raw"** → Chọn format **JSON** → Nhập body: `{"title": "Test Post", "body": "Noi dung test", "userId": 1}` → **Send**. *Expected: Status 201 Created.* |
| 8 | ☐ | **Viết Test Script tự động kiểm tra** | Mở request GET posts → Vào tab **"Tests"** → Nhập đoạn script: `pm.test("Status is 200", function() { pm.response.to.have.status(200); });` → **Send** → Xem kết quả test ở tab **"Test Results"**. Script này tự động verify status code. |
| 9 | ☐ | **Thêm Header vào Request** | Mở request POST → Vào tab **"Headers"** → Thêm: Key = `Content-Type`, Value = `application/json` → Key = `Accept`, Value = `application/json` → **Send**. Header báo cho server biết định dạng dữ liệu gửi/nhận. |
| 10 | ☐ | **Export Collection để lưu trữ** | Click chuột phải vào Collection → **"Export"** → Chọn format **Collection v2.1** → **"Export"** → Lưu file `.json` vào máy. File này có thể chia sẻ hoặc import lại sau này. |

**✨ Kết quả mong đợi:** Có 1 Collection với ít nhất 4 request (2 GET, 1 POST, 1 có Test Script) và tất cả đều có status OK.

---

## 🐛 PHẦN 3: Checklist Tạo Bug Ticket trong Jira

> 🎯 **Mục tiêu:** Biết cách viết một bug ticket đầy đủ, rõ ràng để developer có thể hiểu và fix bug
> 
> ⚠️ **Nguyên tắc vàng:** Một bug ticket tốt là bug ticket mà DEV không cần hỏi thêm bất kỳ thông tin gì!

| # | ☐ | Mục cần điền | Ghi chú giải thích | Ví dụ minh họa |
|---|---|-------------|-------------------|----------------|
| 1 | ☐ | **Summary (Tiêu đề)** | Ngắn gọn, súc tích, dưới 100 ký tự. Format chuẩn: `[Màn hình/Feature] - Mô tả lỗi ngắn gọn`. Đọc tiêu đề phải hiểu ngay lỗi là gì. | `[Login Page] - Nút "Đăng nhập" không hoạt động khi nhập đúng thông tin` |
| 2 | ☐ | **Description - Steps to Reproduce (Các bước tái hiện)** | Liệt kê từng bước cụ thể, đánh số thứ tự. DEV sẽ làm theo đúng các bước này để tái hiện lỗi. Càng chi tiết càng tốt. | `1. Mở trình duyệt Chrome` `2. Vào URL: example.com/login` `3. Nhập email: test@gmail.com` `4. Nhập password: 123456` `5. Click nút "Đăng nhập"` |
| 3 | ☐ | **Expected Result (Kết quả mong đợi)** | Mô tả hệ thống **nên** làm gì theo đúng spec/requirement. Đây là behavior đúng. Viết rõ ràng, không mơ hồ. | `Hệ thống chuyển hướng đến trang Dashboard và hiển thị thông báo "Đăng nhập thành công"` |
| 4 | ☐ | **Actual Result (Kết quả thực tế)** | Mô tả những gì **thực sự xảy ra** khi gặp bug. So sánh với Expected Result để thấy sự khác biệt. | `Trang không chuyển hướng, hiển thị thông báo lỗi đỏ: "Invalid credentials" dù thông tin đăng nhập đúng` |
| 5 | ☐ | **Priority & Severity (Độ ưu tiên & Mức độ nghiêm trọng)** | **Priority**: Mức độ cần fix sớm (`Highest/High/Medium/Low`). **Severity**: Mức độ ảnh hưởng (`Critical/Major/Minor/Trivial`). Hai chỉ số này độc lập nhau. | Priority: `High` (cản trở luồng chính) / Severity: `Critical` (không thể login = không dùng được app) |
| 6 | ☐ | **Environment (Môi trường)** | Ghi rõ môi trường xảy ra bug: OS, Browser/App version, môi trường server (Dev/Staging/Production), URL cụ thể. | `OS: Windows 11` / `Browser: Chrome 120.0.6099.130` / `Env: Staging` / `URL: staging.example.com/login` |
| 7 | ☐ | **Attachment (Ảnh chụp / Video)** | **Bắt buộc** đính kèm screenshot hoặc screen recording chụp đúng lúc xảy ra lỗi. Dùng `Snipping Tool` (Windows) hoặc `Cmd+Shift+4` (Mac). Khoanh đỏ vùng lỗi cho dễ nhìn. | Đính kèm: `bug_login_screenshot.png` (có khoanh đỏ vào thông báo lỗi) hoặc `bug_login_recording.mp4` |
| 8 | ☐ | **Assignee & Label (Người xử lý & Nhãn)** | **Assignee**: Assign cho DEV phụ trách feature đó. **Label**: Gắn nhãn để dễ lọc sau này (VD: `authentication`, `ui-bug`, `api-bug`, `regression`). | Assignee: `@dev_nguyen_van_a` / Labels: `authentication`, `critical-bug`, `sprint-3` |

---

## 📊 Bảng Tổng Kết Tiến Độ

| Phần | Tổng bước | Đã hoàn thành | Tiến độ |
|------|-----------|---------------|---------|
| Phần 1: Setup Jira | 7 | ___/7 | ░░░░░░░░░░ |
| Phần 2: Test API Postman | 10 | ___/10 | ░░░░░░░░░░ |
| Phần 3: Tạo Bug Ticket | 8 | ___/8 | ░░░░░░░░░░ |
| **TỔNG CỘNG** | **25** | **___/25** | **░░░░░░░░░░** |

---

## 💡 Tips Dành Cho Fresher Tester

> 🔑 **Jira Tips:**
> - Luôn cập nhật trạng thái ticket khi bắt đầu/kết thúc làm việc
> - Comment vào ticket thay vì nhắn tin riêng để có lịch sử rõ ràng
> - Dùng `@mention` để tag người cần chú ý

> 🔑 **Postman Tips:**
> - Đặt tên request rõ ràng: `GET - Lấy danh sách users` thay vì `New Request`
> - Dùng **Environment Variables** để lưu `base_url`, `token` tránh copy-paste nhiều lần
> - Luôn kiểm tra cả **happy path** (đúng) và **negative case** (sai) của API

> 🔑 **Bug Ticket Tips:**
> - Một ticket chỉ mô tả **một** bug duy nhất
> - Tái hiện bug ít nhất **3 lần** trước khi report để đảm bảo bug ổn định
> - Nếu không tái hiện được → ghi rõ `Intermittent bug` và tỷ lệ xảy ra (VD: 3/5 lần)

---

*📅 Checklist Version: 1.0 | Cập nhật lần cuối: 2024 | Dành cho: Fresher Tester (0-6 tháng kinh nghiệm)*