io-00
เนื่องจากเนื้อหาในงาน Google I/O 2016 Extended Bangkok มันเยอะมาก ๆ
ดังนั้นจึงแยกเนื้อหาออกเป็น 2 ส่วน
ซึ่งใน blog นี้จะสรุปเรื่องต่าง ๆ ดังนี้

  • UI Testing สำหรับ Android App ด้วย Espresso
  • ทำความรู้จักกับ Firebase ว่าน่าสนใจอย่างไรบ้าง

มาเริ่มกันเลย

1. UI Testing สำหรับ Android App ด้วย Espresso

เป็น session หนึ่งที่ตั้งใจมาฟังอย่างมาก
เพราะว่า เป็นสิ่งที่สนใจและใช้งานประจำสำหรับการทดสอบ Android App
โดยชอบคำพูดนี้มาก ๆ คือ

Espresso นั้นถูกสร้างขึ้นมา
เพื่อส่งเสริมให้นักพัฒนาเขียนชุดการทดสอบสำหรับ App นั่นเอง

โดยทางทีมพัฒนา Android นั้นได้แยกการทดสอบออกมาเป็นอีก library
ชื่อว่า Android Testing Support Library (ATSL)

เพื่อช่วยทำให้ App มีคุณภาพที่ดีขึ้น ประกอบไปด้วย

  • UI Automator สำหรับการทดสอบการทำงานระหว่าง App และ System ของ device
  • Espresso สำหรับการทดสอบใน App นั้น ๆ
  • AndroidJUnitRunner เป็น Test Runner สำหรับ Android App ซึ่งทำการ custom มาจาก JUnit

es-01

มาดูรายละเอียดของ Espresso กันว่าเป็นอย่างไรบ้าง ?
โดยจะทำงานผ่าน Instrumentation
ซึ่งจะทำการ hook เข้าไปยัง Lifecycle ของ Activity
ทำให้เราสามารถทดสอบได้นั่นเอง

Espresso มีส่วนการทำงานหลัก 3 ส่วนคือ

  1. View matcher สำหรับค้นหา element ต่าง ๆ ใน view
  2. View action สำหรับกระทำกับ element ต่าง ๆ ใน view เช่น การกดปุ่ม เป็นต้น
  3. View assertion สำหรับการตรวจสอบผลการทำงาน เช่น ข้อความที่แสดงใน TextView เป็นต้น

และยังอธิบายอีกด้วยว่า Library แต่ละตัวของ Espresso นั้นใช้ทำอะไรบ้าง

//เป็น library หลักของ Espresso
androidTestCompile "com.android.support.test.espresso:espresso-core

//สำหรับทดสอบพวก DatePicker, RecyclerView, Drawer action ต่าง ๆ
androidTestCompile "com.android.support.test.espresso:espresso-contrib

//Intent Rule, validation และ stub ซึ่งช่วยให้จัดการ intent ได้อย่างง่ายและสะดวกสำหรับการทดสอบ และทำงานร่วมกับ Mockito
androidTestCompile "com.android.support.test.espresso:espresso-intents

//สำหรับการทำงานร่วมกับพวก backgroung job
androidTestCompile "com.android.support.test.espresso:espresso-idling-resource

//สำหรับทดสอบ WebView
androidTestCompile 'com.android.support.test.espresso:espresso-web

จากนั้นทำการแนะนำวิธีการ Custom Error ของ Espresso
เพื่อช่วยทำให้ error ของ Espresso อ่านและเข้าใจได้ง่าย
โดยให้ทำการ implement จาก interface EspressoException
รวมทั้งแนะนำ Espresso Test Recorder อีกเล็กน้อย

ส่วนcode ตัวอย่างดูเพิ่มเติมได้จาก Android Coding Testlab

2. ทำความรู้จักกับ Firebase ว่าน่าสนใจบ้าง ? บอกเลยว่าเยอะมาก !!

ถือได้ว่าเป็นพระเอกของงาน Google I/O 2016 เลยก็ว่าได้
เป็นอีกหนึ่งการเปลี่ยนแปลงที่ส่งผลกระทบอย่างแรงต่อ Developer
เนื่องจากมีทุกสิ่งที่ Web และ Mobile application ต้องการ
ทั้ง Infrastructure
ทั้ง Service ต่าง ๆ
ทั้งการรองรับการขยายตัวของระบบ
ทั้งการทำงานแบบ cross platform
ทั้งการใช้งานที่ง่าย
ทั้งเอกสารที่แจ่ม ๆ และ ละเอียด
สำหรับ Android Studio ก็มี Firebase plugin ให้ใช้งานแบบง่าย ๆ อีกด้วย
ดังนั้นห้ามพลาดด้วยประการทั้งปวง

es-02

โดยมี feature แบ่งเป็นกลุ่มดังนี้

  • Develop
  • Grow
  • Earn
  • Analytic

ซึ่งมันเยอะมาก ๆ แสดงดังรูป (ลองไปใช้งานกันดูนะ)

es-03

ถ้า Developer คนไหนยังไม่ลองใช้งาน
แนะนำให้ลองไปใช้งานเถอะนะ
มันช่วยเหลือให้ชีวิตง่ายขึ้นเยอะเลย

ส่วน Slide ของงานนี้เขาเอาไปเก็บไว้ที่ Github:: Google I/O extended Bangkok