มีโอกาสไปแบ่งปันเรื่องการทดสอบแบบอัตโนมัติสำหรับ 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 ของคุณเริ่มมีชุดการทดสอบแบบอัตโนมัติ ที่น่าเชื่อถือ เน้นว่าน่าเชื่อถือ (ไม่ใช่ทดสอบผ่านบ้าง ไม่ผ่านบ้าง) ประโยชน์ที่ได้รับกลับมาคือ ความมั่นใจในการเพิ่มและแก้ไขนั่นเอง