Come si superano / falliscono i test delle prestazioni?

3

Esempio:

Un certo test viene eseguito cinque volte nella build attuale, per confrontarlo con la versione 1.0, dove lo stesso test è stato eseguito anche cinque volte.

Build 1.4

22 ms, 26 ms, 23 ms, 25 ms, 20 ms

Versione 1.0

15 ms, 18 ms, 16 ms, 20 ms, 17 ms

Domanda

Il requisito è che Build 1.4 non sia peggio della versione 1.0.

Come potrei testarlo? Ho visto diversi metodi usati, tra cui il semplice confronto medio e T-Test statistici (assumendo le normali distribuzioni).

Nessuno degli strumenti, vale a dire i framework di test e i sistemi CI, ho trovato qualcosa che aiuti a calcolare e superare / fallire tali test. Perché? I test delle prestazioni sembrano essere popolari, quindi come possono approvarli o rifiutarli?

Spesso è troppo impraticabile o addirittura impossibile entrare e determinare manualmente intervalli o distribuzioni accettabili per ogni test.

    
posta makhdumi 14.05.2015 - 17:02
fonte

3 risposte

6

Performance testing seems to be popular

È popolare in teoria. In pratica, ho visto solo una manciata di test delle prestazioni automatizzati eseguiti e sono stati eseguiti a casaccio.

How would I test that Build 1.4 is a pass/fail for this test?

Definisci un criterio pass / fail. Se è necessario che i test siano coerenti, definire alcuni criteri e misure di errore. Se hai bisogno che i test siano almeno X veloci (dove X è idealmente una metrica raccolta dai test di usabilità), allora fallo. Se non è X peggiore dell'ultima build (non consigliato nei test automatici, poiché richiede memoria delle versioni precedenti), fallo.

È banale scrivere il codice di supporto per gestire misure e / o statistiche. Ma hai ancora bisogno di definire i criteri, proprio come qualsiasi altro test. È come chiedere di definire automaticamente i criteri pass / fail per le regole di business: i computer fanno un lavoro pessimo, dal momento che tutto quello che sanno sulle regole di business è quello che gli dici.

    
risposta data 14.05.2015 - 17:17
fonte
3

La risposta alla tua domanda è altamente specifica del caso. Sembri già a conoscenza delle varie tecniche di test delle prestazioni.

Tu devi determinare quali sono le tue misurazioni previste. Può essere accettabile iniziare dicendo "la nostra misurazione prevista è la misurazione corrente" e quindi semplicemente tracciare le modifiche nel tempo. Se è "impraticabile o addirittura impossibile" ottenere un valore atteso, allora non vedo come la misurazione della performance sarebbe significativa.

    
risposta data 14.05.2015 - 17:13
fonte
2

Non posso promettere che questo sia ottimale, solo che è come ho gestito i test delle prestazioni con moderato successo.

Test di integrazione "reali" abbastanza consistenti vengono eseguiti con un timer, N ripetizioni per test. Conserva i risultati in un database. Periodicamente una serie di risultati viene contrassegnata come linea di galleggiamento e le esecuzioni successive vengono confrontate con quella, ad es. per una versione, o quando l'hardware di test cambia, o quando abbiamo implementato qualcosa di furbo e tutto gira più veloce.

Il numero magico usato per il confronto è il minimo del set di risultati. Un errore si verifica se è maggiore di un numero fisso (mezzo secondo circa) ed è superiore di k% più lento della linea di galleggiamento corrente.

Il tempo minimo sembra essere piuttosto stabile, ma poiché i test delle prestazioni vengono eseguiti su una macchina Windows, il tempo peggiore salta in tutto il negozio. Periodicamente l'esecuzione del test si scontra con una scansione antivirus o aggiornamenti di Windows, ad esempio. Di conseguenza, una fase di test dei tentativi falliti automatizzati viene eseguita alla fine per cercare di eliminare alcuni errori difficili da riprodurre.

La sintonizzazione manuale coinvolta nel k% e il tempo fisso è sfortunata. Sospetto che una soluzione più strong implichi la ricerca di tendenze statisticamente significative e l'innesco di un fallimento basato su una metrica probabilistica. Tuttavia, quanto sopra è semplice ma cattura ancora le regressioni delle prestazioni.

    
risposta data 21.06.2015 - 23:49
fonte

Leggi altre domande sui tag