Coyote
Coyote เป็นไลบรารีข้ามแพลตฟอร์มและเครื่องมือสำหรับการทดสอบรหัส C# พร้อมกันและการกำหนดข้อบกพร่องที่กำหนดขึ้นใหม่
การใช้โคโยตี้คุณสามารถทดสอบ การเกิดขึ้นพร้อมกัน และ การไม่ใช้งาน อื่น ๆ ในรหัส C# ของคุณได้อย่างง่ายดายโดยการเขียนสิ่งที่เราเรียกว่า การทดสอบหน่วยพร้อมกัน สิ่งเหล่านี้ดูเหมือนการทดสอบหน่วยปกติของคุณ แต่สามารถทดสอบปริมาณงานพร้อมกันได้อย่างน่าเชื่อถือ (เช่นนักแสดงงานหรือคำขอพร้อมกันไปยังตัวควบคุม ASP.NET) ในการทดสอบหน่วยปกติคุณมักจะหลีกเลี่ยงการเกิดขึ้นพร้อมกันเนื่องจากความไม่สม่ำเสมอ แต่ด้วยโคโยตี้คุณได้รับการสนับสนุนให้ยอมรับการเกิดขึ้นพร้อมกันในการทดสอบของคุณเพื่อค้นหาข้อบกพร่อง
Coyote ถูกใช้โดยหลาย ๆ ทีมใน Azure เพื่อทดสอบระบบและบริการแบบกระจายของพวกเขาและพบข้อบกพร่องที่เกี่ยวข้องกับการเกิดขึ้นพร้อมกันหลายร้อยรายการก่อนที่จะปรับใช้รหัสในการผลิตและส่งผลกระทบต่อผู้ใช้ ในคำพูดของสถาปนิก Azure Service:
โคโยตี้พบปัญหาหลายอย่างในช่วงต้นของกระบวนการ dev ปัญหาประเภทนี้ที่มักจะไหลผ่านการผลิตและมีราคาแพงมากในการแก้ไขในภายหลัง
โคโยตี้ทำด้วย❤โดย Microsoft Research
พิจารณาการทดสอบอย่างง่ายต่อไปนี้:
[ Fact ]
public async Task TestTask ( )
{
int value = 0 ;
Task task = Task . Run ( ( ) =>
{
value = 1 ;
} ) ;
Assert . Equal ( 0 , value ) ;
await task ;
}
การทดสอบนี้จะผ่านเวลาส่วนใหญ่เนื่องจากการยืนยันโดยทั่วไปจะดำเนินการก่อนที่งานจะเริ่ม แต่มีตารางเวลาหนึ่งที่งานเริ่มเร็วพอที่จะตั้ง value
เป็น 1
ทำให้การยืนยันล้มเหลว แน่นอนว่านี่เป็นตัวอย่างที่ไร้เดียงสามากและข้อผิดพลาดนั้นชัดเจน แต่คุณสามารถจินตนาการถึงสภาพการแข่งขันที่ซับซ้อนมากขึ้นซึ่งซ่อนอยู่ในเส้นทางการดำเนินการที่ซับซ้อน
วิธีการทำงานของโคโยตี้คือการที่คุณแปลงการทดสอบด้านบนเป็นการทดสอบหน่วยพร้อมกันโดยใช้ Coyote TestingEngine
API:
using Microsoft . Coyote . SystematicTesting ;
[ Fact ]
public async Task CoyoteTestTask ( )
{
var configuration = Configuration . Create ( ) . WithTestingIterations ( 10 ) ;
var engine = TestingEngine . Create ( configuration , TestTask ) ;
engine . Run ( ) ;
}
ถัดไปคุณเรียกใช้คำสั่ง coyote rewrite
จาก CLI (โดยทั่วไปเป็นงานหลังสร้าง) เพื่อเขียน IL ใหม่ของการทดสอบและไบนารีการผลิตโดยอัตโนมัติ สิ่งนี้ช่วยให้โคโยตี้สามารถฉีดตะขอที่ควบคุมการดำเนินการพร้อมกันระหว่างการทดสอบ
จากนั้นคุณสามารถเรียกใช้การทดสอบหน่วยที่เกิดขึ้นพร้อมกันได้จากกรอบการทดสอบหน่วยที่คุณชื่นชอบ (เช่น XUNIT) โคโยตี้จะเข้ามาและดำเนินการทดสอบซ้ำ ๆ ตั้งแต่ต้นจนจบสำหรับการทำซ้ำ N (ในตัวอย่างข้างต้น n ถูกกำหนดค่าเป็น 10
) ภายใต้ประทุนโคโยตี้ใช้กลยุทธ์การค้นหาอัจฉริยะเพื่อสำรวจเส้นทางการดำเนินการทุกชนิดที่อาจซ่อนข้อบกพร่องในการทำซ้ำแต่ละครั้ง
สิ่งที่ยอดเยี่ยมคือเมื่อพบข้อผิดพลาดโคโยตี้จะให้คุณติดตามผ่าน engine.TestReport
Testreport API ที่คุณสามารถใช้เพื่อ ทำข้อผิดพลาดซ้ำ ได้หลายครั้งตามที่คุณต้องการทำให้การดีบักและแก้ไขปัญหาได้ง่ายขึ้นอย่างมาก
การเริ่มต้นด้วยโคโยตี้เป็นเรื่องง่าย! ก่อนอื่นให้ทำตามคู่มือนี้เพื่อติดตั้งเครื่องมือบรรทัดคำสั่ง coyote
จาก NUGET ตอนนี้คุณพร้อมที่จะตรวจสอบเว็บไซต์โคโยตี้สำหรับบทช่วยสอนเอกสารวิธีการตัวอย่างและข้อมูลเพิ่มเติมเกี่ยวกับโครงการ สนุก!
อัพเกรดการพึ่งพา coyote
ของคุณ? ตรวจสอบการเปลี่ยนแปลงที่นี่
โปรดทราบว่าโคโยตี้เป็นโครงการโอเพ่นซอร์สที่ให้ "ตามที่เป็น" เราไม่สามารถให้การสนับสนุนอย่างเป็นทางการได้ สำหรับพนักงานของ Microsoft เรามี Friends of Coyote Teams Channel ซึ่งเป็นชุมชนภายในที่สามารถช่วยตอบคำถามและเรียนรู้จากกันและกัน
โครงการนี้ยินดีต้อนรับการมีส่วนร่วมและข้อเสนอแนะ การมีส่วนร่วมส่วนใหญ่กำหนดให้คุณต้องยอมรับข้อตกลงใบอนุญาตผู้มีส่วนร่วม (CLA) ประกาศว่าคุณมีสิทธิ์และทำจริงให้สิทธิ์ในการใช้การบริจาคของคุณ สำหรับรายละเอียดเยี่ยมชม https://cla.opensource.microsoft.com
เมื่อคุณส่งคำขอดึง CLA บอทจะพิจารณาโดยอัตโนมัติว่าคุณจำเป็นต้องให้ CLA และตกแต่ง PR อย่างเหมาะสม (เช่นการตรวจสอบสถานะแสดงความคิดเห็น) เพียงทำตามคำแนะนำที่จัดทำโดยบอท คุณจะต้องทำสิ่งนี้เพียงครั้งเดียวในที่เก็บทั้งหมดโดยใช้ CLA ของเรา
โครงการนี้ได้นำรหัสการดำเนินงานของ Microsoft โอเพ่นซอร์สมาใช้ สำหรับข้อมูลเพิ่มเติมโปรดดูจรรยาบรรณคำถามที่พบบ่อยหรือติดต่อ [email protected] พร้อมคำถามหรือความคิดเห็นเพิ่มเติมใด ๆ