ใช้ชุดการลองอีกครั้ง

โดยปกติชุดทดสอบจะมีโมดูลทดสอบหลายโมดูลและอาจมีขนาดคลังข้อความทดสอบที่ค่อนข้างใหญ่ เช่น ชุดเครื่องมือทดสอบความเข้ากันได้ของ 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 เสมอ เนื่องจาก เรากำลังลองคำสั่งที่เกี่ยวข้องกับ CtsGestureTestCases อีกครั้ง

กำหนดค่าการลองใหม่สำหรับชุดรูปแบบ CTS

หากต้องการให้การลองอีกครั้งทำงานได้ คุณต้องส่งออกผลลัพธ์ก่อนหน้าในรูปแบบ proto คุณต้องเพิ่มข้อมูลต่อไปนี้

<result_reporter class="com.android.compatibility.common.tradefed.result.suite.CompatibilityProtoResultReporter" />

คุณต้องเพิ่มข้อมูลนี้ลงในการกำหนดค่า XML ของคำสั่งหลัก และจะทำให้มีการสร้างไฟล์ test-record.pb ในโฟลเดอร์ผลลัพธ์

จากนั้นการลองอีกครั้งของ CTS จะโหลดข้อมูลจากชุดค่าผสมของ test-record.pb และ test_result.xml ที่มีอยู่เพื่อเตรียมการเรียกใช้การลองอีกครั้ง