ชุดโปรแกรมมีแนวโน้มที่จะรวมโมดูลการทดสอบหลายโมดูล และสามารถเข้าถึงขนาดคลังข้อมูลการทดสอบที่ค่อนข้างใหญ่ได้ ตัวอย่างเช่น ชุดทดสอบความเข้ากันได้ของ Android (CTS) มีโมดูลนับร้อยและกรณีทดสอบหลายแสนรายการ
เป็นไปได้ที่การทดสอบจำนวนมากจะล้มเหลวเนื่องจากการแยกที่ไม่ดีหรืออุปกรณ์เข้าสู่สถานะไม่ดี
คุณลักษณะการลองซ้ำของชุดโปรแกรมมีไว้เพื่อแก้ไขกรณีเหล่านี้: ช่วยให้คุณลองใหม่เฉพาะในกรณีที่ล้มเหลวแทนที่จะเป็นชุดแบบเต็ม เพื่อขจัดความไม่สม่ำเสมอและการแยกตัวที่ไม่ดี หากการทดสอบล้มเหลวอย่างต่อเนื่อง การลองใหม่ก็จะล้มเหลวเช่นกัน และคุณได้รับสัญญาณที่แรงกว่ามากว่ามีปัญหาจริง
ใช้ชุดลองใหม่
การลองผลลัพธ์ใหม่เกี่ยวข้องกับการอ่านผลลัพธ์ก่อนหน้าและเรียกใช้การเรียกใช้ครั้งก่อนอีกครั้ง
อินเทอร์เฟซหลักที่ขับเคลื่อนการลองใหม่คือ ITestSuiteResultLoader
ซึ่งให้คุณโหลดผลลัพธ์ก่อนหน้าและบรรทัดคำสั่งก่อนหน้า
จากนั้น RetryRescheduler
จะใช้ข้อมูลนี้เพื่อสร้างคำสั่งก่อนหน้าขึ้นใหม่ และใส่ตัวกรองบางตัวเพื่อรันซ้ำเฉพาะข้อผิดพลาดก่อนหน้าหรือการทดสอบที่ไม่ได้ดำเนินการ
ตัวอย่างชุดลองใหม่: CTS
การกำหนดค่าลองใหม่ใน CTS คือ:
<configuration description="Runs a retry of a previous CTS session.">
<object type="previous_loader" class="com.android.compatibility.common.tradefed.result.suite.PreviousResultLoader" />
<test class="com.android.tradefed.testtype.suite.retry.RetryRescheduler" />
<logger class="com.android.tradefed.log.FileLogger">
<option name="log-level-display" value="WARN" />
</logger>
</configuration>
สิ่งนี้ใช้ได้กับห้องสวีทส่วนใหญ่ที่ขยายออกไป เช่น VTS
มันจะถูกเรียกใช้ด้วย:
cts-tradefed run retry --retry <session>
จะพบเซสชันได้โดยแสดงรายการผลลัพธ์ก่อนหน้าในคอนโซล CTS:
cts-tf > l r
Session Pass Fail Modules Complete Result Directory Test Plan Device serial(s) Build ID Product
0 2092 30 148 of 999 2018.10.29_14.12.57 cts [serial] P Pixel
คำสั่งเดิมจะถูกรีโหลดและรันใหม่ด้วยตัวกรองพิเศษ ซึ่งหมายความว่าหากคำสั่งเดิมของคุณมีตัวเลือกบางอย่าง ตัวเลือกเหล่านั้นจะเป็นส่วนหนึ่งของการลองใหม่ด้วย
ตัวอย่างเช่น:
cts-tradefed run cts-dev -m CtsGestureTestCases
การลองใหม่ตามข้างต้นนั้นเชื่อมโยงกับ CtsGestureTestCases
เสมอ เนื่องจากเรากำลังลองคำสั่งที่เกี่ยวข้องเท่านั้น
กำหนดค่าการลองใหม่สำหรับชุดรูปแบบ CTS
เพื่อให้การลองใหม่ทำงานได้ ต้องส่งออกผลลัพธ์ก่อนหน้าในรูปแบบโปรโต จำเป็นต้องเพิ่มสิ่งต่อไปนี้:
<result_reporter class="com.android.compatibility.common.tradefed.result.suite.CompatibilityProtoResultReporter" />
สิ่งนี้จำเป็นต้องเพิ่มในการกำหนดค่า XML ของคำสั่งหลัก และส่งผลให้ไฟล์ test-record.pb
ถูกสร้างขึ้นในโฟลเดอร์ผลลัพธ์
จากนั้น การลอง CTS ใหม่จะโหลดข้อมูลจากการรวมกันของ test-record.pb
และ test_result.xml
ที่มีอยู่ เพื่อเตรียมการเรียกใช้การลองใหม่