เนื่องจากมีเหตุต้องมาใช้งาน 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 ไฟล์ คือ
- Application Under Test คือ APK ของ app ที่จะถูกทดสอบ
- Test คือ APK ของชุดการทดสอบทั้งหมด
- Orchestrator คือ APK ของ Android Test Orchestrator สำหรับ run แต่ละ Test Case
- 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 นะครับ