Calculer un score
Axe DevTools Mobile fournit des données dans l'objet résultat qui peuvent aider à suivre vos progrès en matière d'accessibilité au fil du temps. Ci-dessous, nous mettrons en avant comment calculer un score d'accessibilité à partir d'un scan sur iOS et Android. Ce score offrira une métrique de l'évolution de l'accessibilité de votre application. Ou, utilisez ces points de données pour développer un indicateur de santé adapté à votre équipe !
L'algorithme
Au fond, nous recommandons d'utiliser le même algorithme que vous avez peut-être vu dans certains de nos autres produits, mais avec une touche mobile (nous n'utilisons pas le terme pages). Nous encourageons votre équipe à modifier l'algorithme suivant pour qu'il fonctionne pour vous !
(0.4 * s2 + 0.8 * s1 + s0) / TS
s2 = nombre de scans sérieuses s1 = nombre de scans modérées s0 = nombre de scans avec des problèmes mineurs ou sans problèmes TS = Scans totaux
Comme vous pouvez le voir, les résultats des analyses sont filtrés par impact : Critique, Sérieux, Modéré ou Mineur. Nous définissons ces termes de la manière suivante :
- Scans mineurs = au moins un problème mineur et aucun problème modéré, sérieux ou critique
- Scans modérés = au moins un problème modéré et aucun problème sérieux ou critique
- Scans sérieux = au moins un problème sérieux et aucun problème critique
- Scans critiques = au moins un problème critique
Remarque : si vous travaillez avec des données anciennes, vous pouvez également voir l'impact obsolète 'Bloqueur'.
Scorer un seul scan
Pour illustrer comment cet algorithme fonctionne, un seul scan recevrait l'un des scores suivants :
0% - Au moins un problème critique
40% - Au moins un problème sérieux , et aucun problème critique
80% - Au moins un problème modéré , et aucun problème sérieux ou problème critique
100% - Seulement des problèmes mineurs ou pas de problèmes
Scorer un groupe de scans
Pour un groupe de scans, le score d'accessibilité du groupe est la moyenne des scores de chaque scan de ce groupe. À titre d'exemple, examinons un groupe de neuf écrans avec la répartition suivante :
- Deux scans avec des problèmes critiques (2)
- Un scan avec un problème sérieux (1)
- Deux scans avec des problèmes modérés (2)
- Un scan avec un problème mineur (1)
- Trois scans sans problèmes (3)
Insérez le nombre de scans avec leurs scores respectifs dans notre algorithme :
0,4 * 1 + 0,8 * 2 + 4 / 9
iOS
À partir de l'objet résultat, voici un exemple de code pour extraire les comptes de chaque niveau d'impact :
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
À partir de l'objet résultat, voici un exemple de code pour extraire les comptes de chaque niveau d'impact :
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 -> {}
}
}