กำหนดค่าการแยกข้อมูล

หน้านี้อธิบายสิ่งที่เป็นไปได้ในการปรับแต่งโมดูลชุดทดสอบ (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 จะช่วยให้มั่นใจได้ว่าคุณจะไม่สร้างส่วนที่ว่างเปล่า