A Era Digital promoveu a ascensão de aplicativos móveis, sites responsivos, serviços em nuvem, microserviços, Big Data, inteligência artificial e Internet das Coisas. As soluções de negócio, antes centralizadas, agora se espalham sob essa malha digital. E nesse período de transformações, o desafio é o de garantir a resiliência das operações de negócio. Por isso, os testes têm crucial importância para a sobrevivência das organizações.
Quanto mais eficazes forem os testes, maior a confiança que aportarão nos produtos de negócio. Porém, testes mais eficazes pressupõem ciclos mais longos e completos de testes, que podem inviabilizar o time to market. Mensure o tempo gasto para rodar testes (n) de transações (t) de negócio em (x) dispositivos móveis e (y) browsers diferentes. Olhando a métrica abaixo fica evidente que o esforço será elevado.
Número de Testes n = t*(x+y)
Então, o passo natural é aportar eficiência, investindo na automação de testes como forma de potencializar os esforços manuais e reduzir o retrabalho.
Recomenda-nos o Gartner: 'automate everything' ou 'whenever is possible' (automatize tudo ou o máximo possível). A automação colabora para o cumprimento do timing dos projetos, acelerando a identificação de defeitos. A automação de testes vira caminho crítico para o sucesso dos projetos digitais. Contudo, é importante frisar que este recurso não substitui totalmente o teste manual, mas sim o complementa.
Sendo assim, seguindo o Princípio de Pareto (80/20) listo cinco ferramentas que compõem um toolkit de automação para os projetos de testes. Elas possuem larga base de conhecimento disponível na internet, são abertas, de custo zero para licenciamento, com altíssimo poder de fogo e que podem gerar resultados rápidos.
- Teste de aplicativos Web
Ferramenta: Selenium Web Driver
https://w3c.github.io/webdriver/webdriver-spec.html
Selenium é uma API densa que permite a automação em aplicativos web para os principais navegadores. É possível automatizar utilizando HTML, CSS ou XPATH. O mesmo código é reutilizado em múltiplos browsers, ganhando escala de execução dos testes. É compatível com diversas linguagens de programação como Java, C#, Ruby e etc.
Permite rodar os testes numa máquina virtual ou também por meio de serviços em nuvem. Pense só no ganho de escala executando o mesmo cenário de teste em 100 configurações diferentes. E para finalizar, o Selenium foi normatizado pelo W3C e se tornou um padrão para a automação de testes web.
- Testes de aplicativos móveis
Ferramenta: Appium http://appium.io/
O produto cartesiano dos Testes X Dispositivos X Configurações eleva bastante os esforços necessários para homologar as aplicações móveis. Com a ferramenta Appium é possível automatizar de uma única vez casos de testes funcionais para Android e iOS e rodar nos variados Dispositivos e Configurações.
A ferramenta reaproveita a padronização de código da ferramenta Selenium. Outra vantagem é a utilização dos scripts em dispositivos conectados localmente ou em nuvem. Há diversos serviços de device farm em nuvem habilitados para executar testes automatizados em Appium.
- Testes de performance
Ferramenta: Jmeter http://jmeter.apache.org/
O objetivo do teste de performance é assegurar e medir a estabilidade da aplicação mediante determinadas condições de carga, estresse, disponibilidade, latência e etc. Com o JMeter é possível gerar condições irregulares de pico, sobrecarga e estresse. É possível homologar desde as tradicionais chamadas HTTP que são originadas de browser como também as chamadas à serviços SOA e JSON.
- Testes de serviços
Ferramenta: SoapUI https://www.soapui.org/
Certificar que as transações e regras de negócio estejam em conformidade antes das primeiras telas serem finalizadas é tarefa a ser realizada pela ferramenta SoapUI. Com ela é possível realizar os testes dos serviços e da API.
Utilizando a linguagem Groovy e isolando a camada de serviços da camada de apresentação, a ferramenta SoapUI possibilita identificar erros de regras de negócio, de comunicação ou de integração entre sistemas. A ferramenta suporta JSON, XML, HTML. Suporta também serviços "mockados" e testes de performance.
- Testes de código (BDD/TDD)
Ferramentas: Cucumber (Java ou Ruby) / SpecFlow (.Net)
https://cucumber.io/ e http://www.specflow.org/
BDD (Behaviour Driven Development) se tornou uma disciplina fundamental para incrementar a testabilidade de software. Ele eleva o TDD (Test Driven Development) e o DDD (Domain Driven Development) a um novo patamar, permitindo especificar a inteligência de negócio no código. Vai em linha com a ideia de testar antes de a aplicação ficar pronta.
O Cucumber é a ferramenta que torna possível especificar o comportamento esperado do software durante a codificação e posteriormente usar esses cenários de testes para averiguar o comportamento obtido. Entregar um aplicativo com inteligência de testes embutida no código aporta valor principalmente em testes regressivos e de aceite.
Ter estas ferramentas à disposição já é um bom norte para os stakeholders que pretendem adotar a automação de testes em seus projetos digitais.
Tiago Teixeira, especialista da Inmetrics.