การกำหนดค่าการทดสอบที่ซับซ้อน

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

  • ติดตั้ง apk อื่น ๆ (นอกเหนือจาก apk ทดสอบ)
  • พุชไฟล์บางไฟล์ไปยังอุปกรณ์
  • รันคำสั่ง (เช่น adb shell pm ...)

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

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

การกำหนดค่าโมดูลทดสอบสำหรับโมดูลทดสอบคือไฟล์ XML ที่จำเป็นซึ่งเพิ่มไปยังโฟลเดอร์ต้นทางของโมดูลระดับบนสุด ซึ่งมีชื่อว่า 'AndroidTest.xml' XML เป็นไปตามรูปแบบของไฟล์การกำหนดค่าที่ใช้โดย Trade Federation Test Automation Harness ปัจจุบันแท็กหลักที่จัดการผ่านการกำหนดค่าโมดูลทดสอบคือแท็ก "target_preparer" และ "test"

ผู้จัดเตรียมเป้าหมาย

แท็ก “target_preparer” ตามชื่อที่แนะนำ กำหนดตัวเตรียมเป้าหมาย (ดูที่ ITargetPreparer ) ที่เสนอวิธีการตั้งค่า ซึ่งจะถูกเรียกก่อนที่โมดูลทดสอบจะถูกเรียกใช้งานสำหรับการทดสอบ และถ้าคลาสที่อ้างอิงในแท็ก “target_preparer” ใช้ ITargetCleaner ด้วย วิธีการแยกส่วนจะถูกเรียกใช้หลังจากโมดูลทดสอบเสร็จสิ้น

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

<?xml version="1.0" encoding="utf-8"?>
<!-- [insert standard AOSP copyright here] -->
<configuration description="Test module config for Foo">
<!-- insert options here -->
</configuration>

ตัวอย่างเช่น เราสามารถเพิ่มแท็กตัวเลือกต่อไปนี้ (ที่ความคิดเห็น "แทรก" ด้านบน):

    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
        <option name="run-command" value="settings put secure accessibility_enabled 1" />
        <option name="teardown-command" value="settings put secure accessibility_enabled 0" />
    </target_preparer>

ตัวเลือกจะกำหนดค่าสายรัดทดสอบเป็น:

  1. ก่อนเรียกใช้โมดูลทดสอบ ให้ดำเนินการคำสั่งเชลล์ “settings put secure accessibility_enabled 1” บนอุปกรณ์
  2. หลังจากโมดูลทดสอบเสร็จสิ้น ให้รันคำสั่งเชลล์ “settings put secure accessibility_enabled 0”

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

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

  • ชื่อคลาส: PushFilePreparer

    • ชื่อย่อ : ไฟล์พุช
    • ฟังก์ชั่น : ผลักไฟล์โดยพลการภายใต้โฟลเดอร์กรณีทดสอบไปยังปลายทางบนอุปกรณ์
    • หมายเหตุ :
      • ผู้จัดเตรียมนี้สามารถพุชจากโฟลเดอร์หนึ่งไปยังอีกโฟลเดอร์หนึ่ง หรือไฟล์หนึ่งไปยังอีกไฟล์หนึ่ง นั่นคือ คุณไม่สามารถพุชไฟล์ภายใต้โฟลเดอร์บนอุปกรณ์ คุณต้องระบุชื่อไฟล์ปลายทางภายใต้โฟลเดอร์นั้นด้วย
    • ตัวเลือก :
      • push-file: push-spec ที่ระบุไฟล์ในเครื่องไปยังพาธที่ควรพุชบนอุปกรณ์ อาจจะซ้ำ. หากกำหนดค่าไฟล์หลายไฟล์ให้พุชไปยังพาธระยะไกลเดียวกัน ไฟล์ล่าสุดจะถูกพุช
      • พุช: (เลิกใช้แล้ว) ข้อมูลจำเพาะพุช จัดรูปแบบเป็น ' /path/to/srcfile.txt->/path/to/destfile.txt ' หรือ ' /path/to/srcfile.txt->/path/to/destdir/ '. อาจจะซ้ำ. พาธนี้อาจสัมพันธ์กับไดเร็กทอรีโมดูลทดสอบหรือไดเร็กทอรีขาออก
      • post-push: คำสั่งให้รันบนอุปกรณ์ (ด้วย ` adb shell <your command> `) หลังจากพยายาม push ทั้งหมดแล้ว กรณีการใช้งานทั่วไปจะใช้ chmod สำหรับการอนุญาต
  • ชื่อคลาส: InstallApkSetup

    • ชื่อย่อ: install-apk
    • ฟังก์ชัน: ผลักไฟล์ apk ตามอำเภอใจไปยังปลายทางบนอุปกรณ์
    • ตัวเลือก:
      • ชื่อไฟล์ทดสอบ: ชื่อของ apk ที่จะติดตั้งบนอุปกรณ์
      • install-arg: อาร์กิวเมนต์เพิ่มเติมที่จะส่งผ่านไปยังคำสั่งการติดตั้ง pm รวมถึงเส้นประนำหน้า เช่น "-d" อาจทำซ้ำได้
  • ชื่อคลาส: RunCommandTargetPreparer

    • ชื่อสั้น: เรียกใช้คำสั่ง
    • ฟังก์ชัน: ดำเนินการคำสั่งเชลล์ตามอำเภอใจก่อนหรือหลังการดำเนินการโมดูลทดสอบ
    • ตัวเลือก:
      • คำสั่งเรียกใช้: คำสั่ง adb shell เพื่อเรียกใช้ อาจจะซ้ำ
      • คำสั่งเสีย: คำสั่งเชลล์ adb เพื่อเรียกใช้ในช่วงการฉีกขาด อาจจะซ้ำ

ชั้นเรียนทดสอบ

คลาสทดสอบคือคลาสของสหพันธ์การค้าเพื่อใช้ในการดำเนินการทดสอบ

<test class="com.android.tradefed.testtype.AndroidJUnitTest">
  <option name="package" value="android.test.example.helloworld"/>
  <option name="runner" value="android.support.test.runner.AndroidJUnitRunner"/>
</test>

นี่คือคลาสทดสอบทั่วไปสามคลาส:

  • ชื่อคลาส: GTest

    • ชื่อสั้น: gtest
    • ฟังก์ชัน: การทดสอบที่เรียกใช้แพ็คเกจการทดสอบดั้งเดิมบนอุปกรณ์ที่กำหนด
    • ตัวเลือก:
      • เส้นทางการทดสอบอุปกรณ์ดั้งเดิม: เส้นทางบนอุปกรณ์ที่มีการทดสอบดั้งเดิม
  • ชื่อคลาส: InstrumentationTest

    • ชื่อสั้น: เครื่องมือวัด
    • ฟังก์ชัน: การทดสอบที่เรียกใช้ชุดทดสอบเครื่องมือวัดบนอุปกรณ์ที่กำหนด
    • ตัวเลือก:
      • แพ็คเกจ: ชื่อแพ็คเกจรายการของแอปพลิเคชันทดสอบ Android ที่จะเรียกใช้
      • class: ชื่อคลาสทดสอบที่จะรัน
      • วิธีการ: ชื่อวิธีการทดสอบที่จะเรียกใช้
  • ชื่อคลาส: AndroidJUnitTest

    • ฟังก์ชัน: การทดสอบที่เรียกใช้แพ็คเกจการทดสอบเครื่องมือบนอุปกรณ์ที่กำหนดโดยใช้ android.support.test.runner.AndroidJUnitRunner นี่เป็นวิธีหลักในการดำเนินการทดสอบเครื่องมือ