มีโอกาสไปแบ่งปันเรื่องการทดสอบแบบอัตโนมัติสำหรับ Mobile app ทั้ง iOS และ Android
คำถามที่น่าสนใจคือ
ทุกวันนี้ Mobile app ที่พัฒนากันนั้น ทดสอบกันอย่างไร ?
ทดสอบด้วยคนหรือแบบอัตโนมัติเป็นหลัก ?
ถ้าทดสอบด้วยคน
คำถามต่อมาคือ ทดสอบทุก ๆ feature ไหม ?

ยกตัวอย่างเช่น

ถ้าปัจจุบัน Mobile app มี feature อยู่ 50 features
แล้วทำการเพิ่ม feature ที่ 51 เข้ามา
คำถามคือ สิ่งที่ทีมพัฒนาบอกว่าเสร็จคือะไร ?
ระหว่าง
หนึ่งทดสอบ feature ที่ 51 แล้ว
สองทดสอบทั้ง 51 features แล้ว
ลองตอบดูนะครับ

คำตอบส่วนใหญ่คือ
ทดสอบ feature ที่ 51 นะ
แต่ที่เหลือก็ทดสอบเท่าที่มีเวลา
หรือที่เกี่ยวข้อง
หรือที่คิดว่าน่าจะกระทบ หรือ สำคัญ
ผลที่ออกมาคือ ?

ดังนั้นคำถามต่อมาคือ

ทั้งทีมพัฒนาและ business
มีความหวาดกลัวทุกครั้งที่มีการเพิ่มหรือเปลี่ยนแปลง feature ของ app หรือไม่ ?
ว่าสิ่งที่เพิ่มหรือเปลี่ยนแปลงมันจะไปทำให้ส่วนการทำงานอื่น ๆ พังไป
หรือทำงานไม่เหมือนเดิม !!

ถ้ามีความหวาดกลัวแล้ว
ก็ต้องทำการทดสอบ
แต่จะทดสอบแบบ manual ก็ได้นะ
แต่น่าจะไม่ครบทั้งหมด และ ใช้เวลาเยอะมาก ๆ
ดังนั้นมาลงทุนกับการทดสอบแบบอัตโนมัติกันไหม ?

คำถามที่ตามมาคือ แล้วมันยากไหม ?

ตอบเลยว่า ไม่ง่าย
แต่ถ้าไม่เริ่ม ก็จะอยู่ในวงจรแย่ ๆ เหมือนเดิม
ดังนั้นมาเริ่มกันเถอะ

คำถามต่อมาคือ เริ่มอย่างไรละ ตรงไหนดี ?

ตอบง่าย ๆ เลย
คือ เริ่มที่หน้าแรกของ app นั่นแหละ
แค่เปิด app ขึ้นมา
เมื่อเจอหน้าแรก ก็ตรวจสอบว่า แสดงผลถูกต้องหรือไม่ ?
จากนั้นก็ทดสอบด้วย action ต่าง ๆ ตามที่มีให้ใช้งาน
เช่นถ้ามีปุ่ม ก็ตรวจสอบว่า
กดได้หรือไม่
กดแล้วต้องแสดงอะไร

เมื่อทดสอบแบบ manual ได้แล้ว
ให้ทำการบันทึกการทดสอบเป็น code หรือชุดการทดสอบแบบอัตโนมัติ
โดยชุดการทดสอบนี้
ต้องสามารถทดสอบผ่านบนเครื่องของนักพัฒนา (Development) และ เครื่อง Continuous Integration
จากนั้นให้ทำการทดสอบชุดการทดสอบแบบอัตโนมัติ
เมื่อมีการเปลี่ยน code และชุดการทดสอบบน Version Control
เท่านี้ก็เริ่มต้นได้แล้ว !!
และสามารถทดสอบได้ในทุก ๆ environment ด้วยนะ

สิ่งที่เน้นย้ำคือ
ต้องสามารถทดสอบได้ในทุก ๆ environment
เพื่อให้สามารถรู้ความผิดพลาดได้อย่างรวดเร็ว
เพื่อแก้ไขได้อย่างรวดเร็ว

คำถามต่อมาคือ ทำเพียงเท่านี้มันจะไปช่วยอะไร ?

คำตอบคือ
เริ่มทำเพียงเท่านี้ให้ได้ก่อน
เพราะว่า คุณจะต้องเจอปัญหามากมายแน่นอน
ทั้ง dependency ต่าง ๆ ของการทำงานในหน้าแรก
คุณจะจัดการมันอย่างไร เพื่อให้สามารถทดสอบซ้ำได้ ๆ
ซึ่งมันไม่ง่ายเลย

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

เมื่อ app ของคุณเริ่มมีชุดการทดสอบแบบอัตโนมัติ
ที่น่าเชื่อถือ เน้นว่าน่าเชื่อถือ (ไม่ใช่ทดสอบผ่านบ้าง ไม่ผ่านบ้าง)
ประโยชน์ที่ได้รับกลับมาคือ
ความมั่นใจในการเพิ่มและแก้ไขนั่นเอง

ที่สำคัญสุด ๆ คือ มันส่งผลต่อประสบการณ์การใช้งานของลูกค้านั่นเอง

ลูกค้าไม่สนใจหรอกว่า บริษัทที่พัฒนา app จะใช้เทคโนโลยีอะไร
ถ้า app มันไม่ work หรือทำงานไม่ถูกต้อง ก็ไม่มีคนใช้งาน มันก็เท่านั้นเอง

ดังนั้นปรับปรุงการพัฒนาและทดสอบ app กันเถอะนะ