หมวดหมู่: technology

การทำ Automation API Testing บน Postman: การเขียน Pre-request Script และ Tests Script ด้วย JavaScript พร้อมตัวอย่างการทำ Automation API Testing บน Postman: การเขียน Pre-request Script และ Tests Script ด้วย JavaScript พร้อมตัวอย่าง

ในโลกของการพัฒนาซอฟต์แวร์ที่ขับเคลื่อนด้วย Microservices และ API เป็นหัวใจหลัก การทดสอบระบบจึงไม่สามารถพึ่งพาการตรวจสอบแบบ Manual ได้อีกต่อไป ความเร็วและความแม่นยำในการยืนยันว่า Endpoint ต่างๆ ทำงานได้อย่างถูกต้องตามข้อกำหนด (Specification) จึงเป็นสิ่งสำคัญสูงสุด ทำให้เครื่องมืออย่าง Postman กลายเป็นมากกว่าแค่ตัวส่งคำขอ (Requester) แต่กลายเป็นแพลตฟอร์มสำหรับการเขียนสคริปต์อัตโนมัติที่ทรงพลัง


เจาะลึกรายละเอียดและประเด็นสำคัญ

หัวใจของการทำ Automation API Testing คือการเปลี่ยนจากการทดสอบแบบ Static ไปสู่ Dynamic Testing ซึ่งหมายถึงการที่แต่ละ Request ต้องอาศัยข้อมูลจาก Response ของ Request ก่อนหน้า การเขียนสคริปต์ด้วย JavaScript ในส่วนของ Pre-request Script และ Tests Script จึงเข้ามาเติมเต็มช่องว่างนี้ โดย Pre-request Script จะทำหน้าที่เตรียมสภาพแวดล้อม (Setup) เช่น การสร้าง Token, การกำหนดค่าตัวแปร หรือการคำนวณข้อมูลที่จำเป็นก่อนส่ง Request ออกไป

ในขณะที่ Tests Script มีบทบาทหลักในการตรวจสอบความถูกต้องของผลลัพธ์ (Validation) หลังจากได้รับ Response มาแล้ว เราสามารถใช้ JavaScript เพื่อทำการ Assertions ได้อย่างละเอียด ไม่ว่าจะเป็นการตรวจสอบ Status Code, การยืนยันว่า Field ข้อมูลสำคัญมีอยู่จริง, หรือแม้กระทั่งการตรวจสอบรูปแบบข้อมูลตาม Business Logic ที่ซับซ้อน ซึ่งช่วยให้เรามั่นใจได้ว่า API นั้นๆ ทำงานได้อย่างสมบูรณ์แบบในทุกสถานการณ์

// ----------------------------------------
// 1. Pre-request Script (Setup Data)
// ตัวอย่าง: ดึงค่า User ID จาก Environment Variable และส่งเป็น Header
var userId = pm.environment.get("user_id");
pm.request.addHeader("X-User-ID", userId);

// ----------------------------------------
// 2. Tests Script (Validation Logic)
// ตัวอย่าง: ตรวจสอบ Status Code และดึงค่าที่ต้องการไปเก็บเป็น Environment Variable สำหรับ Request ถัดไป
pm.test("Status code is 200 OK", function () {
    pm.response.to.have.status(200);
});

var jsonData = pm.response.json();
pm.test("Response body contains required 'data' field", function () {
    pm.expect(jsonData).to.have.property('data');
});

// เก็บค่าที่ได้จาก Response ไปใช้ใน Request ถัดไป (เช่น ID ที่สร้างขึ้น)
if (jsonData.data && jsonData.data.id) {
    pm.environment.set("new_resource_id", jsonData.data.id);
}


การนำไปประยุกต์ใช้ในชีวิตและการทำงานยุคใหม่

  • Data-Driven Testing (การทดสอบที่ขับเคลื่อนด้วยข้อมูล): แทนที่จะ Hardcode ข้อมูลในทุก Request เราสามารถใช้ JavaScript ใน Pre-request Script เพื่อวนลูปอ่านชุดข้อมูลจากไฟล์ภายนอก หรือ Environment Variables ทำให้เราสามารถรัน Test Case เดิมๆ ด้วยชุดข้อมูลที่หลากหลายได้โดยอัตโนมัติ
  • Workflow Chaining (การจำลอง Workflow แบบ End-to-End): การทดสอบ API ส่วนใหญ่มักไม่ใช่แค่การเรียก Endpoint เดียว แต่เป็นการทำตามลำดับขั้นตอน เช่น Login -> Get Token -> Create Resource -> Read Resource ดังนั้นการใช้ `pm.environment.set()` ใน Tests Script เพื่อส่งค่าไปยัง Request ถัดไป จึงเป็นหัวใจสำคัญในการจำลอง User Journey ทั้งหมด

การเชี่ยวชาญในการเขียนสคริปต์เหล่านี้ไม่ได้เป็นเพียงทักษะเสริมสำหรับ QA เท่านั้น แต่ยังยกระดับให้ผู้ทดสอบกลายเป็นวิศวกรที่สามารถสร้างระบบตรวจสอบคุณภาพ (Quality Gate) ที่เชื่อถือได้และทำงานได้อย่างต่อเนื่องในวงจร DevOps ทำให้มั่นใจว่าผลิตภัณฑ์ที่ส่งมอบนั้นมีเสถียรภาพสูง พร้อมรองรับการขยายตัวของระบบในอนาคต


อ่านเพิ่มเติม