Persone spesso equiparare il test con prestazioni di test di carico. Test di carico è visto come un modo di rispondere alla domanda "quanto velocemente il sistema risponde?" Questo punto di vista quindi tende a dire che il test di carico è visto come un fine dell'attività di progetto. Solo alla fine dello sviluppo avremo l'implementazione finale per il testing delle prestazioni e così possiamo confermare solo allora che esegue abbastanza rapidamente nel mondo reale e senza intoppi transizione in servizio dal vivo.
Approccio sbagliato! Questo è estremamente rischioso e manca su molti benefici di iniziare il test di carico precoce e la sua applicazione nel corso del progetto. Con questo approccio il sistema vela attraverso test di carico e di transizione senza intoppi in servizio? Occasionalmente sì. Ma più frequentemente il sistema inizia a fallire come carico inizia a essere applicata, anche con piccoli aumenti di volume... Per la prima volta ci sono richieste simultanee sul sistema e arbitrato sulle risorse è necessaria. Percorsi attraverso il codice che non sono mai stati giustiziati sono innescate, situazioni si presentano che nessuno davvero pensato. Transazioni non riescono. Sistemi in crash. Dopo questi problemi sono fissi e più carico applicato in un test, incontriamo poi problemi come l'esaurimento delle risorse, buffer overflow, timeout e comportamento incoerente. Il vero lavoro necessario per trasformare un sistema funzionale di pre-produzione in una soluzione robusta ha appena iniziato.
Esempi abbondano di prodotti che non riuscita quando caricare test iniziato e, dopo un sacco di sforzo, lo stress e le spese, sono stati accantonati. Peggio ancora sono quelli che perdere il carico test del tutto e non riuscito drammaticamente durante l'operazione dal vivo. Uno sviluppatore di portale internet recentemente smesso di sviluppo di un nuovo servizio, uno che aveva completato lo sviluppo funzionale, quando il test di carico ha rivelato che i fondamentali problemi strutturali e inefficiente di codifica che ha portato a un sistema instabile e di esecuzione di mal.
Così che cosa dovrebbe fare per evitare questi rischi? Tutti sappiamo che è meglio trovare difetti all'inizio quando costano molto meno difficoltà ancora test di carico è ancora a sinistra fino a quando il più tardi possibile. I tipi di difetti che trova frequentemente bisogno di modifiche architetturali e riscrive principali che sono da allora sono estremamente costosi da implementare. La risposta è che si dovrebbe iniziare presto. Diverse forme di test di carico devono essere applicate ripetutamente nel corso del progetto per identificare problemi all'inizio e per verificare che il sistema non sta fuori pista.
Questa è una naturale estensione della pratica di sviluppo di test condotto. Led di sviluppo, dove test automatizzati sono scritte prima e codice deve superare questi test di prova come è stato sviluppato, offre importanti vantaggi. Tuttavia, nella sua forma attuale, il focus di questo test è sulla funzionalità. Come si evolve lo status funzionale del software è sempre conosciuto e quindi gestibile, funzionale colpe sono stroncati sul nascere evitando costi elevati correzioni, il rischio funzionale è notevolmente ridotta. Non così altri rischi. Se un progetto esegue precoce e continuo caricare test che diventa molto più ampia e riduzione del rischio globale. Per rendere efficace:
1. Studiare il sistema ed eseguire un'analisi del rischio per aiutare ad per ordinare le minacce al sistema, questo ti aiuterà a dare priorità alla attività di test di carico.
2. Raccogliere dati per consentire il confronto dell'efficienza delle compilazioni diverse. Ciò consente il monitoraggio della tendenza di lungo termine, "È il sistema utilizzando più e più tempo processore per fare lo stesso lavoro?" Questo dati possono essere utilizzati per prevedere requisiti delle risorse a diversi livelli della domanda e quindi sostenere le previsioni di scalabilità.
3. Eseguire test che mirano a valutare il comportamento del sistema e agli errori di trigger sotto carico. Utilizzare i carichi di lavoro che simulano previsti modelli di domanda per osservare il comportamento complessivo del sistema. Utilizzare appositamente mirate dei carichi di lavoro estreme per sondare le vulnerabilità del sistema.
4. Includere l'intero spettro di test di carico in suite di test. Questo significa prestazioni test con carichi di lavoro periodo tipico e occupato; lo stress test per controllare sia i picchi di domanda atipica ed esaurimento delle risorse impatti; prove di Endurance test che utilizza sia operativa periodo e cumulativo operazione; affidabilità, test che corre un sacco di transazioni e quindi controlla se le transazioni occasionali falliscono; concorrenza test di due utenti che lavorano sul conto stesso allo stesso tempo.
5. Design misurazione attività come scienziati in stile un esperimento, progettarli per fornire i dati che possono essere analizzati. Il sistema sotto carichi di lavoro diverso stato stazionario per fornire più set di dati per supportare l'interpolazione del campione. Ha scelto il carico di lavoro per consentire la stima dei costi delle risorse per ciascun tipo di transazione.
6. Target in primo luogo il middleware con attività generica e si evolvono la suite come funzionalità è sviluppato. Iniziare presto e quindi testare ogni rilascio incrementale del sistema, in primo luogo con la suite precedente e quindi con una suite modificata che affronta le nuove funzionalità.
7. Investire tempo e risorse per lavorare a una scala rappresentativa. Forse il banco di prova non può essere la scala ma non dovrebbe essere due ordini di grandezza più piccoli rispetto al sistema previsto. Essere intelligente e innovativo per utilizzare le risorse in modo efficace per fornire un banco di prova di scala appropriata. I costi che si incorrerà in se questo non avviene lontano supererà il costo della fornitura il banco di prova.
8. Non tardare; prova un incremento più presto possibile. Non saltare uno o finirete per saltare tutti. Confrontare le misurazioni e i comportamenti con quello precedente, è meglio o peggio?
9. Fornire un carico di sfondo per il test funzionale. Caratteristiche che funzionano offload potrebbero non riuscire quando il sistema ha altre cose a cui pensare.
10. Considerare eventi occasionali come errori server e la riconfigurazione del sistema. Queste devono essere testati sotto carico?
In conclusione, è necessario incorporare test di carico durante tutto il processo di sviluppo. Lasciando il test di carico fino a quando la corsa finale in servizio dal vivo è una ricetta per il disastro. Se questo è diventata una pratica comune poi molto di più applicazioni e sistemi che funzionano sarebbero stati consegnati in tempo e al bilancio.
No comments:
Post a Comment