Testes Automatizados de Software
Test-Driven Development
TDD ou Test-Driven Development, originalmente inventado por Kent Beck como parte de sua metodologia de extreme programming, desde os anos 90 TDD vem ganhando adeptos pelo mundo. Em um estudo open source languages 2016, quase a metade de todos os entrevistados mencionaram o TDD como uma metodologia de desenvolvimento que usam no dia a dia. O objetivo do TDD é obter um código limpo, bem documentado e testes para que seja gerada uma solução completa e sustentável a longo prazo, e o desenvolvedor pode passar para o próximo bit de recursos app.
A longo tempo, o aplicativo cria um conjunto abrangente de testes que oferece confiança no que foi construído até então. Subsequentemente, conforme as pessoas operam mudanças e os testes passam ou falham, o usuário tem confiança nas mudanças e compreende o que pode ter dado errado.
Processo de desenvolvimento:
- – Escreva testes para testar o recurso.
- – Execute testes (somente os novos testes podem falhar).
- – Escreva seu código para implementar o recurso.
- – Execute os testes (repita os passos 3 e 4 até passarem todos os testes).
- – Refatore o código (se necessário).
Behavior Driven Development
BDD ou Behavior Driven Development, foi originalmente criado em 2003, por Dan North, como resposta ao TDD, e tem se expandindo muito.
BDD é uma abordagem que funciona muito bem como uma metodologia ágil, encorajando desenvolvedores, pessoas de qualidade, não técnicas e de negócios em um projeto de software, que defende o uso de Ubiquitous language que facilita a conversação entre toda equipe envolvida.
Como começa a prática do BDD:
- Envolver as pessoas no processo através de Outside-in Development (Desenvolvimento de Fora pra Dentro)
- Usar exemplos para descrever o comportamento de uma aplicação ou unidades de código
- Automatizar os exemplos para prover um feedback rápido e testes de regressão
- Usar “deve” na hora de descrever o comportamento de software para ajudar esclarecer responsabilidades e permitir que funcionalidades do software sejam questionadas
- Usar dublês de teste (mocks, stubs, fakes, dummies) para auxiliar na colaboração entre módulos e códigos que ainda não foram escritos.
No BDD um desenvolvedor, um profissional do setor de aquelidade ou até mesmo um cliente podem escrever os testes que basicamente são compostos em duas partes, a definição da funcionalidade a ser implementada (User storie) e os cenários de uso que irão validar o requisito.
Ferramentas de Teste
Selenium
Selenium no momento é a ferramenta mais popular e utilizada no mercado. A ferramenta open source é usada principalmente em aplicações web. Com sua estrutura de teste o Selenium atua em vários browsers e plataformas como Linux, Mac , Windows, Firefox, Chrome, Internet Explorer, Assim como em Headless Browsers. O Selenium IDE, um add-on de navegado, permite gravar e reproduzir, quer dizer que o usuário pode usar estas funcionalidades até mesmo se estiver aprendendo usar o Selenium IDE. O Selenium WebDriver te auxilia na hora de criar scripts de automação de testes mais complexos e avançados, e além disso os usuários podem escrever em várias linguagens de programação como Java, Perl, JavaScript, PHP, Python, C#, Ruby e Groovy.
Cucumber
Cucumber programado em Ruby, é uma ferramenta de testes open source desenvolvido com um conceito desenvolvimento orientado por comportamento (BDD). Este conceito e utilizado para escrever testes de aceitação para aplicações web. Antes Cucumber era restrito apenas ao Ruby, mas atualmente Cumcumber já suporta outras linguagens de programação como Java, NET, Scala, Groovy, etc.
Rspec
Rspec é um framework de tests de unidade, ele vai além de apenas fornece um conjunto de métodos para os seus testes, ele nos fornece também uma DSL para descrever os comportamentos esperados sistema, ao invés de ter apenas “um monte” de asserts, temos “um monte” de asserts dentro de exemplos executáveis, a diferença é sutil, mas faz boa diferença. O Rspec hoje e uma ferramenta muito utilizada pelos desenvolvedores de Ruby, e mesmo não precisando de muitos recursos que o Rspec pode fornecer como, por exemplo mocks, ele atende muito bem as necessidades do usuário, que podem ser básicas. Além disso os testes muito mais claros, e assim fica mais fácil para o usuário ou uma outra pessoa fazer manutenção mais pra frente.
Ronorex
Ronorex uma ferramenta de teste de GUI bastante ajustável de se executar e automatizar testes, é uma ferramenta que oferece também diversas automatização de testes para aplicações web, desktop e mobile. Diferente do Selenium, o Ranorex é fácil de instalar e o uso fácil para não programadores.