แนวคิดและการติดตั้งใช้งาน Jetpack Compose
การทดสอบการเข้าถึงช่วยให้คุณได้สัมผัสประสบการณ์การใช้งานแอปจากมุมมองของผู้ใช้และค้นหาปัญหาด้านการใช้งานที่คุณอาจมองข้ามไป การทดสอบการเข้าถึงอาจเผยให้เห็นโอกาสในการทำให้แอปมีประสิทธิภาพและหลากหลายมากขึ้นสำหรับผู้ใช้ทุกคน รวมถึงผู้ใช้ที่มีความพิการ
เอกสารนี้อธิบายแนวทางต่อไปนี้
- การทดสอบโดยใช้เครื่องมือวิเคราะห์: ใช้เครื่องมือเพื่อค้นหาโอกาสในการ ปรับปรุงการเข้าถึงของแอป
- การทดสอบอัตโนมัติ: เปิดการทดสอบการเข้าถึงใน Espresso และ Robolectric
การทดสอบโดยใช้เครื่องมือวิเคราะห์
เครื่องมือวิเคราะห์สามารถค้นหาโอกาสในการปรับปรุงการเข้าถึงที่คุณอาจมองข้ามไปในการทดสอบด้วยตนเอง
เครื่องตรวจการเข้าถึง
แอปเครื่องตรวจการเข้าถึง จะสแกนหน้าจอและแนะนำวิธีปรับปรุงการเข้าถึงของ แอป โดยใช้เฟรมเวิร์กการทดสอบการเข้าถึง และให้คำแนะนำที่เฉพาะเจาะจงหลังจากดูป้ายกำกับเนื้อหา รายการที่คลิกได้ คอนทราสต์ และอื่นๆ
เฟรมเวิร์กการทดสอบการเข้าถึงของ Android ได้รับการผสานรวมใน Android Studio เพื่อช่วยคุณค้นหาปัญหาด้านการเข้าถึงในเลย์เอาต์ หากต้องการเปิดแผง ให้คลิกปุ่มรายงานข้อผิดพลาด ! ในเครื่องมือสร้างเลย์เอาต์
รูปที่ 1 การสาธิตเครื่องตรวจการเข้าถึง
ดูข้อมูลเพิ่มเติมได้ที่แหล่งข้อมูลต่อไปนี้
UI Automator Viewer
เครื่องมือ uiautomatorviewer มี GUI ที่สะดวกในการสแกนและวิเคราะห์คอมโพเนนต์ UI ที่แสดงอยู่ในอุปกรณ์ที่ใช้ Android ในปัจจุบัน คุณสามารถใช้ UI Automator เพื่อตรวจสอบลำดับชั้นของเลย์เอาต์และดูพร็อพเพอร์ตี้ของคอมโพเนนต์ UI ที่มองเห็นได้ในเบื้องหน้าของอุปกรณ์ ข้อมูลนี้ช่วยให้คุณสร้างการทดสอบที่ละเอียดยิ่งขึ้นได้ เช่น การสร้างตัวเลือก UI ที่ตรงกับพร็อพเพอร์ตี้ที่เฉพาะเจาะจงซึ่งมองเห็นได้ เครื่องมือนี้อยู่ในไดเรกทอรี tools ของ Android SDK
ในการทดสอบการเข้าถึง เครื่องมือนี้มีประโยชน์สำหรับการแก้ไขข้อบกพร่องของปัญหาที่พบโดยใช้วิธีการทดสอบอื่นๆ ตัวอย่างเช่น หากการทดสอบด้วยตนเองเผยให้เห็นว่ามุมมองไม่มีข้อความที่อ่านออกเสียงได้ตามที่กำหนด หรือมุมมองได้รับโฟกัสในกรณีที่ไม่ควร คุณสามารถใช้เครื่องมือนี้เพื่อช่วยค้นหาแหล่งที่มาของปัญหาได้
ดูข้อมูลเพิ่มเติมเกี่ยวกับ UI Automator Viewer ได้ที่ เขียนการทดสอบอัตโนมัติด้วย UI Automator
เครื่องมือวิเคราะห์ซอร์สโค้ด
Android Studio จะแสดงคำเตือนของเครื่องมือวิเคราะห์ซอร์สโค้ดสำหรับปัญหาด้านการเข้าถึงต่างๆ และแสดงลิงก์ไปยังตำแหน่งที่เกี่ยวข้องในซอร์สโค้ด ในตัวอย่างต่อไปนี้ รูปภาพไม่มีแอตทริบิวต์ contentDescription คำอธิบายเนื้อหาที่ขาดหายไปจะส่งผลให้เกิดข้อความต่อไปนี้
[Accessibility] Missing 'contentDescription' attribute on image
รูปที่ 2 แสดงตัวอย่างลักษณะที่ข้อความนี้ปรากฏใน Android Studio
contentDescriptionการทดสอบอัตโนมัติ
แพลตฟอร์ม Android รองรับเฟรมเวิร์กการทดสอบหลายรายการ เช่น Espresso ซึ่งช่วยให้คุณสร้างและเรียกใช้การทดสอบอัตโนมัติที่ประเมินการเข้าถึงของแอปได้
Espresso
Espresso เป็นไลบรารีการทดสอบ Android ที่ออกแบบมาเพื่อให้การทดสอบ UI เป็นไปอย่างรวดเร็วและง่ายดาย โดยช่วยให้คุณโต้ตอบกับคอมโพเนนต์ UI ที่อยู่ระหว่างการทดสอบในแอปและยืนยันว่าพฤติกรรมบางอย่างเกิดขึ้นหรือตรงตามเงื่อนไขที่เฉพาะเจาะจง
หากต้องการดูภาพรวมวิดีโอของการทดสอบการเข้าถึงด้วย Espresso ให้ดูวิดีโอต่อไปนี้ตั้งแต่ 31:54 ถึง 34:19 น. การออกแบบและการทดสอบแบบครอบคลุม:การทำให้แอปเข้าถึงได้มากขึ้น - Google I/O2016
ส่วนนี้จะอธิบายวิธีเรียกใช้การตรวจสอบการเข้าถึงโดยใช้ Espresso
เปิดใช้การตรวจสอบ
คุณสามารถเปิดใช้และกำหนดค่าการทดสอบการช่วยเหลือพิเศษได้โดยใช้คลาส
AccessibilityChecks
ดังนี้
Kotlin
import androidx.test.espresso.accessibility.AccessibilityChecks
@RunWith(AndroidJUnit4::class)
@LargeTest
class MyWelcomeWorkflowIntegrationTest {
init {
AccessibilityChecks.enable()
}
}
Java
import androidx.test.espresso.accessibility.AccessibilityChecks;
@RunWith(AndroidJUnit4.class)
@LargeTest
public class MyWelcomeWorkflowIntegrationTest {
@BeforeClass
public void enableAccessibilityChecks() {
AccessibilityChecks.enable();
}
}
โดยค่าเริ่มต้น การตรวจสอบจะทำงานเมื่อคุณดำเนินการใดก็ตามที่กำหนดไว้ใน
ViewActions การตรวจสอบแต่ละครั้งจะรวมมุมมองที่ดำเนินการ รวมถึงมุมมองย่อยทั้งหมด คุณสามารถประเมินลำดับชั้นการแสดงผลทั้งหมดของหน้าจอระหว่าง
การตรวจสอบแต่ละครั้งได้โดยส่ง true ไปยัง
setRunChecksFromRootView(),
ดังที่แสดงในข้อมูลโค้ดต่อไปนี้
Kotlin
AccessibilityChecks.enable().setRunChecksFromRootView(true)
Java
AccessibilityChecks.enable().setRunChecksFromRootView(true);
ระงับผลลัพธ์บางส่วน
หลังจากที่ Espresso เรียกใช้การตรวจสอบการช่วยเหลือพิเศษในแอปแล้ว คุณอาจพบโอกาสหลายอย่างในการปรับปรุงการช่วยเหลือพิเศษของแอปที่คุณไม่สามารถจัดการได้ทันที หากต้องการหยุดการทดสอบ Espresso ไม่ให้ล้มเหลวอย่างต่อเนื่องเนื่องจากผลลัพธ์เหล่านี้ คุณสามารถละเว้นผลลัพธ์ชั่วคราวได้ เฟรมเวิร์กการทดสอบการเข้าถึง (ATF)
มีฟังก์ชันนี้โดยใช้
setSuppressingResultMatcher()
วิธี ซึ่งจะสั่งให้ Espresso ระงับผลลัพธ์ทั้งหมดที่ตรงกับนิพจน์ตัวจับคู่
ที่กำหนด
เมื่อคุณทำการเปลี่ยนแปลงในแอปที่จัดการกับด้านหนึ่งของการช่วยเหลือพิเศษ การที่ Espresso แสดงผลลัพธ์สำหรับด้านอื่นๆ ของการช่วยเหลือพิเศษให้ได้มากที่สุดจะเป็นประโยชน์ ด้วยเหตุนี้ คุณจึงควรระงับเฉพาะโอกาสที่ทราบและเฉพาะเจาะจงในการปรับปรุง
เมื่อคุณระงับผลการทดสอบการเข้าถึงชั่วคราวซึ่งวางแผนที่จะจัดการในภายหลัง สิ่งสำคัญคือต้องไม่ระงับผลลัพธ์ที่คล้ายกันโดยไม่ได้ตั้งใจ ด้วยเหตุนี้ ให้ใช้ตัวจับคู่ที่มีขอบเขตแคบ โดยเลือกตัวจับคู่เพื่อให้ Espresso ระงับผลลัพธ์ที่กำหนดก็ต่อเมื่อผลลัพธ์นั้นตรงตามการตรวจสอบการเข้าถึงแต่ละรายการต่อไปนี้
- การตรวจสอบการเข้าถึงบางประเภท เช่น การตรวจสอบขนาดเป้าหมายการสัมผัส
- การตรวจสอบการเข้าถึงที่ประเมินองค์ประกอบ UI ที่เฉพาะเจาะจง เช่น ปุ่ม
ATF กำหนดตัวจับคู่หลายรายการ
เพื่อช่วยคุณกำหนดผลลัพธ์ที่จะแสดงในการทดสอบ Espresso ตัวอย่างต่อไปนี้จะระงับผลลัพธ์ของการตรวจสอบที่เกี่ยวข้องกับคอนทราสต์สีขององค์ประกอบ TextView รายการเดียว โดยองค์ประกอบมีรหัสเป็น countTV
Kotlin
AccessibilityChecks.enable().apply {
setSuppressingResultMatcher(
allOf(
matchesCheck(TextContrastCheck::class.java),
matchesViews(withId(R.id.countTV))
)
)
}
Java
AccessibilityValidator myChecksValidator =
AccessibilityChecks.enable()
.setSuppressingResultMatcher(
allOf(
matchesCheck(TextContrastCheck.class),
matchesViews(withId(R.id.countTV))));