Contexto
Continuo com algum código legado para um jogo no Unity3d e quero escrever alguns testes funcionais destinados à regressão, para garantir que não quebre as coisas ao implementar coisas novas ou ao refatorar.
Eu já sei que existe o pacote 'Unit Test Tools' para o Unity3d disponível como um ativo. Eu o usei como um conjunto de teste de unidade, então testei meus modelos (classes).
Exemplo de que tipo de teste estou pensando
Para "teste funcional", quero dizer coisas assim:
- Execute o programa
- Quando estiver na cena do menu, afirme que existe um botão que diz "iniciar"
- Clique
- Em seguida, afirme que uma nova cena está carregada
- O pixel XXX de declaração é vermelho
- Clique na coordenada XXX
- Afirme agora que o pixel mudou para verde
- etc.
Questões
Q1: Como escrevo e executo testes funcionais para o meu jogo? Isso também costuma ser feito no UnityTestTools (UTT)?
P2: Se UTT é mais para teste de unidade, existe um conjunto separado para teste funcional? Qual?
Notas:
Estou segmentando o Android e executando Unity5.3.1f1
unity
automated-testing
Xavi Montero
fonte
fonte
Respostas:
Pelo que entendi, você está procurando entender os testes de automação no Unity.
Ferramentas de teste do Unity
Esse deve ser o seu método goto, mas antes de explorar como, examinarei o porquê.
A maneira preferida de realizar qualquer forma de teste de automação é fazer isso em um ambiente o mais próximo possível da produção. Usar algo como as Ferramentas de Teste do Unity (vivendo dentro do Unity Editor) parece uma péssima idéia para quem escreveu testes de integração convencionais.
Por quê? Porque, em qualquer teste de integração, você deseja a menor quantidade de material extra atrapalhando seu aplicativo que não existe quando o usuário o abre. O Unity Editor pode ter desempenho ou comportamento diferente em comparação com a versão do iOS (por exemplo).
Então, por que usar as Ferramentas de Teste do Unity (UTT)?
A principal razão é a conveniência. O Unity Editor e a UTT são construídos para serem fáceis e visuais de usar. Você terá facilidade em escrever testes, conectá-los ao seu jogo específico e entender quando eles falharem.
E a diferença de comportamento entre o Unity Editor e a produção?
Afinal, o Unity Editor é um invólucro em torno de seu aplicativo. Isso significa que haverá algumas diferenças entre o Editor e a produção. Mas, deixando de lado os testes de integração, o Unity Editor é um invólucro há muito tempo. É uma plataforma madura, com milhares de jogos criados nela. Os resultados obtidos ao executar testes de integração dentro do Editor serão muito precisos.
No cenário de exemplo que você forneceu, tudo, exceto o primeiro item, pode ser facilmente afirmado usando as Ferramentas de Teste do Unity. Você pode abrir cenas e validar comportamentos como qualquer outro teste de integração.
Sugiro escrever a maioria (se não todos) de seus testes usando UTT. Para adicionar compatibilidade com ferramentas de integração contínua (por exemplo, Jenkins), convém executá-las no console usando argumentos de linha de comando .
Iniciando o aplicativo e testes manuais
Iniciar o aplicativo não é algo que você tenha controle preciso enquanto estiver no Unity Editor. Para validar esse aspecto do seu jogo e muito mais, você pode usar alguns testes manuais básicos.
Veja como abordar isso:
Alternativas
Não surpreende que, como tudo relacionado à Unity, tenhamos mais do que algumas alternativas. Aqui estão alguns que você pode querer considerar:
Dependendo da escala e do escopo do seu projeto, convém empregar uma ou várias das opções descritas acima.
fonte