Il monitoraggio / profiling delle prestazioni del software può essere automatizzato in misura elevata, come nel test delle unità?

7

Il test unitario consiste in un codice eseguibile che esercita una determinata funzionalità e quindi asserisce alcune condizioni. I risultati sono Pass o Fail.

  • L'obiettivo è sempre quello di superare tutti i test.

La profilazione delle prestazioni del software di solito richiede l'aiuto di alcuni strumenti di test / profilazione automatizzati, ma i risultati sembrano richiedere sempre un'interpretazione umana, perché:

  • Non ci sono obiettivi chiari pass / fail.
  • Ci sono molte sfaccettature (dimensioni) nelle prestazioni del software, e bisogna considerare il profilo generale delle prestazioni (l'immagine completa, nessun gioco di parole) per interpretare il risultato e prendere una decisione.
  • Ci sono molte insidie nel software di profilazione, come i risultati distorti dal sovraccarico del profilo, le interazioni non intenzionali tra i moduli o il sistema operativo, i casi di test non rappresentativi delle esigenze dei clienti.

Ora che i test unitari sono stati annunciati come un importante passo avanti nella promozione della credibilità dell'ingegneria del software, è possibile trovare il prossimo proiettile d'argento per i problemi di prestazioni del software?

Precisione su "automatizzato":

  • Ciò che intendo è che i test unitari scritti molto tempo fa (e aggiornati man mano che il software viene sviluppato) rimarranno utili a tempo indeterminato. Durante la parte migliore della vita di produzione del software, non c'è bisogno di modificare i test delle unità se non ci sono grandi cambiamenti di funzionalità.
  • D'altra parte, i test delle prestazioni sembrano richiedere aggiustamenti e rieseguire continuamente, anche in fase di produzione.

Related:

posta rwong 08.05.2011 - 19:16
fonte

3 risposte

5

In primo luogo, non si dovrebbe utilizzare la profilazione per determinare le prestazioni. La creazione di profili è pensata per identificare le parti del programma che richiedono più tempo. Quando misuriamo le prestazioni, ci interessa solo la velocità dell'intero programma preso insieme. Il profilo in questo caso altera solo i risultati. Invece, le prestazioni dovrebbero essere testate per benchmark. Il programma elabora alcune attività e misuriamo solo il tempo necessario.

In secondo luogo, non si superano o non si superano i test delle prestazioni. Quello che vogliamo fare è identificare quando qualcosa ha rallentato il programma. Eseguendo un benchmark rispetto a diverse revisioni, è possibile ottenere facilmente i dati sulle prestazioni per ogni revisione. Da lì sarebbe abbastanza semplice sollevare automaticamente un avviso in caso di degradi significativi delle prestazioni.

link , ha fatto qualcosa di simile. Puoi vedere le prestazioni di PyPy come grafici che mostrano le sue prestazioni. Puoi guardare ciascun benchmark e come è cambiato rispetto alle varie revisioni. In realtà puoi vedere alcune revisioni che riducono sensibilmente le prestazioni, ma sono state successivamente corrette.

    
risposta data 08.05.2011 - 20:19
fonte
1

@Winston ha alcuni punti positivi, ma non posso essere d'accordo in un contesto: quando la specifica (caratteristica) include gli accordi sul livello di servizio (SLA), allora dovresti assolutamente automatizzare il profilo delle prestazioni (o stress test) se possibile, e il software deve passare incontrando o superando la metrica specificata dallo SLA.

    
risposta data 09.05.2011 - 03:21
fonte
0

Perché preoccuparsi delle prestazioni dell'unità? Qual è il problema che risolve? A meno che tu non abbia un problema storico con una particolare unità, nel qual caso la perffacanza diventa solo un'altra esigenza funzionale. Ti suggerisco di dedicare un minuto in più alla riflessione sulle prestazioni: troppo tempo passerai tutto il tuo tempo a ottimizzare il codice che raramente viene eseguito, e poi ti chiedi perché spedisci in ritardo, oltre buget, codice incompleto e buggy.

Meglio lento che mai dico .......

    
risposta data 09.05.2011 - 10:08
fonte

Leggi altre domande sui tag