PlusMagi's Blog By Pitt Phunsanit Backend,Cloud Computing,Database Postman Collection Runner & Newman: รัน Test Suites อัตโนมัติและสร้างรายงานผลลัพธ์ผ่าน Command Line

Postman Collection Runner & Newman: รัน Test Suites อัตโนมัติและสร้างรายงานผลลัพธ์ผ่าน Command Line

ในโลกของการพัฒนาซอฟต์แวร์ที่ขับเคลื่อนด้วยสถาปัตยกรรม Microservices และการพึ่งพา API เป็นหลัก การรับประกันคุณภาพ (QA) จึงไม่สามารถอาศัยการทดสอบแบบ Manual ได้อีกต่อไป ความเร็วในการส่งมอบฟีเจอร์ใหม่ๆ ทำให้ความจำเป็นในการมีระบบ Automated Testing ที่เชื่อถือได้และรวดเร็วยิ่งขึ้น เครื่องมือสำหรับการทดสอบ API จึงกลายเป็นหัวใจสำคัญของวงจร CI/CD (Continuous Integration/Continuous Delivery) การทำให้กระบวนการตรวจสอบชุด Test Suites ทั้งหมดเป็นไปโดยอัตโนมัติจึงไม่ใช่แค่ทางเลือก แต่คือมาตรฐานที่องค์กรยุคใหม่ต้องมี

Newman: สะพานเชื่อม Postman สู่ระบบ Automation ระดับ Enterprise

Postman เป็นเครื่องมือยอดนิยมสำหรับการออกแบบและทดสอบ API ด้วยหน้า User Interface (UI) ที่ใช้งานง่าย แต่เมื่อเราก้าวเข้าสู่สภาพแวดล้อมจริงที่ต้องมีการรัน Test Suites จำนวนมากในรูปแบบของ Pipeline การใช้ UI จะกลายเป็นข้อจำกัดอย่างยิ่ง

นี่คือจุดที่ Newman เข้ามามีบทบาท Newman คือ Command Line Collection Runner ที่ถูกพัฒนาขึ้นเพื่อแก้ปัญหานี้โดยเฉพาะ มันช่วยให้เราสามารถเรียกใช้ Collections ทั้งหมดที่เขียนไว้ในรูปแบบของ Test Cases และ Assertions ต่างๆ ได้อย่างแม่นยำและเป็นระบบผ่าน Terminal โดยไม่ต้องพึ่งพา Graphical User Interface (GUI) เลยแม้แต่น้อย

การจำลอง Automated Testing ด้วย PostgreSQL

แม้ว่า Newman จะเน้นการทดสอบ API แต่หลักการของ Automated Testing คือการตรวจสอบความถูกต้องของข้อมูล (Data Integrity) และการทำงานของระบบหลังบ้าน (Backend Logic) ซึ่งเป็นหน้าที่หลักของฐานข้อมูลอย่าง PostgreSQL ในบทความนี้ เราจะจำลองกระบวนการรัน Test Suite อัตโนมัติ โดยใช้ PostgreSQL เพื่อตรวจสอบความสอดคล้องของข้อมูล (Data Consistency) ซึ่งเป็นหัวใจสำคัญของการทำ QA ในระบบ Enterprise

เราสามารถสร้างฟังก์ชัน (Function) ใน PostgreSQL เพื่อทำหน้าที่เป็น ‘Test Runner’ ที่รับชุดข้อมูลอินพุต (Input Set) และทำการตรวจสอบเงื่อนไขต่างๆ (Assertions) หากทุกเงื่อนไขผ่าน ระบบจะรายงานสถานะ ‘Success’ หากมีข้อผิดพลาด ระบบจะรายงาน ‘Failure’ ซึ่งสามารถนำไปใช้ใน CI/CD Pipeline ได้อย่างสมบูรณ์

ตัวอย่างการรัน Test Suite อัตโนมัติใน PostgreSQL

สมมติว่าเราต้องการตรวจสอบว่ารายการสินค้า (Product) ที่ถูกอัปเดตในตาราง `products` มีความสัมพันธ์กับรายการหมวดหมู่ (Category) ที่ถูกต้องหรือไม่ โดยใช้ชุดข้อมูลทดสอบ (Test Data) ที่เป็นค่า ‘1,2,3’

-- 1. สร้างฟังก์ชัน Test Runner เพื่อตรวจสอบความสมบูรณ์ของข้อมูล (Data Integrity Check) -- 2. กำหนดชุดข้อมูลทดสอบ (Test Input Set) -- 3. รันการตรวจสอบและส่งคืนสถานะ (Return Status) CREATE OR REPLACE FUNCTION run_product_test_suite(p_test_ids TEXT) RETURNS BOOLEAN AS $$ BEGIN IF EXISTS (SELECT 1 FROM products WHERE category_id = (SELECT split_part(p_test_ids, ',', 1)) AND is_active = TRUE) THEN RETURN TRUE; ELSE RAISE EXCEPTION 'Test Failed: Product with initial ID % not found or inactive.', p_test_ids; END IF; END; $$ LANGUAGE plpgsql; -- ตัวอย่างการเรียกใช้ Test Suite ผ่าน Command Line (Simulating Newman Run) SELECT run_product_test_suite('1,2,3'); -- หากรันสำเร็จจะคืนค่า TRUE -- หากรันไม่สำเร็จ (เช่น ID 999 ไม่มีอยู่) จะเกิด EXCEPTION และ Pipeline จะหยุดทำงาน


บทสรุป: การรวม Automation เข้ากับ CI/CD

การใช้เครื่องมืออย่าง Newman ร่วมกับการตรวจสอบความถูกต้องของข้อมูลด้วย PostgreSQL ผ่าน Command Line ไม่เพียงแต่ช่วยให้เราลดภาระการทดสอบแบบ Manual เท่านั้น แต่ยังสร้างความมั่นใจในระดับ Enterprise ว่าทุกการเปลี่ยนแปลงโค้ด (Code Change) จะไม่ส่งผลกระทบต่อความสมบูรณ์ของข้อมูลในระบบหลังบ้าน (Backend Data Integrity) การทำให้กระบวนการ QA เป็นแบบ Non-GUI และสามารถเรียกใช้ผ่าน Script ได้อย่างสมบูรณ์ คือกุญแจสำคัญในการขับเคลื่อนวงจร CI/CD ที่รวดเร็วและเชื่อถือได้