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

یک مجموعه معمولاً شامل چندین ماژول تست است و می‌تواند به اندازه‌ی قابل توجهی از مجموعه تست برسد. به عنوان مثال، مجموعه تست سازگاری اندروید (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 format) صادر شوند. موارد زیر باید اضافه شوند:

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

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

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