2 AUTOMAÇÃO DE TESTES DE SOFTWARE EM DISPOSITIVOS MÓVEIS
2.5 FERRAMENTAS DE AUTOMAÇÃO DE TESTE DE SOFTWARE
Existem diferenças significativas e peculiares no contexto da automação de testes de software para smartphones e aplicações desktop ou web. Grande parte dos smartphones possuem recursos que os tornam mais robustos e que engrandecem suas funções, no entanto, isso tem-se tornado um desafio para a automação de testes para smartphones, umas vez que os aplicativos, nativos ou híbridos, vêm utilizado desses recursos e que tais ferramentas
33
de automação devem ser capazes utilizar as funcionalidades da aplicação, a fim de garantir uma maior cobertura de testes. (Farto e Endo, 2015).
Conforme Pezzè e Young (2008), a automação de teste é uma recurso importante para reduzir custos e melhorar a eficiência no processo de teste. Todavia deve ser analisado se as ferramentas utilizadas para a automação de teste se enquadram com o processo de desenvolvimento, com domínio da aplicação e com as técnicas de teste e análise adequada.
Atualmente, existem diversas ferramentas para automação de testes para smartphones, dentre elas, foram selecionadas três ferramentas que atendem os princípios de automação de testes para smartphones.
2.5.1 Robotium
Segundo o próprio fabricante desenvolvedor, Robotium foi desenvolvido em 2010 por Renas Reda, uma autoridade internacional no processo de automação de teste.
Existem diversos frameworks de automação para Android. Entre os que estão em destaque existe o Robotium que tem uma API muito clara e objetiva, além de proporcionar a criação e execução de testes quando possuímos ou não acesso ao
código-fonte da aplicação. Nogueira (2015).
O Robotium teve o seu desenvolvimento e foi apoiado por diversos desenvolvedores, tendo como suporte a documentação dedicada a ele altamente ativa. Conferindo e por se tratar de um projeto consolidado, atualmente diversas empresas pelo mundo o utilizam, segundo o próprio fabricante Robotium.
Figura 5 - Logo Robotium
Fonte: Robotium, 2015.
Ainda conforme Nogueira (2015), Robotium "é um framework de automação de teste para a plataforma Android que suporta aplicações híbridas e nativas". Lembrando que a capacidade de testes desse framework é do tipo caixa preta ou caixa branca, com interface
34
amigável o que torna possível de utilização para usuários sem um conhecimento avançado em programação de scripts de testes.
Elucidando os pontos positivos, Luzzi (2015) cita que há uma comunidade de suporte dispostos a compartilharem experiências e, caso seja necessário, contar com esses recursos para possíveis deficiências na utilização. Outro fato, ainda, o Robotium não demanda de instalação e utiliza da linguagem de programação JAVA, permitindo um universo de possibilidades.
As possibilidades com o Robotium são bem arrojadas e robustas, atendendo as necessidades do dia a dia da criação de scripts de automação de testes. Como elucida NOGUEIRA (2015), com esta ferramenta é possível:
- testar aplicações Android nativas e híbridas;
- requer um mínimo de conhecimento da app alvo dos testes; - trabalhar com múltiplas apps automaticamente;
- escrever scripts automatizados de forma rápida;
- entender melhor o scripts automatizado, uma vez que dispõe de comandos mas legíveis;
- execução mais rápida em comparação com o Android Testing Framework;
- integrar o código com ferramentas de build como Maven, Gradle ou Ant para execução em integração contínua.
A Partir dessas potencialidades que esta ferramenta permite realizar, é notável a gama de possibilidades que está à disposição dos testadores, analistas de qualidade e, entre outros. Não parando por aqui, ainda há algumas outras aplicabilidades em que é possível utilizar o Robotium, como evidencia Nogueira (2015):
- captura de Screenshot: isso só pode ser feito se existir uma permissão de escrita no app alvo dos testes e, se o dispositivo for virtual, possuir um SDCard montado; - suporte a aplicações híbridas: desde a versão 4.0 do Robotium é possível interagir com elementos web;
- testes em aplicativos pré-instalados: é possível testes aplicativos que já estejam instalados na plataforma Android.
O Robotium é um dos diversos frameworks disponíveis para implementação de scripts de testes automatizados, assim como o Calabash a seguir.
35 2.5.2 Calabash
Está é mais uma ferramenta de automatização de testes para smartphones, com enfoque no open source, é totalmente gratuito. Calabash, Figura 6, foi desenvolvida e é mantida pela Xamarin, que também detém um leque de outras ferramentas e serviços na nuvem para tal finalidade.
Figura 6 - Logo Calabash
Fonte: Calabash, 2015.
Seguindo a premissa de ser versátil e garantir uma série de possibilidades, é possível automatizar testes para iOS ou Android, para aplicativos nativos ou híbridos. De acordo com Nogueira (2015), “O Calabash utiliza a técnica de BDD - Behavior Driven Development para viabilizar a criação e execução dos scripts de teste.”
Alinhado ao BDD, a ferramenta faz com que a interação e a troca de informações entre o time de desenvolvimento seja dinâmico e claro, de modo simples e preciso. Ainda, Nogueira (2015) cita outros pontos positivos ao Calabash em conjunto ao BDD:
- trabalha com os moldes de teste de aceitação, que é uma documentação clara do que deve ser desenvolvido e entregue;
- é ligado com a especificação da funcionalidade, sendo esta uma especificação executável apresentando os pontos de falha na execução do teste de forma clara e direta.
Segundo a Xamarin, Calabash tem integração com Cucumber, isso faz com que a linguagem dos scripts sejam facilmente entendida e assimilada por pessoas que não sejam os testadores ou técnicos na área. Além disso, por ser baseado na linguagem de programação Ruby, é possível ser utilizado para escrever testes funcionais e de aceitação automatizados, usando qualquer outro framework de mesma linguagem.
36 2.5.3 Appium
Desde 2012, assim como as outras ferramentas demonstradas acima, Appium, Figura 7, também é uma ferramenta de automatização de testes para dispositivos móveis. É uma ferramenta de código aberto e pode ser utilizada para automação de aplicações híbridas ou nativas em dispositivos com as plataformas iOS e Android, segundo o próprio fabricante desenvolvedor Appium (2015).
Um destaque que a Appium (2015) apresenta é a característica de cross-platform que, segundo eles, tal tecnologia permite desenvolver scripts de automação para as duas plataformas iOS e Android, utilizando a mesma API, desonerando a necessidade de ter que desenvolver tipos diferentes de scripts de automação conforme cada plataforma.
Figura 7- Logo Appium
Fonte: Appium, 2015.
Nogueira (2015) diz que “O Appium utiliza os próprios frameworks de teste de cada plataforma. Isso nos traz uma facilidade na escrita de código e a necessidade de não compilar com uma biblioteca específica ou não depender de nenhuma outra biblioteca.”
A arquitetura que o Appium utiliza é do tipo cliente/servidor, segundo NOGUEIRA (2015),
Appium é um servidor web que expõe uma API REST. Ele recebe conexões de um cliente (comandos de uma linguagem de programação), interpreta os comandos recebidos e executa estes comandos no aplicativo móvel (ou site mobile). Ao final uma resposta HTTP é recebida representando o resultado da execução do comando.
Os ganhos com a arquitetura que a Appium disponibiliza são os testes na nuvem, executando os scripts de automação e executar os scripts de automação de testes em outra máquina física.
Segundo Avram (2015),
Não é necessário recompilar a aplicação para testar com o Appium. Os testes podem ser escritos em diversas linguagens suportadas pelo WebDriver do Selenium, incluindo Java, Objective-C, JavaScript, PHP, Python, Ruby, C#, Clojure, Perl, Haskell, e em alguns frameworks de testes como:JUnit, RSpec, PHPUnit, Nose, Mocha, Cucumber, Capybara, Vows, entre outros.
37
Diante dessas características, o Appium tem demonstrado grande robustez e eficiência em sua finalidade, possibilitando a criação de scripts de automação de forma objetiva e útil para diversas finalidades a que se propõe.
2.5.4 Comparativo entre ferramentas
Perante as análises e breve descritivo das ferramentas de automatização de testes apresentadas acima, encontra-se no Anexo A – Quadro comparativo entre as ferramentas Appium, Calabash e Robotium, um quadro representativo com tal comparativo. Apenas uma breve síntese do quadro comparativo, que relaciona as ferramentas Appium, Calabash e Robotium, traçando um plano cartesiano entre elas elencando quesitos como, linguagem de desenvolvimento dos scripts de testes, informações de comunidades de suporte e outras informações pertinentes.