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