As equipes que trabalham na automação de testes têm trabalhado duro para expandir nossa infraestrutura de automação de testes do Firefox OS bem como para produzir novos métodos para testar especificamente o telefone ao invés do navegador (no qual nossos métodos atuais são especializados). Devido à arquitetura do Firefox OS o funcionamento dessas ferramentas podem parecer um pouco complicadas para você que é um desenvolvedor e quer apenas fazer alguns testes para ver se a sua correção funcionou ou não. Este artigo visa dar sentido a todos os recursos de teste disponibilizados pela Mozilla.
Começando
Se você é um desenvolvedor Gecko, você deve rever a documentação para automação de testes com o qual você já é familiar: mochitest, reftest, e xpcshell.
Se você é um desenvolvedor de aplicativos ou do Gaia, ou ainda um desenvolvedor Gecko interessado em aprofundar-se em testes de estilo para o usuário final no qual você realmente exercita-se no Sistema Operacional, então você precisa dar uma olhada na suite de testes do Gaia. Existem duas suites de testes primários:
- Testes de Interface do Usuário Gaia: Esses testes são baseados no Python e podem ser executados tanto no desktop quanto nos dispositivos. Eles testam vários aspectos da IU como testes de resistência (incluindo muitos contatos no aplicativo Contatos, bloqueio e desbloqueio da tela repetidas vezes, configurando diversos alarmes no aplicativo Alarmes, etc.), testes funcionais (por exemplo, procurando estações no aplicativo Rádio, capturando fotos no aplicativo Câmera) e testes de acessibilidade (por exemplo, habilitando e desabilitando o leitor de tela).
- Teste de integração do Gaia: São baseados em JavaScript usando marionette-js-runner e somente pode ser executado no B2G Desktop (em breve terá suporte para dispositivos reais). São testados vários aspectos de como o Gaia interage com outros aplicativos e serviços, como por exemplo testar como o aplicativo Calendário adiciona um servidor CalDAV, ou se o navegador consegue interagir com os motores de busca.
Qual você vai escolher realmente depende do seu conjunto de ferramentas preferidas e do que você deseja testar.
Executando os testes de IU do Gaia
A Suite de testes da IU do Gaia pode ser executada no B2G Desktop ou em dispositivos reais, mas nessa seção nós vamos nos concentrar nos testes em dispositivos reais, uma vez que sempre é melhor executar testes nesses dispositivos.
Observe que esse teste é destrutivo e por isso, você deve fazer uma cópia de segurança antes de executar esses testes. Dependendo do testes que você vai executar, pode até fazer ligações telefônicas. Assim, seja bastante cuidadoso sobre o que você vai executar, para tomar as devidas precauções como fazer uma cópia de segurança, remover o SIM Card, etc.
Note that this test is destructive and as such, you should back up anything you care about on the phone before running these tests. Depending on which tests you run, they can also make phone calls. So be aware that you want to be very careful about what you run and how you back up the phone, remove the SIM card, etc. Dito, isso se você já criou um build será muito fácil executar os testes. Veja como.
Primeira configuração
Você precisa executar os passos a seguir uma vez, assumindo que você não vai trocar o diretório do seu Gaia. Crie um Python virtualenv (instalando a ferramenta virtualenv caso você ainda não tenha um), ative-o e instale a ferramenta de testes da IU do Gaia no seu virtualenv. Ao criar um ambiente virtual usando os passos descritos abaixo você se certificará de que você está rodando os códigos de teste que estão no seu repo Gaia (isso é útil no caso de você precisar depurar alguma coisa).
$ virtualenv gaia_ui_venv # This will create a gaia_ui_venv directory where the virtual environment lives. It can be anywhere on your system.
$ source gaia_ui_venv/bin/activate # This activates our virtualenv
(gaia_ui_venv)$ cd <b2groot>/gaia/tests/python/gaia-ui-tests;python setup.py develop # This installs the gaia ui harness into your virtual environment.
Se você já havia criado um ambiente virtual para os testes do Gaia, você simplesmente pode fazer o seguinte:
$ source gaia_ui_venv/bin/activate
Para executar os testes
Primeiramente, você precisa criar o arquivo testvars. Para fazer isso, copie o original e adicione os atribuitos que desligam os avisos que esse teste destruirá todo o conteúdo do seu telefone. Esses são bons testes, mas não deixam o telefone no mesmo estado de quando foram iniciados, por isso você precisa ter certeza de ter sido feita a cópia de segurança antes de executar os testes. As instruções descritas aqui assumem que você ativou o ambiente virtual e está sendo executado no diretório gaia/tests/python/gaia-ui-tests
.
(gaia_ui_venv)$ cp gaiatest/testvars_template.json testvars.json
# Now edit your copy of testvars.json and add in the following attributes into the json:
"acknowledged_risks": true,
"skip_warning": true,
Agora basta conectar seu telefone via USB, direcionar para a porta do marionette para que o executor do teste possa acessá-la. Os testes estão em gaiatest/tests
e você pode escolher qualquer uma para executar. Por exemplo, se você quer executar testes de contatos, execute o seguinte:
(gaia_ui_venv)$ adb forward tcp:2828 tcp:2828
(gaia_ui_venv)$ gaiatest --testvars=testvars.json --address=localhost:2828 gaiatest/tests/functional/contacts/
Nota: Para saber quais testes de IU estão disponíveis, navege nos diretórios do gaiatest dentro do repo Gaia.
Para sair do virtualenv do Python, use o comando especial do virtualenv deactivate
:
(gaia_ui_venv)$ deactivate
$
Nota: Para saber mais sobre testes da IU do Gaia, verifique as páginas.
Executando testes de integração do Gaia
Para executar os testes de integração do Gaia atualmente você deve usar o B2G Desktop (também estará disponível para dispositivos reais em breve).
Tendo apenas a árvore do Gaia e o NodeJS instalados no seu computador, o comando a seguir faz todo o resto:
$ cd gaia $ make test-integration
Ou seja — essa instrução vai baixar o build do B2G Desktop e executar os testes nesse build.
Nota: Para aprender mais sobre os Testes de integração do Gaia verifique o repo no Github.
Nota: Para saber quais testes estão disponíveis, navegue no diretório apps no repo Gaia. Testes de integração podem ser encontrados nos subdiretórios do diretório test/marionette/
.
Resumindo
Como sempre, o trabalho está em andamento para tornar todos os nossos testes mais fáceis de executar tanto a nível local para os desenvolvedores, bem como em nossos sistemas de automação. Sinta-se a vontade para nos encontrar no canal #ateam do IRC em qualquer momento que você tenha dúvidas sobre a automação de testes para o Firefox OS ou em qualquer uma das ferramentas de automação da Mozilla.