استفاده از امتحان مجدد مجموعه

مجموعه معمولاً شامل چندین واحد آزمایشی است و می‌تواند به اندازه بسیار بزرگی از پیکره آزمایشی برسد. برای مثال، مجموعه آزمون سازگاری 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

برای اینکه امتحان مجدد کار کند، نتایج قبلی باید در قالب proto صادر شود. موارد زیر باید اضافه شود:

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

این باید به پیکربندی XML فرمان اصلی اضافه شود و منجر به ایجاد فایل test-record.pb در پوشه نتیجه می‌شود.

سپس CTS مجدداً داده‌ها را از ترکیبی از test-record.pb و test_result.xml موجود بار می‌کند تا فراخوانی مجدد را آماده کند.