มีโอกาสแบ่งปันความรู้เรื่อง Mobile Testing ด้วย Appium และ Robot framework
โดยสิ่งที่ทำการแบ่งปันประกอบไปด้วย

  • รูปแบบของการทดสอบ
  • ขั้นตอนการใช้งาน Appium ในการทดสอบ
  • ขั้นตอนในการทดสอบของ app ต่าง ๆ เช่น Native App และ Flutter app
  • การเขียน test case ด้วย Robot framework และ library เพิ่มเติม
  • การ scale ระบบหรือ platform ของการทดสอบแบบอัตโนมัติของ appium

มาดูรายละเอียดการแบ่งปันกัน

รูปแบบของการทดสอบ Mobile app

แบ่งออกเป็น 2 ชนิดหลัก ๆ คือ

  • External testing หรือ black-box testing
  • Internal testing หรือ white-box testing

โดยที่ External testing เป็นการทดสอบในมุมมองของผู้ใช้งานเป็นหลัก
เป็นการทดสอบผ่าน mobile app จริง ๆ
ซึ่งมีความน่าเชื่อถือสูง แต่ใช้เวลาในการทดสอบสูง
รวมทั้งการ setup ระบบที่เกี่ยวข้อง และ การ initial data ต่าง ๆ เยอะ
ผลที่ตามมาคือ การทดสอบไม่ค่อยเสถียร และ ทดสอบซ้ำ ๆ ได้ยากมาก
ดังนั้นจึงมักจะต้องทำการ mock dependency ต่าง ๆ ขึ้นมา
รวมทั้งการส่งข้อมูลไปมา จะเข้ารหัส หรือ ไม่เข้ารหัส
หรือการทดสอบแบบ flow ต้องกดเยอะ ๆ ไปทุกหน้าเองหรือไม่
ยิ่งระบบมี flow ที่ซับซ้อน ยิ่งลำบากไหม
ตรงนี้ต้องวางแผนกันก่อนที่จะเริ่มพัฒนานะ

ส่วน internal testing เป็นการทดสอบในมุมมองของทีมสร้างหรือพัฒนา
จะเห็นทุกสิ่งอย่าง ของการพัฒนา mobile app ว่า
แต่ละส่วนงานทำงานอย่างไรบ้าง ซึ่งจะมีการทดสอบหลายชนิดเช่น

  • Unit testing
  • Widget testing (Flutter)
  • Integrate testing

และยังไม่การทดสอบอื่น ๆ อีกเช่น visual testing หรือ พวก snapshot testing
เพื่อช่วยเพิ่มความเชื่อมันให้สูงขึ้น
แต่ยังต้องเร็ว และ มีคุณภาพที่สูงเสมอ

การใช้งาน Appium สำหรับทดสอบ Mobile app

โดยเป็นการทดสอบแบบ External testing นั่นเอง
จะต้องมีการติดตั้ง software เยอะใช้ได้ ดังนี้

  • Appium server จะติดตั้งผ่าน npm ดังนั้นต้องติดตั้ง NodeJS ก่อน
  • ส่วน Appium Server Destop ที่เป็น GUI นั้นเลิกพัฒนาแล้วตั้งแต่ต้นปี 2023 ดังนั้นเลิกใช้ได้แล้ว
  • Appium Inspector สำหรับดูว่า element ต่าง ๆ ในหน้าจอของ mobile app เป็นอย่างไร
  • โดยที่ Appium Inspector จะรองรับกับ Native app เท่านั้น ส่วน app ที่พัฒนาด้วย Flutter จะไม่สามารถ inspect ได้ ต้องไปใช้งาน Flutter Inspector แทนเอา
  • ก่อนที่จะติดตั้ง appium ให้ใช้งาน appium doctor ในการตรวจสอบ environment ของเครื่องว่ายังขาดอะไรบ้าง ส่วน flutter ก็น flutter doctor ได้เลย
  • สำหรับ Flutter app นั้น ทาง appium server จะต้องลง flutter driver ด้วย รวมทั้งใน code ก็ต้องเพิ่ม dependency ของ flutter driver อีกด้วย ยังไม่พอใน code ของ widget นั้น ต้องเพิ่ม key เข้าไป เพื่อใช้ในการเข้าถึง widget หรือ element ต่าง ๆ ได้จากชุดการทดสอบ จะเยอะนิดหน่อย !!

การเขียน test case ด้วย Robot framework

  • ถ้าเป็น Native app จะใช้งานผ่าน AppiumLibrary
  • ถ้าเป็น Flutter app ที่ใช้งาน appium flutter driver จะใช้งานผ่าย AppiumFlutterLibrary

ปล. ระวังเรื่อง selenium library ด้วย !!

การ Scale appium ด้วย Selenium grid

การทดสอบแบบ EXternal testing นั้น เมื่อจำนวน test case เยอะขึ้น ปัญหาก็ตามมา
ยกตัวอย่างเช่น

  • เวลาในการทดสอบมากขึ้น
  • Regression test ทำได้ไม่บ่อย แปลก ๆ นะ อุตส่าห์ทำ test แล้วนะ
  • ทำการติดตั้ง software บนเครื่องของคนทดสอบยาก
  • ไม่สามารถทดสอบบน mobile หลาย ๆ ชนิด หรือ ยี่ห้อได้ หรือได้ก็ยากมาก

ดังนั้นเราสามารถลด หรือ แก้ไขปัญหาเหล่านี้
ด้วยการสร้าง Mobile testing platform หรือ Mobile farm ด้วย Selenium grid

มีโครงสร้างการทำงานดังนี้

ขอให้สนุกกับการทดสอบ Mobile app ด้วย Appium
แต่จะให้ดี แนะนำให้ไปทดสอบแบบ internal testing เยอะ ๆ ครับ