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:

  1. 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.
  2. 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.
  3. 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:

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *