Calcular una Puntuación
Axe DevTools Mobile proporciona datos en el objeto de resultado que pueden ayudar a rastrear tu progreso en accesibilidad a lo largo del tiempo. A continuación, destacaremos cómo calcular una puntuación de accesibilidad a partir de un escaneo en iOS y Android. Esta puntuación proporcionará una métrica de cómo va la accesibilidad en tu aplicación. ¡O utiliza estos puntos de datos para desarrollar una métrica de salud que funcione para tu equipo!
El Algoritmo
En esencia, recomendamos usar el mismo algoritmo que quizás hayas visto en algunos de nuestros otros productos, pero con un toque móvil (no usamos el término páginas). ¡Animamos a tu equipo a modificar el siguiente algoritmo para que funcione para ustedes!
(0.4 * s2 + 0.8 * s1 + s0) / TS
s2 = número de escaneos Serios s1 = número de escaneos Moderados s0 = número de escaneos con Problemas Menores o sin problemas TS = Total de escaneos
Como puedes ver, los resultados de los escaneos se filtran por impacto: Crítico, Serio, Moderado o Menor. Definimos estos términos de la siguiente manera:
- Escaneos Menores = al menos un problema Menor y ningún problemas Moderados, Serios o Críticos
- Escaneos Moderados = al menos un problema Moderado y ningún problemas Serios o Críticos
- Escaneos Serios = al menos un problema Serio y ningún problemas Críticos
- Escaneos Críticos = al menos un problema Crítico
Nota: si trabajas con datos heredados, también puedes ver el impacto obsoleto 'Blocker'.
Calificar un solo escaneo
Para ilustrar cómo funciona este algoritmo, un solo escaneo recibiría una de las siguientes puntuaciones:
0% - Al menos un problema crítico
40% - Al menos un problema serio , y ningún problema crítico
80% - Al menos un problema moderado , y ningún problema serio o crítico
100% - Solo problemas menores o ningún problema
Calificar un grupo de escaneos
Para un grupo de escaneos, la puntuación de accesibilidad del grupo es el promedio de las puntuaciones de cada escaneo en ese grupo. A modo de ejemplo, veamos un grupo de nueve pantallas con la siguiente distribución:
- Dos escaneos con problemas críticos (2)
- Un escaneo con un problema grave (1)
- Dos escaneos con problemas moderados (2)
- Un escaneo con un problema menor (1)
- Tres escaneos sin problemas (3)
Introduce el número de escaneos con sus respectivas puntuaciones en nuestro algoritmo:
0.4 * 1 + 0.8 * 2 + 4 / 9
iOS
Desde el objeto de resultado, aquí tienes un código de ejemplo para extraer los conteos de cada nivel de impacto:
let critical = result.failures.filter { $0.impact == .CRITICAL }.count
let serious = result.failures.filter { $0.impact == .SERIOUS }.count
let moderate = result.failures.filter { $0.impact == .MODERATE }.count
let minor = result.failures.filter { $0.impact == .MINOR }.countAndroid
Desde el objeto de resultado, aquí tienes un código de ejemplo para extraer los conteos de cada nivel de impacto:
val minorImpactCount = AtomicInteger(0)
val blockerCount = AtomicInteger(0)
val criticalCount = AtomicInteger(0)
val moderateCount = AtomicInteger(0)
val serious = AtomicInteger(0)
result?.axeResult?.axeRuleResults?.forEach {
when (it.impact) {
AxeImpact.MINOR.value -> minorImpactCount.incrementAndGet()
AxeImpact.BLOCKER.value -> blockerCount.incrementAndGet()
AxeImpact.CRITICAL.value -> criticalCount.incrementAndGet()
AxeImpact.MODERATE.value -> moderateCount.incrementAndGet()
AxeImpact.SERIOUS.value -> serious.incrementAndGet()
else -> {}
}
}