Calculer un score
axe DevTools Mobile fournit des données dans l'objet de résultat qui peuvent vous aider à suivre vos progrès en matière d'accessibilité au fil du temps. Ci-dessous, nous soulignerons comment calculer un score d'accessibilité à partir d'une analyse dans iOS et Android. Ce score fournira une mesure de l’évolution de l’accessibilité dans votre application. Ou utilisez ces points de données pour développer une mesure de santé qui fonctionne pour votre équipe !
L'algorithme
Fondamentalement, 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 d'analyses sérieuses
s1 = nombre d'analyses modérées
s0 = nombre de scans avec des problèmes mineurs ou sans problème
TS = Nombre total de scans
Comme vous pouvez le voir, les résultats de l’analyse sont filtrés par impact : critique, grave, modéré ou mineur. Nous définissons ces termes de la manière suivante :
- Analyses mineures = au moins un problème mineur et aucun problème modéré, grave ou critique __
- Analyses modérées = au moins un problème modéré et aucun problème grave ou critique __
- Analyses sérieuses = au moins un problème sérieux et aucun problème critique __
- Analyses critiques = au moins un problème critique
Remarque : si vous travaillez avec des données héritées, vous pouvez également voir l'impact obsolète du « Bloqueur ».
Notation d'une seule analyse
Pour illustrer le fonctionnement de cet algorithme, une seule analyse recevrait l’un des scores suivants :
0% - Au moins un crucial incident
40% - Au moins un grave problème, et aucun crucial problèmes
80% - Au moins un modéré problème, et aucun grave ou crucial problèmes
100% - Seulement mineur ou pas de problèmes
Notation d'un groupe d'analyses
Pour un groupe d’analyses, le score d’accessibilité du groupe est la moyenne des scores de chaque analyse 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ème (3)
Entrez le nombre d'analyses avec leurs scores respectifs dans notre algorithme :
0.4 * 1 + 0.8 * 2 + 4 / 9
iOS
À partir de l'objet de résultat, voici un exemple de code permettant d'extraire les dé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 }.count
Android
À partir de l'objet de résultat, voici un exemple de code permettant d'extraire les dé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 -> {}
}
}