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

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

AndroidJUnitTest Runner มีตัวเลือกพิเศษที่ช่วยให้ระบุ จำนวนสูงสุดของ Shard ที่อนุญาตให้ Shard ได้ ดังนี้ <option name="ajur-max-shard" value="5" />

ซึ่งจะช่วยให้คุณระบุจำนวนครั้งสูงสุดที่สามารถแบ่งการวัดผลออกเป็นส่วนๆ ได้ โดยไม่คำนึงถึงจำนวนส่วนที่ขอในระดับการเรียกใช้ โดย ค่าเริ่มต้น การวัดจะแบ่งออกเป็นจำนวน Shard ที่ขอ สำหรับการเรียกใช้

ตัวอย่างเช่น หาก APK ของการทดสอบการวัดคุมมีเพียง 2 กรอบการทดสอบ แต่คุณยังต้องการแบ่งส่วน การมีค่า ajur-max-shard เป็น 2 จะช่วยให้มั่นใจได้ว่าคุณจะไม่สร้างส่วนที่ว่างเปล่า