DEV Community

Tanakrit Seangnet
Tanakrit Seangnet

Posted on

ทดสอบ API อัตโนมัติด้วย Postman และ Newman

Image description

การทดสอบ API เป็นขั้นตอนที่สำคัญในการพัฒนาและบำรุงรักษาแอปพลิเคชัน ซึ่ง Postman เป็นเครื่องมือที่มีชื่อเสียงสำหรับทำการทดสอบ API อย่างมีประสิทธิภาพ ในบทความนี้เราจะพาลงลึกไปในกระบวนการทดสอบอัตโนมัติ API โดยใช้ Postman และ Newman ซึ่งเป็นเครื่องมือที่ช่วยในการรันคำสั่งทดสอบของ Postman ได้อย่างสะดวกและรวดเร็ว


Postman คืออะไร ?

Postman เป็นเครื่องมือที่มีหน้าตาใช้งานง่ายและมีความสามารถมากมาย ทำให้นักพัฒนาสามารถทดสอบ API ได้อย่างรวดเร็วและมีประสิทธิภาพ ติดตั้ง Postman และเริ่มต้นการทดสอบ API โดยการส่งคำขอ GET, POST, PUT, และ DELETE ไปยัง API ต่าง ๆ ใน Postman, สามารถเขียนสคริปต์ทดสอบเพื่อตรวจสอบผลลัพธ์ที่ได้จาก API ได้ นักพัฒนาสามารถเขียนสคริปต์ที่ทำการตรวจสอบค่าที่คืนมาจาก API ว่าตรงตามคาดหวังหรือไม่


Newman คืออะไร ?

Newman เป็นเครื่องมือที่ทำให้เราสามารถรันคำสั่งทดสอบของ Postman อัตโนมัติได้ นักพัฒนาสามารถใช้คำสั่งในโปรแกรมหรือ CI/CD pipeline เพื่อรันทดสอบอัตโนมัติและตรวจสอบความถูกต้องของ API


การใช้งาน Postman

Image description

การสร้าง Request:

  • เปิด Postman และคลิกที่ "New" เพื่อสร้าง Request ใหม่.
  • ใส่ URL ของ API ที่ต้องการทดสอบ.

การกำหนด Method:

  • เลือก HTTP Method เช่น GET, POST, PUT, หรือ DELETE.

การเพิ่ม Headers:

  • ใส่ Headers ที่จำเป็นต้องใช้ เช่น Content-Type, Authorization.

การส่งข้อมูล:

  • ถ้าต้องการส่งข้อมูลเพิ่มเติม (เช่น JSON หรือ form data) ให้ใส่ข้อมูลในส่วนของ Body.

การทดสอบ Request:

  • กดปุ่ม "Send" เพื่อทดสอบ Request และดูผลลัพธ์.

การจัดการ Environment:

  • ใช้ Environment เพื่อจัดการตัวแปรและค่าที่ใช้ซ้ำในหลาย Request.

การใช้ Collections:

  • สร้าง Collections เพื่อจัดการกลุ่มของ Requests ที่เกี่ยวข้อง.

การทดสอบ Script:

  • สามารถเขียน JavaScript ในส่วนของ Pre-request Script หรือ Tests เพื่อปรับแต่งหรือตรวจสอบผลลัพธ์.

การจัดการการตอบรับ (Response):

  • ตรวจสอบ Response ที่ได้รับ เพื่อให้แน่ใจว่ามีข้อมูลที่ถูกต้อง.

การเขียน Test script

ตัวอย่างข้อมูลที่ใช้สำหรับเขียน Test script

Method GET: https://jsonplaceholder.typicode.com/posts
Method POST: https://jsonplaceholder.typicode.com/posts
Request Body : {
"title": "foo",
"body": "bar",
"userId": 1
}
Method PUT: https://jsonplaceholder.typicode.com/posts/:id
Request Param: id
Method DELETE: https://jsonplaceholder.typicode.com/posts/:id
Request Param: id

Enter fullscreen mode Exit fullscreen mode

Method GET

