ป้ายกำกับ: API Assertions

Postman Tests Scripts: การเขียน Automated Test Assertions เพื่อตรวจสอบ Response Status, Time และ SchemaPostman Tests Scripts: การเขียน Automated Test Assertions เพื่อตรวจสอบ Response Status, Time และ Schema

ในยุคที่สถาปัตยกรรม Microservices และ API กลายเป็นแกนหลักของการขับเคลื่อนธุรกิจ การรับประกันความถูกต้องและเสถียรภาพของข้อมูลที่ไหลเวียนระหว่างระบบจึงเป็นภารกิจที่ซับซ้อนกว่าการทดสอบแบบ Manual อย่างมาก การทดสอบคุณภาพ (Quality Assurance) ที่มีประสิทธิภาพจึงต้องยกระดับไปสู่การตรวจสอบแบบอัตโนมัติ (Automated Testing) เพื่อให้มั่นใจว่า API แต่ละตัวทำงานได้ตามข้อกำหนด ทั้งในแง่ของผลลัพธ์ สถานะ และประสิทธิภาพการตอบสนอง

หัวใจของการทดสอบ API: Automated Test Assertions

หัวใจสำคัญของการทดสอบ API ที่เป็นมืออาชีพคือการเขียน Automated Test Assertions ซึ่งเป็นชุดคำสั่งที่ใช้ตรวจสอบว่า Response ที่ได้รับจาก Server นั้น ตรงตามความคาดหวัง (Expected Outcome) หรือไม่ การตรวจสอบเหล่านี้ไม่ได้จำกัดอยู่แค่การดูรหัสสถานะ (Status Code) เท่านั้น แต่ยังขยายไปถึงการวัดเวลาตอบสนอง (Response Time) และการตรวจสอบโครงสร้างข้อมูล (Schema Validation) อย่างละเอียด

1. การตรวจสอบ Status Code (Functional Assertions)

การตรวจสอบ Status Code เป็นพื้นฐานที่สุด โดยเราต้องยืนยันว่า API ตอบกลับมาด้วยรหัสที่ถูกต้องตามสถานการณ์ เช่น 200 OK สำหรับการร้องขอสำเร็จ หรือ 404 Not Found เมื่อทรัพยากรไม่มีอยู่ การตรวจสอบนี้ช่วยให้ทราบถึงความถูกต้องทางฟังก์ชันการทำงานเบื้องต้น

2. การตรวจสอบ Schema และข้อมูล (Data Integrity Assertions)

ส่วนนี้มีความซับซ้อนที่สุด เพราะเราต้องเขียน Logic เพื่อตรวจสอบว่า Response JSON ที่ได้รับมานั้นมี Key และ Data Type ของทุกฟิลด์ตรงตามโมเดลข้อมูล (Data Model) ที่เรากำหนดไว้หรือไม่ เช่น หากเราคาดหวังว่าฟิลด์ user_id จะเป็น Integer และฟิลด์ status จะเป็น String การตรวจสอบนี้จะช่วยป้องกันข้อมูลที่ผิดรูปแบบ (Malformed Data) ก่อนที่จะเข้าสู่ระบบปลายทาง

3. การตรวจสอบประสิทธิภาพ (Performance Assertions)

นอกจากความถูกต้องแล้ว การวัดเวลาตอบสนอง (Response Time) ก็สำคัญไม่แพ้กัน การตั้งค่า Assertions เพื่อจำกัดเวลาสูงสุดที่ API ควรจะตอบกลับมา (เช่น ต้องไม่เกิน 500 มิลลิวินาที) เป็นการรับประกันประสบการณ์ผู้ใช้ที่ดีและช่วยระบุคอขวด (Bottleneck) ของระบบได้ตั้งแต่เนิ่นๆ

ในทางปฏิบัติ การเขียน Test Assertions เหล่านี้จะถูกเขียนในภาษา JavaScript ภายใน Postman Scripts แต่หลักการตรวจสอบความถูกต้องของโครงสร้างข้อมูล (Schema Validation) นั้น มีหลักการที่คล้ายคลึงกับการตรวจสอบความสมบูรณ์ของข้อมูลในระดับฐานข้อมูลอย่าง PostgreSQL ซึ่งเราสามารถจำลองการตรวจสอบความถูกต้องของข้อมูลที่คาดหวังได้ดังนี้:

SQL

-- ตัวอย่างการจำลองการตรวจสอบ Schema และ Data Integrity โดยใช้ PostgreSQL (Conceptual) --
-- สมมติว่าเราต้องการตรวจสอบว่าตาราง 'products' มีคอลัมน์ที่จำเป็นและข้อมูลอยู่ในรูปแบบที่ถูกต้อง

SELECT
    CASE
        WHEN EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'products' AND column_name = 'product_id') THEN 'PASS: product_id exists'
        ELSE 'FAIL: product_id missing'
    END AS id_check,
    CASE
        WHEN COUNT(DISTINCT product_id) = 3 THEN 'PASS: 3 unique records found'
        ELSE 'FAIL: Incorrect record count'
    END AS count_check;

-- การตรวจสอบว่าข้อมูลที่ส่งมา (เช่น 'apple,banana,orange') สามารถแปลงเป็นรูปแบบที่ต้องการได้หรือไม่
SELECT
    array_to_string(string_to_array('apple,banana,orange', ','), ',') AS validated_list;

บทสรุป: การยกระดับ QA ด้วย Automation

การใช้ Automated Test Assertions ไม่ว่าจะเป็นการตรวจสอบ Status Code, Schema, หรือ Response Time ไม่ใช่แค่ทางเลือก แต่เป็นข้อกำหนดพื้นฐานในการพัฒนา API สมัยใหม่ การลงทุนในการเขียนชุดทดสอบที่ครอบคลุมและแม่นยำตั้งแต่เนิ่นๆ จะช่วยลดความเสี่ยงของบั๊กที่ซับซ้อน (Regression Bugs) และช่วยให้ทีมพัฒนาสามารถปล่อยผลิตภัณฑ์ที่มีคุณภาพสูงได้อย่างต่อเนื่อง (Continuous Delivery) อย่างแท้จริง