- การทดสอบ API ด้วย Postman และ Postman CLI
- 2. Workflow ของ Postman
- 3. สร้าง Collection
- 4. ใช้ Environment Variable
- 5. เขียน Test Script ใน Postman
- 6. ตัวอย่าง GET API Test
- 7. ตัวอย่าง POST API Test
- 8. ส่งค่าระหว่าง Request
- 9. Collection Runner
- 10. Postman CLI คืออะไร
- 11. ติดตั้ง Postman CLI
- 12. Login Postman CLI
- 13. รัน Collection จากไฟล์
- 14. กำหนด Environment Variable จาก Command Line
- 15. Data-driven Testing
- 16. Stop เมื่อ Test Fail
- 17. สร้าง Test Report
- 18. ตัวอย่าง GitHub Actions
- 19. ใช้ Collection ID กับ Postman Cloud
- 20. Postman CLI กับ Newman ต่างกันอย่างไร
- 21. แนวทางจัด Folder สำหรับ Project
- 22. Best Practices
- 23. API Testing Pyramid
- 24. Workflow ที่แนะนำ
- 25. สรุป
- เอกสารอ้างอิง
#การทดสอบ API ด้วย Postman และ Postman CLI
การทดสอบ API เป็นขั้นตอนสำคัญของการพัฒนาซอฟต์แวร์สมัยใหม่ เพราะ Frontend, Mobile Application, Microservices และระบบภายนอกต่างสื่อสารกันผ่าน API หาก API ส่งข้อมูลผิดรูปแบบ ตอบกลับด้วย Status Code ที่ไม่ถูกต้อง หรือมี Regression หลังจากแก้ไขระบบ ย่อมส่งผลต่อระบบส่วนอื่นทันที
Postman ช่วยให้เราสร้างและทดสอบ HTTP Request ผ่านส่วนติดต่อแบบกราฟิก ขณะที่ Postman CLI ช่วยนำ Collection และ Test Script เดิมไปรันจาก Terminal และ CI/CD Pipeline ได้โดยไม่ต้องเปิด Postman App
บทความนี้อธิบาย Workflow ตั้งแต่การทดสอบแบบ Manual ไปจนถึง Automated API Testing

