Come posso eseguire test funzionali contro il mio gioco Unity3D?


25

Contesto

Sto continuando un po 'di codice legacy per un gioco in Unity3d e voglio scrivere alcuni test funzionali pensati per la regressione, per assicurarmi di non rompere le cose durante l'implementazione di nuove cose o durante il refactoring.

So già che è disponibile come risorsa la suite "Unit Test Tools" per Unity3d. L'ho usato come suite di unit test, quindi collaudo i miei modelli (classi).

Esempio di che tipo di test sto pensando

Per "test funzionale" intendo cose come questa:

  • Esegui il programma
  • Quando sei nella scena del menu, asserisci che c'è un pulsante che dice "start"
  • Cliccalo
  • Quindi asserire che viene caricata una nuova scena
  • Il pixel di asserzione XXX è rosso
  • Fai clic sulle coordinate XXX
  • Afferma ora che il pixel è diventato verde
  • eccetera.

Domande

Q1: Come posso scrivere ed eseguire test funzionali per il mio gioco? Questo è in genere fatto anche in UnityTestTools (UTT)?

D2: Se UTT è più per Unit-Testing, allora esiste una suite separata per i test funzionali? Quale?

Gli appunti:

Sto prendendo di mira Android e sto correndo Unity5.3.1f1


Per quanto ne so, l'UTT integrato è solo per test unitari. Potrebbe esserci uno strumento di test adatto alle tue esigenze nell'archivio risorse
user3797758

3
In realtà no. Unity Test Tools contiene un set di strumenti per i test di integrazione e molte affermazioni sin dalla prima versione. Se non vedi nulla di simile in UTT integrato, scarica UTT completo dall'Asset Store.
Maxim Kamalov,

Dai un'occhiata alla documentazione di Test Running, Unity Test Runner Doc. Consente sia i test della modalità di riproduzione che quelli della modalità di modifica.
Racksay,

Risposte:


1

A quanto ho capito, stai cercando di capire i test di automazione in Unity.

Strumenti di test Unity

Questo dovrebbe essere il tuo metodo goto, ma prima di approfondire come, esaminerò il perché.

Il modo preferito di eseguire qualsiasi forma di test di automazione è di farlo in un ambiente il più vicino possibile alla produzione. Usare qualcosa come Unity Test Tools (che vive all'interno di Unity Editor) sembra una cattiva idea per chiunque abbia scritto test di integrazione convenzionali.

Perché? Perché con qualsiasi test di integrazione, vuoi la minima quantità di cose extra che impantana l'applicazione che non c'è quando l'utente la apre. Unity Editor potrebbe avere prestazioni o comportamenti diversi rispetto alla versione iOS (ad esempio).

Quindi, perché usare Unity Test Tools (UTT) allora?

Il motivo principale è la convenienza. Sia Unity Editor che UTT sono costruiti per essere facili e visivi da usare. Ti divertirai a scrivere test, a collegarli al tuo gioco specifico e a capire quando falliscono.

Che dire della differenza di comportamento tra Unity Editor e la produzione?

Dopotutto, Unity Editor è un wrapper per la tua applicazione. Ciò significa che ci saranno alcune differenze tra l'editor e la produzione. Ma, a parte i test di integrazione, Unity Editor è un wrapper da molto tempo ormai. È una piattaforma matura con migliaia di giochi basati su di essa. I risultati ottenuti dall'esecuzione dei test di integrazione all'interno dell'Editor saranno molto precisi.

Nello scenario di esempio fornito, tutto tranne il primo elemento può essere facilmente affermato mediante gli strumenti Unity Test. È possibile aprire scene e validare comportamenti proprio come qualsiasi altro test di integrazione.

Suggerisco di scrivere la maggior parte (se non tutti) dei test usando UTT. Per aggiungere la compatibilità con strumenti di integrazione continua (ad es. Jenkins), è possibile che si desideri eseguirli dalla console utilizzando gli argomenti della riga di comando .

Avvio dell'applicazione e test manuali

L'avvio dell'applicazione non è qualcosa che hai il controllo preciso mentre sei in Unity Editor. Per convalidare quell'aspetto del tuo gioco e altro, puoi utilizzare alcuni test manuali di base.

Ecco come affrontarlo:

  1. Assicurati che il tuo gioco emetta qualche tipo di segnale quando raggiunge le pietre miliari specifiche che ti interessano (o che potrebbero interessarti). La registrazione in un file è l'approccio più comune (utilizzando la registrazione incorporata automatica o una versione di terze parti ).
  2. Leggere e analizzare periodicamente i registri. Questo può accadere manualmente o essere copiato tramite il tuo secondo linguaggio di scripting preferito.

alternative

Non sorprende che, come tutto ciò che riguarda Unity, abbiamo più di alcune alternative. Ecco alcuni che potresti voler considerare:

A seconda delle dimensioni e della portata del progetto, potresti voler utilizzare una o più delle opzioni che ho descritto sopra.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.