Test di unità che richiede tempo per il supporto di 100.000 record: lo sto facendo bene?

5

Sto lavorando per aggiungere la copertura di test per un'applicazione che in precedenza non ne aveva. Un ulteriore requisito emerso è che uno dei processi in background dovrebbe essere in grado di elaborare 100.000 righe alla volta.

Ho scritto un test unitario che garantisce che il processo in background sia in grado di funzionare con le 100.000 entità senza arrestare l'interprete (PHP) su un limite di memoria di 4.0 MB. Ma ogni prova dura circa 4 minuti. Tutti gli altri test richiedono solo 10 secondi per essere eseguiti.

Questo può essere affrontato in modo diverso rispetto a un test unitario?

    
posta rsman 08.05.2013 - 15:03
fonte

3 risposte

13

Non sono sicuro di come siano strutturati i casi di test, ma suona più come un test di sistema o un test di accettazione di un test unitario.

A mio parere, i test unitari dovrebbero riguardare il test che la funzionalità funzioni e l'esercizio di vari rami di codice. Un esempio di un test unitario sarebbe l'elaborazione di un singolo record, e potresti avere alcune variazioni di questo record per forzare il tuo test a scendere determinati percorsi e confermare che i risultati sono quelli previsti. I test di unità possono essere utilizzati anche per la regressione e il test del fumo - cose che vengono eseguite regolarmente (ogni notte, dopo una compilazione, localmente in un ambiente di sviluppo prima di una revisione del codice e così via).

Il tuo livello di sistema e i test di accettazione non vengono eseguiti frequentemente: eseguire i test automatici del sistema ogni notte sarebbe più frequente di quanto mi aspetterei. Questi sarebbero test più intensivi che si concentrerebbero sulle prestazioni del sistema, il consumo di memoria, i tempi e il comportamento con altri sistemi. Avere automatizzato, proprio come i tuoi test di unità, sono una buona cosa, ma non vorrei impantanare la tua suite di test di unità o la suite di test di regressione con attività di lunga durata.

    
risposta data 08.05.2013 - 15:09
fonte
2

Questo è più sulla falsariga di un test di carico. I test unitari dovrebbero riguardare se il codice produce risultati corretti. I test di carico sono orientati a testare se il sistema soddisfa determinati requisiti di volume e tempistiche e in genere vengono eseguiti a un livello di valutazione superiore rispetto ai test unitari.

Se il sistema è in grado di gestire solo 99.000 record, quale livello di errore è quello e cosa significa. Che cosa succede se si desidera elaborare 100.000 record in tre minuti, ma il test indica che ci sono voluti 4 minuti. I test di carico non riguardano tanto il fallimento o il successo assoluto. Sono più allineati per testare i livelli minimi di prestazioni e forniscono indicazioni per i necessari miglioramenti di scalabilità.

Modifica: Scusa, credo di non aver risposto alla tua domanda sul titolo. Direi che questo è un test valido, ma penso che tu stia sbagliando considerarlo come parte dei tuoi test di unità .

    
risposta data 08.05.2013 - 15:38
fonte
0

Che cosa hai provato a fare per il test .

I test unitari devono essere PRIMI (auto-verifica ripetibile veloce isolata

The faster your tests run, the more often you’ll run them. Tests take half a minute to run? You’ll maybe run them every 5 minutes instead of every few seconds. Tests take over two minutes to run? You might run those tests once every half hour, and you can write a lot of questionable code in that time! Tests take ten, fifteen, or more minutes to run? Forget it. You’ll run those a few times per day at best.

    
risposta data 08.05.2013 - 21:10
fonte

Leggi altre domande sui tag