ในตัวอย่างนี้เราต้องการเขียน Test script สำหรับตรวจสอบข้อมูลดังนี้

  1. ตรวจสอบ status code ว่าตอบกลับเป็น 200 ไหม
  2. ตรวจสอบ response body ว่ามีคำว่า aut อยู่ไหม
  3. ตรวจสอบ header ว่ามี key Content-Type อยู่ไหม
  4. ในกรณีตรวจสอบไม่ผ่าน

Image description

// ตรวจสอบ status code 200
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

// ตรวจสอบ Response body ว่ามีคำว่า aut อยู่ไหม
pm.test("Response body success", function () {
    pm.expect(pm.response.text()).to.include("aut");
});

// ตรวจสอบ Response header มี Content-Type อยู่ไหม
pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type");
});

// ตัวอย่างตรวจสอบ FAIL
pm.test("Status code is 201", function () {
    pm.response.to.have.status(201);
});
Enter fullscreen mode Exit fullscreen mode

Method POST

ในตัวอย่างนี้เราต้องการเขียน Test script สำหรับตรวจสอบข้อมูลดังนี้

  1. ตรวจสอบ status code ว่าตอบกลับเป็น 201 ไหม
  2. ตรวจสอบ Response body โดย id = 101, body = bar

Image description

// ตรวจสอบ status code
pm.test("Successful POST request", function () {
    pm.expect(pm.response.code).to.be.oneOf([201, 202]);
});

// ตรวจสอบ Response body โดย id = 101, body = bar
pm.test("Response body success", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.id).to.eql(101);
    pm.expect(jsonData.body).to.eql("bar");
});

Enter fullscreen mode Exit fullscreen mode

การใช้งาน newman

ติดตั้ง Node.js
เนื่องจาก Newman ทำงานผ่าน Node.js ให้ดาวน์โหลดและติดตั้ง Node.js จาก Node.js Official Website
(แนะนำให้เลือก LTS Version เพื่อความเสถียร)

// ติดตั้ง Newman
npm install -g newman

// ติดตั้งเครื่องมือสำหรับออกรายงาย
npm install newman-reporter-html

// ตรวจสอบการติดตั้ง Newman
newman -v
Enter fullscreen mode Exit fullscreen mode

การใช้งาน Newman คู่กับ Postman

สร้างและ Export Collection จาก Postman

  • เปิด Postman และเลือก Collection ที่ต้องการทดสอบ
  • คลิกขวาที่ Collection และเลือก Export
  • เลือกรูปแบบเป็น v2.1 (recommended) จากนั้นบันทึกไฟล์ .json ลงในเครื่อง

รัน Collection ด้วย Newman

ใช้คำสั่งด้านล่างเพื่อรัน Collection ที่ export มาจาก Postman:

newman run <path_to_collection_file.json>
Enter fullscreen mode Exit fullscreen mode

เพิ่ม Environment File (ถ้ามี)

หาก Collection ต้องการ Environment Variables:

  • Export Environment จาก Postman ในรูปแบบ .json
  • ใช้คำสั่งนี้เพื่อรัน Collection พร้อม Environment:
newman run <path_to_collection_file.json> -e <path_to_environment_file.json>
Enter fullscreen mode Exit fullscreen mode

Image description

การสร้างรายงานผลการทดสอบ

Newman สามารถสร้างรายงานการทดสอบในรูปแบบต่างๆ ได้ เช่น HTML หรือ JSON
ตัวอย่างการสร้างรายงาน HTML:

newman run <path_to_collection_file.json> -r html
Enter fullscreen mode Exit fullscreen mode

Image description


เคล็ดลับเพิ่มเติม

  • ใช้ Postman Monitor ในการรัน Collection แบบอัตโนมัติ หากต้องการใช้งานบนคลาวด์
  • ใช้ Plugin อย่าง newman-reporter-htmlextra เพื่อสร้างรายงาน HTML ที่มีข้อมูลมากขึ้น
npm install -g newman-reporter-htmlextra
newman run MyCollection.json -r htmlextra
Enter fullscreen mode Exit fullscreen mode

Image description


Top comments (0)