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

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

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

ที่ผ่านมา ทีมคอมโพเนนต์มักจะเขียนการทดสอบฝั่งโฮสต์เพื่อดำเนินการดังกล่าว ซึ่งต้องใช้ความเข้าใจในสายพานลำเลียง 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. ก่อนที่จะเรียกใช้โมดูลทดสอบ ให้เรียกใช้คำสั่งเชลล์ "settings put secure accessibility_enabled 1" ในอุปกรณ์
  2. หลังจากโมดูลทดสอบเสร็จแล้ว ให้เรียกใช้คำสั่งเชลล์ "settings put secure accessibility_enabled 0"

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

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

  • ชื่อคลาส: PushFilePreparer

    • ชื่อย่อ: push-file
    • function: พุชไฟล์ที่กำหนดเองในโฟลเดอร์ Test Case ไปยังปลายทางในอุปกรณ์
    • notes:
      • เครื่องมือเตรียมความพร้อมนี้จะพุชจากโฟลเดอร์หนึ่งไปยังอีกโฟลเดอร์หนึ่ง หรือจากไฟล์หนึ่งไปยังอีกไฟล์หนึ่งได้ กล่าวคือ คุณจะพุชไฟล์ที่อยู่ในโฟลเดอร์ในอุปกรณ์ไม่ได้ คุณต้องระบุชื่อไฟล์ปลายทางในโฟลเดอร์นั้นด้วย
    • options:
      • push-file: ข้อมูลจำเพาะการพุชที่ระบุไฟล์ในเครื่องไปยังเส้นทางที่ควรพุชในอุปกรณ์ ใช้ซ้ำได้ หากมีการกําหนดค่าไฟล์หลายไฟล์ให้พุชไปยังเส้นทางระยะไกลเดียวกัน ระบบจะพุชไฟล์ล่าสุด
      • 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: เรียกใช้คำสั่งเชลล์ที่กำหนดเองก่อนหรือหลังการเรียกใช้ข้อบังคับของโมดูลทดสอบ
    • 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
    • function: การทดสอบที่เรียกใช้แพ็กเกจทดสอบแบบเนทีฟในอุปกรณ์หนึ่งๆ
    • options:
      • native-test-device-path: เส้นทางในอุปกรณ์ที่มีทดสอบเนทีฟ
  • ชื่อคลาส: InstrumentationTest

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

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