از تلاش مجدد مجموعه استفاده کنید

یک مجموعه شامل چندین ماژول تست است و می تواند به اندازه مجموعه آزمایشی بسیار بزرگی برسد. به عنوان مثال، مجموعه تست سازگاری اندروید (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 موجود بارگیری می کند تا فراخوانی مجدد را آماده کند.