O Padrão Triple A (Arrange, Act, Assert) no desenvolvimento de testes3 min read
Categoria: Engenharia de Softwares Node.js
E aeee pessoal \o Neste artigo vamos falar um pouco sobre o padrão Triple A (Arrange, Act, Assert) que é um dos métodos mais claros para ser escrever um teste. Este padrão cria uma estrutura concisa para desenvolver testes automatizados, tornando-os mais compreensíveis e mantendo uma organização lógica, além de ajudar na documentação do software através da escrita de testes. Vamos ver um exemplo simples que ilustra a abordagem de forma didática. Após este exemplo, use essa abordagem para escrever testes maiores seguindo a divisão de cada seção proposta pelo padrão.
O que é o Padrão Triple A?
O padrão Triple A divide o processo de escrita de um teste em três partes distintas, cada uma responsável por uma etapa específica do teste. Essas três etapas são:
- Arrange: preparar o ambiente para o teste, com declaração de variáveis, mocks e fakes entre outros recursos que serão utilizados no teste.
- Act: executar a ação que será testada, que pode ser um método, uma chamada de endpoint, ou seja, a(s) chamada(s) que serão necessárias passar pelo teste.
- Assert: verificar se a ação executada produziu o resultado esperado.
No exemplo a seguir usarei o código deste repositório que usa Node.js + TypeScript com Jest como exemplo para explicar o padrão Triple A. Embora seja um exemplo simples, ele irá ilustra como cada seção do teste pode ser divida usando o padrão proposto neste artigo.
1. Arrange: Preparar o Ambiente
Descrição
A etapa de “Arrange” envolve configurar o ambiente de teste, instanciando objetos, criando dados fictícios e estabelecendo as condições iniciais para o teste.
Exemplo
it("should add two numbers", () => {
// Arrange
const calculator = new Calculator();
const a = 1;
const b = 2;
...
});
Neste exemplo, estamos preparando o ambiente para um teste de adição, instanciando um objeto da classe Calculator
e definindo os valores que serão somados.
2. Act: Executar a Ação
Descrição
A etapa de “Act” é onde a ação real que está sendo testada é executada. Aqui, a funcionalidade do sistema que você deseja testar é chamada com os parâmetros definidos na etapa “Arrange”.
Exemplo
it("should add two numbers", () => {
// Arrange
const calculator = new Calculator();
const a = 1;
const b = 2;
// Act
const result = calculator.add(a, b);
...
});
Neste exemplo, estamos chamando o método add
da classe Calculator
com os valores que foram preparados anteriormente.
3. Assert: Verificar o Resultado
Descrição
A etapa de “Assert” é onde você verifica se a ação executada na etapa “Act” produziu o resultado esperado. Esta é a verificação final para confirmar se o teste passou ou falhou.
Exemplo
it("should add two numbers", () => {
// Arrange
const calculator = new Calculator();
const a = 1;
const b = 2;
// Act
const result = calculator.add(a, b);
// Assert
expect(result).toBe(3);
});
Neste exemplo, estamos usando o método expect
para verificar se o resultado da adição é igual a 3.
É importante destacar que o uso dos comentários para deixar claro a divisão das seções do teste (Arrange, Act e Assert) não é algo meramente ilustrativo, sendo interessante usá-lo para especificar cada seção.
Conclusão
O padrão Triple A (Arrange, Act, Assert) é uma abordagem lógica e eficaz para escrever testes no desenvolvimento de software. Ao seguir esse padrão, os desenvolvedores podem manter seus testes organizados, fáceis de ler e compreender. A estrutura clara do padrão Triple A também torna o processo de escrita de testes mais eficiente, ajudando a garantir que o código esteja livre de erros e funcionando conforme o esperado.
Fontes:
- O Padrão Triple A (Arrange, Act, Assert): https://medium.com/@pablodarde/o-padr%C3%A3o-triple-a-arrange-act-assert-741e2a94cf88
- Testando com AAA (Arrange, Act, Assert): https://www.lambda3.com.br/2010/08/testando-com-aaa-arrange-act-assert/
- Repositório com exemplo: https://github.com/fabioalmeida100/triple_a