08 February 2019

[Android Dev Tips] เดี๋ยวนี้ Google Play Console เค้ามี Internal Test ให้แล้วนะ



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

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

        โดยปกติแล้วก็จะต้องหา Deployment Tools เข้ามาช่วยเพื่อให้นักพัฒนาสามารถส่งแอปเวอร์ชันล่าสุดให้กับ Tester ได้ง่ายๆ อย่างเช่นตัวยยอดนิยมก็จะเป็น Fastlane นั่นเอง


         แต่ล่าสุดทาง Google Play ก็ได้ปล่อย Internal Test ออกมาให้ใช้งานกันในปีที่แล้ว

Internal Test มันคืออะไร?

        โดยปกติแล้วเวลา Release แอปบน Google Play มักจะหมายความว่าแอปนั้นพร้อมใช้งานแล้ว ถึงแม้ว่าเดี๋ยวนี้จะมีการแบ่งเป็น Production, Alpha และ Beta แล้ว แต่การจะ Release ไปอยู่บน Alpha หรือ Beta ก็มักจะเหมาะกับแอปที่มีความพร้อมมากพอที่จะใช้งานแล้วนั่นเอง ซึ่งเป้าหมายมักจะเป็นผู้ใช้งานที่อยู่ใน Alpha/Beta Programs มากกว่า ไม่ได้เหมาะกับ Tester ในทีมซักเท่าไรนัก

        และการ Release ขึ้นบน Google Play แบบเดิมๆนั้นจะใช้เวลานานกว่าจะโผล่เป็นเวอร์ชันใหม่อยู่บน Google Play ระยะเวลาที่เร็วที่สุดก็ยังต้องรอถึงครึ่งชั่วโมง (เอาโปรเจคไปให้ Tester นั่ง Build เองยังไวกว่า)

        แต่สำหรับ Internal Test นั้นถูกออกแบบมาเพื่อให้น้กพัฒนาส่งแอปให้กับ Tester โดยเฉพาะ เหมาะกับการ Release ชั่วคราวที่ไม่จำเป็นต้องขึ้น Production, Alpha หรือ Beta แต่อยากจะส่งให้ Tester ทดสอบให้แน่ใจก่อน


        ซึ่งข้อดีของ Internal Test ก็คือ เวลาอัปเดตเวอร์ชันใหม่ๆขึ้น Internal Test บน Google Play Console แล้ว จะโผล่ให้อัปเดตภายใน 3 นาที

        ดังนั้นจึงทำให้เหล่า Tester สามารถอัปเดตแอปทุกๆเครื่องผ่าน Google Play แล้วทดสอบแอปต่อได้ทันที

ถ้าอยากจะใช้ Internal Test มีขั้นตอนยังไงบ้าง?

        จริงๆแทบจะไม่ต้องทำอะไรวุ่นวายเลย เพราะ Internal Test นั้นเปิดให้นักพัฒนาใช้งานได้อยู่แล้ว อยู่ใน Release management > App release เหมือนกับ Production, Alpha และ Beta นั่นเอง


        แต่สิ่งที่ Internal Test นั้นแตกต่างจากอย่างอื่นก็คือผู้ที่หลงเข้ามาอ่านสามารถกำหนดได้ว่าจะให้ใครเป็น Tester ได้จากการกำหนด Gmail (ซึ่งสามารถกำหนดได้สูงสุด 100 Account)


        เมื่อกดปุ่ม CREATE LIST ก็จะมีหน้าต่างเพื่อให้ผู้ที่หลงเข้ามาอ่านสามารถใส่ Gmail ของคนที่อยากจะให้เป็น Tester ได้ หรือถ้ามีรายชื่อเป็นไฟล์ CSV อยู่แล้วก็สามารถอัปโหลดเข้ามาได้เลย


         ซึ่ง Google Play จะเก็บกลุ่มของ Tester แยกออกเป็นแต่ละชุดให้ เพื่อให้ผู้ที่หลงเข้ามาอ่านสามารถเอาไปกำหนดกับแอปตัวอื่นๆในภายหลังได้ (เผื่อว่ามีทีม Tester ขนาดใหญ่ที่แบ่งออกเป็นหลายๆทีมย่อย)


        และสามารถกำหนด Feedback Channel เพื่อให้เหล่า Tester รู้ว่าถ้าเจอปัญหาจากการทดสอบแล้วจะต้องแจ้งไปที่ช่องทางไหนด้วย

        ส่วนการ Submit ก็จะเหมือนกับแบบปกติ สามารถโยนไฟล์ .apk หรือ .aab ตามต้องการได้เลย


         และในการอัปเดตเวอร์ชันใหม่ก็จะต้องเปลี่ยน Version Code เหมือนปกติด้วยนะ

         สำหรับการ Submit ครั้งแรกนั้นจะใช้เวลาในการตรวจสอบเหมือนกับปกติ (เร็วสุดคือ 30 นาที) แต่การอัปเดตในครั้งต่อไปก็จะใช้เวลาไม่เกิน 3 นาที จนกว่าจะเริ่ม Release ไปที่ Alpha, Beta หรือ Production

ต้องเข้าร่วม Internal Test ก่อนจะเริ่มทดสอบ

         สำหรับ Gmail ที่กำหนดให้เป็น Tester นั้นจะยังไม่มีผลทันทีจนกว่าจะให้ Account เหล่านั้นเข้าร่วม Internal Test เสียก่อน


         ในการเข้าร่วม Internal Test จะต้องเข้าผ่าน Opt-in URL ที่แสดงอยู่ข้างล่างสุด โดยจะโผล่ขึ้นมาก็ต่อเมื่อมีแอปอยู่บน Google Play แล้วเท่านั้น (ถ้ายังไม่มี สามารถ Submit เข้า Internal Test ก่อนก็ได้)


         และถ้าอยากจะยกเลิกการเข้าร่วม Internal Test ก็ให้เข้ามาที่ URL เดิมอีกครั้ง


         เพียงเท่านี้ก็สามารถเปิด Google Play และเข้าไปดาวน์โหลดแอปตัวนั้นมาทดสอบได้แล้ว

เพิ่มเติม

        • แนะนำให้ใส่ Crash Reporting Tools เช่น Firebase Crash Reporting, Sentry หรือ Bugsnag เป็นต้น เพื่อช่วยให้ Track ปัญหาที่เกิดบนเครื่องของ Tester ได้ง่ายขึ้น

        • ถ้าขี้เกียจ Publish เข้า Internal Test เองทุกครั้ง แนะนำให้ลองใช้ Continuous Delivery (CD) อย่าง Jenkins ดู จะลดระยะเวลาตรงนี้ได้เยอะมาก และถ้าขี้เกียจกำหนดเลขเวอร์ชันของแอปในแต่ละครั้งก่อน Deploy ก็ลองใช้วิธี Use different build numbers for every build — automatically using a gradle script [Medium] ก็ได้นะ

สรุป

        Internal Test บน Google Play นั้นสามารถช่วยลดขั้นตอนในการอัปเดตแอปให้กับเครื่องของ Tester ทั้งหมดได้ง่าย สามารถเชื่อมต่อกับระบบ CI/CD ผ่าน Publisher API ได้อีกด้วย นอกจากจะช่วยให้ Tester ทำงานได้สะดวกมากขึ้นแล้ว ยังสามารถใช้ทดสอบ Android App Bundle หรือ Dynamic Delivery ได้อีกด้วยนะ

        กำลังปวดหัวกับการอัปเดตแอปให้กับ Tester อยู่ใช่มั้ย? ลองใช้ Internal Test ดูสิ!