เขียนตัวดำเนินการทดสอบที่เทรด

หน้านี้จะอธิบายวิธีเขียนตัวดำเนินการทดสอบใหม่ใน Tradefed

ฉากหลัง

หากคุณสงสัยเกี่ยวกับตำแหน่งผู้ทดสอบในสถาปัตยกรรมที่เทรด ดูโครงสร้างของตัวดำเนินการทดสอบ

นี่ไม่ใช่ข้อกำหนดเบื้องต้นในการเขียนผู้ทดสอบใหม่ ผู้ทดสอบอาจสามารถ โดยเขียนขึ้นอย่างอิสระ

ค่าต่ำสุด: ใช้งานอินเทอร์เฟซ

เกณฑ์ขั้นต่ำขั้นต่ำสำหรับการเป็นผู้ทดสอบเทรดเดอร์คือการนำ อินเทอร์เฟซ IRemoteTest และโดยเฉพาะอย่างยิ่ง เมธอด run(TestInformation testInfo, ITestInvocationListener listener)

วิธีนี้เป็นวิธีที่เรียกใช้โดยเครื่องมือควบคุมเมื่อใช้ตัวดำเนินการทดสอบ ที่คล้ายคลึงกับ Java Runnable

ทุกส่วนของวิธีการดังกล่าวถือว่าเป็นส่วนหนึ่งของการดำเนินการทดสอบ

รายงานผลลัพธ์จากตัวดำเนินการทดสอบ

เมธอด run ในอินเทอร์เฟซพื้นฐานให้สิทธิ์เข้าถึงออบเจ็กต์ Listener ของ ประเภท ITestInvocationListener ออบเจ็กต์นี้เป็นกุญแจสำคัญในการรายงานแบบมีโครงสร้าง ผลลัพธ์จากตัวดำเนินการทดสอบไปยังโปรแกรมควบคุม

ตัวดำเนินการทดสอบจะมีพร็อพเพอร์ตี้ดังต่อไปนี้ด้วยการรายงานผลลัพธ์แบบมีโครงสร้าง

  • รายงานรายการการทดสอบทั้งหมดที่ทำการทดสอบ ระยะเวลาที่ใช้ และการทดสอบทั้งหมด แต่ละสถานะผ่าน ล้มเหลว หรือสถานะอื่นๆ
  • เช่น เมตริกรายงานที่เกี่ยวข้องกับการทดสอบ (หากมี) เมตริกเวลาติดตั้ง
  • เหมาะกับเครื่องมือโครงสร้างพื้นฐานส่วนใหญ่ เช่น การแสดงผลและ เมตริก และอื่นๆ
  • มักจะแก้ไขข้อบกพร่องได้ง่ายกว่าเนื่องจากมีการติดตาม

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

สามารถเรียกเหตุการณ์ต่อไปนี้บน Listener เพื่อแจ้งเตือนตัวควบคุมของ ความคืบหน้าปัจจุบันของการดำเนินการ:

  • testRunStarted: แจ้งเตือนการเริ่มต้นของกลุ่มกรอบการทดสอบที่ เกี่ยวข้องกัน
    • testStarted: แจ้งเตือนการเริ่มต้นกรอบการทดสอบที่เริ่มต้น
    • testFailed/testExcluded: แจ้งการเปลี่ยนแปลงสถานะของกรอบการทดสอบ กำลังดำเนินการ กรอบการทดสอบที่ไม่มีการเปลี่ยนสถานะ ผ่าน
    • testEnded: แจ้งการสิ้นสุดกรอบการทดสอบ
  • testRunFailed: แจ้งว่าสถานะโดยรวมของกลุ่มกรอบการทดสอบ ล้มเหลว การทดสอบอาจเป็นผ่านหรือไม่ผ่าน โดยไม่ขึ้นอยู่กับผลลัพธ์ของกรอบการทดสอบ โดยขึ้นอยู่กับ คาดว่าจะเกิดขึ้นจริง เช่น ไบนารีที่ใช้กรอบการทดสอบหลายรายการ สามารถรายงานกรอบการทดสอบ ผ่าน ทั้งหมดแต่มีโค้ดสำหรับออกข้อผิดพลาด (สำหรับ เหตุผล: ไฟล์รั่วไหล ฯลฯ)
  • testRunEnded: แจ้งเตือนการสิ้นสุดของกลุ่มกรอบการทดสอบ

การรักษาและการตรวจสอบลำดับที่เหมาะสมสำหรับ Callback คือ ของผู้ดำเนินการทดสอบ ตัวอย่างเช่น การตรวจสอบว่า ระบบจะเรียก testRunEnded ในกรณีที่มีข้อยกเว้นโดยใช้อนุประโยค finally

