Este artigo necessita de uma revisão editorial. Como posso ajudar.
Quando você terminar de fazer as alterações no codebase do Gaia e parecer que tudo funciona bem, o seu próximo passo será executar um procedimento de testes para certificar-se de que tudo realmente funciona — e está funcionando com o restante do Gaia — antes de submeter a correção para o projeto. Esse artigo explica como fazer isso.
O procedimento de teste geralmente consiste-se de:
- Procedimento padrão de depuração
- Execução de testes automatizados
Vamos examinar essas áreas agora.
Depuração padrão
Se você é um desenvolvedor web experiente, então depurar um código Gaia pode ser um processo bem familiar. Nós já discutimos como executar o Gaia no Firefox Desktop, e como fazer uma alteração básica. Para alterações mais complexas, você deve fazer muito mais uso das ferramentas de depuração do Firefox disponíveis no Firefox Desktop.
Nota: Para instruções de como usar essas ferramentas, consulte a seção de Ferramentas.
Testes automatizados
Você também pode executar as suites padrões de testes automatizados antes de submeter uma correção, para certificar-se que as alterações no código não afetarão as funcionalidades essenciais do telefone. Os testes que podem ser executados são:
- testes unitário
- teste de performance
- testes da interface do usuário
Nós geralmente pedimos que esses testes sejam executados antes de submeter uma correção, se essa é sua primeira contribuição então você pode submeter sem os testes, mas você deve pedir ajuda para executar os testes no futuro. Você deve atualizar o repo do Gaia antes de executar os testes, para certificar-se que você tem a última versão.
Nota: Você encontra mais informações de como funcionam os testes no artigo Testes automatizados do Firefox OS.
Nota: Você deve considerar executar cada conjunto de testes num dispositivo real se disponível (algumas características de hardware não são suportadas pelo emulador), ou no emulador B2G Destop, ou no Firefox Nightly caso não possua o dispositivo real.
Testes unitários
Testes unitários são testes em unidades individuais do código em uma aplicação maior — no caso do Gaia, aplicativos individuais. O Gaia usa para os testes:
- mocha para seus testes de framework
- chai como uma biblioteca assert
- sinon.js para uma biblioteca mock & stub
- blanket.js como uma ferramenta de teste de cobertura
Você pode executar o seguinte comando para baixar, instalar e hospedar o servidor unittest (sua execução leva alguns minutos, portanto pode ser um bom momento para uma xícara de café ou chá):
make test-agent-server
A seguir, abra um novo terminal e carregue o aplicativo test-agent
no Nightly:
- Execute esses comandos, se você ainda não completou essa etapa enquanto o comando anterior está sendo executado:
make DEBUG=1 /Applications/FirefoxNightly.app/Contents/MacOS/firefox -profile /Users/bob/git/gaia/profile-debug -no-remote
- Clique no Aplicativo Test Agent na tela inicial
Agora você pode executar todos os testes com o seguinte comando:
make test-agent-test
Nota: Isso pode levar muito tempo, uma vez que existem muitos testes para serem executados (possivelmente uma hora ou mais), porém, provavelmente você vai querer executar os testes apenas para o aplicaitvo que você modificou. Você pode fazer isso incluindo APP=<app folder name>
no comando, por exemplo APP=settings
.
Nota: Você também pode ler Testes unitários do Gaia para mais informações sobre testes unitários.
Testes integrados
Testes integrados envolvem testes de diferentes unidades agrupadas para verificar como elas trabalham em conjunto e esse é o próximo passo após o teste unitário. Os testes de integração no Gaia são conduzidas pelo script marionette escrito em JavaScript e com um servidor baseado em python. Ele pode comunicar-se com o Gecko assim é possível controlar tanto o navegador como o dispositivo Firefox OS e fazê-los interagir um com o outro.
Você pode executar o seguinte comando para iniciar os testes integrados:
make test-integration
Nota: Da mesma forma que nos testes unitários, a execução completa dos testes integrados pode consumir muito tempo, então você pode incluir APP=<app folder name>
no comando acima para testar um único aplicativo, por exemplo APP=calendar
.
Nota: para saber mais sobre testes integrados, leia Testes integrados do Gaia.
Testes de performance
Os testes de performance Gaia dispara o B2G Desktop, que por sua vez lança aplicativos diversas vezes e calcula uma média de tempo de carga dos aplicativos. Depois de executar um teste, o framework também coleta a utilização de memória do aplicativo e do sistema (b2g
).
Para executar os testes, você precisa ter o B2G Desktop instalado e executar o seguinte comando:
make test-perf
Nota: Assim como nos outros tipos de testes, você pode incluir APP=<app folder name>
ao comando acima para testar um único aplicativo, por exemplo APP=settings
.
A média geral será apresentada como um valor de mozPerfDurationsAverage
:
"mozPerfDurationsAverage": 225.5
Isso indica a média do tempo de carga de um aplicativo em milisegundos, para um bom resultado o valor deve ser inferior a 1 segundo. Os testes de performance também retorna alguns detalhes da utilização de memória:
{ "app": { "name": "Settings", "uss": 16.6, "pss": 19.5, "rss": 32.9, "vsize": 73.3 }, "system": { "name": "b2g", "uss": 50.1, "pss": 53.2, "rss": 67, "vsize": 148.1 } },
A regra de ouro para os testes de performance é: "Números baixos são melhores". Abaixo o significado de cada um:
uss
: unique set sizepss
: proportional set sizerss
: resident set sizevsize
: virtual set size
Geralmente vsize
>= rss
>= pss
>= uss
. vsize
e rss
não reflete com precisão a utilização de um processo quando compartilhado com outros. Então, os dois números que irão interessar são: pss
and uss
.
uss
é a memória que é completamente destinada àquele processo. É a quantidade de memória que deve ser liberada se o aplicativo for terminado nesse momento. É um valor chave para ser avaliado.
pss
é o tamanho proporcional das bibliotecas compartilhadas do processo. Essa é a quantidade de memória que deve ser liberada se o processo for terminado.
Nota: Para saber mais sobre testes de performance, leia Testes de Performance do Gaia.