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

เมื่อคลังข้อมูลการทดสอบมีขนาดใหญ่หรือเวลาดำเนินการนานขึ้น เรามีตัวเลือกในการแยกการทดสอบออกเป็นหลายอุปกรณ์ ซึ่งเรียกว่า การแบ่งพาร์ติชัน

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

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

เรามีตัวเลือกการแบ่งพาร์ติชัน 2 ประเภทที่รองรับใน Tradefed ได้แก่ การแบ่งพาร์ติชันในเครื่องและการแบ่งพาร์ติชันแบบกระจาย ตัวเลือกทั้ง 2 ประเภทมีความคล้ายคลึงกันบางอย่าง ดังนั้นหน้านี้จะอธิบายพร็อพเพอร์ตี้ที่ใช้ร่วมกันและรายละเอียดเฉพาะของแต่ละประเภท

พร็อพเพอร์ตี้ที่ใช้ร่วมกัน

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

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

การแบ่งพาร์ติชันในเครื่อง

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

การดำเนินการ

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

ตัวเลือก

--shard-count XX

การแบ่งพาร์ติชันแบบกระจาย

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

การดำเนินการ

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

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

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

ตัวเลือก

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

การแบ่งพาร์ติชันโทเค็น

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

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

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

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

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

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

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

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

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

การใช้งาน

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

--enable-token-sharding