Como executo testes funcionais no meu jogo Unity3D?


25

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


Tanto quanto eu posso dizer, o UTT embutido é apenas para testes de unidade. Pode haver uma ferramenta de teste que atenda às suas necessidades na loja de ativos
user3797758 14/02

3
Na verdade não. As Ferramentas de Teste da Unity contêm um conjunto de ferramentas para testes de integração e muitas asserções desde a primeira versão. Se você não encontrar nada parecido com isso na UTT interna, faça o download da UTT completa na Asset Store.
Maxim Kamalov

Dê uma olhada na documentação de execução de teste, Unity Test Runner Doc . Permite testes de modo de reprodução e de edição.
Racksay

Respostas:


1

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:

  1. Verifique se o seu jogo emite algum tipo de sinal quando atinge os marcos específicos com os quais você se preocupa (ou pode se importar). O registro em um arquivo é a abordagem mais comum (usando o registro interno automático ou uma versão de terceiros ).
  2. Leia e analise periodicamente os logs. Isso pode acontecer manualmente ou ser script usando sua segunda linguagem de script favorita.

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.