โครงการโอเพนซอร์ส Android (AOSP) มีเครื่องมือและชุดทดสอบหลายชุดสําหรับการทดสอบส่วนต่างๆ ของการติดตั้งใช้งาน ก่อนใช้หน้าต่างๆ ในส่วนนี้ คุณควรทำความคุ้นเคยกับคําศัพท์ต่อไปนี้
- อุปกรณ์ที่ใช้ร่วมกับ Android ได้
- อุปกรณ์ที่เรียกใช้แอปของบุคคลที่สามที่เขียนโดยนักพัฒนาแอปบุคคลที่สามได้โดยใช้ Android SDK และ NDK อุปกรณ์ที่ใช้งานร่วมกับ Android ได้ต้องเป็นไปตามข้อกำหนดของเอกสารนิยามความเข้ากันได้ (CDD) และผ่านชุดเครื่องมือทดสอบความเข้ากันได้ (CTS) อุปกรณ์ที่เข้ากันได้กับ Android จะมีสิทธิ์เข้าร่วมในระบบนิเวศของ Android ซึ่งรวมถึงสิทธิ์ในการขอใบอนุญาตใช้ Google Play, สิทธิ์ในการขอใบอนุญาตใช้ชุดแอปและ API ของ Google Mobile Services (GMS) และสิทธิ์ในการใช้เครื่องหมายการค้า Android ทุกคนสามารถใช้ซอร์สโค้ด Android ได้ แต่อุปกรณ์ต้องใช้งานร่วมกับ Android ได้จึงจะถือว่าเป็นส่วนหนึ่งของระบบนิเวศ Android
- อาร์ติแฟกต์
- บันทึกที่เกี่ยวข้องกับบิลด์ที่ช่วยให้แก้ปัญหาได้ในพื้นที่
- เอกสารนิยามความเข้ากันได้ (CDD)
- เอกสารที่ระบุข้อกำหนดด้านซอฟต์แวร์และฮาร์ดแวร์สำหรับอุปกรณ์ที่เข้ากันได้กับ Android
- ชุดทดสอบความเข้ากันได้ (CTS)
ชุดทดสอบระดับเชิงพาณิชย์แบบไม่มีค่าใช้จ่าย ซึ่งสามารถดาวน์โหลดเป็นไฟล์ไบนารีหรือเป็นซอร์สโค้ดใน AOSP CTS คือชุดการทดสอบหน่วยที่ออกแบบมาเพื่อผสานรวมเข้ากับเวิร์กโฟลว์ประจำวัน วัตถุประสงค์ของ CTS คือเพื่อเปิดเผยความเข้ากันไม่ได้ และตรวจสอบว่าซอฟต์แวร์ยังคงเข้ากันได้ตลอดกระบวนการพัฒนา
การทดสอบ CTS และการทดสอบแพลตฟอร์มไม่ได้แยกกัน หลักเกณฑ์ทั่วไปมีดังนี้
- หากการทดสอบยืนยันความถูกต้องของฟังก์ชันหรือลักษณะการทํางานของ API เฟรมเวิร์ก และควรบังคับใช้การทดสอบกับพาร์ทเนอร์ OEM การทดสอบนั้นควรอยู่ใน CTS
- หากการทดสอบมีจุดประสงค์เพื่อตรวจหาการถดถอยระหว่างการพัฒนาแพลตฟอร์ม และอาจต้องใช้สิทธิ์ที่มีสิทธิ์ในการดำเนินการ และอาจขึ้นอยู่กับรายละเอียดการใช้งาน (ตามที่เผยแพร่ใน AOSP) การทดสอบนั้นควรเป็นการทดสอบแพลตฟอร์ม
- บริการของ Google Mobile (GMS)
ชุดแอปและ API ของ Google ที่ติดตั้งล่วงหน้าในอุปกรณ์ได้
- GoogleTest (GTest)
เฟรมเวิร์กการทดสอบและการจำลอง C++ โดยปกติแล้วไบนารีของ GTest จะเข้าถึงเลเยอร์การแยกชั้นระดับล่างหรือดำเนินการ IPC ดิบกับบริการต่างๆ ของระบบ โดยทั่วไปแล้ว แนวทางการทดสอบสำหรับ GTest จะเชื่อมโยงกับบริการที่ทดสอบอย่างใกล้ชิด CTS มีเฟรมเวิร์ก GTest
- การทดสอบการวัดคุม
สภาพแวดล้อมการเรียกใช้การทดสอบพิเศษที่เปิดใช้งานโดยคําสั่ง
am instrument
ซึ่งจะรีสตาร์ทและเริ่มต้นกระบวนการของแอปเป้าหมายด้วยบริบทแอปพื้นฐาน และเริ่มเธรดเครื่องมือวัดผลภายในเครื่องเสมือนของกระบวนการแอป CTS มีการทดสอบการใช้เครื่องมือ- Logcat
เครื่องมือบรรทัดคำสั่งที่สร้างบันทึกข้อความของระบบ ซึ่งรวมถึงสแต็กเทรซเมื่ออุปกรณ์แสดงข้อผิดพลาดและข้อความที่คุณเขียนจากแอปด้วยคลาส
Log
- การบันทึก
การใช้บันทึกเพื่อติดตามเหตุการณ์ของระบบคอมพิวเตอร์ เช่น ข้อผิดพลาด การบันทึกใน Android มีความซับซ้อนเนื่องจากมีการใช้มาตรฐานหลายรายการรวมกันในเครื่องมือ Logcat
- postsubmit test
การทดสอบ Android ที่ดำเนินการเมื่อมีการคอมมิตแพตช์ใหม่ไปยังสาขาเคอร์เนลทั่วไป เมื่อป้อน
aosp_kernel
เป็นชื่อสาขาบางส่วน คุณจะเห็นรายการสาขาเคอร์เนลที่มีผลการค้นหา ตัวอย่างเช่น ผลลัพธ์สำหรับandroid-mainline
ดูได้ที่ https://ci.android.com/builds/branches/aosp_kernel-common-android-mainline/grid- การทดสอบก่อนส่ง
การทดสอบที่ใช้เพื่อป้องกันไม่ให้มีการนำข้อผิดพลาดมาไว้ในเคอร์เนลทั่วไป
- Trade Federation
หรือที่เรียกว่า Tradefed ซึ่งเป็นเฟรมเวิร์กการทดสอบอย่างต่อเนื่องที่ออกแบบมาสำหรับการทดสอบในอุปกรณ์ Android เช่น ใช้ Tradefed เพื่อเรียกใช้ชุดเครื่องมือทดสอบความเข้ากันได้และการทดสอบชุดเครื่องมือทดสอบของผู้ให้บริการ
- ชุดทดสอบของผู้ให้บริการ (VTS)
ชุดความสามารถที่ครอบคลุมสำหรับการทดสอบ Android, การส่งเสริมกระบวนการพัฒนาที่ขับเคลื่อนโดยทดสอบ และการทำให้การทดสอบเลเยอร์การแยกแยะฮาร์ดแวร์ (HAL) และการทดสอบเคอร์เนลระบบปฏิบัติการเป็นแบบอัตโนมัติ
ประเภทการทดสอบแพลตฟอร์ม
การทดสอบแพลตฟอร์มมักจะโต้ตอบกับบริการของระบบ Android หรือเลเยอร์ HAL อย่างน้อย 1 รายการ ทดสอบฟังก์ชันการทำงานของสิ่งที่ทดสอบ และยืนยันความถูกต้องของผลลัพธ์การทดสอบ การทดสอบแพลตฟอร์มอาจมีลักษณะดังนี้
- (ประเภทที่ 1) ทดสอบ API ของเฟรมเวิร์กโดยใช้เฟรมเวิร์ก Android API ที่ใช้งานอยู่อาจรวมถึง API ต่อไปนี้
- API สาธารณะที่มีไว้สำหรับแอปของบุคคลที่สาม
- API ที่ซ่อนไว้มีไว้สําหรับแอปที่มีสิทธิ์ ซึ่งได้แก่ API ของระบบหรือ API ส่วนตัว (
@hide
หรือprotected
,package private
)
- (ประเภท 2) เรียกใช้บริการระบบ Android โดยใช้ Binder ดิบหรือพร็อกซี IPC โดยตรง
- (ประเภท 3) โต้ตอบกับ HAL โดยตรงโดยใช้ API ระดับต่ำหรืออินเทอร์เฟซ IPC
การทดสอบประเภทที่ 1 และ 2 มักเป็นการทดสอบเครื่องมือวัด ส่วนการทดสอบประเภทที่ 3 มักเป็นการทดสอบ GTest
สิ่งต่อไปที่ควรทำ
ต่อไปนี้คือรายการเอกสารที่คุณอ่านเพื่อดูรายละเอียดเพิ่มเติมได้
หากไม่เคยศึกษาสถาปัตยกรรม Android โปรดดูภาพรวมสถาปัตยกรรม
หากคุณกำลังสร้างอุปกรณ์ที่เข้ากันได้กับ Android โปรดดูภาพรวมโปรแกรมความเข้ากันได้กับอุปกรณ์ Android
หากต้องการผสานรวมการทดสอบการวัดคุม การทดสอบฟังก์ชันการทำงาน การทดสอบเมตริก และการทดสอบโฮสต์ JAR เข้ากับบริการทดสอบอย่างต่อเนื่องของแพลตฟอร์ม โปรดดูเวิร์กโฟลว์การพัฒนาการทดสอบ
หากต้องการตรวจหาและเพิ่มความแข็งแกร่งให้กับอุปกรณ์เพื่อป้องกันช่องโหว่ โปรดดูการทดสอบความปลอดภัย
ดูข้อมูลเกี่ยวกับการทดสอบการติดตั้งใช้งาน HAL และเคอร์เนลได้ที่ชุดทดสอบของผู้ให้บริการ (VTS) และโครงสร้างพื้นฐาน
สําหรับการทดสอบแอป โปรดอ่านพื้นฐานของการทดสอบแอป Android และทําAndroid ขั้นสูงใน Kotlin 05.1:พื้นฐานการทดสอบโดยใช้ตัวอย่างที่ให้ไว้
ดูข้อมูลเกี่ยวกับการทดสอบเบื้องต้นก่อนส่งที่ใช้ได้ผ่านฮุกของ repo ฮุกเหล่านี้สามารถใช้เรียกใช้โปรแกรมตรวจไวยากรณ์ ตรวจสอบการจัดรูปแบบ และเรียกใช้การทดสอบหน่วยก่อนดำเนินการต่อ เช่น การอัปโหลดการคอมมิต โดยระบบจะปิดใช้ฮุกเหล่านี้โดยค่าเริ่มต้น ดูข้อมูลเพิ่มเติมได้ที่AOSP Preupload Hooks
อ่านเพิ่มเติมเกี่ยวกับการบันทึกได้ที่หัวข้อทําความเข้าใจการบันทึก
หากต้องการทําความเข้าใจวิธีแก้ไขข้อบกพร่องโค้ด Android โปรดดูหัวข้อแก้ไขข้อบกพร่องโค้ดแพลตฟอร์ม Android ดั้งเดิม