วิธีทำการทดสอบ API ภายนอก (Blackbox)


14

สมมติว่าคุณใช้ API จากผู้ขายวิธีการตรวจสอบให้แน่ใจว่า API ของพวกเขาทำงานได้ตามที่คาดไว้หรือไม่

ข้อกังวลหลักของฉันคือบางครั้งผู้ขายได้ผลักดันการเปลี่ยนแปลงรหัสของพวกเขาและทำลาย API เราต้องการมีซอฟต์แวร์อัตโนมัติบางประเภทเพื่อทดสอบพวกเขาอย่างต่อเนื่อง วิธีจัดการกับสิ่งนี้?


อาจมีเครื่องมือที่สามารถช่วยได้ (ฉันคิดว่า Pex สำหรับ C # libraries / API) ขึ้นอยู่กับภาษา
Steven Evers

คำตอบ:


10

คำตอบสั้น ๆ : คุณต้องมีชุดทดสอบสำหรับ API ผู้ขายบุคคลที่สาม - ดังนั้นคุณจะต้องพัฒนาหนึ่งชุด

อย่าคาดหวังให้คนอื่นทำเพื่อคุณและอย่าคาดหวังว่า "กระสุนเวทมนตร์" สำหรับการสร้างการทดสอบที่ถูกต้องโดยอัตโนมัติ

บางสิ่งที่คุณสามารถลองเพิ่มเติมได้:

  • ถามผู้ขายว่าพวกเขามีรายการ "การเปลี่ยนแปลงที่ไม่เหมาะสม" สำหรับแต่ละรุ่นใหม่หรือไม่
  • ถามพวกเขาเกี่ยวกับความเข้ากันได้ของ API / แจ้งให้พวกเขาทราบว่านี่เป็นคุณสมบัติที่สำคัญสำหรับคุณ
  • ตรวจสอบว่า API มีตะขอทดสอบที่เฉพาะเจาะจงบันทึกการส่งออกหรืออะไรทำนองนั้นสำหรับชิ้นส่วนที่ไม่สามารถทดสอบได้อย่างง่ายดาย
  • ห่อการเรียก API ที่สำคัญด้วยรหัสการบันทึกของคุณการเขียนอินพุตและเอาต์พุตที่เกี่ยวข้องของ API ไปยังล็อกไฟล์ซึ่งจะทำให้การดีบักสิ่งต่าง ๆ ได้ง่ายขึ้นหากมีสิ่งที่ไม่คาดคิดเกิดขึ้น
  • เพิ่มการยืนยันการเรียกใช้ API เพื่อตรวจสอบก่อนและหลังเงื่อนไขดังนั้นหากการเปิดตัวใหม่ของ API แสดงพฤติกรรมที่ไม่คาดคิดภายในแอปพลิเคชันของคุณคุณจะได้รับการแจ้งล่วงหน้าโดยข้อความแสดงข้อผิดพลาด

หากสิ่งเหล่านี้ทำงานได้หรือไม่ขึ้นอยู่กับว่าใครเป็นผู้ขายของคุณและประเภทของ API ที่คุณมีในใจ API ที่สร้างผลลัพธ์ที่ตรวจสอบได้เช่นไฟล์นั้นง่ายต่อการทดสอบมากกว่า API ที่ควบคุมอุปกรณ์ทางกายภาพบางอย่างที่คุณต้องสังเกตพฤติกรรมของสิ่งที่จะตัดสินใจว่าการเรียก API นั้นประสบความสำเร็จหรือไม่


ฉันเห็นด้วยอย่างสิ้นเชิง แต่สำหรับฉันแล้วดูเหมือนว่าผู้ถามไม่ได้มีประสบการณ์กับหน่วยทดสอบและไม่ทราบถึงรูปแบบการทำงานกับพวกเขา ฉันหมายถึง: ค้นหาจุดวิกฤติเขียนหน่วยทดสอบทำการทดสอบทั้งหมดตรวจแก้จุดบกพร่องในระหว่างการตรวจแก้จุดบกพร่องค้นหาจุดวิกฤติใหม่เขียนหน่วยใหม่ทำซ้ำ 4 ขั้นตอนสุดท้ายหลังจากการเปลี่ยนแปลง API ทุกครั้ง
Gangnus

@Gangnus: IMHO the OP ไม่ได้บอกอะไรเราเกี่ยวกับประสบการณ์ในอดีตของเขากับการทดสอบหน่วย หากเขามีปัญหาเกี่ยวกับเรื่องนั้นฉันแน่ใจว่าเขารู้ที่จะถามคำถามที่เฉพาะเจาะจงมากขึ้น นอกจากนี้หัวข้อที่นี่ไม่ใช่ "การทดสอบหน่วย" แต่ "การทดสอบการรวมอัตโนมัติ" โดยทั่วไปต้องใช้รูปแบบที่แตกต่างจากตัวอย่างเช่นการทดสอบหน่วยในลักษณะสไตล์ TDD
Doc Brown

ใช่เขาไม่ได้พูดแบบนั้น แต่ถ้าเขาถามว่า "ทำอย่างไรเพื่อให้แน่ใจว่า API ของพวกเขาทำงานได้อย่างที่คาดหวัง" ไม่พูดถึงการรวมตัวกันของการทดสอบ "มันดูเหมือนฉัน" ว่าเขาไม่รู้จักพวกเขา สำหรับการทดสอบการรวมอัตโนมัติเขาไม่รู้จักพวกเขาแม้จะมีความเป็นไปได้สูงขึ้นเขากล่าวถึงเพียง "ซอฟต์แวร์อัตโนมัติบางประเภท" คุณกำลังรอความรู้จากผู้คนเหมือนกับคุณ แต่ในหัวข้อเหล่านี้ 99% ของโปรแกรมเมอร์ (รวมถึงฉัน) รู้น้อยกว่ามาก 90% และไกลน้อยกว่ามาก
Gangnus

0

จากการใช้ถ้อยคำของผู้โพสต์มันเป็นมากกว่าแค่การทดสอบ IMO หลังจากที่คุณเขียนบททดสอบหน่วยของคุณสำหรับ API และตรวจสอบให้แน่ใจว่าทุกอย่างทำงานได้อย่างที่คาดไว้คุณต้องตรวจสอบ API ของบุคคลที่สามเพื่อที่คุณจะได้พบปัญหาก่อนที่ผู้ใช้จะทำ นั่นเป็นความเสี่ยงที่แท้จริงสำหรับ API ของบุคคลที่สามไม่ใช่รหัสของคุณและคุณไม่สามารถควบคุมได้ว่าจะทำการทดสอบบน API มากน้อยเพียงใดหรือเมื่อใดหากมีการเปลี่ยนแปลง

(ข้อจำกัดความรับผิดชอบ: ชื่อผลิตภัณฑ์ที่ใช้ที่นี่) หากคุณใช้ soapUI เพื่อเขียนการทดสอบ API ของคุณการทดสอบเหล่านั้นสามารถนำมาใช้ซ้ำได้ใน AlertSite ในฐานะที่เป็นหน้าจอตรวจสอบการปฏิบัติงานเพื่อให้แน่ใจว่า API ทำงานได้ตามปกติ หากการทดสอบล้มเหลวคุณสามารถรับการแจ้งเตือนก่อนที่ผู้ใช้จะโทรหาคุณและบ่นว่าแอปของคุณไม่ทำงาน


0

ใช้การทดสอบการเรียนรู้สำหรับเรื่องที่คุณสนใจ (คุณสมบัติที่คุณวางแผนจะใช้) การทดสอบการเรียนรู้คือการทดสอบการรวมที่เขียนโดยนักพัฒนาเพื่อทำสัญญาสาธารณะของ API ไม่ควรเขียนการทดสอบกับรายละเอียดการใช้งานภายในแม้ว่าจะมีซอร์สโค้ดสำหรับ API อยู่ก็ตาม แบบทดสอบการเรียนรู้ชนิดนี้มีจุดประสงค์สองประการ -

  1. มันช่วยปรับปรุงความเข้าใจของคุณเกี่ยวกับ API ของบุคคลที่สามอย่างมาก
  2. การทดสอบช่วยในการตรวจสอบว่าเวอร์ชั่นใหม่ที่อ้างสิทธิ์ใช้งานร่วมกันได้จริงหรือไม่

0

มี 2 ​​วิธีสำหรับปัญหานี้ ...

แอปของคุณกำลังใช้งานจริงพร้อมการรับส่งข้อมูลของผู้ใช้จริง:

หากคุณมีแอปที่ใช้งานจริงที่มีทราฟฟิกสดและขึ้นอยู่กับ api ภายนอกคุณไม่มีทางเลือกนอกจากต้องตรวจสอบอย่างใกล้ชิดและมีเกณฑ์ดีที่จะรู้ได้เร็วที่สุดเมื่อ api ภายนอกทำการเปลี่ยนแปลงโดยไม่แจ้งให้ทราบ

คุณควรคำนึงถึงว่า:

  • API เปลี่ยนแปลงตลอดเวลา
  • ผู้ขาย API สามารถมีข้อบกพร่อง
  • ชุดทดสอบผู้ขาย API สามารถมีข้อบกพร่องหรือไม่ครอบคลุมการทำงานทั้งหมดของ API การผลิต

แอพของคุณเป็นการติดตั้งและมีเวอร์ชัน / รีลีสที่วางแผนไว้:

ในกรณีนี้คุณมีช่วงเวลาผ่อนผันที่จะล้มเหลว ... ผู้ใช้ที่ใช้งานจริงจะไม่ได้รับผลทันทีจากการเปลี่ยนแปลงการแบ่ง API ภายนอก

ในความคิดของฉันนี้เป็นงานง่ายขึ้น เขียนการทดสอบ (การทดสอบแบบครบวงจร) ที่ทำให้ธุรกรรมจริง / http / คำขอไปยังแอปพลิเคชันของคุณที่เรียกใช้ API ภายนอกและตรวจสอบว่าไม่มีความล้มเหลว no ชุดทดสอบไม่มี mocks การทำธุรกรรมจริง

หลังจากภารกิจนี้เสร็จสิ้นคุณสามารถเลือกที่จะรันสิ่งนี้ทุก ๆ 24 ชั่วโมง 1 นาที ฯลฯ ...

แนวทางปฏิบัติที่ดี:

  • อัตโนมัติทุกอย่าง
  • มีบุคคลที่คุณสามารถติดต่อได้อย่างรวดเร็วจากผู้ขายของ API ภายนอก
  • อย่าเชื่อถือผู้ขายแบบทดสอบทุกอย่าง
  • ล้มเหลวอย่างรวดเร็ว - หากบริการของคุณขึ้นอยู่กับ API ภายนอกอย่าให้บริการของคุณขัดข้อง ล้มเหลวอย่างรวดเร็วและส่งคืนข้อความแสดงข้อผิดพลาดที่เหมาะสม

เครื่องมือ:

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.