Testes de unidade Gaia

by 1 colaborador:

Este artigo necessita de uma revisão técnica.

Como parte do código-fonte Gaia / B2G, fizemos vários testes de unidade disponíveis para execução, para testar diferentes aspectos de Gaia e B2G. Este artigo explica como acessá-los.

Nota: Este documento assume que você entenda completamente como trabalhar com Gaia e B2G. Consulte Desenvolvendo Gaia para se familiarizar.

Rodando testes de unidade

Você pode rodar testes de  unidade no B2G desktop, Firefox Nightly ou Mulet. Você também precisará da última versão Gaia repo. Para a maioria das funcionalidades, você também precisa ter o Node.js e o NPM instalados.

Aviso: Nós provavelmente vamos descontinuar a execução de testes no Firefox em breve. Utilize Mulet a partir de agora.

Nota: Se os seguintes comandos falharem com erros criptográficos ao instalar dependências do tipo test-agente, pode ser que a suas versões Node.js / NPM sejam muito antigas. Leia Instalando Node.js via gerenciador de pactoes Node.js via gerenciador de pacotes para instalar as versões mais recentes e exclua a pasta node_modules/test-agent.)

Nota: No Ubuntu (e possivelmente alguns outros Linux distros também), Node.js é chamado nodejs e node é chamado de programa Amateur Packet Radio "Node". Se você está recebendo um problema com a execução de testes unitários nesses sistemas (mensagens de erro podem significar que "Esta falha pode ser devido ao uso de legado binário 'node'"), então você deve instalar o pacote node nodejs-legacy. Isso impede que um conflito com o Programa Amateur Packet Radio "Node", removendo /usr/sbin/node e transformando-o em um link simbólico para /usr/bin/nodejs, que deve tornar as coisas funcionarem conforme o esperado.

A repo Gaia contém um script bin / gaia-teste bastante acessível, que ajuda executar os testes de uma maneira mais fácil.

Aviso: este script irá gerar um perfil adequado para testes de unidade no perfil-debug. Se você já tem outro perfil neste diretório ele será substituído. O  Bug 980496 visa torná-lo configurável.

Lançando o executor de testes de Mulet ou Firefox

Isto irá rodar o servidor de teste e lançar o seu Firefox padrão como encontrado no caminho:

bin/gaia-test

Escolhendo Firefox binário

Você pode exportar a variável de ambiente do Firefox para o seu binário firefox. Por exemplo, no OS X:

export FIREFOX=/Applications/FirefoxNightly.app/Contents/MacOS/firefox

Alternativamente, você pode passá-la como argumento para bin/gaia-teste:

bin/gaia-test <gaia directory> <firefox path>

Lançando o executor de testes no B2G desktop

Isto irá baixar e lançar o B2G área de trabalho:

bin/gaia-test -d

Execute os testes a partir da interface Web

Você pode simplesmente clicar em testes específicos e, em seguida, no botão Executar.

Execute os testes a partir da linha de comando

Com o servidor WebSocket running, e o app Test Agent em execução no B2G Desktop / Firefox Nightly, execute o seguinte comando:

make test-agent-test

Se você só deseja executar testes de um aplicativ,o você pode especificar quais via variável env APP:

make test-agent-test APP=calendar

Você pode também fornecer, opcionalmente, um repórter para formatar a saída do teste: reporter to format the test output:

make REPORTER=List test-agent-test
Nota: Nem todos os repórteres trabalham, uma vez que atualmente não suportam Doc.

Execute os testes enquanto você salva

Quando o servidor está em execução, os testes para um arquivo são executados automaticamente quando um arquivo é salvo ou mesmo quando ele é tocado:

  • Quando você salvar um arquivo de teste, o próprio arquivo de teste é executado.
  • Quando você salvar um outro arquivo, ele encontra um arquivo correspondente no diretório test / unit, usando como sufixo o nome do arquivo com _test.js.

Nota: ele observa somente arquivos existentes, então se você criar um novo arquivo, você tem que reiniciar o agente.

A execução de testes como Buildbot faz

Testes de unidade no Gaia Buildbot são executados usando um executor separado; isto explica como usá-lo. Por favor, consulte os documentos virtualenv se você não estiver familiarizado com o uso de um virtualenv Python.

virtualenv venv
source venv/bin/activate
cd $GAIA/tests/python/gaia-unit-tests
python setup.py develop
cd gaia_unit_test
python main.py --binary /path/to/b2g/desktop/build --profile /path/to/gaia/profile

Nota: Ao especificar o caminho para a construção de desktop B2G, você deve especificar o caminho para B2G-bin, se ele existir, caso contrário use B2G.

O perfil de Gaia deve ser feito usando o seguinte:

