หน้านี้อธิบายสิ่งที่เป็นไปได้ในการปรับแต่งโมดูลชุดทดสอบ
(AndroidTest.xml
) ผ่านการแบ่งส่วน และได้รับประสิทธิภาพความเร็วที่ดีที่สุดระหว่างการดำเนินการอย่างต่อเนื่องในห้องทดลอง เราจะพยายามอธิบายตัวเลือกในลักษณะทั่วไปพร้อมเหตุผลในการใช้แต่ละตัวเลือก
เมื่อเรียกใช้ชุดการทดสอบในห้องปฏิบัติการอย่างต่อเนื่อง โดยปกติแล้วระบบจะแบ่งชุดการทดสอบออกเป็นส่วนๆ ในอุปกรณ์หลายเครื่องเพื่อลดเวลาในการดำเนินการโดยรวม โดยปกติแล้ว Harness จะพยายามปรับสมดุลเวลาในการดำเนินการของแต่ละ Shard เพื่อลดเวลาในการดำเนินการโดยรวม (เมื่อ Shard สุดท้ายเสร็จสิ้น) แต่เนื่องจากลักษณะของการทดสอบบางอย่าง เราจึงไม่มีการตรวจสอบที่เพียงพอเสมอไป และจำเป็นต้องให้เจ้าของโมดูลปรับแต่งลักษณะการทำงานบางอย่าง
แยกส่วนได้หรือไม่
คุณสามารถติดแท็กโมดูล (AndroidTest.xml
) ด้วย
<option name="not-shardable" value="true" />
เพื่อแจ้งให้ Harness ทราบว่าไม่ควร
แยกส่วน
ในโมดูลทั่วไป การอนุญาตให้ Harness แยกโมดูลของคุณ (ลักษณะการทำงานเริ่มต้น) เป็นสิ่งที่ควรทำ แต่ในบางกรณี คุณอาจต้องการลบล้างลักษณะการทำงานนั้น
- ในกรณีที่การตั้งค่าโมดูลมีค่าใช้จ่ายสูง ให้ทำดังนี้
การแยกส่วนโมดูลจะทำให้การเตรียม (ติดตั้ง APK, พุชไฟล์ ฯลฯ) อาจทำงานครั้งเดียวต่ออุปกรณ์ที่เกี่ยวข้อง หากการตั้งค่าโมดูลใช้เวลานานและมีค่าใช้จ่ายสูง และไม่คุ้มค่าที่จะทำซ้ำเมื่อเทียบกับเวลาเรียกใช้ของการทดสอบ คุณควรแท็กโมดูลว่าไม่สามารถแยกส่วนได้
- เมื่อจำนวนการทดสอบในโมดูลมีน้อย ให้ทำดังนี้
การแบ่งส่วนโมดูลจะทำให้กรณีทดสอบทั้งหมดอาจดำเนินการแยกกัน ในอุปกรณ์ต่างๆ ซึ่งเกี่ยวข้องกับจุดแรก หากจำนวนการทดสอบของคุณน้อย คุณอาจจบลงด้วยการทดสอบเพียงครั้งเดียวหรือไม่มีการทดสอบในบาง Shard ซึ่งจะทำให้ขั้นตอนการเตรียมการใดๆ มีค่าใช้จ่ายสูงมาก เช่น การติดตั้ง APK สำหรับกรณีทดสอบเดียวมักจะไม่คุ้มค่า
การทดสอบการวัดคุม: จำนวนชาร์ดสูงสุด
การทดสอบเครื่องมือที่ทำงานผ่าน AndroidJUnitTest จะไม่แสดงต่อ Harness ว่ามีการทดสอบกี่รายการที่เป็นส่วนหนึ่งของเครื่องมือ จนกว่าเราจะติดตั้งและเรียกใช้ APK จริงๆ การดำเนินการเหล่านี้มีค่าใช้จ่ายสูงและ ไม่สามารถดำเนินการในเวลาที่ทำการ Sharding สำหรับโมดูลทั้งหมดที่เป็นส่วนหนึ่งของชุดโปรแกรมได้
ฮาร์เนสอาจแบ่งการทดสอบเครื่องมือมากเกินไปและลงเอยด้วยการแบ่งที่ว่างเปล่า การแบ่งการทดสอบเครื่องมือที่มีการทดสอบ 5 รายการใน 6 การแบ่งจะส่งผลให้มีการแบ่ง 5 รายการที่มีการทดสอบ 1 รายการ และการแบ่ง 1 รายการที่ไม่มีการทดสอบ แต่ละ ชาร์ดเหล่านี้จะต้องมีการติดตั้ง APK ที่มีค่าใช้จ่ายสูง
ดังนั้นเมื่อจำนวนการทดสอบใน APK ของการทดสอบเครื่องมือมีน้อย การติดแท็กโมดูลด้วย <option name="not-shardable" value="true" />
จะช่วยให้
Harness ทราบว่าไม่คุ้มค่าที่จะทำการ Sharding โมดูลนั้น
AndroidJUnitTest
Runner มีตัวเลือกพิเศษที่ช่วยให้ระบุ
จำนวนสูงสุดของ Shard ที่อนุญาตให้ Shard ได้
<option name="ajur-max-shard" value="5" />
ซึ่งช่วยให้คุณระบุจำนวนครั้งสูงสุดที่สามารถแบ่งการวัดผลได้ โดยไม่คำนึงถึงจำนวน Shard ที่ขอในระดับการเรียกใช้ โดยค่าเริ่มต้น ระบบจะแบ่งการวัดผลออกเป็นจำนวน Shard ที่ขอ สำหรับการเรียกใช้
ตัวอย่างเช่น หาก APK ของการทดสอบเครื่องมือมีเพียง 2 กรณีทดสอบ แต่คุณยังต้องการแบ่งส่วน APK นั้น การมีค่า ajur-max-shard
เป็น 2
จะช่วยให้มั่นใจได้ว่าคุณจะไม่สร้างส่วนที่ว่างเปล่า