Sto lavorando su statistiche per build di software. Ho i dati per ogni build su pass / fail e tempo trascorso e ne generiamo ~ 200 di questi / settimana.
Il tasso di successo è facile da aggregare, posso dire che il 45% ha superato una determinata settimana. Ma vorrei aggregare anche il tempo trascorso e voglio assicurarmi di non travisare troppo i dati. Ho pensato che sarebbe meglio chiedere ai professionisti :-)
Supponiamo di avere 10 durate. Rappresentano sia i casi pass che fail. Alcuni build falliscono immediatamente, il che rende la durata insolitamente breve. Alcuni si bloccano durante i test e alla fine scadono, causando durate molto lunghe. Costruiamo prodotti diversi, quindi anche le build di successo variano tra 90 secondi e 4 ore.
Potrei ottenere un set come questo:
[50, 7812, 3014, 13400, 21011, 155, 60, 8993, 8378, 9100]
Il mio primo approccio è stato quello di ottenere il tempo mediano ordinando il set e selezionando il valore medio, in questo caso 7812 (non mi sono preoccupato della media aritmetica per i set con numero pari).
Sfortunatamente, questo sembra generare molte variazioni, dal momento che scelgo solo un dato valore. Quindi, se dovessi evidenziare questo valore, rimbalzerebbe tra i 5000-10000 secondi a seconda di quale build si trovasse nella mediana.
Quindi, per ovviare a questo, ho provato un altro approccio: rimuovere gli outlier e quindi calcolare una media sui valori rimanenti. Ho deciso di dividerlo in terzili e lavorare solo su quello centrale:
[50, 60, 155, 3014, 7812, 8378, 8993, 9100, 13400, 21011] ->
[50, 60, 155], [3014, 7812, 8378, 8993], [9100, 13400, 21011] ->
[3014, 7812, 8378, 8993]
Il motivo per cui questo mi sembra migliore è duplice:
- Non vogliamo alcuna azione sulle build più veloci, stanno già bene
- Le build più lunghe sono probabilmente indotte dal timeout e saranno sempre lì. Abbiamo altri meccanismi per rilevarli
Quindi mi sembra che questi siano i dati che sto cercando, ma sono preoccupato di aver raggiunto la fluidità rimuovendo, beh, la verità.
È controverso? Il metodo è sano?
Grazie!