สิ่งที่ควรทดสอบจะขึ้นอยู่กับปัจจัยต่างๆ เช่น ประเภทแอป ทีมพัฒนา จำนวนโค้ดเดิม และสถาปัตยกรรมที่ใช้ ส่วนต่อไปนี้จะกล่าวถึงสิ่งที่ผู้เริ่มต้นอาจต้องพิจารณาเมื่อวางแผนสิ่งที่จะทดสอบในแอป
การจัดระเบียบไดเรกทอรีทดสอบ
โปรเจ็กต์ทั่วไปใน Android Studio จะมีไดเรกทอรี 2 ไดเรกทอรีที่มีชุดทดสอบ ขึ้นอยู่กับสภาพแวดล้อมการเรียกใช้ จัดระเบียบการทดสอบในไดเรกทอรีต่อไปนี้ตามที่อธิบายไว้
- ไดเรกทอรี
androidTest
ควรมีการทดสอบที่ทำงานบนอุปกรณ์จริงหรือเสมือนจริง การทดสอบดังกล่าวรวมถึงการทดสอบการผสานรวม การทดสอบจากต้นทางถึงปลายทาง และการทดสอบอื่นๆ ที่ JVM เพียงอย่างเดียวไม่สามารถตรวจสอบฟังก์ชันการทำงานของแอปได้ test
ไดเรกทอรีควรมีการทดสอบที่ทำงานบนเครื่องของคุณ เช่น การทดสอบ 1 หน่วย ซึ่งแตกต่างจากข้างต้นตรงที่อาจเป็นการทดสอบที่ทํางานใน JVM ในพื้นที่
การทดสอบ 1 หน่วยที่สําคัญ
เมื่อทําตามแนวทางปฏิบัติแนะนํา คุณควรใช้การทดสอบหน่วยในกรณีต่อไปนี้
- การทดสอบหน่วยสําหรับ ViewModel หรือตัวนําเสนอ
- การทดสอบหน่วยสําหรับเลเยอร์ข้อมูล โดยเฉพาะที่เก็บ เลเยอร์ข้อมูลส่วนใหญ่ควรเป็นแพลตฟอร์มที่ไม่ขึ้นอยู่กับแพลตฟอร์ม ซึ่งจะช่วยให้การทดสอบใช้ข้อมูลจำลองแทนที่โมดูลฐานข้อมูลและแหล่งข้อมูลระยะไกลในการทดสอบได้ ดูคู่มือเกี่ยวกับการใช้ Test Double ใน Android
- การทดสอบหน่วยสําหรับเลเยอร์อื่นๆ ที่ไม่ขึ้นอยู่กับแพลตฟอร์ม เช่น เลเยอร์โดเมน เช่นเดียวกับ Use Case และอินเทอร์แอกเตอร์
- การทดสอบหน่วยสําหรับคลาสยูทิลิตี เช่น การจัดการสตริงและคณิตศาสตร์
การทดสอบกรณีสุดโต่ง
การทดสอบหน่วยควรมุ่งเน้นทั้งกรณีปกติและกรณีขอบ กรณีขอบเขตคือสถานการณ์ที่พบไม่บ่อยซึ่งผู้ทดสอบที่เป็นมนุษย์และการทดสอบขนาดใหญ่มีแนวโน้มที่จะไม่พบ ตัวอย่างมีดังนี้
- การดำเนินการทางคณิตศาสตร์โดยใช้จำนวนลบ ศูนย์ และเงื่อนไขขอบเขต
- ข้อผิดพลาดทั้งหมดที่อาจเกิดขึ้นในการเชื่อมต่อเครือข่าย
- ข้อมูลที่เสียหาย เช่น JSON ที่มีรูปแบบไม่ถูกต้อง
- การจําลองพื้นที่เก็บข้อมูลเต็มเมื่อบันทึกลงในไฟล์
- ออบเจ็กต์ที่สร้างใหม่ในระหว่างกระบวนการ (เช่น กิจกรรมเมื่อหมุนอุปกรณ์)
การทดสอบ 1 หน่วยที่ควรหลีกเลี่ยง
คุณควรหลีกเลี่ยงการทดสอบหน่วยบางรายการเนื่องจากมีคุณค่าต่ำ
- การทดสอบที่ยืนยันการทํางานของเฟรมเวิร์กหรือไลบรารีที่ถูกต้อง ไม่ใช่โค้ดของคุณ
- จุดแรกเข้าของเฟรมเวิร์ก เช่น กิจกรรม ฟragment หรือบริการ ไม่ควรมีตรรกะทางธุรกิจ คุณจึงไม่ควรให้ความสําคัญกับการทดสอบหน่วย การทดสอบหน่วยสําหรับกิจกรรมไม่ค่อยมีประโยชน์ เนื่องจากจะครอบคลุมโค้ดเฟรมเวิร์กเป็นส่วนใหญ่และต้องมีการตั้งค่าที่ซับซ้อนมากขึ้น การทดสอบที่มีเครื่องมือวัด เช่น การทดสอบ UI จะครอบคลุมคลาสเหล่านี้ได้
การทดสอบ UI
การทดสอบ UI ที่คุณควรใช้มีหลายประเภท ดังนี้
- การทดสอบ UI ของหน้าจอจะตรวจสอบการโต้ตอบที่สำคัญของผู้ใช้ในหน้าจอเดียว โดยจะทําการต่างๆ เช่น การคลิกปุ่ม การพิมพ์ในแบบฟอร์ม และการตรวจสอบสถานะที่มองเห็นได้ คลาสทดสอบ 1 คลาสต่อหน้าจอถือเป็นจุดเริ่มต้นที่ดี
- การทดสอบขั้นตอนของผู้ใช้หรือการทดสอบการนําทาง ซึ่งครอบคลุมเส้นทางที่พบบ่อยที่สุด การทดสอบเหล่านี้จะจำลองผู้ใช้ที่ไปยังส่วนต่างๆ ของหน้าเว็บ ซึ่งเป็นการทดสอบง่ายๆ ที่มีประโยชน์ในการตรวจสอบข้อขัดข้องที่เกิดขึ้นขณะรันไทม์ในการเริ่มต้น
การทดสอบอื่นๆ
นอกจากนี้ยังมีการทดสอบเฉพาะทางอื่นๆ เช่น การทดสอบภาพหน้าจอ การทดสอบประสิทธิภาพ และการทดสอบด้วย Monkey นอกจากนี้ คุณยังจัดหมวดหมู่การทดสอบตามวัตถุประสงค์ เช่น การถดถอย การช่วยเหลือพิเศษ และความเข้ากันได้ได้ด้วย
อ่านเพิ่มเติม
หากต้องการทดสอบแบบแยกส่วน บ่อยครั้งที่คุณต้องแทนที่การพึ่งพาของสิ่งที่จะทดสอบด้วยการพึ่งพาจำลองหรือจำลอง ซึ่งโดยทั่วไปเรียกว่า "Test Doubles" อ่านต่อเกี่ยวกับข้อมูลดังกล่าวได้ในการใช้ Test Doubles ใน Android
หากต้องการดูวิธีสร้างการทดสอบหน่วยและการทดสอบ UI โปรดดูTesting codelabs