บทช่วยสอนการทดสอบ API: API Test Automation คืออะไร
⚡ สรุปอย่างชาญฉลาด
การทดสอบ API คือการตรวจสอบความถูกต้องของ Application Programming Interface (API) เพื่อให้มั่นใจถึงฟังก์ชันการทำงาน ความน่าเชื่อถือ ประสิทธิภาพ และความปลอดภัย โดยใช้การเรียกใช้งานผ่านโค้ดแทนการโต้ตอบผ่าน GUI

การทดสอบ API คืออะไร
การทดสอบ API เป็นประเภทการทดสอบซอฟต์แวร์ที่ตรวจสอบความถูกต้องของ Application Programming Interfaces (API) วัตถุประสงค์ของการทดสอบ API คือเพื่อตรวจสอบการทำงาน ความน่าเชื่อถือ ประสิทธิภาพ และความปลอดภัยของอินเทอร์เฟซการเขียนโปรแกรม ในการทดสอบ API แทนที่จะใช้อินพุตและเอาต์พุตมาตรฐานของผู้ใช้ คุณจะใช้ซอฟต์แวร์เพื่อส่งการเรียกไปยัง API รับเอาต์พุต และจดบันทึกการตอบสนองของระบบ การทดสอบ API แตกต่างจากการทดสอบ GUI มากและจะไม่เน้นที่รูปลักษณ์และความรู้สึกของแอปพลิเคชัน แต่จะเน้นที่ชั้นตรรกะทางธุรกิจของสถาปัตยกรรมซอฟต์แวร์เป็นหลัก
สำหรับพื้นหลัง API (Application Programming Interface) เป็นอินเทอร์เฟซคอมพิวเตอร์ที่ช่วยให้สามารถสื่อสารและแลกเปลี่ยนข้อมูลระหว่างระบบซอฟต์แวร์สองระบบที่แยกจากกัน ระบบซอฟต์แวร์ที่ดำเนินการ API มีฟังก์ชัน/รูทีนย่อยหลายอย่างที่ระบบซอฟต์แวร์อื่นสามารถทำได้ API กำหนดคำขอที่สามารถทำได้ วิธีส่งคำขอ รูปแบบข้อมูลที่สามารถใช้ได้ ฯลฯ ระหว่างระบบซอฟต์แวร์สองระบบ
การตั้งค่าสภาพแวดล้อมการทดสอบอัตโนมัติของ API
การทดสอบระบบอัตโนมัติ API จำเป็นต้องมีแอปพลิเคชันที่สามารถโต้ตอบได้ผ่าน API ในการทดสอบ API คุณจะต้องมีสิ่งต่อไปนี้:
- ใช้เครื่องมือทดสอบเพื่อทดสอบการทำงานของ API
- เขียนโค้ดของคุณเองเพื่อทดสอบ API
ข้อควรระวังบางประการ:
- การทดสอบ API แตกต่างจากการทดสอบประเภทอื่น เนื่องจากไม่มีส่วนติดต่อผู้ใช้แบบกราฟิก (GUI) และคุณต้องตั้งค่าสภาพแวดล้อมที่เรียกใช้ API ด้วยพารามิเตอร์ที่จำเป็น จากนั้นจึงตรวจสอบผลการทดสอบ
- การตั้งค่าสภาพแวดล้อมการทดสอบสำหรับการทดสอบระบบอัตโนมัติ API ดูเหมือนจะค่อนข้างซับซ้อน
- ควรตั้งค่าฐานข้อมูลและเซิร์ฟเวอร์ให้ตรงตามข้อกำหนดของแอปพลิเคชัน
- เมื่อการติดตั้งเสร็จสมบูรณ์แล้ว ควรเรียกใช้ฟังก์ชัน API เพื่อตรวจสอบว่า API นั้นทำงานได้หรือไม่
ประเภทของเอาท์พุตของ API
ผลลัพธ์จาก API อาจเป็นดังนี้:
- ข้อมูลประเภทใดก็ได้
- สถานะ (พูดว่าผ่านหรือไม่ผ่าน)
- เรียกใช้ฟังก์ชัน API อื่น
ข้อมูลประเภทใดก็ได้
ตัวอย่าง: มีฟังก์ชัน API ที่ควรบวกเลขจำนวนเต็มสองตัว
Long add(int a, int b)
ตัวเลขจะต้องถูกกำหนดเป็นพารามิเตอร์อินพุต ผลลัพธ์ควรเป็นผลรวมของจำนวนเต็มสองจำนวน ผลลัพธ์นี้ต้องได้รับการตรวจสอบด้วยผลลัพธ์ที่คาดหวัง
add (1234, 5656)
จะต้องมีการจัดการข้อยกเว้นหากตัวเลขเกินขีดจำกัดจำนวนเต็ม
สถานะ (ผ่านหรือไม่ผ่าน)
พิจารณาฟังก์ชัน API ด้านล่างนี้:
- ล็อค()
- ปลดล็อค()
- ลบ()
ฟังก์ชันเหล่านี้จะส่งค่าใดๆ ก็ได้ เช่น True (ในกรณีที่สำเร็จ) หรือ False (ในกรณีที่เกิดข้อผิดพลาด) เป็นผลลัพธ์ ซึ่งมีความแม่นยำกว่ามาก กรณีทดสอบ จะเรียกใช้ฟังก์ชันในสคริปต์ใดๆ ก็ได้ และตรวจสอบการเปลี่ยนแปลงในฐานข้อมูลหรือในส่วนติดต่อผู้ใช้ของแอปพลิเคชันในภายหลัง
การเรียกใช้ API / เหตุการณ์อื่น
ในกรณีนี้ เราจะเรียกใช้ฟังก์ชัน API ฟังก์ชันหนึ่ง ซึ่งจะเรียกใช้ฟังก์ชันอื่นต่อ ตัวอย่างเช่น ฟังก์ชัน API แรกสามารถใช้สำหรับลบเรคอร์ดที่ระบุในตาราง และฟังก์ชันนี้จะเรียกใช้ฟังก์ชันอื่นเพื่อรีเฟรชฐานข้อมูล
กรณีทดสอบสำหรับการทดสอบ API
กรณีทดสอบสำหรับการทดสอบ API นั้นอิงตาม:
- ส่งคืนค่าตามเงื่อนไขอินพุต: การทดสอบค่อนข้างง่าย เนื่องจากสามารถกำหนดอินพุตและรับรองความถูกต้องของผลลัพธ์ได้
- ไม่ส่งคืนสิ่งใด: เมื่อไม่มีค่าที่ส่งคืน จะมีการตรวจสอบพฤติกรรมของ API บนระบบ
- ทริกเกอร์ API/เหตุการณ์/การขัดจังหวะอื่นๆ: หากผลลัพธ์จาก API กระตุ้นให้เกิดเหตุการณ์หรือการขัดจังหวะใดๆ เหตุการณ์และตัวรับฟังการขัดจังหวะเหล่านั้นควรได้รับการจัดการ tracเกด
- อัปเดตโครงสร้างข้อมูล: การอัปเดตโครงสร้างข้อมูลจะมีผลหรือผลกระทบต่อระบบ และควรได้รับการตรวจสอบสิทธิ์
- แก้ไขทรัพยากรบางอย่าง: หากการเรียก API แก้ไขทรัพยากรบางอย่าง ก็ควรได้รับการตรวจสอบความถูกต้องโดยการเข้าถึงทรัพยากรที่เกี่ยวข้อง
แนวทางการทดสอบ API
แนวทางการทดสอบ API คือกลยุทธ์หรือวิธีการที่กำหนดไว้ล่วงหน้าซึ่งทีม QA จะดำเนินการเพื่อทดสอบ API หลังจากที่เวอร์ชันสมบูรณ์แล้ว การทดสอบนี้ไม่รวมถึงซอร์สโค้ด แนวทางการทดสอบ API ช่วยให้เข้าใจฟังก์ชันการทำงาน เทคนิคการทดสอบ พารามิเตอร์อินพุต และการดำเนินการของกรณีทดสอบได้ดียิ่งขึ้น
ประเด็นต่อไปนี้เป็นแนวทางในการทดสอบ API:
- ทำความเข้าใจการทำงานของโปรแกรม API และกำหนดขอบเขตของโปรแกรมให้ชัดเจน
- ใช้เทคนิคการทดสอบ เช่น คลาสที่เท่าเทียมกัน การวิเคราะห์ค่าขอบเขต และการคาดเดาข้อผิดพลาดและเขียนกรณีทดสอบสำหรับ API
- พารามิเตอร์อินพุตสำหรับ API จำเป็นต้องได้รับการวางแผนและกำหนดอย่างเหมาะสม
- ดำเนินการกรณีทดสอบและเปรียบเทียบผลลัพธ์ที่คาดหวังและผลลัพธ์จริง
วิธีการทดสอบ API
การทดสอบระบบอัตโนมัติ API ควรครอบคลุมวิธีการทดสอบอย่างน้อยดังต่อไปนี้ นอกเหนือจากกระบวนการ SDLC ทั่วไป:
- การทดสอบการค้นพบ: กลุ่มทดสอบควรดำเนินการชุดการเรียกที่บันทึกไว้ใน API ด้วยตนเอง เช่น การตรวจสอบว่าทรัพยากรเฉพาะที่เปิดเผยโดย API สามารถแสดงรายการ สร้าง และลบได้ตามความเหมาะสม
- การทดสอบการใช้งาน: การทดสอบนี้จะตรวจสอบว่า API ใช้งานได้และใช้งานง่ายหรือไม่ และ API สามารถทำงานร่วมกับแพลตฟอร์มอื่นได้ดีหรือไม่
- การทดสอบความปลอดภัย: การทดสอบนี้รวมถึงประเภทของการรับรองความถูกต้องที่จำเป็น และข้อมูลที่ละเอียดอ่อนได้รับการเข้ารหัสผ่าน HTTP หรือทั้งสองอย่าง
- การทดสอบโดยอัตโนมัติ: การทดสอบ API ควรสิ้นสุดด้วยการสร้างชุดสคริปต์หรือเครื่องมือที่สามารถใช้เพื่อดำเนินการ API เป็นประจำ
- เอกสาร: ทีมทดสอบต้องตรวจสอบให้แน่ใจว่าเอกสารประกอบเพียงพอและให้ข้อมูลเพียงพอที่จะโต้ตอบกับ API เอกสารควรเป็นส่วนหนึ่งของการส่งมอบขั้นสุดท้าย
ความแตกต่างระหว่างการทดสอบ API และการทดสอบหน่วย
| การทดสอบหน่วย | การทดสอบ API |
|---|---|
| นักพัฒนาดำเนินการ | ผู้ทดสอบดำเนินการ |
| มีการทดสอบฟังก์ชันการทำงานแบบแยกส่วน | มีการทดสอบฟังก์ชันการทำงานแบบครบวงจร |
| นักพัฒนาสามารถเข้าถึงซอร์สโค้ดได้ | ผู้ทดสอบไม่สามารถเข้าถึงซอร์สโค้ดได้ |
| การทดสอบ UI ก็มีส่วนเกี่ยวข้องด้วย | มีการทดสอบเฉพาะฟังก์ชัน API เท่านั้น |
| มีการทดสอบฟังก์ชันพื้นฐานเท่านั้น | ปัญหาด้านการทำงานทั้งหมดได้รับการทดสอบแล้ว |
| มีขอบเขตจำกัด | ในขอบเขตที่กว้างกว่า |
| โดยปกติจะดำเนินการก่อนการเช็คอิน | ทดสอบการทำงานหลังจากสร้างบิลด์แล้ว |
แนวปฏิบัติที่ดีที่สุดสำหรับการทดสอบ API
- ควรจัดกลุ่มกรณีทดสอบ API ตามหมวดหมู่การทดสอบ
- นอกเหนือจากการทดสอบแต่ละครั้งคุณควรรวมการประกาศของ API ที่กำลังเรียกใช้
- ควรระบุการเลือกพารามิเตอร์ไว้อย่างชัดเจนในกรณีทดสอบนั้นๆ
- จัดลำดับความสำคัญของการเรียกใช้ฟังก์ชัน API เพื่อให้ผู้ทดสอบสามารถทดสอบได้ง่ายขึ้น
- แต่ละกรณีทดสอบควรมีความสมบูรณ์ในตัวเองและเป็นอิสระจากส่วนประกอบอื่นๆ ให้มากที่สุดเท่าที่จะเป็นไปได้
- หลีกเลี่ยงการใช้ “การทดสอบแบบต่อเนื่อง” ในขั้นตอนการพัฒนาของคุณ
- ต้องใช้ความระมัดระวังเป็นพิเศษเมื่อใช้งานฟังก์ชันที่เรียกใช้เพียงครั้งเดียว เช่น ลบ ปิดหน้าต่าง เป็นต้น
- ควรดำเนินการจัดลำดับการโทรอย่างรอบคอบและวางแผนไว้เป็นอย่างดี
- เพื่อให้มั่นใจว่าการทดสอบครอบคลุมโดยสมบูรณ์ ให้สร้างกรณีทดสอบ API สำหรับชุดค่าผสมอินพุตที่เป็นไปได้ทั้งหมดของ API
ประเภทของข้อผิดพลาดที่การทดสอบ API ตรวจพบ
- ไม่สามารถจัดการกับเงื่อนไขข้อผิดพลาดได้อย่างสวยงาม
- ธงที่ไม่ได้ใช้
- ฟังก์ชันการทำงานที่ขาดหายไปหรือซ้ำกัน
- ปัญหาด้านความน่าเชื่อถือ รวมถึงความยากลำบากในการเชื่อมต่อและรับการตอบกลับจาก API
- ปัญหาด้านความปลอดภัย
- ปัญหาเกี่ยวกับมัลติเธรด
- ปัญหาด้านประสิทธิภาพที่ทำให้เวลาตอบสนองของ API สูงมาก
- ข้อผิดพลาด/คำเตือนที่ไม่เหมาะสมแก่ผู้โทร
- การจัดการค่าอาร์กิวเมนต์ที่ถูกต้องไม่ถูกต้อง
- ข้อมูลการตอบกลับไม่ได้จัดโครงสร้างอย่างถูกต้อง (JSON หรือ XML)
วิธีการทำการทดสอบ API แบบอัตโนมัติ
ต่อไปนี้เป็นคำแนะนำโดยละเอียดสำหรับการทดสอบ API แบบอัตโนมัติ:
นอกจากนี้ยังมีอย่างอื่นอีก เครื่องมือสำหรับการทดสอบ API.
AI กำลังเปลี่ยนแปลงการทดสอบ API อย่างไร
ปัญญาประดิษฐ์คือ reshaping การทดสอบ API โดยการทำให้งานที่ต้องทำด้วยมือเป็นไปโดยอัตโนมัติ อัลกอริธึมการเรียนรู้ของเครื่องสามารถวิเคราะห์ข้อกำหนดของ API สร้างกรณีทดสอบ และระบุกรณีพิเศษที่ผู้ทดสอบที่เป็นมนุษย์อาจมองข้ามไปได้
AI ยังช่วยเพิ่มประสิทธิภาพการทดสอบความปลอดภัยด้วยการตรวจจับช่องโหว่ อย่างไรก็ตาม AI ควรเป็นส่วนเสริมมากกว่าการแทนที่ความเชี่ยวชาญของมนุษย์ เนื่องจากวิศวกร QA มีความรู้เฉพาะด้านที่ AI ไม่สามารถเลียนแบบได้
ความท้าทายของการทดสอบ API
- ความท้าทายหลักในการทดสอบ Web API ได้แก่ การรวมพารามิเตอร์ การเลือกพารามิเตอร์ และลำดับการเรียกใช้งาน
- แอปพลิเคชันนี้ไม่มีส่วนติดต่อผู้ใช้แบบกราฟิก (GUI) สำหรับทดสอบ ทำให้ยากต่อการป้อนค่าต่างๆ
- การตรวจสอบและยืนยันผลลัพธ์ในระบบอื่นนั้นค่อนข้างยากสำหรับผู้ทดสอบ
- ผู้ทดสอบจำเป็นต้องทราบวิธีการเลือกและจัดหมวดหมู่พารามิเตอร์
- จำเป็นต้องทดสอบฟังก์ชันการจัดการข้อผิดพลาด
- ความรู้ด้านการเขียนโปรแกรมเป็นสิ่งจำเป็นสำหรับผู้ทดสอบ
สรุป
API ประกอบด้วยชุดของคลาส/ฟังก์ชัน/ขั้นตอนที่แสดงถึงเลเยอร์ตรรกะทางธุรกิจ หาก API ไม่ได้รับการทดสอบอย่างถูกต้อง อาจทำให้เกิดปัญหาไม่เพียงแต่ในแอปพลิเคชัน API แต่ยังรวมถึงแอปพลิเคชันที่เรียกใช้ด้วย เป็นการทดสอบที่ขาดไม่ได้ในวิศวกรรมซอฟต์แวร์



