à¤ªà ¥ ƒà¤ ¥ எ ¥? à¤μà ¥ € पठ° à¤¸à ¥? ठ¥ ित à¤à¤¯à¤¾à¤¨à¤ • ठ¨à¤ ° ठ• मà¤,à¤|िठ° | அமேசிங் எச்
สารบัญ:
เราจัดลำดับความสำคัญของหลักการสถาปัตยกรรมเชิงบริการที่ ผกผัน. นั่นหมายถึงเรามีชิ้นส่วนขนาดเล็กที่สามารถบำรุงรักษาได้พร้อมความรับผิดชอบที่ชัดเจน พวกเขาสื่อสารกับคนอื่น (ส่วนใหญ่) ผ่านการโอนย้ายสถานะของตัวแทนหรือ REST, API
สิ่งนี้ให้ความยืดหยุ่นและให้บริการเราได้เป็นอย่างดียกเว้นการทดสอบด้านเดียวที่สำคัญ เมื่อทำการทดสอบหนึ่งควรหลีกเลี่ยง:
- ขึ้นอยู่กับบริการภายนอกที่ทำงานบนเครื่องเดียวกัน
- การทดสอบช้า
เนื่องจากแอปพลิเคชันพึ่งพาบริการภายนอกโดยเนื้อแท้จึงเป็นสิ่งสำคัญที่จะต้องมีกลยุทธ์การทดสอบสำหรับการอ้างอิงเหล่านั้น
เราเพิ่งเริ่มใช้งาน Bypass และฉันจะอธิบายวิธีที่เราไปถึงที่นั่นและโดยเฉพาะอย่างยิ่งวิธีที่เราใช้งาน
ที่ผ่านมา
วิธีการจำลองและส่งคืนข้อมูลตัวอย่างบางส่วนเช่นนี้:
นั่นคือ (และฉันเชื่อว่ายังคงเป็น) "วิธีการเดินทาง" ในโลกของ Ruby / Rails น่าเสียดายที่สิ่งนี้ส่งเสริมพฤติกรรมที่ไม่ดีดังที่José Valim อธิบายไว้ที่นี่
จากนั้นเราเริ่มใช้ ExVCR ซึ่งเป็นห้องสมุดที่ยอดเยี่ยม แต่มีข้อบกพร่องคล้าย ๆ กับ mocks / stubs: มันส่งเสริมความเกียจคร้านและไม่แยกความกังวลที่สำคัญกับ API ที่กำหนดไว้อย่างดี ExVCR ช่วยให้หนึ่งในการ "บันทึก" และ "เล่น" ข้อมูลจริง เป็นเรื่องง่ายมากที่จะรวม (รวมถึงสองสามบรรทัดในการทดสอบของคุณและทุกอย่างได้รับการดูแล) แต่ในอุดมคติคุณต้องคิดถึงการพึ่งพาจากภายนอกในการทดสอบไม่ใช่สิ่งที่เป็นนามธรรม มันอาจยังเป็นตัวเลือกที่ทำงานได้สำหรับสถานการณ์เมื่อพฤติกรรมของจุดสิ้นสุดควรทดสอบด้วยค่าใช้จ่ายน้อยที่สุด (เราใช้สำหรับทดสอบการเรียกไปยัง AWS Services ของ Amazon เช่น S3)
ใส่อะแดปเตอร์
อะแดปเตอร์ทำงานได้ดีและส่งเสริมการพิจารณาสัญญา API และขอบเขตการสื่อสารที่กำหนดไว้อย่างชัดเจน เรายังคงใช้วิธีนี้โดยเฉพาะอย่างยิ่งเมื่ออะแดปเตอร์มีความซับซ้อนมากขึ้น (เช่นซ็อกเก็ต JSON-RPC)
นี่คือลักษณะที่อะแดปเตอร์อาจมีลักษณะ:
แต่สำหรับจุดปลาย HTTP แบบง่ายอะแดปเตอร์ดูเหมือนจะทำงานได้มากและมีข้อเสียเปรียบครั้งใหญ่: พวกเขาปล่อยให้ไลบรารีที่พวกเขาใช้หมดจากสมการการทดสอบ หากมีสิ่งใดในไลบรารี HTTP หรือ JSON เปลี่ยนแปลงการทดสอบจะไม่ถูกจับ จำนวนของรหัสการผลิตที่สำคัญที่ไม่ได้รับการทดสอบโดยวิธีการนี้เป็นที่ยอมรับไม่ได้
ปัจจุบันและอนาคต
บายพาสช่วยให้เราสามารถเริ่มต้นเว็บเซิร์ฟเวอร์ที่ง่ายมากในการทดสอบที่จำลองการบริการภายนอกที่เราใช้
ตอนนี้เราสามารถทดสอบสแต็กทั้งหมดรวมถึงไลบรารี HTTP, ไลบรารีการเข้ารหัส / ถอดรหัส JSON และกลไกการตรวจสอบสิทธิ์ บายพาส README เขียนได้ดีดังนั้นฉันจะสำรองรายละเอียดการใช้งาน อย่างไรก็ตามเราเปลี่ยนวิธีการใช้งานเล็กน้อยเพื่อให้การทดสอบกระชับและอ่านได้:
ก่อนอื่นเราบางครั้งเราต้องการที่จะโทรออกไปยัง Facebook เมื่อการทดสอบถูกเรียกใช้เป็นชุดการรวมข้อมูลแบบเต็ม เราทำสิ่งนี้อย่างผิดปกติเพื่อให้มั่นใจว่า API ของ Facebook ยังคงทำงานตามความคาดหวังของเรา เพิ่ม
- รวมการรวม
ไปยัง
การทดสอบแบบผสม
ไม่จำลอง API แต่ให้โทรออกไปยังบริการภายนอก (สาย 5, 7) แทน
เรามีความชัดเจนเมื่อเราจำลองคำขอไปยังบริการภายนอกเพื่อให้การทดสอบแต่ละครั้งที่ใช้บายพาสต้องมี
@tag facebook_bypass
(บรรทัด 7)
ในที่สุด,
handle_fb
function (บรรทัดที่ 30–39) กำลังถูกเรียกใช้ (โดยระบุว่า
request_path
ขีด) ฉันชอบการจับคู่ในส่วนหัวของฟังก์ชั่นเพราะมันทำให้เส้นทางที่เราตอบสนองชัดเจนและช่วยให้เราสามารถกำหนดฟังก์ชั่นที่แตกต่างกันสำหรับเส้นทางที่แตกต่างกัน
ดังนั้น Bypass จึงทำการทดสอบที่ติดแท็กด้วยเท่านั้น
@tag: บายพาส
และเมื่อเราไม่ได้ใช้งานชุดการรวมของเรา อีกสิ่งหนึ่งที่เราทำในขณะที่ตั้งค่าบายพาสคือการอนุญาตให้แท็กส่งรหัสเพจ (บรรทัดที่ 8, 20) ดังนั้นนี่คือวิธีทดสอบที่ใช้ Bypass ในความรุ่งโรจน์ของมัน:
อย่างที่คุณเห็น
facebook_bypass
แท็กทำให้ชัดเจนว่าเรากำลังจำลอง API (เว้นแต่ว่าเราอยู่ในโหมดการรวมระบบ) ช่วยให้เราสามารถส่งผ่านข้อมูลไปยัง API จำลองและง่ายมากที่จะใช้การกำหนดค่า Bypass เดียวกันสำหรับการทดสอบที่แตกต่างกัน
ฉันหวังว่านี่จะช่วยให้คุณทดสอบ API ภายนอก คุณสามารถหาฉันได้ที่ Twitter (ดูด้านล่าง) หากคุณมีคำถามเพิ่มเติม
'The Flash' EP Greg Berlanti สามารถบันทึกภาพยนตร์ DC ด้วย 'Booster Gold' ได้หรือไม่
ฝุ่นได้ตัดสินจาก Batman v Superman: Dawn of Justice ของ Zack Snyder และทีมซูเปอร์ฮีโร่ฟุ่มเฟือยที่ตั้งใจจะเปิดตัวแฟรนไชส์จบลงด้วยความผิดหวังอย่างมากกับผลงานบ็อกซ์ออฟฟิศอุ่น ๆ แม้ว่าสไนเดอร์กำลังถ่ายทำ Justice League - ตอนที่ 1 ในลอนดอน แต่จักรวาลภาพยนตร์ DC ก็ดูเหมือนว่าจะ ...
Tesla Model 3: Elon Musk อนุมัติ 'Dog Mode' ด้วย 3 คุณสมบัติที่สำคัญ
Elon Musk กำลังเพิ่มคุณสมบัติสุนัขในธีมเทสลาโมเดล 3 ซีอีโออนุมัติไอเดียเหนือ Twitter วันศุกร์ที่จะให้เจ้าของรถยนต์ไฟฟ้าเป็นโหมดพิเศษสำหรับปล่อยสุนัขของพวกเขาไว้ในรถซึ่งจะเล่นดนตรีเปิดเครื่องปรับอากาศและ แสดงข้อความ
3 การเปลี่ยนแปลงครั้งใหญ่ที่อาจเกิดขึ้นได้หาก Oracle ชนะคดี API ด้วย Google
ภาพที่คุณได้ยินว่าถูกไล่ออกในตอนนี้เป็นสัญญาณการเริ่มต้นของ Google กับ Oracle รอบสอง โดยทั่วไปแล้ว Oracle ยักษ์ใหญ่ด้านเทคโนโลยีนั้นคลั่งไคล้ Google ยักษ์ใหญ่ด้านเทคโนโลยีมากขึ้นโดยอ้างว่าซอฟต์แวร์หลังนี้ใช้ซอฟต์แวร์ Java ของตน ความโกรธนี้กำลังเกิดขึ้นจากการฟ้องร้องครั้งใหญ่ Google กำลังพูดว่าฉัน ...