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

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

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

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

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

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

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

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

การแบ่งส่วนท้องถิ่น

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

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

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

ตัวเลือก

--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