Este é mais um texto que foi publicado pelo blog da geekhunter sobre as maiores vantagens de teste automatizado de software. Temos que testar!
Navegar é preciso. Testar é preciso.
Houve uma época em que o teste de software não existia, ou pelo menos não era praticado com a ênfase merecida.
Até que surgiu o Sr Myers, mais precisamente Glenford Myers. Myers publicou um livro em 1979, que é considerado a bíblia do teste de software.
É deste trabalho que extraímos a definição do que é teste de software. Conceitualmente é um processo que faz parte do desenvolvimento de qualquer aplicação — ou pelo menos deveria — e tem como principal intuito revelar falhas/bugs.
O objetivo principal é chegar a um determinado nível de qualidade. Nesta definição encontramos a palavra qualidade que é exatamente a proposta de trabalharmos com testes de software.
Quanto mais cedo identificado um problema, mais barata é a sua correção.
Segundo Bohem (Software Engineering Economics) o custo relativo para corrigir um defeito aumenta à medida que o estágio de desenvolvimento do software vai avançando.
Produtividade x teste de software
Está é uma das primeiras objeções ao pensarmos em adotar a prática de testar o nosso software.
Se pensarmos que ser produtivo é definido pela quantidade de linhas escritas então faz sentido essa objeção.
Mas, se pensarmos que a produtividade é criar linhas de código que não apresentem erros, então estamos ganhando em produtividade.
>> Leitura recomendada:
Como aplicar Scrum em um Projeto de Teste de Software?
Testes automatizados e desenvolvimento guiado a teste TDD
Testes manuais são importantes e ajudam na busca por falhas no software.
A automação dos testes vai passar a responsabilidade de verificarmos o resultado de um teste para a máquina.
Tomando um exemplo bem simples onde é feita a soma entre dois números inteiros, é esperado um valor inteiro como resposta. Em um teste não automatizado nós precisamos checar esse valor.
Com a automação de testes nós fazemos a máquina verificar este resultado.
Testes automatizados também estão ligado a TDD. Essa prática é baseada na inversão da ordem do desenvolvimento. Primeiro é pensado a escrito do teste de software e depois, finalmente, a implementação do código.
O ciclo de desenvolvimento TDD é:
- Implementar um teste mais simples possível;
- Testar e ver ele falhar;
- Implementar a solução mais simples e resolver o problema;
- Refatorar para remover duplicidade e melhorar a solução.
Esté é o ciclo de desenvolvimento proposto pelo TDD.
Vantagens de testes automatizados e desenvolver guiado a testes
- A automação dos testes vai reduzir a chance de termos erros nos testes;
- Reduz a quantidade de esforço que seria realizado em testes manuais;
- Testes automatizados são reutilizados poupam recursos humanos pois você não precisará de várias pessoas para realizar um teste manual;
- Volume: testes automatizados permitem testar o software nos mais diversos dispositivos e cenários o que seria bem mais difícil de ser feito manualmente;
- Redução de custos, ganho na qualidade gerando maior retorno em relação ao investimento realizado.
Essas são vantagens significativas para o uso do teste de softwares automatizados. Testes automatizados oferecem: qualidade, redução de custos e melhor retorno sobre investimento, o ROI.
Principais ferramentas de automação de testes
O Selenium, que é a ferramenta que recomendo, fornece um conjunto de ferramentas para testes de aplicações web cross-browsers, mas não está limitada somente a aplicações web.
Versões do Selenium
Selenium IDE
Essa ferramenta é útil para agilizar a criação de testes. Permite registrar e executar as ações do usuário. Tem uma interface de fácil aprendizado, mas é apenas suportada pelo Firefox e Chrome.
Selenium 1RC
O RC é de remote control, esta versão permite testes html em vários browsers com uso de um servidor. Oferece suporte a multilinguagens: Java, Ruby, C#, Perl, Python etc. Selenium RC executa independente do ambiente: Windows, Linux, MacOs.
Selenium 2 WebDriver
Permite controlar pelo browser a nível de SO utiliza API orientada a objetos também é capaz de fazer uso da versão anterior 1RC.
Comparada com as outras versões tem a execução mais rápida. Suporta teste de aplicações IOS/Android.
Também é multi linguagem: Java, Ruby, C#, Javascript, Perl, Objective C, PHP, Python, R.
Você pode obter mais informações de como começar com a ferramenta por aqui: Selenium Doc.
É bem fácil encontrar frameworks de teste unitários para cada uma das linguagens mais utilizadas, como Java, PHP, Python, JS e etc. em php temos o PHPUNIT que pode ser facilmente instalado via composer.
Outra ferramenta de para automação de teste é o Katalon Studio ferramenta open source que permite teste de aplicações web, apis e aplicações mobiles.
Os testes podem ser feitos via script ou pela interface gráfica facilitando usuários com menos experiência. Também possui integração com o GIT, JIRA e Slack.
A ferramenta também conta com vários plugins, uns gratuitos e outros pagos para adicionar mais recurso ao ambiente de testes.
Essas são algumas boas ferramentas para teste automatizado de software. O objetivo deste artigo é focar nas vantagens que o teste automatizado e o desenvolvimento guiado por testes pode trazer para o desenvolvimento de software.
Relembrando, quanto mais cedo erros forem encontrados mais fáceis e menos custosos serão corrigi-los.
Por hoje é isso. Até a próxima, pessoal!