เนื่องจากมีเหตุต้องมาใช้งาน 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