ทดสอบการแยกข้อมูล

เมื่อคลังข้อความทดสอบมีขนาดใหญ่หรือเวลาในการดำเนินการนานขึ้น เราจะเสนอ ความเป็นไปได้ในการแยกการทดสอบในอุปกรณ์หลายเครื่อง: การแบ่ง

การแบ่งพาร์ติชันมีข้อกำหนดเบื้องต้น สำหรับโปรแกรมเรียกใช้การทดสอบเพื่อรองรับการแบ่งพาร์ติชัน

โปรแกรมเรียกใช้การทดสอบหลักส่วนใหญ่รองรับการแบ่งส่วนอยู่แล้ว จึงไม่จำเป็นต้องดำเนินการใดๆ เพิ่มเติม การทดสอบการวัดคุม การทดสอบที่ขับเคลื่อนโดยฝั่งโฮสต์ และ GTest รองรับการแบ่งข้อมูลอยู่แล้ว

การแบ่งข้อมูลที่เราสนับสนุนใน Tradefed มี 2 ประเภท ได้แก่ การแบ่งข้อมูลในเครื่องและการแบ่งข้อมูลแบบกระจาย โดยทั้ง 2 อย่างมีความคล้ายคลึงกันในบางประการ หน้านี้จึงอธิบายคุณสมบัติทั่วไปและ จากนั้นจึงอธิบายรายละเอียดของแต่ละอย่าง

คุณสมบัติทั่วไป

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

ความแตกต่างหลักของรูปแบบการแบ่งกลุ่มคือวิธีการดำเนินการทดสอบ ดูรายละเอียดเพิ่มเติมได้ในส่วนด้านล่าง

การแบ่งข้อมูลในเครื่อง

การแบ่งข้อมูลในเครื่องหมายความว่าอุปกรณ์ทั้งหมดที่เกี่ยวข้องกับการดำเนินการเรียกใช้ที่แบ่งข้อมูลจะเชื่อมต่อกับโฮสต์จริงเดียวกัน

การลงมือปฏิบัติ

การแบ่งกลุ่มในเครื่องจะใช้ประโยชน์จากอุปกรณ์ทั้งหมดที่เชื่อมต่อกับโฮสต์เดียวกันโดยการสร้างกลุ่มการทดสอบที่ต้องดำเนินการ และให้อุปกรณ์แต่ละเครื่องสำรวจการทดสอบเมื่อพร้อม (กล่าวคือ ดำเนินการทดสอบก่อนหน้าเสร็จแล้ว) ซึ่งจะส่งผลให้มีการใช้อุปกรณ์อย่างมีประสิทธิภาพ เราเรียกอีกอย่างว่าการแบ่งข้อมูลแบบไดนามิก

ตัวเลือก

--shard-count XX

การแบ่งข้อมูลแบบกระจาย

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

การลงมือปฏิบัติ

การแบ่งข้อมูลแบบกระจายจะเกิดขึ้นเมื่อสร้างรายการการทดสอบ และเนื้อหาของ แต่ละ Shard จะดำเนินการเฉพาะ Shard ที่ขอในปัจจุบันเท่านั้น ดังนั้น Shard ที่กระจายทั้งหมดจะสร้างรายการเดียวกันในตอนแรก จากนั้นจึงดำเนินการกับชุดย่อยที่แยกกัน ซึ่งจะส่งผลให้มีการดำเนินการทดสอบทั้งหมด

คุณสมบัติหลักของรูปแบบนี้คือแต่ละ Shard จะไม่รู้จักกันและอาจล้มเหลวแยกกันได้

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

ตัวเลือก

--shard-count XX --shard-index XX

การแยกโทเค็น

การแยกส่วนโทเค็นใช้ได้กับการแยกส่วนในเครื่องเท่านั้น Flag นี้ใช้ไม่ได้ในกรณีการใช้งานการแยกส่วนที่ไม่ใช่ในเครื่อง บางครั้งอุปกรณ์เครื่องใดเครื่องหนึ่ง ที่เกี่ยวข้องกับการแบ่งข้อมูลอาจมีทรัพยากรพิเศษที่อุปกรณ์อื่นๆ ไม่มี เช่น ซิม การ์ด การทดสอบบางอย่างอาจใช้ได้เฉพาะเมื่อมีทรัพยากรพิเศษนั้น และ จะล้มเหลวหากไม่มี

การแยกส่วนโทเค็นเป็นโซลูชันสำหรับกรณีการใช้งานดังกล่าว โมดูลทดสอบสามารถ ประกาศทรัพยากรพิเศษที่ต้องการใน AndroidTest.xml และ Tradefed จะกำหนดเส้นทางการทดสอบไปยังอุปกรณ์ที่มีทรัพยากรนั้น

การกำหนดค่า XML

<option name="config-descriptor:metadata" key="token" value="SIM_CARD" />

value ของโทเค็นตรงกับ TokenProperty ของ Tradefed และเชื่อมโยงกับแฮนเดิลใน TokenProviderHelper

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

จะเกิดอะไรขึ้นหากไม่มีอุปกรณ์ที่สามารถเรียกใช้การทดสอบได้

หากไม่มีอุปกรณ์ใดที่มีทรัพยากรที่ตรงกับโมดูลทดสอบ โมดูลทดสอบจะล้มเหลวและถูกข้ามเนื่องจากดำเนินการอย่างถูกต้องไม่ได้

เช่น หากโมดูลทดสอบขอซิมการ์ดเพื่อเรียกใช้ แต่ไม่มีอุปกรณ์ใดมีซิมการ์ด โมดูลทดสอบจะล้มเหลว

การใช้งาน

ส่งฟีเจอร์ Flag นี้ไปยังบรรทัดคำสั่ง Tradefed หลัก

--enable-token-sharding