Por que eu devo ler este artigo:Este artigo é útil por explicitar e analisar as diferentes formas de adotar testes automatizados. Para isso, serão analisados aspectos teóricos, como os conceitos relacionados aos diferentes tipos de testes, e práticos, como a automatização de tais conceitos utilizando técnicas e frameworks.

Além disso, o papel dos testes automatizados em times ágeis e em sistemas legados também será explorado. O objetivo com isso é fornecer uma base conceitual, que permita ao leitor aplicar testes automatizados alinhados à necessidade de forma eficaz.

A automatização de testes é um tema de grande relevância quando se fala em qualidade de software e por isso, o uso desta disciplina deve ser considerado em todos os projetos de software. Com testes automatizados consegue-se entender melhor os problemas, já que o desenvolvedor, pela prática, valida sua hipótese considerando diferentes cenários.

Além disso, reduz-se o stress e aumenta-se a satisfação, pois com um bom conjunto – ou suíte – de testes, bugs são detectados mais cedo no ciclo de desenvolvimento e menos problemas chegam ao cliente, diminuindo com isso o custo na criação de novos produtos, visto que o código com testes automatizados é construído com mais cuidado, o que sugere menos bugs e, consequentemente, menos gastos com manutenção.

Consequentemente, reduz-se também o custo com evoluções no sistema, já que uma alteração que possa causar efeitos colaterais é rapidamente evidenciada pelos testes, permitindo identificar os pontos falhos de forma clara e objetiva, alcançando assim correções ágeis e entregas com menos erros. Constata-se, portanto, que a adoção de testes automatizados oferece ganhos em diversas etapas da construção de um sistema.

Contudo, sua aplicação eficaz é uma atividade longe do trivial. Não apenas pelo uso de ferramentas e frameworks, mas principalmente por causa do entendimento dos conceitos envolvidos. Sabe-se que existem diferentes tipos de testes automatizados, específicos para cada situação (testes unitários para testar unidade, testes de integração para testar componentes, testes de aceitação para testar funcionalidades), mas comumente observa-se que a distinção nem sempre é considerada. O problema com isso é que um mal entendimento dos conceitos relacionados pode levar à lentidão desnecessária na execução dos testes, dificuldades na otimização do processo de integração contínua, falhas na comunicação sobre os testes dentro do próprio time, entre outros.

A partir dessa contextualização, este artigo analisará os diferentes tipos de testes automatizados, considerando algumas técnicas e práticas.

Entre quadrantes e pirâmides

Idealmente, o desenvolvedor deveria garantir que todo código-fonte entregue possui testes automatizados que o validam. Essa proposta parte do princípio de que não se sabe se algo realmente funciona como esperado até que seja efetivamente testado.

Diante disso, nos cenários onde o desenvolvimento de software é estruturado de acordo com métodos ágeis e onde os times fazem uso de User Stories (vide BOX 1), espera-se que cada tarefa de codificação possua também um esforço para criação dos respectivos testes automatizados. Dessa forma, garante-se a construção de código com melhor qualidade.

Nota: User Stories

User Stories, ou Histórias de Usuário, são uma prática comum em times que fazem uso de métodos ágeis, como XP e Scrum. Elas podem ser encaradas como uma forma clara, direcionada, menos ambígua e mais voltada à construção de software do que a escrita tradicional de requisitos. A User Story define uma funcionalidade de forma abrangente, e sobre ela são criadas as tarefas necessárias para sua realização. Por exemplo, para uma funcionalidade de login de usuário, a técnica de User Story poderia apresentar alguns dos requisitos no seguinte formato:

Usuário efetua login no sistema com sucesso:

  • Dado um usuário com permissão
  • QUANDO o mesmo efetua login no sistema
  • ENTAO é redirecionado para a página principal

Usuário efetua login no sistema com falha:

  • Dado um usuário com permissão
  • QUANDO tenta efetuar login com credenciais inválidas
  • ENTAO recebe mensagem indicando erro na autenticação

E não consegue efetuar login.

A noção de que cada requisito de software precisa ter um teste associado aumenta consideravelmente a cobertura de código sendo testado. Contudo, também é importante identificar qual tipo de teste é mais adequado para cada situação, pois não se deve utilizar o mesmo para tudo. Para que se saiba que teste automatizado escrever, um passo fundamental é conhecer as opções existentes.

No livro Agile Testing: A Practical Guide for Testers and Agile Teams, as autoras Lisa Crisping e Janet Gregory apresentam um quadrante organizando os diferentes tipos de testes (vide Figura 1).

Quadrante de testes de Crispin e Gregory
Figura 1. Quadrante de testes de Crispin e Gregory

O enfoque deste quadrante é direcionado ao trabalho com times ágeis, mas não significa que os tipos dispostos são relevantes apenas a times com esta organização. Como pode-se verificar, cada setor da figura é numerado, de Q1 a Q4, de acordo com sua característica (e cada setor do quadrante possui um balão, que define a forma de realização d ...

Quer ler esse conteúdo completo? Seja um assinante e descubra as vantagens.
  • 473 Cursos
  • 10K Artigos
  • 100 DevCasts
  • 30 Projetos
  • 80 Guias
Tenha acesso completo