คุณจะระบุ Callback ของเคสทดสอบ (testStarted, testEnded ฯลฯ) หรือไม่ก็ได้ การทดสอบ การเรียกใช้อาจเกิดขึ้นโดยไม่มีกรอบการทดสอบ

คุณอาจสังเกตเห็นว่าโครงสร้างของเหตุการณ์นี้ได้แรงบันดาลใจมาจาก โครงสร้าง JUnit ทั่วไป จุดประสงค์ในการใช้งานนี้เพื่อให้สิ่งต่างๆ อยู่ใกล้กับคุณสมบัติพื้นฐานที่นักพัฒนาซอฟต์แวร์ ที่มีความรู้เกี่ยวกับ

รายงานบันทึกจากตัวดำเนินการทดสอบ

หากคุณเขียนคลาสหรือนักวิ่งการทดสอบที่เทรดเฟสของตัวเอง คุณควรใช้ IRemoteTest และรับ ITestInvocationListener ผ่านเมธอด run() Listener นี้ สามารถใช้เพื่อบันทึกไฟล์ได้ดังนี้

    listener.testLog(String dataName, LogDataType type_of_data, InputStreamSource data);

ทดสอบกับอุปกรณ์

อินเทอร์เฟซขั้นต่ำข้างต้นช่วยให้สามารถทำการทดสอบแบบง่ายๆ ซึ่งแยกต่างหากจาก และไม่ต้องใช้ทรัพยากรใดเป็นพิเศษ เช่น Java unit Testing

ผู้เขียนการทดสอบที่ต้องการไปยังขั้นตอนถัดไปของการทดสอบอุปกรณ์จะต้องใช้ อินเทอร์เฟซต่อไปนี้:

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

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

ทดสอบกับอุปกรณ์หลายเครื่อง

Tradefed รองรับการทดสอบในอุปกรณ์หลายเครื่องพร้อมกัน นี่คือ มีประโยชน์เมื่อทดสอบคอมโพเนนต์ที่ต้องมีการโต้ตอบภายนอก เช่น การจับคู่โทรศัพท์กับนาฬิกา

ในการเขียนตัวดำเนินการทดสอบที่ใช้ได้หลายอุปกรณ์ คุณจะต้องมีสิ่งต่อไปนี้ ในการใช้ IMultiDeviceTest ซึ่งจะทำให้รับแผนที่ ITestDevice ไปยัง IBuildInfo ที่มี รายการการนำเสนออุปกรณ์ทั้งหมดและข้อมูลบิลด์ที่เกี่ยวข้อง

ตัวตั้งค่าจากอินเทอร์เฟซจะเรียกใช้ก่อนเมธอด run เสมอ ดังนั้น เรียกได้ว่าโครงสร้างจะพร้อมใช้งานเมื่อมีการเรียกใช้ run

การทดสอบรับรู้ถึงการตั้งค่าของตัวเอง

การใช้งานตัวดำเนินการทดสอบบางอย่างอาจต้องการข้อมูลเกี่ยวกับการตั้งค่าโดยรวม เพื่อให้ทำงานได้อย่างถูกต้อง เช่น ข้อมูลเมตาบางส่วนเกี่ยวกับการเรียกใช้ หรือ ที่ target_preparer เรียกใช้ก่อนหน้า ฯลฯ

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

สำหรับการนำตัวดำเนินการทดสอบมาใช้ คุณจะต้องติดตั้งใช้งาน IConfigurationReceiver เพื่อรับออบเจ็กต์ IConfiguration

ตัวดำเนินการทดสอบที่ยืดหยุ่น

ผู้ดำเนินการทดสอบสามารถเสนอวิธีที่ยืดหยุ่นในการทดสอบของตนหากมี การควบคุมแบบละเอียด เช่น ตัวดำเนินการทดสอบ JUnit สามารถแยกทีละรายการ เรียกใช้การทดสอบแต่ละหน่วย

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

การรองรับการกรองมีอธิบายอยู่ใน อินเทอร์เฟซ ITestFilterReceiver ซึ่งสามารถรับชุดตัวกรอง include และ exclude สำหรับการทดสอบ ที่ควรหรือไม่ควรทำงาน

กฎของเราคือ การทดสอบจะทดสอบ IFF จะจับคู่กับ รวมตัวกรอง และ ไม่ตรงกับตัวกรองยกเว้นใดๆ เลย หากไม่รวม จะได้รับตัวกรอง ควรทำการทดสอบทั้งหมดตราบใดที่ไม่ตรงกับ ตัวกรอง "ยกเว้น"