Testes Automatizados podem ser vistos como procedimentos destinados a estabelecerem a qualidade, confiabilidade e desempenho de algo, especialmente, antes de ser levado para uso generalizado.
[adrotate banner=”4″]
Um teste de software é um método cuja finalidade é avaliar e verificar se o sistema faz o que foi predisposto. Ou seja, se corresponde aos requisitos esperados, visando garantir um produto que seja o mais livre possível de falhas.
A prática de testar aplicações traz inúmeros benefícios no que tange o desenvolvimento de software, entre elas podemos citar:
Os testes surgem com objetivos e estratégias específicas e existem diversos tipos diferentes, alguns deles são:
O teste de software geralmente é formado de etapas comuns, como a definição do ambiente de teste, o desenvolvimento dos casos, a escrita dos scripts e a análise dos resultados. Assim, uma boa abordagem de testes envolve a interface de programação de aplicações (API) e a interface de usuário.
Pode ser realizado de forma manual ou automatizada, sendo, os testes automatizados mais rápidos e eficientes para testar as funcionalidades de sistemas maiores. Além disso, podem servir também como forma de documentação para que novos integrantes no projeto consigam compreender melhor todo o cenário de funcionamento da aplicação.
Os testes em aplicações para dispositivos móveis funcionam de maneira semelhante aos testes para aplicações web. Então, podem ser testados os componentes, as funcionalidades e até mesmo todo o funcionamento do aplicativo.
Para instalar o Cypress, basta navegar até o diretório do projeto que será testado e utilizar:
Em seguida, rodando o comando abaixo, um diretório chamado cyrpess e um arquivo cypress.json serão adicionados.
Uma janela também será aberta onde irão aparecer todos os arquivos de testes. Assim, ela possibilita criar novos arquivos de testes. Atualmente, o cypress possui Edge, Chrome e Electron como opções de navegadores, também é possível consultar a documentação e até realizar configurações.
No arquivo cypress.json, devemos configurar a url como o local onde o Expo CLI irá executar o aplicativo, como mostra a imagem a seguir.
Embora os testes sejam executados em um ambiente web, é possível simular as dimensões reais de dispositivos móveis adicionando viewportWidth e viewportHeight, essas propriedades são opcionais.
Os testes devem ser colocados na pasta integration e devem ter o formato [nomeDoArquivo].spec.js. Além disso, o cypress possui guias de configuração e migração que podem ser consultados em sua documentação.
Para testar o aplicativo, foi criado um arquivo com testes simples para verificar algumas funcionalidades. Assim, os testes seguem uma sequência padrão em que:
Os testes podem ser executados clicando no Botão Run (todos os testes serão executados). Bem como também é possível clicar em um arquivo específico de teste, o aplicativo precisa estar sendo executado pelo Expo de forma web. Após a execução, teremos o seguinte resultado:
Para este exemplo de teste, iremos utilizar o apk de demonstração disponibilizado pela appium e começar a configurar o setup de testes. Para instalar o Appium, basta rodar no terminal o comando abaixo:
Instalando o appium-doctor, o comando no terminal irá mostrar se existe alguma dependência ou variável de ambiente que sejam necessárias e não estejam instaladas ou configuradas corretamente.
Em seguida, será preciso atualizar o package.json para a configuração utilizando o webdriverio, adicionando um comando de test, timeout para o mocha e as bibliotecas assert, chai, mocha e webdriverio como dependências de desenvolvimento, depois usar npm install para a instalação. A ferramenta também disponibiliza exemplos de testes para linguagens de programação diferentes.
Na sequência, vamos criar um diretório chamado helpers e adicionar dois scripts, o primeiro apps.js irá definir os aplicativos que serão utilizados. No exemplo, só será retornado o caminho para o arquivo apk, mas é possível configurá-lo para retornar caminhos para aplicativos diferentes, de acordo com condicionais.
O próximo helper caps.js retorna as opções de configuração, como o nome da plataforma, tipo de automação, nome do dispositivo android, a versão que será utilizada e o aplicativo que será definido nos testes. Além disso, ele ajusta os parâmetros de conexão com o servidor do Appium.
No arquivo de testes, que deve ter o formato [nomeDoArquivo].test.js, importamos o webdriverio, o assert da biblioteca chai e as opções de android dos helpers criados anteriormente.
Além disso, definimos o caminho do aplicativo em androidOptions.capabilities.app = app, o formato de definição dos testes é describe(‘descrição do conjunto de testes’, função). E, para os testes, it(‘descrição do teste’, função), before() conecta as configurações do android que definimos no helper caps.js com o webdriverio antes dos testes começarem.
O formato de busca aos elementos é feito como client.$(‘~Parâmetro de Seleção’), onde cliente é a conexão feita com o webdriverio.
Dessa forma, podemos ainda simular eventos de touch com o método [element].click() e digitação com [element].setValue(). Também é possível simular o click no botão de retorno do dispositivo móvel usando client.back(). O método [element].getText() retorna o conteúdo de texto do elemento que pode ser comparado com o comando assert.equal().
A função assert da biblioteca chai possui métodos de comparação como isObject() e isNull() para verificar se o elemento comparado é um objeto ou nulo. Também é possível fechar a conexão com o webdriverio utilizando client.deleteSession().
Para a execução dos testes, é preciso iniciar o appium rodando no terminal appium e npm test, para que o mocha inicie a execução dos scripts de teste. Após a execução, teremos o seguinte resultado:
O código fonte para os testes apresentados se encontra neste repositório.
Testes automatizados trazem diversos benefícios para um ambiente de desenvolvimento. Dessa forma, são ótimos recursos para facilitar a verificação das funcionalidades e possíveis falhas de uma aplicação.
No React Native, ferramentas como Cypress e Appium proporcionam ambientes de testes automatizados que podem ser configurados de acordo com necessidades e preferências específicas.
Autora: Crislâine dos Santos Costa.
[adrotate banner=”5″]
Veja também:
Autor