NO_LOCK_SCREEN=1 DEBUG=1 DESKTOP=0 make

Por padrão, este perfil será gerado no $ GAIA/profile-debug. O bin/ gaia-teste gera o mesmo perfil, de modo que você não precisa regenerá-lo se você já tiver executado o gaia-teste.

Desativando um teste de unidade gaia em automação

Automação usa uma lista negra para excluir certos testes de unidade gaia de serem executadas. Para evitar que um teste de correr em automação, adicione seu caminho para https://github.com/mozilla-b2g/gaia/blob/master/tests/python/gaia-unit-tests/gaia_unit_test/disabled.json.

Configurando o seu app Gaia

Embora este guia possa ajudar a tornar as coisas mais fáceis, a melhor maneira de aprender a escrever, criar e executar testes ainda está em olhar para o código-fonte; em particular, nos testes de galeria.

Carregando seus próprios arquivos de teste

Nota: Esta é uma técnica avançada e totalmente opcional. Se o carregador de testes nativo do test-agent estiver funcionando em sua aplicação, assim como o seu teste de estilo, e você não quiser usar seus próprios arquivos de teste, esta seção não é para você!

O test-agent carrega seus arquivos de teste em um ambiente onde eles têm acesso a mocha (assim como outros bits de estado global). Um test-agent global importante é o require, que permite que o seu arquivo de teste carregue uma dependência (código da aplicação, por exemplo). Às vezes, principalmente se os seus arquivos de aplicativos estiverem esperando para serem carregados de uma maneira diferente da exigência do test-agent, ele pode ser útil para substituir o carregador de arquivo de teste do test-agente. Você também pode fazê-lo da seguinte maneira:

// setup.js

testAgentRuntime.testLoader = function(path) {
  // We're going to return a promise to represent
  // the loading state of the test file at this path.
  return new Promise((accept, reject) => {
    // Load the parameter test file and resolve (or reject) appropriately
    // ...
  });
};

Usando simulações

TBD

Avançado: o que é que o script faz?

Gerando um perfil

Você precisa de um perfil que é gerado por este comando:

NO_LOCK_SCREEN=1 DEBUG=1 DESKTOP=0 make

Isso gera um perfil de depuração no gaia/profile-debug, substituindo um perfil anterior, se você já tiver um.

  • DEBUG=1 permite a extensão httpd.js que torna possível usar diretamente os arquivos do diretório apps/.
  • NO_LOCK_SCREEN=1 desativa a tela de bloqueio, que é necessária na área de trabalho B2G , porque não é possível desbloqueá-la usando o mouse.
  • DESKTOP=0 desativa os outros addons que normalmente usamos no modo de depuração para executar o Gaia no Firefox.

Inicie o servidor WebSocket

O agente de teste (o corredor de teste) vem com um servidor WebSocket construído que permite que você envie uma mensagem remotamente ao navegador ou dispositivo para fila de teste. Muitas vezes você poderá querer desenvolver utilizando recursos de economia de tempo como um observador de arquivo que irá executar os testes quando um arquivo de teste ou implementação mudar. Para aproveitar destas características você precisa iniciar o servidor:

make test-agent-server

O servidor WebSocket fornece outras ferramentas durante o uso, como por exemplo, um repórter de linha de comando para os resultados do teste (assista ao terminal no qual você executou o comando), um repórter Growl, as notificações de erro de sintaxe, e muito mais.

O agente também assiste alterações nos arquivos, automaticamente executa os testes associados. Ele é executado quando você salva o teste ou se você salva o arquivo testado (nós usamos a convenção na qual o nome do arquivo de teste é o nome do arquivo testado com _test anexado, veja abaixo para mais exemplos). Ela vê apenas os arquivos existentes, então se você criar um novo arquivo, você terá que reiniciar o agente.

Executando testes unitários com o Firefox Nightly

Você pode lançar Gaia no Firefox Nightly com os seguintes comandos:

cd <path to gaia>
<path to nightly>/firefox --no-remote -profile <path to gaia>/profile-debug/ http://test-agent.gaiamobile.org:8080/

Nota: No OS X, o caminho do perfil deve ser um caminho absoluto

Você pode usar o Firebug ou o depurador integrado para depurar os testes; use a palavra-chave depurador para quebrar no depurador.

Executando testes unitários com B2G desktop

Inicie o Gaia e o app "Test Agent". A partir do app gent Teste você pode selecionar os testes para executar a partir da interface do usuário.

Avançado: como é que o agente de teste funciona?

O agente de teste vive em seu próprio repositório Github.  Você pode dar uma olhada lá para entender como ele funciona sob o capô.

Etiquetas do documento e colaboradores

Contributors to this page: PriscillaAlcalde
Última atualização por: PriscillaAlcalde,
Esconder painel