บทช่วยสอนการทดสอบ API: API Test Automation คืออะไร
การทดสอบ 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 นี้
ข้อมูลประเภทใดก็ได้
ตัวอย่าง: มีฟังก์ชัน API ที่ควรบวกเลขจำนวนเต็มสองตัว
Long add(int a, int b)
ตัวเลขจะต้องถูกกำหนดเป็นพารามิเตอร์อินพุต ผลลัพธ์ควรเป็นผลรวมของจำนวนเต็มสองจำนวน ผลลัพธ์นี้ต้องได้รับการตรวจสอบด้วยผลลัพธ์ที่คาดหวัง
การโทรจำเป็นต้องทำเช่น
add (1234, 5656)
จะต้องจัดการข้อยกเว้นหากตัวเลขเกินขีดจำกัดจำนวนเต็ม
สถานะ (พูดว่าผ่านหรือไม่ผ่าน)
พิจารณาฟังก์ชัน API ด้านล่าง –
- ล็อค()
- ปลดล็อค()
- ลบ()
โดยจะส่งกลับค่าใดๆ เช่น True (ในกรณีที่สำเร็จ) หรือเท็จ (ในกรณีที่เกิดข้อผิดพลาด) เป็นเอาต์พุต
ได้อย่างแม่นยำยิ่งขึ้น กรณีทดสอบ คือสามารถเรียกใช้ฟังก์ชันต่างๆ ในสคริปต์ใดๆ และตรวจสอบการเปลี่ยนแปลงในภายหลังได้ในฐานข้อมูลหรือ GUI ของแอปพลิเคชัน
การเรียก API / เหตุการณ์อื่น
ในกรณีนี้ เราเรียกใช้ฟังก์ชัน API ตัวใดตัวหนึ่ง ซึ่งจะเรียกใช้ฟังก์ชันอื่นแทน
ตัวอย่างเช่น – ฟังก์ชัน API แรกสามารถใช้เพื่อลบบันทึกที่ระบุในตาราง และฟังก์ชันนี้จะเรียกใช้ฟังก์ชันอื่นเพื่อรีเฟรชฐานข้อมูล
กรณีทดสอบสำหรับการทดสอบ API:
กรณีทดสอบของการทดสอบ API ขึ้นอยู่กับ
- ส่งคืนค่าตามเงื่อนไขอินพุต: การทดสอบค่อนข้างง่าย เนื่องจากสามารถกำหนดอินพุตและรับรองความถูกต้องของผลลัพธ์ได้
- ไม่ส่งคืนสิ่งใด: เมื่อไม่มีค่าที่ส่งคืน จะมีการตรวจสอบพฤติกรรมของ API บนระบบ
- ทริกเกอร์ API/เหตุการณ์/การขัดจังหวะอื่นๆ: หากเอาต์พุตของ API กระตุ้นให้เกิดเหตุการณ์หรือการขัดจังหวะ เหตุการณ์เหล่านั้นและผู้ฟังที่ขัดจังหวะควรได้รับการติดตาม
- อัปเดตโครงสร้างข้อมูล: การอัปเดตโครงสร้างข้อมูลจะมีผลหรือผลกระทบต่อระบบ และควรได้รับการตรวจสอบสิทธิ์
- แก้ไขทรัพยากรบางอย่าง: หากการเรียก API แก้ไขทรัพยากรบางอย่าง ก็ควรได้รับการตรวจสอบความถูกต้องโดยการเข้าถึงทรัพยากรที่เกี่ยวข้อง
แนวทางการทดสอบ API
แนวทางการทดสอบ API เป็นกลยุทธ์ที่กำหนดไว้ล่วงหน้าหรือวิธีการที่ทีม QA จะดำเนินการเพื่อดำเนินการทดสอบ API หลังจากที่บิลด์พร้อมแล้ว การทดสอบนี้ไม่รวมซอร์สโค้ด วิธีการทดสอบ API ช่วยให้เข้าใจฟังก์ชันการทำงาน เทคนิคการทดสอบ พารามิเตอร์อินพุต และการดำเนินการของกรณีทดสอบได้ดียิ่งขึ้น
ประเด็นต่อไปนี้ช่วยให้ผู้ใช้สามารถดำเนินการทดสอบ API ได้:
- ทำความเข้าใจการทำงานของโปรแกรม API และกำหนดขอบเขตของโปรแกรมให้ชัดเจน
- ใช้เทคนิคการทดสอบ เช่น คลาสที่เท่าเทียมกัน การวิเคราะห์ค่าขอบเขต และการคาดเดาข้อผิดพลาดและเขียนกรณีทดสอบสำหรับ API
- จำเป็นต้องวางแผนและกำหนดพารามิเตอร์อินพุตสำหรับ API อย่างเหมาะสม
- ดำเนินการกรณีทดสอบและเปรียบเทียบผลลัพธ์ที่คาดหวังและผลลัพธ์จริง
ความแตกต่างระหว่างการทดสอบ API และการทดสอบหน่วย
การทดสอบหน่วย | การทดสอบ API |
---|---|
นักพัฒนาดำเนินการ | ผู้ทดสอบดำเนินการ |
มีการทดสอบฟังก์ชันการทำงานแบบแยกส่วน | มีการทดสอบฟังก์ชันการทำงานแบบครบวงจร |
นักพัฒนาสามารถเข้าถึงซอร์สโค้ดได้ | ผู้ทดสอบไม่สามารถเข้าถึงซอร์สโค้ดได้ |
การทดสอบ UI ก็มีส่วนเกี่ยวข้องด้วย | มีการทดสอบเฉพาะฟังก์ชัน API เท่านั้น |
มีการทดสอบฟังก์ชันพื้นฐานเท่านั้น | ปัญหาด้านการทำงานทั้งหมดได้รับการทดสอบแล้ว |
มีขอบเขตจำกัด | ในขอบเขตที่กว้างกว่า |
ปกติจะวิ่งก่อนเช็คอิน | ทดสอบการทำงานหลังจากสร้างบิลด์แล้ว |
วิธีการทดสอบ API
การทดสอบอัตโนมัติของ API ควรครอบคลุมอย่างน้อยวิธีการทดสอบต่อไปนี้ นอกเหนือจากกระบวนการ SDLC ทั่วไป
- การทดสอบการค้นพบ: กลุ่มทดสอบควรดำเนินการชุดการเรียกที่บันทึกไว้ใน API ด้วยตนเอง เช่น การตรวจสอบว่าทรัพยากรเฉพาะที่เปิดเผยโดย API สามารถแสดงรายการ สร้าง และลบได้ตามความเหมาะสม
- การทดสอบการใช้งาน: การทดสอบนี้จะตรวจสอบว่า API ใช้งานได้และใช้งานง่ายหรือไม่ และ API สามารถทำงานร่วมกับแพลตฟอร์มอื่นได้ดีหรือไม่
- การทดสอบความปลอดภัย: การทดสอบนี้รวมถึงประเภทของการรับรองความถูกต้องที่จำเป็น และข้อมูลที่ละเอียดอ่อนได้รับการเข้ารหัสผ่าน HTTP หรือทั้งสองอย่าง
- การทดสอบโดยอัตโนมัติ: การทดสอบ API ควรสิ้นสุดด้วยการสร้างชุดสคริปต์หรือเครื่องมือที่สามารถใช้เพื่อดำเนินการ API เป็นประจำ
- เอกสาร: ทีมทดสอบต้องตรวจสอบให้แน่ใจว่าเอกสารประกอบเพียงพอและให้ข้อมูลเพียงพอที่จะโต้ตอบกับ API เอกสารควรเป็นส่วนหนึ่งของการส่งมอบขั้นสุดท้าย
แนวทางปฏิบัติที่ดีที่สุดของการทดสอบ API:
- กรณีการทดสอบ API ควรจัดกลุ่มตามหมวดหมู่การทดสอบ
- นอกเหนือจากการทดสอบแต่ละครั้งคุณควรรวมการประกาศของ API ที่กำลังเรียกใช้
- ควรกล่าวถึงการเลือกพารามิเตอร์อย่างชัดเจนในกรณีทดสอบ
- จัดลำดับความสำคัญการเรียกใช้ฟังก์ชัน API เพื่อให้ผู้ทดสอบทดสอบได้ง่าย
- กรณีทดสอบแต่ละกรณีควรมีความสมบูรณ์ในตัวเองและเป็นอิสระจากการขึ้นต่อกันมากที่สุดเท่าที่จะเป็นไปได้
- หลีกเลี่ยง "test chaining" ในการพัฒนาของคุณ
- ต้องใช้ความระมัดระวังเป็นพิเศษในขณะที่จัดการกับฟังก์ชันการโทรแบบครั้งเดียว เช่น – Delete, CloseWindow ฯลฯ
- การจัดลำดับการโทรควรทำและวางแผนอย่างดี
- เพื่อให้มั่นใจว่าการทดสอบครอบคลุมโดยสมบูรณ์ ให้สร้างกรณีทดสอบ API สำหรับชุดค่าผสมอินพุตที่เป็นไปได้ทั้งหมดของ API
ประเภทของข้อบกพร่องที่การทดสอบ API ตรวจพบ
- ไม่สามารถจัดการกับเงื่อนไขข้อผิดพลาดได้อย่างสวยงาม
- ธงที่ไม่ได้ใช้
- ฟังก์ชันการทำงานที่ขาดหายไปหรือซ้ำกัน
- ปัญหาความน่าเชื่อถือ ความยากในการเชื่อมต่อและรับการตอบกลับ API.
- ปัญหาด้านความปลอดภัย
- ปัญหาเกี่ยวกับมัลติเธรด
- ปัญหาด้านประสิทธิภาพ เวลาตอบสนองของ API สูงมาก
- ข้อผิดพลาด/คำเตือนที่ไม่เหมาะสมแก่ผู้โทร
- การจัดการค่าอาร์กิวเมนต์ที่ถูกต้องไม่ถูกต้อง
- ข้อมูลการตอบสนองมีโครงสร้างไม่ถูกต้อง (JSON หรือ XML)
วิธีทำการทดสอบ API อัตโนมัติ
1) ReadyAPI
ReadyAPI เป็นเครื่องมือชั้นนำสำหรับการทดสอบการทำงาน ความปลอดภัย และโหลดของ RESTful, SOAP, GraphQL และบริการเว็บอื่นๆ ในแพลตฟอร์มเดียวที่ใช้งานง่าย คุณจะได้รับเครื่องมืออันทรงพลังสามอย่าง: การทดสอบ ReadyAPI, ประสิทธิภาพ ReadyAPI และการจำลองเสมือน ReadyAPI ด้วยเครื่องมือเหล่านี้ คุณสามารถดำเนินการทดสอบการทำงาน การรักษาความปลอดภัย และประสิทธิภาพ/โหลดได้ คุณยังสามารถจำลอง API และบริการบนเว็บด้วยเครื่องมือการจำลองเสมือนที่แข็งแกร่งของเรา นอกจากนี้คุณยังสามารถรวมระบบของคุณได้อย่างง่ายดาย ไปป์ไลน์ CI/CD ในระหว่างการสร้างทุกครั้ง
Key Features
- ReadyAPI สามารถรวมเข้ากับสภาพแวดล้อมใดก็ได้
- มีฟีเจอร์ Smart Assertion ที่สามารถสร้างการยืนยันจำนวนมากกับปลายทางหลายร้อยจุดได้อย่างรวดเร็ว
- การสนับสนุนดั้งเดิมสำหรับ Git, Docker, Jenkins, Azureฯลฯ
- รองรับ Command-line สำหรับการทดสอบอัตโนมัติ
- รองรับการดำเนินการทดสอบการทำงานและการจัดคิวงานแบบขนาน
- Promoการนำโค้ด tes มาใช้ซ้ำ
- ลบการพึ่งพาระหว่างการทดสอบและการพัฒนา
ทดลองใช้ฟรี 14 วัน (ไม่ต้องใช้บัตรเครดิต)
บทช่วยสอนต่อไปนี้ให้คำแนะนำโดยละเอียดเกี่ยวกับการทดสอบ API อัตโนมัติ
นอกจากนี้ยังมีเครื่องมืออื่นๆ สำหรับการทดสอบ API ตรวจสอบพวกเขา Good Farm Animal Welfare Awards
ความท้าทายของการทดสอบ API
ความท้าทายของการทดสอบ API ได้แก่:
- ความท้าทายหลักในการทดสอบ Web API คือ การรวมพารามิเตอร์ การเลือกพารามิเตอร์ และลำดับการโทร
- ไม่มี GUI ให้ใช้ เพื่อทดสอบการใช้งานซึ่งทำให้ เป็นการยากที่จะให้ค่าอินพุต
- การตรวจสอบความถูกต้องและการตรวจสอบผลลัพธ์ในระบบอื่นเป็นเรื่องยากสำหรับผู้ทดสอบ
- ผู้ทดสอบจำเป็นต้องทราบการเลือกและการจัดหมวดหมู่พารามิเตอร์
- ฟังก์ชั่นการจัดการข้อยกเว้น จำเป็นต้องได้รับการทดสอบ
- ความรู้ด้านการเขียนโค้ดเป็นสิ่งจำเป็นสำหรับผู้ทดสอบ
สรุป
API ประกอบด้วยชุดของคลาส/ฟังก์ชัน/ขั้นตอนที่แสดงถึงเลเยอร์ตรรกะทางธุรกิจ หาก API ไม่ได้รับการทดสอบอย่างถูกต้อง อาจทำให้เกิดปัญหาไม่เพียงแต่ในแอปพลิเคชัน API แต่ยังรวมถึงแอปพลิเคชันที่เรียกใช้ด้วย เป็นการทดสอบที่ขาดไม่ได้ในวิศวกรรมซอฟต์แวร์