Il mio team e io stiamo provando a impostare alcuni test di integrazione di un sistema distribuito che dipende in gran parte dal flusso di tempo e dagli eventi provenienti da fonti esterne. Solo per darti un'idea su cosa stiamo lavorando:
when event A is received within 8:00 AM and 9:00 AM, and afterward, within 5 minutes, a second event B is received, then write a record into the DB with the timestamp at which event A has been received.
Ora ... scrivere un test di integrazione contro il sistema reale sembra complesso.
Come impostare la data del sistema in prova?
Il sistema in prova dovrebbe idealmente funzionare con un tempo definito dai test di integrazione. Forse il test di integrazione dovrebbe impostare il tempo del server alle "9:00" quando inizia il test? Qualche altro consiglio?
Come inviare eventi a una velocità nota?
Gli eventi dovrebbero essere inviati con un ritmo riproducibile e conosciuto, vale a dire l'evento di fuoco A alle 9:05 e l'evento B alle 9:06. Forse un programmatore programmabile semplice può essere utilizzato qui?
Come affrontare i test che richiedono grandi timeout?
Alcuni scenari di test richiedono il passaggio di una grande quantità di tempo tra due eventi. È possibile accelerare artificialmente il flusso del tempo per comprimere un'ora in solo qualche secondo nel test? Penso però ad accelerare il clock del sistema (non nel senso dell'overclocking, solo nel senso di avere i secondi più veloci). Mi sembra che questo non possa essere fatto in un vero pezzo di hardware ma forse in una macchina virtuale è possibile. Qualche consiglio su questo argomento?
Vincoli
- Non tutti i moduli che fanno parte dei test di integrazione sono sotto il nostro diretto controllo.