โครงการโอเพนซอร์ส 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:พื้นฐานการทดสอบโดยใช้ตัวอย่างที่ให้ไว้
ดูข้อมูลเกี่ยวกับการทดสอบเบื้องต้นก่อนส่งที่ใช้ได้ผ่านฮุกของรีโป ฮุกเหล่านี้สามารถใช้เรียกใช้โปรแกรมตรวจไวยากรณ์ ตรวจสอบการจัดรูปแบบ และเรียกใช้การทดสอบหน่วยก่อนดำเนินการต่อ เช่น การอัปโหลดการคอมมิต ฮุกเหล่านี้จะปิดอยู่โดยค่าเริ่มต้น ดูข้อมูลเพิ่มเติมได้ที่AOSP Preupload Hooks
อ่านเพิ่มเติมเกี่ยวกับการบันทึกได้ที่หัวข้อทําความเข้าใจการบันทึก
หากต้องการทําความเข้าใจวิธีแก้ไขข้อบกพร่องโค้ด Android โปรดดูหัวข้อแก้ไขข้อบกพร่องโค้ดแพลตฟอร์ม Android ดั้งเดิม