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

โมดูลการทดสอบบางรายการอาจต้องมีการตั้งค่าและขั้นตอนการเลิกใช้งานที่กําหนดเอง ซึ่งทําภายในเฟรมทดสอบไม่ได้ ตัวอย่างทั่วไปอาจรวมถึง

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

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

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

การกำหนดค่าโมดูลทดสอบสำหรับโมดูลทดสอบคือไฟล์ XML ที่จำเป็นที่เพิ่มลงในโฟลเดอร์ต้นทางของโมดูลระดับบนสุดที่มีชื่อว่า "AndroidTest.xml" โดย XML จะใช้รูปแบบไฟล์การกำหนดค่าที่ใช้โดยระบบควบคุมการทำงานอัตโนมัติของ Trade Federation ปัจจุบันแท็กหลักที่จัดการผ่านการกำหนดค่าโมดูลทดสอบคือแท็ก "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. ก่อนที่จะเรียกใช้โมดูลทดสอบ ให้เรียกใช้คำสั่ง Shell "การตั้งค่า" ใส่การเข้าถึง ที่ปลอดภัย_เปิดใช้ 1” ในอุปกรณ์
  2. หลังจากโมดูลทดสอบเสร็จสิ้น ให้เรียกใช้คำสั่ง Shell "การตั้งค่าใส่ Secureaccessibility_enabled 0"

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

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

  • ชื่อคลาส: PushFilePreparer

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

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

    • ชื่อย่อ: run-command
    • function: เรียกใช้คำสั่ง Shell ที่กำหนดเองก่อนหรือหลังการดำเนินการของโมดูลทดสอบ
    • options:
      • run-command: คำสั่ง Shell adb ที่จะเรียกใช้ อาจซ้ำกัน
      • teardown-command: คำสั่ง adb shell ที่จะทำงานในระยะการเลิกใช้งาน อาจซ้ำกัน

คลาสทดสอบ

คลาสทดสอบคือคลาส Trade Federation ที่จะใช้ในการทดสอบ

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

ชั้นเรียนทดสอบทั่วไป 3 ชั้นเรียนมีดังนี้

  • ชื่อคลาส: GTest

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

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

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