DEV Community

Cover image for Boas Práticas de Testes de Endpoints e Coleta de Evidências com Postman
Elves Santos
Elves Santos

Posted on

Boas Práticas de Testes de Endpoints e Coleta de Evidências com Postman

Por que é Importante Testar Endpoints de APIs?

No mundo do desenvolvimento de software, os endpoints de APIs desempenham um papel crucial na comunicação entre diferentes sistemas. Garantir que esses endpoints funcionem corretamente é essencial para a confiabilidade e segurança de qualquer aplicação. Testar APIs não é apenas uma etapa de verificação, mas uma prática contínua de monitoramento e otimização da qualidade do código.

A coleta de evidências durante os testes é uma prática fundamental. Essas evidências não só ajudam a identificar falhas e pontos de melhoria, como também fornecem um registro claro para auditoria, análise e compliance. No mundo corporativo, a documentação de testes e resultados pode ser determinante para a conformidade com padrões de segurança e qualidade.

A Relevância das Evidências no Mundo Corporativo

No contexto corporativo, as evidências de testes de API são frequentemente requisitadas para validar a integridade de um sistema, garantir que as funções estejam operando conforme esperado e prevenir vulnerabilidades de segurança. As empresas precisam documentar os testes para garantir que a entrega de software seja confiável, escalável e esteja em conformidade com os requisitos do cliente.

Testando Endpoints com o Postman

O Postman é uma das ferramentas mais utilizadas para testar APIs, oferecendo uma interface amigável e poderosa para realizar chamadas de API, validar respostas e coletar evidências. Com o Postman, podemos automatizar testes, realizar verificações de performance, segurança, e garantir que a API esteja funcionando corretamente.

Exemplos de Casos de Testes

Aqui estão alguns casos de teste que podem ser realizados para garantir a qualidade dos seus endpoints:

1. Validação de Status Code (Códigos de Resposta)

Objetivo: Garantir que o servidor retorne o código de status correto para diferentes tipos de solicitações.

Exemplo de Caso de Teste:

  • Teste: Verificar se a resposta da API retorna o código 200 para uma solicitação GET válida.

Exemplo de Código:

pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});
Enter fullscreen mode Exit fullscreen mode

2. Validação de Campos Obrigatórios na Resposta

Objetivo: Garantir que a resposta contenha os campos obrigatórios, com os valores corretos e no formato adequado.

Exemplo de Caso de Teste:

  • Teste: Verificar se a resposta de um endpoint GET retorna os campos id, name, e email corretamente.

Exemplo de Código:

pm.test("Response contains required fields", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.id).to.exist;
    pm.expect(jsonData.name).to.exist;
    pm.expect(jsonData.email).to.exist;
});
Enter fullscreen mode Exit fullscreen mode

3. Validação de Tipo de Conteúdo (Content-Type)

Objetivo: Verificar se o servidor retorna o tipo correto de conteúdo (por exemplo, application/json).

Exemplo de Caso de Teste:

  • Teste: Verificar se o cabeçalho Content-Type é application/json.

Exemplo de Código:

pm.test("Content-Type is application/json", function () {
    pm.response.to.have.header("Content-Type", /application\/json/);
});
Enter fullscreen mode Exit fullscreen mode

4. Validação de Resposta com JSON Válido

Objetivo: Garantir que a resposta retornada pela API seja um JSON válido.

Exemplo de Caso de Teste:

  • Teste: Verificar se a resposta é um JSON válido.

Exemplo de Código:

pm.test("Response is a valid JSON", function () {
    pm.response.to.have.jsonBody();
});
Enter fullscreen mode Exit fullscreen mode

5. Validação de Dados em Resposta JSON

Objetivo: Validar que os dados dentro da resposta estejam corretos e no formato esperado.

Exemplo de Caso de Teste:

  • Teste: Verificar se o valor do campo status na resposta é "active".

Exemplo de Código:

pm.test("Status is active", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.status).to.eql("active");
});
Enter fullscreen mode Exit fullscreen mode

6. Validação de Tempo de Resposta (Performance)

Objetivo: Validar que a API responde dentro do tempo esperado, garantindo uma boa performance.

Exemplo de Caso de Teste:

  • Teste: Verificar se a resposta foi recebida em menos de 2000ms.

Exemplo de Código:

pm.test("Response time is less than 2000ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(2000);
});
Enter fullscreen mode Exit fullscreen mode

7. Validação de Resposta em Caso de Erro (Exemplo: 404 ou 500)

Objetivo: Garantir que a API retorne os códigos de erro corretos e forneça informações apropriadas em caso de falhas.

Exemplo de Caso de Teste:

  • Teste: Verificar se a API retorna o código 404 quando uma URL inválida é acessada.

Exemplo de Código:

pm.test("Status code is 404", function () {
    pm.response.to.have.status(404);
});
Enter fullscreen mode Exit fullscreen mode

8. Testar Endpoint de Autenticação (Login)

Objetivo: Garantir que o endpoint de autenticação retorne um token JWT válido ao fornecer credenciais corretas.

Exemplo de Caso de Teste:

  • Teste: Verificar se a resposta do endpoint de login retorna um token JWT válido.

Exemplo de Código:

pm.test("Login returns a valid JWT token", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.token).to.exist;
    pm.expect(jsonData.token).to.be.a("string");
});
Enter fullscreen mode Exit fullscreen mode

9. Validação de Paginação (Para Listas)

Objetivo: Garantir que a API implemente paginação corretamente para grandes volumes de dados.

Exemplo de Caso de Teste:

  • Teste: Verificar se a resposta de uma lista tem os campos de paginação nextPage e previousPage e se estão corretos.

Exemplo de Código:

pm.test("Pagination fields are present", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData).to.have.property('nextPage');
    pm.expect(jsonData).to.have.property('previousPage');
});
Enter fullscreen mode Exit fullscreen mode

10. Verificação de Segurança (Exemplo: Injeção SQL)

Objetivo: Validar que a API esteja protegida contra vulnerabilidades comuns, como injeção SQL.

Exemplo de Caso de Teste:

  • Teste: Verificar se a API não permite injeção SQL, tentando enviar um payload malicioso.

Exemplo de Código:

pm.test("No SQL injection allowed", function () {
    pm.sendRequest({
        url: "http://localhost:8081/api/v1/customers?search=' OR 1=1 --",
        method: 'GET'
    }, function (err, res) {
        pm.expect(res.status).to.not.eql(500);
    });
});
Enter fullscreen mode Exit fullscreen mode

Conclusão

Realizar testes em endpoints de API é uma prática fundamental para garantir a qualidade, a segurança e a performance das suas aplicações. O uso do Postman, com suas funcionalidades de automação e documentação de resultados, é uma ferramenta poderosa que pode não apenas otimizar o processo de teste, mas também ajudar as equipes a coletar as evidências necessárias para garantir que o sistema esteja operando de acordo com os requisitos do negócio e as melhores práticas de desenvolvimento.

A coleta de evidências durante os testes é essencial para análise posterior, documentação e também para auditorias em empresas. Por isso, investir em boas práticas de teste e utilizar ferramentas adequadas como o Postman são passos fundamentais para o sucesso no desenvolvimento de APIs e integração de sistemas.

Top comments (0)