ทำไมต้องทำ Closed Testing ก่อนเอาแอปขึ้นขายจริง
เวลาเราสร้างแอป Android เสร็จแล้ว เรามักอยากเอาขึ้น Google Play Store ทันที แต่ Google มีกฎว่าบัญชีนักพัฒนาส่วนบุคคล (บัญชีที่สมัครด้วยชื่อเราเอง) ต้องผ่านการทำ Closed Testing (การทดสอบแบบปิด) ก่อนเสมอ ขั้นตอนนี้คือการให้คนกลุ่มหนึ่งมาลองใช้แอปเราจริง ๆ เป็นเวลา 14 วันติดต่อกัน เพื่อพิสูจน์ว่าแอปเราเสถียรพอที่จะให้คนทั่วไปใช้งาน
ถ้าเปรียบเทียบให้เห็นภาพ มันเหมือนการซ้อมใหญ่ก่อนเปิดร้านอาหารจริง ถ้าเราไม่ซ้อมเลยแล้วเปิดร้านวันแรก ลูกค้าอาจเจออาหารบูดหรือพนักงานทำจานแตกจนร้านเจ๊งได้ การทดสอบนี้ช่วยให้เราเจอ Bug (ข้อผิดพลาดในโปรแกรมที่ทำให้ทำงานไม่ตรงจุด) ก่อนที่คนใช้งานจริงนับพันจะมาเจอ ซึ่งถ้าแอปเราพังบ่อย Google อาจแบนแอปเราได้เลย
ตั้งแต่เดือนธันวาคม 2024 ทาง Google ปรับเงื่อนไขให้ใช้ผู้ทดสอบอย่างน้อย 12 คน ซึ่งถือว่าน้อยลงกว่าเดิมมาก แต่ปัญหาคือหลายคนแค่หาคนมาโหลดแอปให้ครบ 12 คนแล้วจบไป ทำให้เราไม่ได้ข้อมูลอะไรกลับมาเลย การปล่อยให้แอปทดสอบเงียบเหงาจะทำให้ Google มองว่าแอปเราไม่น่าสนใจ และอาจไม่อนุมัติให้เราเอาขึ้นขายจริง
ทำไมคนทดสอบถึงไม่ค่อยส่งรายงานบั๊กให้เรา
นักพัฒนาหลายคนเข้าใจผิดว่าถ้าแอปพัง เดี๋ยวคนทดสอบก็แจ้งเอง แต่ความจริงคือถ้าแอปค้างหรือหน้าจอพัง คนส่วนใหญ่จะแค่ปิดแอปทิ้งแล้วลืมไปเลย เพราะพวกเขาไม่มีแรงจูงใจที่จะมานั่งเขียนอีเมลบอกเราว่ามันพังตรงไหน หรือพังตอนกดปุ่มอะไร ซึ่งเป็นเรื่องปกติของคนทั่วไป
ปัญหาที่สองคือ Friction (ความยุ่งยากในการใช้งาน) ถ้าการแจ้งบั๊กต้องให้ผู้ทดสอบออกไปเปิดอีเมล แล้วต้องมานั่งพิมพ์อธิบายรายละเอียดเครื่อง หรือแนบรูปประกอบเอง คนส่วนใหญ่ก็จะถอดใจทันที ถ้าเราไม่ทำให้การแจ้งบั๊กเป็นเรื่องง่ายแค่การกดปุ่มเดียว เราก็จะไม่ได้ข้อมูลอะไรที่มีค่าเลย
เราต้องเปลี่ยนวิธีคิดจากการรอรับอีเมล มาเป็นการสร้างเครื่องมือให้เขาส่งข้อมูลได้ง่ายที่สุด ถ้าเราปล่อยให้ผู้ทดสอบเงียบหายไป เราจะเสียโอกาสทองในการแก้ปัญหา และอาจต้องไปเจอแจ็คพอตตอนเปิดตัวจริง ซึ่งนั่นหมายถึงการเสียชื่อเสียงของแอปเราตั้งแต่วันแรกที่เปิดให้บริการ
ใช้เครื่องมือช่วยเก็บข้อมูลอัตโนมัติ
วิธีที่ดีที่สุดคือการให้แอปเก็บข้อมูลเองโดยไม่ต้องพึ่งพาความจำของผู้ทดสอบ เราควรติดตั้ง SDK (ชุดเครื่องมือสำหรับช่วยเขียนโปรแกรม) ที่ใช้สำหรับติดตามความผิดพลาดโดยเฉพาะ เพื่อให้แอปส่งรายงานกลับมาหาเราทันทีที่มันพัง โดยที่ผู้ทดสอบไม่ต้องกดส่งอะไรเลย
เครื่องมือพวกนี้จะเก็บข้อมูลสำคัญ เช่น รุ่นโทรศัพท์ เวอร์ชัน Android และ Stack Trace (ลำดับเหตุการณ์ก่อนที่โปรแกรมจะพัง) มาให้เราแบบละเอียด ซึ่งช่วยให้เราแก้ปัญหาได้ตรงจุดมากกว่าการเดาว่าผู้ทดสอบทำอะไรลงไป นอกจากนี้ยังควรมีปุ่ม "รายงานบั๊ก" ไว้ในแอปสำหรับกรณีที่แอปไม่ค้างแต่แสดงผลเพี้ยน
ลองดูตัวอย่างการใช้ไลบรารีอย่าง Firebase Crashlytics เพื่อเก็บข้อมูลบั๊กแบบอัตโนมัติในโปรเจกต์ Android ของเรา:
// ในไฟล์ build.gradle เพิ่มคำสั่งติดตั้ง Crashlytics
dependencies {
// บรรทัดนี้คือการเรียกใช้เครื่องมือเก็บข้อมูลบั๊กของ Google
implementation 'com.google.firebase:firebase-crashlytics:18.6.0'
}
// ในโค้ดหลักของแอป เมื่อเจอเหตุการณ์พัง ให้ส่งรายงาน
try {
// โค้ดส่วนที่มีความเสี่ยงจะพัง
int result = 10 / 0;
} catch (Exception e) {
// บรรทัดนี้ส่งข้อมูลความผิดพลาดไปที่ระบบหลังบ้าน
FirebaseCrashlytics.getInstance().recordException(e);
}
คำอธิบายโค้ด: บรรทัดแรกคือการดึงเครื่องมือ Crashlytics มาใช้ในแอป ส่วนในบล็อก try-catch คือการดักจับข้อผิดพลาด ถ้าการคำนวณพัง ระบบจะส่งรายละเอียดไปที่หน้าเว็บ Dashboard (หน้าแสดงข้อมูลสรุป) ของเราทันที ผลลัพธ์คือเราจะเห็นกราฟแสดงจำนวนครั้งที่แอปพังและสาเหตุในหน้าเว็บโดยไม่ต้องรอให้ใครมาบอก
ตั้งค่าช่องทางการรับ Feedback ให้ชัดเจน
ใน Google Play Console (หน้าเว็บจัดการแอปของนักพัฒนา) เราสามารถระบุช่องทางรับ Feedback (ความคิดเห็นจากผู้ใช้งาน) ได้ แต่อย่าใส่อีเมลเปล่า ๆ เพราะเราจะเจออีเมลขยะหรือข้อความที่อ่านไม่รู้เรื่อง ให้เราทำลิงก์ไปยังฟอร์มสั้น ๆ ที่เราสร้างขึ้นมาเพื่อเก็บข้อมูลโดยเฉพาะ
ฟอร์มที่ดีควรขอข้อมูลแค่ 3 อย่างคือ ขั้นตอนที่ทำแล้วพังคืออะไร สิ่งที่คาดหวังคืออะไร และรูปถ่ายหน้าจอที่ผิดปกติ การถามข้อมูลเหล่านี้จะช่วยให้เราจำลองสถานการณ์เพื่อแก้บั๊กได้ง่ายขึ้นมาก อย่าลืมให้เขาระบุรุ่นโทรศัพท์ด้วยเพื่อดูว่าบั๊กนั้นเกิดเฉพาะเครื่องหรือไม่
ลองออกแบบฟอร์มรับแจ้งปัญหาโดยใช้ Google Forms หรือเครื่องมืออื่น โดยเน้นช่องกรอกข้อมูลที่ไม่ซับซ้อน ดังนี้:
- ชื่อบั๊กหรืออาการที่พบ (เช่น ปุ่มกดไม่ได้)
- ขั้นตอนที่ทำก่อนพัง (เช่น เปิดแอป -> กดเมนู -> แอปค้าง)
- รูปภาพประกอบ (ถ้ามี)
ผลลัพธ์ที่ได้คือ เราจะมีรายการปัญหาที่เป็นระเบียบ เก็บไว้ใน Spreadsheet (ตารางคำนวณ) หรือฐานข้อมูล ซึ่งช่วยให้เราลำดับความสำคัญได้ว่าบั๊กไหนควรแก้ก่อนหรือหลัง แทนที่จะต้องมานั่งไล่อ่านอีเมลทีละฉบับ
กำหนดสถานการณ์ทดสอบให้ผู้ใช้งาน
อย่าบอกผู้ทดสอบแค่ว่า "ลองเล่นแอปหน่อย" เพราะเขาจะแค่เปิดแล้วปิดทันที เราต้องกำหนด Test Scenario (สถานการณ์ตัวอย่างที่ให้ผู้ใช้ลองทำ) ให้ชัดเจน เช่น "ลองสร้างบัญชีผู้ใช้ด้วย Facebook" หรือ "ลองปิดเน็ตแล้วกดปุ่มโหลดข้อมูล" เพื่อให้เขาเข้าไปถึงจุดที่มักจะเกิดบั๊กจริง ๆ
การกำหนดเป้าหมายช่วยให้ผู้ทดสอบรู้สึกว่าเขามีหน้าที่ที่ชัดเจน และเป็นการกดดันให้เขาต้องใช้งานแอปอย่างละเอียดขึ้น หากเรามีฟีเจอร์ใหม่ให้ส่งคู่มือสั้น ๆ ไปพร้อมกับลิงก์แอป จะช่วยให้เราได้ข้อมูลที่มีคุณภาพกว่าการปล่อยให้เขาใช้งานแบบสุ่ม
ตัวอย่างการเขียนคู่มือทดสอบให้ผู้ใช้ทำตาม:
- ขั้นตอนที่ 1: ลองกดสมัครสมาชิกโดยไม่กรอกอีเมล (ดูว่าแอปแจ้งเตือนไหม)
- ขั้นตอนที่ 2: ลองกดปุ่มย้อนกลับในหน้าชำระเงิน (ดูว่าแอปค้างหรือไม่)
- ขั้นตอนที่ 3: เปลี่ยนภาษาในแอปเป็นภาษาอังกฤษแล้วดูว่าข้อความแสดงผลปกติไหม
ผลลัพธ์คือผู้ทดสอบจะทำงานได้ตรงจุด และเราจะได้รับรายงานบั๊กที่ครอบคลุมการใช้งานจริง ๆ มากขึ้น แทนที่จะได้แค่ความเห็นว่า "แอปสวยดี" ซึ่งใช้แก้ปัญหาทางเทคนิคไม่ได้เลย
สรุป: การทำให้แอปผ่านเกณฑ์ด้วยข้อมูลจริง
การทำ Closed Testing ไม่ใช่แค่การหาคนมาให้ครบ 12 คน แต่คือการสร้างระบบเพื่อรับ Actionable Insight (ข้อมูลที่เอาไปลงมือทำต่อได้จริง) เพื่อให้แอปของเราพร้อมที่สุดก่อนเปิดตัว การใช้เครื่องมืออัตโนมัติและการกำหนดสถานการณ์ทดสอบคือหัวใจสำคัญที่ทำให้ Google มั่นใจในแอปของเรา
ถ้าคุณเป็นมือใหม่ ลองเริ่มจากการติดตั้ง Crashlytics ลงในโปรเจกต์แรกของคุณก่อน นี่คือจุดเริ่มต้นที่ง่ายและเห็นผลที่สุด จากนั้นค่อยสร้าง Google Form ง่าย ๆ สำหรับให้เพื่อนหรือผู้ทดสอบช่วยกรอกข้อมูลเมื่อเจอจุดผิดปกติในแอป การมีข้อมูลเหล่านี้จะทำให้คุณดูเป็นนักพัฒนาที่มีความเป็นมืออาชีพ
จำไว้ว่าบั๊กคือเพื่อนที่ดีที่สุดของนักพัฒนา ยิ่งเจอเยอะในตอนทดสอบ ยิ่งดีกว่าไปเจอตอนคนใช้งานจริงเป็นหมื่นคน การเตรียมตัวดีตั้งแต่ตอนนี้จะช่วยให้คุณก้าวสู่การเป็นโปรแกรมเมอร์ที่เขียนแอปได้อย่างมีคุณภาพและมั่นใจแน่นอนในอนาคต
ที่มา: Google Play Closed Testing Bug Reports: How to Get Real Feedback — DEV Community