การสร้างชุดการทดสอบแบบอัตโนมัติระดับ User Interface ของ Android app นั้น
เป็นเรื่องที่สำคัญมาก ๆ โดยที่ทาง Android ก็ได้เตรียมเครื่องมือและ library ต่าง ๆ ไว้ให้ครบ
ยกตัวอย่างเช่น Espresso และ UIAutomator เป็น
ที่สำคัญยังมี opensource library อื่น ๆ อีก
ไม่ว่าจะเป็น Appium และ Calabash
ดังนั้นการสร้างชุดการทดสอบแบบอัตโนมัติจึงไม่ใช่เรื่องยากหรือเป็นไปไม่ได้เลย

แต่เหล่าทีมพัฒนามักไม่ชอบทำ !!
ทำไมนะ ?

ปกติการเขียน UI Test ของ Android app นั้น

มักจะเขียนด้วย library ที่ชื่อว่า Espresso
ซึ่งสามารถทดสอบ Android app ได้เกือบครบทั้งหมด
การใช้งานก็ไม่ยาก
ยกตัวอย่างด้วยภาษา Kotlin ดังนี้

คำอธิบาย
ทำการตรวจสอบ element id=username ว่าแสดงผลหรือไม่
ทำการกดปุ่ม id=login_button
ทำการกรอข้อมูล Hello ใน element id=name_field

ทุกอย่างดูเป็นปกติ และทำงานได้ตามที่ต้องการ

แต่เมื่อการทดสอบเริ่มซับซ้อนขึ้น ขั้นตอนการทำงานมากขึ้น

ส่งผลทำให้ code ของ UI Test ที่เขียนขึ้นมานั้น
อ่านลำบาก
แก้ไขยาก
ยิ่งจำนวน test case เยอะขึ้น ปัญหาก็ตามมาเพียบ
ทำให้คนเขียนมักจะเป็น developer/programmer
ทำให้งานเพิ่มอีกแล้ว
แน่นอนว่า มันคือปัญหา classic สุด ๆ
ยกตัวอย่างเช่น

ดังนั้นเราน่าจะต้องการวิธีการใหม่ ๆ เข้ามาช่วยนะ

ยิ่งการพัฒนา Android นั้นมีทางเลือกทั้งภาษา Java และ Kotlin
น่าจะทำให้เรามีทางเลือกมากขึ้น
ซึ่งตอนนี้มีคนสร้าง library ด้วยภาษา Kotlin
เพื่อทำให้การเขียน UI Test ด้วย Espresso ง่ายขึ้น
ด้วยการเขียนในรูปภาษาที่ง่าย ๆ
เป็น DSL หรือภาษาเฉพาะขึ้นมา

จาก code ด้านบน ถ้าเราสามารถเขียนง่าย ๆ ด้วย DSL ง่าย ๆ แบบนี้
น่าจะทำให้การเขียน UI Test ง่ายและสนุกขึ้นหรือไม่
แน่นอนว่า ทำให้ง่ายได้อ่านขึ้นเยอะ
รวมทั้งใคร ๆ ก็สามารถเขียนได้
ยกตัวอย่างเช่น

โดยมีคนทำ library ในรูปแบบนี้ให้ด้วยนะ

จึงนำมาแนะนำไว้ เผื่อว่าจะนำไปใช้กัน
ประกอบไปด้วย

จากทั้ง 3 ตัวนั้น Kakao น่าใช้งานสุด
ซึ่งลองใช้งานก็ไม่ได้ยากอะไร
แต่อาจจะติดตั้งยากขึ้นมาหน่อย
ยิ่งถ้าต้องทดสอบระบบที่พัฒนาด้วยภาษา Java แล้ว
ต้องทำให้ Android project สนับสนุนภาษา Kotlin ก่อนด้วยนะ

ตัวอย่างของการเขียนด้วย Kakao

ขอให้สนุกกับการ coding ครับ