หน้านี้จะอธิบายวิธีเขียนตัวดำเนินการทดสอบใหม่ใน 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 จะจับคู่กับ รวมตัวกรอง และ ไม่ตรงกับตัวกรองยกเว้นใดๆ เลย หากไม่รวม จะได้รับตัวกรอง ควรทำการทดสอบทั้งหมดตราบใดที่ไม่ตรงกับ ตัวกรอง "ยกเว้น"