Una domanda che mi ha tormentato ultimamente riguarda il modo di testare efficacemente le funzionalità end-to-end in un sistema distribuito. In particolare, come gestire in modo efficace (nel tempo) i dati dei test per il test delle funzionalità.
Il sistema in questione è una tipica configurazione SOA. La composizione viene eseguita in JavaScript quando chiamata a diverse API REST. Ogni servizio è costruito come un blocco indipendente. Ogni servizio ha una sorta di memoria persistente (SQL Server nella maggior parte dei casi).
Il problema principale al momento è come approcciare i dati di test quando si testano funzionalità end-to-end. Il test funzionale end-to-end avviene attraverso l'interfaccia utente ed è quindi necessario impostare i dati di test prima dell'esecuzione del test (questo potrebbe essere un test manuale o automatico). Come è tipico in un sistema distribuito, gli identificatori di un servizio vengono utilizzati come collegamento in un altro servizio. Quindi, è necessario che nei dati sia presente un certo livello di sincronizzazione per testare efficacemente.
Qual è il modo migliore di gestire e configurare questi dati dopo una distribuzione riuscita in un ambiente di test?
Ad esempio, è meglio gestire questi dati di test all'interno di ciascun servizio? Oppure confezionarlo insieme alla suite di test? Quella suite di test esiste come progetto separato?
Sono interessato alla guida alla progettazione su come archiviare e gestire questi dati di test man mano che le funzionalità dell'applicazione si evolvono.