การทดสอบการใช้เครื่องมือ

โปรดอ่านทดสอบแอป ใน developer.android.com ก่อน โปรดทราบว่าการใช้การทดสอบเครื่องมือในการทดสอบแพลตฟอร์มนั้นมีความแตกต่างกันอยู่บ้าง

กล่าวโดยสรุป การทดสอบการวัดคุมจะให้สภาพแวดล้อมการดำเนินการทดสอบพิเศษ เมื่อเปิดใช้ผ่านคำสั่ง am instrument โดยระบบจะรีสตาร์ทและเริ่มต้นกระบวนการของแอปพลิเคชันเป้าหมายด้วยบริบทของแอปพลิเคชันพื้นฐาน และจะเริ่มเทรดการวัดคุมภายใน VM ของกระบวนการแอปพลิเคชัน โค้ดทดสอบจะเริ่มดำเนินการในเธรดเครื่องมือนี้และได้รับอินสแตนซ์ Instrumentation ซึ่งให้สิทธิ์เข้าถึงบริบทของแอปพลิเคชันและ API เพื่อจัดการกระบวนการของแอปพลิเคชันที่อยู่ระหว่างทดสอบ

หัวข้อสำคัญ

  • ต้องประกาศการตรวจสอบในแพ็กเกจแอปพลิเคชันโดยมีแท็ก <instrumentation> ซ้อนอยู่ภายใต้แท็ก <manifest> ของไฟล์ Manifest ของแพ็กเกจแอปพลิเคชัน
  • ไฟล์ Manifest ของแพ็กเกจแอปพลิเคชันอาจมีแท็ก <instrumentation> หลายแท็กในทางเทคนิค แต่โดยทั่วไปแล้วจะไม่ใช้ในลักษณะนี้
  • <instrumentation> แต่ละรายการต้องมีข้อมูลต่อไปนี้
    • แอตทริบิวต์ android:name: ควรเป็นชื่อของคลาสย่อยของ Instrumentation ที่รวมอยู่ในแอปพลิเคชันทดสอบ ซึ่งโดยปกติแล้วจะเป็นโปรแกรมเรียกใช้การทดสอบที่ใช้ เช่น android.support.test.runner.AndroidJUnitRunner
    • ต้องกำหนดแอตทริบิวต์ android:targetPackage ค่าควร ตั้งเป็นแพ็กเกจแอปพลิเคชันที่อยู่ระหว่างการทดสอบ

สรุปขั้นตอน

  1. ปลายทางที่พบบ่อยสำหรับการทดสอบแบบปิดกับบริการของเฟรมเวิร์กมีดังนี้

    frameworks/base/core/tests/coretests
    frameworks/base/services/tests/servicestests
    

    หากคุณกำลังเพิ่มโมดูลการวัดผลใหม่สำหรับคอมโพเนนต์ โปรดดู

  2. ทำตามรูปแบบที่มีอยู่หากคุณเพิ่มการทดสอบลงในตำแหน่งใดตำแหน่งหนึ่งด้านบน หากคุณกำลังตั้งค่าโมดูลการทดสอบใหม่ โปรดทำตาม การตั้งค่า AndroidManifest.xml และ Android.mk ในตำแหน่งใดตำแหน่งหนึ่ง ด้านบน

  3. ดูตัวอย่างได้ที่ frameworks/base/core/tests/coretests/ โปรดทราบว่าบรรทัดต่อไปนี้จะติดตั้งแอปเพิ่มเติม

    <option name="test-file-name" value="FrameworksCoreTests.apk" />
    <option name="test-file-name" value="BstatsTestApp.apk" />
    
  4. อย่าลืมทำเครื่องหมายการทดสอบเป็น @SmallTest, @MediumTest หรือ @LargeTest

  5. สร้างโมดูลทดสอบด้วย m เช่น

    m FrameworksCoreTests
    
  6. ทำการทดสอบ

    m tradefed-all
    tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
    
  7. หากไม่ได้ใช้ Tradefed ให้ติดตั้งและเรียกใช้การทดสอบด้วยตนเองดังนี้

    1. ติดตั้ง APK ที่สร้างขึ้น
    adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
    
    1. ทําการทดสอบด้วยตัวเลือกต่างๆ ดังนี้

      1. การทดสอบทั้งหมดใน APK

        adb shell am instrument -w com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      2. การทดสอบทั้งหมดภายใต้แพ็กเกจ Java ที่เฉพาะเจาะจง

        adb shell am instrument -w -e package android.animation \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      3. การทดสอบทั้งหมดในชั้นเรียนหนึ่งๆ

        adb shell am instrument -w -e class \
          android.animation.AnimatorSetEventsTest \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      4. วิธีการทดสอบที่เฉพาะเจาะจง

        adb shell am instrument -w -e class \
          android.animation.AnimatorSetEventsTest#testCancel \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        

การทดสอบสามารถยืนยันอย่างชัดเจนว่าผ่านหรือไม่ผ่านโดยใช้ JUnitAPI นอกจากนี้ ข้อยกเว้นที่ไม่ได้จัดการจะทำให้ฟังก์ชันการทำงานล้มเหลวด้วย

หากต้องการส่งเมตริกประสิทธิภาพ โค้ดทดสอบจะเรียกใช้ Instrumentation#sendStatus เพื่อส่งรายการคู่คีย์-ค่าได้ สิ่งสำคัญที่ควรทราบมีดังนี้

  1. เมตริกอาจเป็นจำนวนเต็มหรือทศนิยมก็ได้
  2. ระบบจะทิ้งค่าที่ไม่ใช่ตัวเลข
  3. APK สำหรับทดสอบอาจเป็นการทดสอบฟังก์ชันการทำงานหรือการทดสอบเมตริก แต่ระบบไม่รองรับการผสมทั้ง 2 อย่างในขณะนี้