การทดสอบอีกครั้งโดยอัตโนมัติ

การทดสอบอาจไม่สำเร็จด้วยเหตุผลใดก็ตาม และบางครั้งเพียงแค่เรียกใช้การทดสอบอีกครั้งก็ เพียงพอที่จะทำให้การทดสอบผ่านอีกครั้ง (เนื่องจากความไม่น่าเชื่อถือ เช่น จากปัญหาใน โครงสร้างพื้นฐานที่เกี่ยวข้อง) คุณสามารถกำหนดค่า Tradefed ให้ทำการลองอีกครั้งโดยอัตโนมัติได้

หัวใจสำคัญของการลองอีกครั้งอัตโนมัติคือการหลีกเลี่ยงการเรียกใช้การทดสอบทั้งหมดอีกครั้ง โดยจะเรียกใช้เฉพาะการทดสอบที่ไม่สำเร็จอีกครั้งเท่านั้น ซึ่งช่วยประหยัดเวลาในการดำเนินการได้มาก

นอกจากนี้ Tradefed ยังรองรับการเรียกใช้การทดสอบหลายครั้งเพื่อตรวจหา ความไม่เสถียรผ่านฟีเจอร์การทำซ้ำ ในกรณีนี้ ระบบจะ เรียกใช้การทดสอบทั้งหมดอีกครั้ง และการทดสอบจะล้มเหลวหากการวนซ้ำใดล้มเหลว

เปิดใช้การลองใหม่โดยอัตโนมัติ

การลองใหม่โดยอัตโนมัติจะควบคุมผ่าน ออบเจ็กต์ RetryDecision ซึ่งมี 2 ตัวเลือกในการเปิดใช้ฟีเจอร์ ได้แก่ max-testcase-run-count และ retry-strategy

max-testcase-run-count จะกำหนดจำนวนการลองใหม่หรือการวนซ้ำที่จะพยายามดำเนินการ โดยจะกำหนดขอบเขตบนเพื่อหลีกเลี่ยงการลองใหม่ไปเรื่อยๆ retry-strategy เป็นตัวกำหนดวิธีลองอีกครั้ง โปรดดูรายละเอียดเพิ่มเติมในส่วนต่อไปนี้

ปิดใช้การลองใหม่โดยอัตโนมัติ

ใช้ตัวเลือกต่อไปนี้

--retry-strategy NO_RETRY

ลองดำเนินการที่ล้มเหลวอีกครั้ง

หากต้องการลองทดสอบที่ล้มเหลวอีกครั้ง ให้ใช้ตัวเลือกต่อไปนี้

--retry-strategy RETRY_ANY_FAILURE --max-testcase-run-count X

การดำเนินการนี้จะลองใหม่จนกว่าจะสำเร็จหรือจนกว่าจะถึงจำนวนครั้งที่ลองใหม่สูงสุด แล้วแต่ว่าจะถึงอย่างใดก่อน

การทำซ้ำ

หากต้องการเรียกใช้การทดสอบอีกครั้งหลายๆ ครั้ง คุณสามารถใช้ตัวเลือกต่อไปนี้ได้

--retry-strategy ITERATIONS --max-testcase-run-count X

ผลลัพธ์มีลักษณะอย่างไร

โดยค่าเริ่มต้น ผู้รายงานผลลัพธ์จะได้รับผลลัพธ์รวมของการพยายามทั้งหมด

เช่น Fail และ Pass สำหรับ RETRY_ANY_FAILURE จะส่งผลให้เกิด Pass ที่รวบรวมแล้วเนื่องจากการลองใหม่สามารถแก้ไขข้อผิดพลาดได้

ผู้รายงานอาจได้รับผลลัพธ์ที่ไม่ใช่ข้อมูลรวม โดยจะต้องขยายอินเทอร์เฟซ ISupportGranularResults ที่ประกาศการรองรับผลลัพธ์แบบละเอียด (ไม่รวม)

รายละเอียดการใช้งาน

หากต้องการเปิดใช้การลองซ้ำอัตโนมัติเพื่อเรียกใช้ความล้มเหลวอีกครั้งที่ระดับกรณีทดสอบ ให้ใช้ ITestFilterReceiver

หากใช้ ITestFilterReceiver ไม่ได้ คุณสามารถใช้ IAutoRetriableTest เพื่อควบคุมการทำงานของการเรียกใช้ซ้ำด้วยตนเองได้ InstalledInstrumentationsTest เป็นตัวอย่างการใช้งานอินเทอร์เฟซดังกล่าว