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

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

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

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

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

การกำหนดค่าโมดูลทดสอบสำหรับโมดูลทดสอบคือไฟล์ XML ที่จำเป็นที่เพิ่มไว้ทางด้านบน โฟลเดอร์แหล่งที่มาของโมดูลระดับ ชื่อว่า "AndroidTest.xml" โดย XML มีรูปแบบดังต่อไปนี้ ของไฟล์การกำหนดค่าที่ใช้โดยระบบควบคุมการทำงานอัตโนมัติสำหรับการทดสอบของสมาพันธ์การค้า ปัจจุบันแท็กหลักที่จัดการผ่านการกำหนดค่าโมดูลทดสอบคือ “target_preparer” และ "ทดสอบ" แท็กทั้งหมด.

ผู้เตรียมข้อมูลเป้าหมาย

แท็ก “target_preparer” เป็นชื่อที่ใช้ระบุตัวเตรียมเป้าหมาย (โปรดดู ITargetPreparer) ที่เสนอวิธีการตั้งค่า ซึ่งจะเรียกใช้ก่อนที่จะเรียกใช้โมดูลทดสอบ สำหรับการทดสอบ และหากคลาสที่อ้างอิงในแท็ก “target_preparer” เช่นเดียวกัน implements 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>

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

    <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. before test module is invoked, execute shell command “settings put secure accessibility_enabled 1” on device
  2. หลังจากโมดูลทดสอบเสร็จแล้ว ให้เรียกใช้คำสั่งเชลล์ "settings put secure accessibility_enabled 0"

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

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

  • ชื่อคลาส: PushFilePreparer

    • ชื่อย่อ: Push-file
    • ฟังก์ชั่น: พุชไฟล์ที่กำหนดเองภายใต้โฟลเดอร์กรอบการทดสอบไปยัง ปลายทางบนอุปกรณ์
    • หมายเหตุ:
      • เครื่องมือเตรียมความพร้อมนี้จะพุชจากโฟลเดอร์หนึ่งไปยังอีกโฟลเดอร์หนึ่ง หรือจากไฟล์หนึ่งไปยังอีกไฟล์หนึ่งได้ กล่าวคือ คุณจะพุชไฟล์ที่อยู่ในโฟลเดอร์ในอุปกรณ์ไม่ได้ คุณต้องระบุชื่อไฟล์ปลายทางในโฟลเดอร์นั้นด้วย
    • options:
      • push-file: Push-spec ระบุไฟล์ในเครื่องไปยังเส้นทาง ตำแหน่งที่ควรพุชในอุปกรณ์ ใช้ซ้ำได้ หากมีการกำหนดค่าไฟล์หลายไฟล์ให้พุชไปยังเส้นทางระยะไกลเดียวกัน ระบบจะพุชไฟล์ล่าสุด
      • push: (เลิกใช้งานแล้ว) รูปแบบการพุชที่มีรูปแบบเป็น '/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 ที่กำหนดเองไปยังปลายทางใน อุปกรณ์
    • options:
      • test-file-name: ชื่อของ APK ที่จะติดตั้ง อุปกรณ์
      • install-arg: อาร์กิวเมนต์เพิ่มเติมที่จะส่งไปยัง pm install คำสั่งโดยรวมเครื่องหมายขีดกลางนำหน้า เช่น “-d" อาจแสดงซ้ำ
  • ชื่อคลาส: RunCommandTargetPreparer

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

คลาสทดสอบ

คลาสทดสอบคือคลาส 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
    • function: การทดสอบที่เรียกใช้แพ็กเกจทดสอบแบบเนทีฟในอุปกรณ์ที่ระบุ
    • ตัวเลือกดังต่อไปนี้
      • native-test-device-path: เส้นทางในอุปกรณ์ที่มีการทดสอบเนทีฟ
  • ชื่อคลาส: InstrumentationTest

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

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