Attualmente sto scrivendo un test di carico per una cache che dovrebbe verificare come reagirà la cache alle richieste persistenti. Un collega e io avevamo opinioni divergenti su come eseguire questo test di carico.
Credo che un test di carico dovrebbe essere il più casuale possibile. Dovrebbe modellare il carico del mondo reale il più possibile, e la strada verso quella è la casualità. Così ho creato questo test casuale come segue:
- I dati di test sono conservati in fogli di calcolo e caricati negli oggetti TestRunner all'avvio
- I dati del test sono not random
- Il test di carico eseguirà 10 TestRunner casuali in singoli Thread contemporaneamente
- L'oggetto restituito dalla cache verrà testato per essere sicuro che sia sensibile, non completamente testato
- Tutti i test che falliscono saranno emessi alla fine e ogni test ha un ID univoco per trovare facilmente i test falliti
- A intervalli casuali, la cache verrà cancellata per modellare il requisito reale della cache che viene cancellata in qualsiasi momento.
- Il test di caricamento verrà eseguito per un intervallo di tempo configurabile
L'idea del mio collega su cosa dovrebbe fare un test di carico è:
- I dati di test sono conservati in fogli di calcolo e caricati negli oggetti TestRunner all'avvio
- Tutti gli oggetti TestRunner vengono eseguiti in modo sequenziale
- Ogni volta che viene eseguito il test di caricamento, verranno eseguiti gli oggetti TestRunner nello stesso ordine
Quale metodologia ritieni possa produrre il test di carico più affidabile?
Personalmente ritengo che il test casuale produrrà un test di carico più affidabile in quanto modellerà l'utilizzo del mondo reale. Non è noto quali richieste di ordine arriveranno quando verrà rilasciato alla produzione, quindi dovrebbe essere testato con quell'elemento sconosciuto preso in considerazione. Tuttavia, eseguire tutti i test nella stessa sequenza ogni volta renderà riproducibili eventuali errori, il che è importante durante il test.