#1. สิ่งที่ควรทดสอบใน API
การตรวจสอบว่า Request ส่งได้และได้รับ 200 OK ยังไม่เพียงพอ โดยทั่วไปควรตรวจสอบอย่างน้อย
- HTTP Status Code เช่น
200,201,400,401,404 - Response Body
- JSON Structure
- Header
- Business Rule
- Response Time
- Authentication / Authorization
- Error Handling
- Regression ของ Endpoint เดิม
ตัวอย่าง API:
GET https://jsonplaceholder.typicode.com/posts/1
Response ตัวอย่าง:
{
"userId": 1,
"id": 1,
"title": "...",
"body": "..."
}
#2. Workflow ของ Postman
แนวทางการทำงานพื้นฐานคือ
Create Request
↓
Send Request
↓
Inspect Response
↓
Write Tests
↓
Save to Collection
↓
Run Collection
↓
Run with Postman CLI
↓
Integrate with CI/CD
Postman App เหมาะสำหรับการออกแบบและ Debug Test ส่วน Postman CLI เหมาะสำหรับการทดสอบซ้ำแบบอัตโนมัติ
#3. สร้าง Collection
สร้าง Collection เช่น
My API Tests
├── Posts
│ ├── GET Post
│ ├── CREATE Post
│ ├── UPDATE Post
│ └── DELETE Post
└── Users
├── GET Users
└── GET User
ข้อดีของ Collection คือสามารถรวม Request ที่เกี่ยวข้องไว้ด้วยกัน และรันเป็น Test Suite ได้
#4. ใช้ Environment Variable
แทนที่จะเขียน URL แบบ Hard-code
https://api.example.com/users
ควรสร้าง Environment Variable
base_url = https://api.example.com
แล้วใช้ใน Request
GET {{base_url}}/users
เมื่อมีหลาย Environment สามารถแยกได้ เช่น
Development
base_url = https://dev-api.example.com
Staging
base_url = https://staging-api.example.com
Production
base_url = https://api.example.com
แนวทางนี้ช่วยให้ Collection เดียวสามารถใช้กับหลาย Environment ได้
#5. เขียน Test Script ใน Postman
Postman ใช้ JavaScript สำหรับเขียน Test Script
#ตรวจสอบ Status Code
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
#ตรวจสอบ Response Time
pm.test("Response time is less than 500 ms", function () {
pm.expect(pm.response.responseTime).to.be.below(500);
});
#ตรวจสอบ JSON Property
pm.test("Response contains required properties", function () {
const jsonData = pm.response.json();
pm.expect(jsonData).to.have.property("id");
pm.expect(jsonData).to.have.property("title");
pm.expect(jsonData).to.have.property("body");
});
#ตรวจสอบชนิดข้อมูล
pm.test("id is a number", function () {
const jsonData = pm.response.json();
pm.expect(jsonData.id).to.be.a("number");
});
#ตรวจสอบค่า Business Rule
pm.test("User ID must be positive", function () {
const jsonData = pm.response.json();
pm.expect(jsonData.userId).to.be.above(0);
});
#6. ตัวอย่าง GET API Test
Request
GET {{base_url}}/posts/1
กำหนด Environment
base_url = https://jsonplaceholder.typicode.com
Test Script
pm.test("Status code is 200", () => {
pm.response.to.have.status(200);
});
pm.test("Response is JSON", () => {
pm.response.to.be.json;
});
pm.test("Post structure is correct", () => {
const data = pm.response.json();
pm.expect(data).to.have.property("userId");
pm.expect(data).to.have.property("id");
pm.expect(data).to.have.property("title");
pm.expect(data).to.have.property("body");
});
pm.test("Post ID is correct", () => {
const data = pm.response.json();
pm.expect(data.id).to.eql(1);
});
#7. ตัวอย่าง POST API Test
Request
POST {{base_url}}/posts
Header
Content-Type: application/json
Body
{
"title": "Postman API Testing",
"body": "Automated API Testing",
"userId": 1
}
Test Script
pm.test("Status code is 201", () => {
pm.response.to.have.status(201);
});
pm.test("Created post contains ID", () => {
const data = pm.response.json();
pm.expect(data).to.have.property("id");
});
pm.test("Response contains submitted title", () => {
const data = pm.response.json();
pm.expect(data.title).to.eql("Postman API Testing");
});
#8. ส่งค่าระหว่าง Request
API Test มักมีลำดับ เช่น
Login
↓
Get Token
↓
Create Resource
↓
Get Resource
↓
Update Resource
↓
Delete Resource
ตัวอย่างเก็บ Token
const data = pm.response.json();
pm.environment.set("access_token", data.access_token);
จากนั้นนำไปใช้ใน Authorization Header
Authorization: Bearer {{access_token}}
ตัวอย่างเก็บ ID
const data = pm.response.json();
pm.environment.set("post_id", data.id);
Request ถัดไปสามารถใช้
GET {{base_url}}/posts/{{post_id}}
#9. Collection Runner
เมื่อมีหลาย Request เราสามารถรันทั้ง Collection ได้
ตัวอย่าง
Authentication
PASS
Create User
PASS
Get User
PASS
Update User
PASS
Delete User
PASS
Collection Runner เหมาะสำหรับ Regression Testing เพราะสามารถรัน Test Suite เดิมซ้ำได้ทุกครั้งที่ระบบเปลี่ยนแปลง
#10. Postman CLI คืออะไร
Postman CLI เป็น Command-line companion ที่ Postman พัฒนาและสนับสนุนโดยตรง สามารถใช้รัน Collection จากไฟล์หรือ Collection ID และเหมาะสำหรับเชื่อมต่อกับ CI/CD
คำสั่งหลักสำหรับรัน Collection คือ
postman collection run <collection>
ตัวอย่างจากไฟล์ Local
postman collection run postman/MyAPI.postman_collection.json
หากใช้ไฟล์ในเครื่อง การทำงานแบบ Local สามารถรันได้โดยไม่ต้อง Login ส่วนงานที่เชื่อมต่อกับ Postman Cloud ต้อง Authentication
#11. ติดตั้ง Postman CLI
หากติดตั้ง Node.js และ npm แล้ว สามารถติดตั้งได้ด้วย
npm install -g postman-cli
ตรวจสอบเวอร์ชัน
postman --version
ดู Help
postman --help
#12. Login Postman CLI
Login ผ่าน Browser
postman login
สำหรับ CI/CD ควรใช้ API Key
postman login --with-api-key "$POSTMAN_API_KEY"
ไม่ควรเขียน API Key ลงใน Repository โดยตรง ควรเก็บใน Secret ของ CI/CD Provider
#13. รัน Collection จากไฟล์
สมมติโครงสร้าง Project
project/
├── postman/
│ ├── MyAPI.postman_collection.json
│ └── dev.postman_environment.json
└── src/
รัน Collection
postman collection run postman/MyAPI.postman_collection.json
รันพร้อม Environment
postman collection run \
postman/MyAPI.postman_collection.json \
-e postman/dev.postman_environment.json
#14. กำหนด Environment Variable จาก Command Line
สามารถ Override Variable ใน Runtime ได้ เช่น
postman collection run \
postman/MyAPI.postman_collection.json \
--env-var base_url=https://staging-api.example.com
แนวทางนี้เหมาะกับ CI/CD เพราะไม่จำเป็นต้องสร้าง Environment File แยกทุก Environment
#15. Data-driven Testing
Postman CLI รองรับ JSON หรือ CSV สำหรับ Iteration Data
ตัวอย่าง users.csv
email,password
user1@example.com,password1
user2@example.com,password2
user3@example.com,password3
ใช้ใน Request
{
"email": "{{email}}",
"password": "{{password}}"
}
รัน
postman collection run \
postman/MyAPI.postman_collection.json \
-d users.csv
แต่ละ Row จะถูกนำไปใช้เป็นหนึ่ง Iteration
#16. Stop เมื่อ Test Fail
ใน CI/CD เรามักต้องการหยุดเมื่อเกิด Failure
postman collection run \
postman/MyAPI.postman_collection.json \
--bail
Postman CLI คืน Exit Code ที่ CI/CD นำไปใช้ตัดสินว่า Pipeline ผ่านหรือไม่ผ่าน
#17. สร้าง Test Report
Postman CLI มี Built-in Reporters ได้แก่
CLI
JSON
JUnit
HTML
ตัวอย่างแสดงผลที่ Terminal และสร้าง JUnit Report
postman collection run \
postman/MyAPI.postman_collection.json \
-r cli,junit \
--reporter-junit-export reports/postman-junit.xml
สร้าง HTML Report
postman collection run \
postman/MyAPI.postman_collection.json \
-r cli,html \
--reporter-html-export reports/postman-report.html
สร้างหลาย Report พร้อมกัน
postman collection run \
postman/MyAPI.postman_collection.json \
-r cli,json,junit,html
Report แบบ JUnit เหมาะสำหรับ CI Server ส่วน HTML เหมาะสำหรับเปิดดูผลแบบ Human-readable
#18. ตัวอย่าง GitHub Actions
สร้างไฟล์
.github/workflows/api-test.yml
ตัวอย่าง Workflow
name: API Tests
on:
push:
pull_request:
jobs:
postman-api-test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Run Postman collection
uses: postmanlabs/postman-cli-action@v1
with:
command: >
collection run
postman/MyAPI.postman_collection.json
-e postman/dev.postman_environment.json
-r cli,junit
--reporter-junit-export reports/postman-junit.xml
- name: Upload test report
if: always()
uses: actions/upload-artifact@v4
with:
name: postman-test-report
path: reports/
Workflow นี้จะทำงานทุกครั้งที่มี Push หรือ Pull Request
แนวคิดคือ
Developer Push Code
↓
GitHub Actions
↓
Postman CLI
↓
Run Collection
↓
Assertions
↙ ↘
PASS FAIL
↓ ↓
Continue Stop Pipeline
#19. ใช้ Collection ID กับ Postman Cloud
หากต้องการรัน Collection ที่อยู่บน Postman Cloud สามารถใช้ Collection ID ได้
postman login --with-api-key "$POSTMAN_API_KEY"
postman collection run \
12345678-12345ab-1234-1ab2-1ab2-ab1234112a12
Postman CLI สามารถส่งผลการรันไปยัง Postman เพื่อให้ทีมตรวจสอบผลร่วมกันได้
#20. Postman CLI กับ Newman ต่างกันอย่างไร
ปัจจุบัน Postman แนะนำ Postman CLI สำหรับ Workflow ใหม่ โดยเฉพาะเมื่อใช้งานความสามารถของ Postman รุ่นใหม่และ Collection v3
| ประเด็น | Postman CLI | Newman |
|---|---|---|
| ผู้พัฒนา | Postman | Postman |
| การรัน Collection | รองรับ | รองรับ |
| Login Postman | รองรับ | ไม่รองรับ |
| Postman Cloud Integration | โดยตรง | จำกัดกว่า |
| Native Git / Collection v3 | รองรับ | ไม่รองรับ Collection v3 |
| ใช้เป็น Node.js Library | ไม่ใช่ | ได้ |
| เหมาะกับ Workflow ใหม่ | แนะนำ | เหมาะกับระบบเดิมบางกรณี |
สำหรับ Project ใหม่ที่ใช้ Postman รุ่นใหม่ ควรเริ่มจาก Postman CLI
#21. แนวทางจัด Folder สำหรับ Project
ตัวอย่าง
project/
├── postman/
│ ├── collections/
│ │ └── MyAPI.postman_collection.json
│ │
│ ├── environments/
│ │ ├── dev.postman_environment.json
│ │ └── staging.postman_environment.json
│ │
│ └── data/
│ └── users.csv
│
├── reports/
│
├── .github/
│ └── workflows/
│ └── api-test.yml
│
└── README.md
รัน
postman collection run \
postman/collections/MyAPI.postman_collection.json \
-e postman/environments/dev.postman_environment.json \
-d postman/data/users.csv
#22. Best Practices
#อย่า Hard-code URL
ควรใช้
{{base_url}}
แทน
https://api.example.com
#อย่า Commit Secret
หลีกเลี่ยง
api_key=123456789
ใน Repository
ควรใช้ GitHub Secrets, GitLab CI/CD Variables หรือ Secret Manager
#ตั้งชื่อ Test ให้สื่อความหมาย
ไม่ควรใช้
pm.test("test1", () => {});
ควรใช้
pm.test("GET /users returns 200", () => {});
#แยก Test ตามความรับผิดชอบ
ตัวอย่าง
Status Code
Response Schema
Business Rule
Performance
Security
#ให้ Test เป็น Deterministic
Automated Test ไม่ควรขึ้นกับข้อมูลที่เปลี่ยนแปลงแบบคาดเดาไม่ได้โดยไม่จัดการ Test Data ให้เหมาะสม
#23. API Testing Pyramid
การทดสอบ API ควรเป็นส่วนหนึ่งของ Automated Testing Strategy
E2E
/ \
/ \
API /Integration
/ \
/ \
Unit Tests
API Test มีข้อดีคือเร็วกว่า UI E2E Test และสามารถตรวจสอบ Business Logic ระหว่าง Service ได้โดยตรง จึงเหมาะสำหรับ Regression Test ใน CI/CD
#24. Workflow ที่แนะนำ
สำหรับทีมพัฒนาซอฟต์แวร์สามารถใช้ Workflow ดังนี้
1. Developer สร้าง API
↓
2. Tester / Developer สร้าง Postman Request
↓
3. เพิ่ม Assertions
↓
4. จัด Request เป็น Collection
↓
5. รันด้วย Collection Runner
↓
6. Export หรือจัดเก็บ Collection ใน Repository
↓
7. รันด้วย Postman CLI
↓
8. Integrate กับ CI/CD
↓
9. Generate Test Report
↓
10. Block Deployment เมื่อ Test Fail
ผลลัพธ์คือ API Regression Testing สามารถทำงานอัตโนมัติทุกครั้งที่มีการเปลี่ยนแปลง Code
#25. สรุป
Postman ไม่ได้มีประโยชน์เฉพาะการทดลองเรียก API แบบ Manual แต่สามารถใช้สร้าง Automated API Test Suite ได้ โดยเขียน Assertions ด้วย JavaScript และจัด Request เป็น Collection
เมื่อใช้ร่วมกับ Postman CLI จะสามารถนำ Test Suite เดิมไปรันจาก Terminal และ CI/CD ได้ เช่น GitHub Actions ทำให้เกิด Workflow
Postman
↓
Collection
↓
Tests
↓
Postman CLI
↓
CI/CD
↓
Automated API Testing
แนวทางนี้ช่วยตรวจจับ Regression ได้เร็ว ลดการทดสอบซ้ำด้วยมือ และเพิ่มความมั่นใจก่อน Deploy ระบบ
#เอกสารอ้างอิง
-
Postman Docs — Postman CLI Overview
https://learning.postman.com/docs/postman-cli/postman-cli-overview/ -
Postman Docs — Install the Postman CLI
https://learning.postman.com/docs/postman-cli/postman-cli-installation/ -
Postman Docs — Collection Commands
https://learning.postman.com/docs/postman-cli/postman-cli-collections -
Postman Docs — Generate Collection Run Reports
https://learning.postman.com/docs/postman-cli/postman-cli-reporters -
Postman Docs — GitHub Actions with Postman CLI
https://learning.postman.com/docs/postman-cli/postman-cli-github-actions -
Postman Docs — Migrate Newman Scripts to Postman CLI
https://learning.postman.com/docs/reference/newman-cli/migrate-to-postman-cli