ใช้ชุดลองใหม่

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