แนวคิดและการใช้งาน Jetpack Compose
การทดสอบการช่วยเหลือพิเศษช่วยให้คุณได้สัมผัสประสบการณ์การใช้งานแอปจากมุมมองของผู้ใช้ และค้นหาปัญหาด้านความสามารถในการใช้งานที่คุณอาจพลาดไป การทดสอบการช่วยเหลือพิเศษอาจเผยให้เห็นโอกาสในการทำให้แอปมีประสิทธิภาพและใช้งานได้หลากหลายมากขึ้นสำหรับผู้ใช้ทุกคน รวมถึงผู้พิการ
เอกสารนี้อธิบายแนวทางต่อไปนี้
- การทดสอบโดยใช้เครื่องมือวิเคราะห์: ใช้เครื่องมือเพื่อค้นหาโอกาสในการ ปรับปรุงการช่วยเหลือพิเศษของแอป
- การทดสอบอัตโนมัติ: เปิดการทดสอบการช่วยเหลือพิเศษใน Espresso และ Robolectric
การทดสอบโดยใช้เครื่องมือวิเคราะห์
เครื่องมือวิเคราะห์จะช่วยค้นพบโอกาสในการปรับปรุงการช่วยเหลือพิเศษที่คุณอาจพลาดไปเมื่อทดสอบด้วยตนเอง
เครื่องตรวจการเข้าถึง
แอปเครื่องตรวจการเข้าถึงจะสแกนหน้าจอและแนะนำวิธีปรับปรุงการช่วยเหลือพิเศษของแอป เครื่องตรวจการเข้าถึงใช้เฟรมเวิร์กการทดสอบการช่วยเหลือพิเศษ และให้คำแนะนำที่เฉพาะเจาะจงหลังจากดูป้ายกำกับเนื้อหา รายการที่คลิกได้ คอนทราสต์ และอื่นๆ
เราได้ผสานรวมเฟรมเวิร์กการทดสอบการช่วยเหลือพิเศษของ Android เข้ากับ Android Studio เพื่อ ช่วยคุณค้นหาปัญหาด้านการช่วยเหลือพิเศษในเลย์เอาต์ หากต้องการเปิดแผง ให้ คลิกปุ่มรายงานข้อผิดพลาด ! ในเครื่องมือสร้างเลย์เอาต์
รูปที่ 1 การสาธิตเครื่องตรวจการเข้าถึง
ดูข้อมูลเพิ่มเติมได้ที่แหล่งข้อมูลต่อไปนี้
UI Automator Viewer
เครื่องมือ uiautomatorviewer มี GUI ที่สะดวกในการสแกนและวิเคราะห์คอมโพเนนต์ UI ที่แสดงอยู่ในอุปกรณ์ที่ใช้ Android คุณใช้ UI
Automator เพื่อตรวจสอบลำดับชั้นของเลย์เอาต์และดูพร็อพเพอร์ตี้ของคอมโพเนนต์ UI
ที่มองเห็นได้ในเบื้องหน้าของอุปกรณ์ ข้อมูลนี้ช่วยให้คุณสร้างการทดสอบที่ละเอียดยิ่งขึ้นได้ เช่น การสร้างตัวเลือก UI ที่ตรงกับพร็อพเพอร์ตี้ที่เฉพาะเจาะจงซึ่งมองเห็นได้ เครื่องมือนี้อยู่ในtools
ไดเรกทอรีของ Android SDK
ในการทดสอบการช่วยเหลือพิเศษ เครื่องมือนี้มีประโยชน์สำหรับการแก้ไขข้อบกพร่องที่พบโดยใช้ วิธีการทดสอบอื่นๆ เช่น หากการทดสอบด้วยตนเองพบว่า View ไม่มีข้อความที่อ่านได้ตามที่ต้องการ หรือ View ได้รับโฟกัสเมื่อไม่ควรได้รับ คุณสามารถใช้เครื่องมือนี้เพื่อช่วยค้นหาแหล่งที่มาของปัญหาได้
ดูข้อมูลเพิ่มเติมเกี่ยวกับ UI Automator Viewer ได้ที่เขียนการทดสอบอัตโนมัติด้วย UI Automator
Lint
Android Studio จะแสดงคำเตือน Lint สำหรับปัญหาด้านการช่วยเหลือพิเศษต่างๆ และแสดง
ลิงก์ไปยังตำแหน่งที่เกี่ยวข้องในซอร์สโค้ด ในตัวอย่างต่อไปนี้ รูปภาพไม่มีแอตทริบิวต์ contentDescription คำอธิบายเนื้อหาที่ขาดหายไป
จะทำให้เกิดข้อความต่อไปนี้
[Accessibility] Missing 'contentDescription' attribute on image
รูปที่ 2 แสดงตัวอย่างลักษณะที่ข้อความนี้ปรากฏใน Android Studio
contentDescriptionที่ขาดหายไปการทดสอบอัตโนมัติ
แพลตฟอร์ม Android รองรับเฟรมเวิร์กการทดสอบหลายรายการ เช่น Espresso ซึ่งช่วยให้คุณสร้างและเรียกใช้การทดสอบอัตโนมัติที่ประเมินการช่วยเหลือพิเศษของแอปได้
เอสเพรสโซ
Espresso เป็นคลังการทดสอบ Android ที่ออกแบบมาเพื่อ ทำให้การทดสอบ UI เป็นไปอย่างรวดเร็วและง่ายดาย ซึ่งช่วยให้คุณโต้ตอบกับคอมโพเนนต์ UI ที่อยู่ระหว่างการทดสอบในแอป และยืนยันว่าพฤติกรรมบางอย่างเกิดขึ้นหรือตรงตามเงื่อนไขที่เฉพาะเจาะจง
หากต้องการดูภาพรวมแบบวิดีโอของการทดสอบการช่วยเหลือพิเศษด้วย Espresso โปรดดูวิดีโอต่อไปนี้ตั้งแต่ช่วงนาทีที่ 31:54 ถึง 34:19: Inclusive design and testing: Making your app more accessible - Google I/O 2016
ส่วนนี้จะอธิบายวิธีเรียกใช้การตรวจสอบการช่วยเหลือพิเศษโดยใช้ 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 ล้มเหลวอย่างต่อเนื่องเนื่องจากผลลัพธ์เหล่านี้ คุณสามารถละเว้นผลลัพธ์ชั่วคราวได้ Accessibility Test
Framework (ATF) มีฟังก์ชันนี้โดยใช้เมธอด
setSuppressingResultMatcher()
ซึ่งจะสั่งให้ Espresso ระงับผลลัพธ์ทั้งหมดที่ตรงกับนิพจน์ Matcher ที่ระบุ
เมื่อคุณทำการเปลี่ยนแปลงในแอปเพื่อแก้ไขปัญหาด้านการช่วยเหลือพิเศษด้านใดด้านหนึ่ง Espresso จะแสดงผลลัพธ์สำหรับด้านอื่นๆ ของการช่วยเหลือพิเศษให้ได้มากที่สุด ด้วยเหตุนี้ คุณจึงควรระงับเฉพาะโอกาสที่ทราบ ในการปรับปรุง
เมื่อระงับผลการทดสอบการช่วยเหลือพิเศษชั่วคราวซึ่งคุณวางแผนที่จะแก้ไขในภายหลัง คุณต้องระมัดระวังไม่ให้ระงับผลการทดสอบที่คล้ายกันโดยไม่ตั้งใจ ด้วยเหตุนี้ ให้ใช้ตัวเทียบที่กำหนดขอบเขตแคบๆ โดยเลือกMatcher เพื่อให้ Espresso ระงับผลลัพธ์ที่กำหนดก็ต่อเมื่อเป็นไปตามการตรวจสอบการช่วยเหลือพิเศษแต่ละรายการ ต่อไปนี้
- การตรวจสอบการช่วยเหลือพิเศษบางประเภท เช่น การตรวจสอบขนาดเป้าหมายการสัมผัส
- การตรวจสอบการช่วยเหลือพิเศษที่ประเมินองค์ประกอบ UI ที่เฉพาะเจาะจง เช่น ปุ่ม
ATF กำหนด Matcher หลายรายการ
เพื่อช่วยคุณกำหนดผลลัพธ์ที่จะแสดงในการทดสอบ 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))));