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

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

การแยกกลุ่มมีข้อกําหนดเบื้องต้นเพื่อให้โปรแกรมรันทดสอบรองรับการแยกกลุ่ม

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

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

พร็อพเพอร์ตี้ทั่วไป

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

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

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

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

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

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

ตัวเลือก

--shard-count XX

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

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

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

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

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

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

ตัวเลือก

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

การแยกส่วนโทเค็น

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

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

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

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

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

วิธีนี้ช่วยให้สามารถเรียกใช้ข้อบังคับการทดสอบกับอุปกรณ์ที่ทำการทดสอบได้อย่างถูกต้อง

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

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

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

การใช้งาน

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

--enable-token-sharding