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

4

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.

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more