Ciclo di vita dei test di TF

Il ciclo di vita di un test eseguito utilizzando Trade Federation è composto da quattro fasi distinte, progettate in base a interfacce formalmente definite.

Interfacce definite

  • Provider di compilazione: fornisce una compilazione da testare, scaricando i file appropriati, se necessario.
  • Target Preparer: prepara l'ambiente di test, eventualmente inclusa l'installazione del software e la configurazione del dispositivo.
  • Test: esegue i test e raccoglie i risultati. Può trattarsi di qualsiasi test JUnit, anche se la nostra interface IRemoteTest è progettata specificamente per funzionare bene nell'ambiente Trade Federation.
  • Test Invocation Listener (results reporting): ascolta i risultati dei test, in genere allo scopo di inoltrarli a un repository o di mostrarli al Test Runner.

L'entità di test fondamentale in TF è una configurazione (config). Una configurazione è un file XML che dichiara i componenti del ciclo di vita di un test.

Questa separazione del ciclo di vita del test è pensata per consentire il riutilizzo. Con questo design, lo sviluppatore può creare un test una volta e l'integratore può creare configurazioni diverse per eseguirlo in ambienti diversi. Ad esempio, potrebbe creare una configurazione che esegue un test su una macchina locale e scarica il risultato in stdout. Potrebbe quindi creare una seconda configurazione che eseguisse lo stesso test, ma utilizzando un ascoltatore di chiamata di test diverso per archiviare i risultati del test in un database. È possibile progettare una terza configurazione che esegui il test continuamente da un lab di test.

È opportuno notare che una configurazione insieme ai relativi argomenti della riga di comando (come fornito dal Test Runner) è nota come comando. Quando TF accoppia un comando con un ITestDevice e lo esegue, l'oggetto successivo è noto come chiamata. In breve, un'invocazione comprende un'esecuzione completa del test TF, per l'intero ciclo di vita.

Componenti di configurazione aggiuntivi

  • Device Recovery: meccanismo per recuperare la comunicazione del dispositivo in caso di smarrimento.
  • Logger: raccoglie i dati di logging di TradeFed.

Output ed errori della fase

Ogni fase di un'invocazione viene eseguita in sequenza e ha un obiettivo specifico. Questa sezione descrive gli output e gli errori comuni di ogni fase.

Provider di build

Questa fase crea e genera un oggetto IBuildInfo contenente tutti i riferimenti ai file necessari per configurare ed eseguire i test.

L'errore più comune in questa fase è la mancata riuscita del download o del rilevamento dei file richiesti.

Un errore in questa fase comporta la segnalazione diretta dell'errore e l'interruzione dell'esecuzione dei test.

Preparazione del target

Questa fase configura gli stati necessari per il target sottoposto a test. Questa fase può modificare il dispositivo o la configurazione dell'host in base alle esigenze per l'invocazione del test specificata.

Gli errori comuni in questa fase di solito riguardano la mancata configurazione del dispositivo in un determinato stato (ad esempio, il flashing non riuscito) e la mancata individuazione dei file necessari per la configurazione.

Un errore in questa fase comporta l'esecuzione della pulizia del target, la segnalazione dell'errore e l'interruzione dell'esecuzione dei test.

Test

Questa fase esegue i test richiesti sul target preparato in precedenza e genera un report su tutti i risultati di esecuzione dei test.

Gli errori comuni in questa fase di solito riguardano la mancata disponibilità del target in test o qualche errore che causa l'esecuzione parziale dei test. Questi errori sono problemi di infrastruttura che interessano l'esecuzione del test stesso, a differenza di un errore di un singolo test case.

Un errore in questa fase comporta l'interruzione dell'esecuzione del test, l'esecuzione della pulizia del target, l'invio dell'errore e l'ottenimento di risultati parziali.

Report sui risultati

Questa fase segnala i risultati e gli errori ai servizi configurati (ad esempio server e file locali).

Sebbene i singoli report sui risultati possano contenere errori, sono isolati tra loro (un report non vede gli errori di un altro). Questi errori interessano solo i report sui risultati di un singolo autore del report e possono essere visualizzati nei log.