เนื่องจากมีเหตุต้องมาใช้งาน Android Test Orchestrator
เพื่อช่วยแก้ไขปัญหาและปรับปรุงการทำงานของ Instrumentation test ของ Android app
ดังนั้นจึงทำการสรุปความรู้พื้นฐานและการใช้งานไว้นิดหน่อย
น่าจะเป็นเครื่องมือที่ใช้กันน้อยมาก ๆ
แต่มันก็มีประโยชน์นะ

Android Test Orchestrator คืออะไร

เป็นเครื่องมือสำหรับ Instrumentation test หรือการทดสอบที่ต้องการ Device จริง ๆ หรือ Emulator เสมอ
ยังไม่พอนะ
ในแต่ละ Test Case หรือ method ที่ขึ้นด้วย @Test นั้น
จะทำงานหรือทดสอบคนละ instance กัน
นั่นหมายความว่า
ในแต่ละ Test Case จะไม่ส่งผลกระทบต่อกัน
ยกตัวอย่างเช่น

ถ้าบาง Test Case ส่งผลให้การทดสอบ crash หรือพังไป
เช่นเกิด RuntimeException เป็นต้น
จะไม่ส่งผลต่อ Test Case อื่น ๆ
แต่ถ้าไม่ได้ใช้ Android Test Orchestrator แล้วจะทำให้ Test Case อื่น ๆ ไม่ถูกทดสอบได้

ถ้าบาง Test Case ต้องไปทดสอบการทำงานของ app แบบ asynchronous แล้ว
มันอาจจะเกิด overlab หรือทับซ้อนกันระหว่างการทดสอบ
ซึ่งอาจจะทำให้การทำงานของแต่ละ Test Case ผิดได้ง่าย ๆ
เช่น Test Case ที่ 1 ต้องเป็นเรียกใช้ Service บางอย่าง
แน่นอนว่า การทดสอบมันผ่านไปแล้ว
จากนั้น Test Case ที่ 2 ถูกทดสอบ
ในขณะนั้นเองที่ ผลจากการทำงานของ Service ถูกส่งกลับมา
มันอาจจะทำให้การทดสอบของ Test Case ที่ 2 พังหรือผิดก็ได้

เพราะว่า แต่ละ Test Case ทำงานอยู่ใน instance ของการทดสอบเดียวกัน
instance ของอะไร ?
instance ของ AndroidJUnitRunner นั่นเองนะ

นี่คือประโยชน์ของ Android Test Orchestrator

โครงสร้างการทำงานของ Android Test Orchestrator เป็นดังนี้

คำอธิบายการทำงาน
ในการทำงานจริง ๆ จะมีการติดตั้งไฟล์ APK ไปยัง Device หรือ Emulator 4 ไฟล์ คือ

  1. Application Under Test คือ APK ของ app ที่จะถูกทดสอบ
  2. Test คือ APK ของชุดการทดสอบทั้งหมด
  3. Orchestrator คือ APK ของ Android Test Orchestrator สำหรับ run แต่ละ Test Case
  4. Test Service คือ APK ที่แยกออกมาจาก Orchestrator APK

APK ตัวที่ 3 และ 4 ดูได้จาก command line ตอนใช้งานดังนี้

Download https://dl.google.com/dl/android/maven2/com/android/support/test/services/test-services/1.0.1/test-services-1.0.1.apk
Download https://dl.google.com/dl/android/maven2/com/android/support/test/orchestrator/1.0.1/orchestrator-1.0.1.apk

มาลองใช้งานกันดีกว่า

ขั้นตอนที่ 1 เปิดใช้งานด้วยการเพิ่ม dependency และ configuration ใน build.gradle

ขั้นตอนที่ 2 ทำการ run แบบง่าย ๆ ผ่าน command line
ด้วยคำสั่ง

$./gradlew connectedCheck

เพียงเท่านี้ก็ใช้งาน Android Test Orchestrator ได้แล้ว
ขอให้สนุกกับการ coding นะครับ