การทดสอบชาร์ดดิ้ง

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

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

เครื่องมือทดสอบหลักส่วนใหญ่รองรับการแยกกลุ่มอยู่แล้ว จึงไม่ต้องดำเนินการเพิ่มเติม การทดสอบเหล่านี้รองรับการแยกข้อมูลอยู่แล้ว ได้แก่ การทดสอบการวัดคุม การทดสอบที่ทําจากฝั่งโฮสต์ และ 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