Calcola un punteggio
axe DevTools Mobile fornisce dati nell'oggetto risultato che possono aiutarti a monitorare i progressi dell'accessibilità nel tempo. Di seguito spiegheremo come calcolare un punteggio di accessibilità da una scansione in iOS e Android. Questo punteggio fornirà una metrica per valutare l'accessibilità della tua applicazione. Oppure usa questi punti dati per sviluppare una metrica sulla salute adatta al tuo team!
L'algoritmo
In sostanza, consigliamo di utilizzare lo stesso algoritmo che potresti aver visto in alcuni dei nostri altri prodotti, ma con una versione per dispositivi mobili (non utilizziamo il termine pagine). Incoraggiamo il tuo team a modificare il seguente algoritmo per adattarlo alle vostre esigenze!
(0,4 * s2 + 0,8 * s1 + s0) / TS
s2 = numero di scansioni gravi
s1 = numero di scansioni moderate
s0 = numero di scansioni con problemi minori o assenti
TS = Scansioni totali
Come puoi vedere, i risultati della scansione sono filtrati in base all'impatto: critico, grave, moderato o minore. Definiamo questi termini nel modo seguente:
- Scansioni minori = almeno un problema minore e nessun problema moderato, grave o critico __
- Scansioni moderate = almeno un problema moderato e nessun problema grave o critico __
- Scansioni gravi = almeno un problema serio e nessun problema critico __
- Scansioni critiche = almeno un problema critico
Nota: se si lavora con dati legacy, si potrebbe notare anche l'impatto obsoleto "Blocker".
Valutazione di una singola scansione
Per illustrare il funzionamento di questo algoritmo, una singola scansione riceverebbe uno dei seguenti punteggi:
0% - Almeno uno critico problema
40% - Almeno uno serio problema, e no critico problemi
80% - Almeno uno moderato problema, e no serio o critico problemi
100% - Soltanto minore o nessun problema
Punteggio di un gruppo di scansioni
Per un gruppo di scansioni, il punteggio di accessibilità del gruppo è la media dei punteggi di ciascuna scansione in quel gruppo. A titolo di esempio, prendiamo in esame un gruppo di nove schermate con la seguente ripartizione:
- Due scansioni con problemi critici (2)
- Una scansione con un problema serio (1)
- Due scansioni con problemi moderati (2)
- Una scansione con un problema minore (1)
- Tre scansioni senza problemi (3)
Inserisci il numero di scansioni con i rispettivi punteggi nel nostro algoritmo:
0.4 * 1 + 0.8 * 2 + 4 / 9
iOS
Dall'oggetto risultato, ecco un esempio di codice per estrarre i conteggi di ciascun livello di impatto:
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
Dall'oggetto risultato, ecco un esempio di codice per estrarre i conteggi di ciascun livello di impatto:
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 -> {}
}
}