Se você está se preparando para uma entrevista para a posição de testador de APIs, dominar os conceitos e saber as melhores respostas para perguntas técnicas pode ser o diferencial. Neste guia, vamos explorar as perguntas mais comuns e responder de forma clara e objetiva.
Perguntas e Respostas sobre Testes de API
1. O que é uma API e por que ela é importante?
Resposta:
API (Application Programming Interface) é uma interface que permite a comunicação entre diferentes sistemas ou aplicativos. APIs são importantes porque possibilitam a integração entre serviços e permitem o desenvolvimento de soluções escaláveis e reutilizáveis.
2. Qual é a diferença entre REST e GraphQL?
Resposta:
- REST: É baseado em recursos com endpoints fixos (ex.:
/users
,/orders
). Cada endpoint realiza uma operação específica. Ele retorna dados padronizados, o que pode causar overfetching (dados excessivos) ou underfetching (dados insuficientes). - GraphQL: Trabalha com um único endpoint e permite consultas personalizadas. O cliente especifica exatamente os dados que precisa, o que reduz overfetching e underfetching.
3. Quais são os métodos HTTP mais usados em APIs?
Resposta:
- GET: Recupera dados.
- POST: Cria novos dados.
- PUT: Atualiza dados existentes.
- PATCH: Atualiza parcialmente um recurso.
- DELETE: Remove dados.
4. Quais ferramentas você usaria para testar APIs manualmente?
Resposta:
- REST APIs: Postman, Insomnia ou cURL.
- GraphQL APIs: GraphiQL, Apollo Sandbox ou Postman (compatível com GraphQL).
- Testes de Performance: JMeter, K6.
- Testes de Segurança: OWASP ZAP, Burp Suite.
5. O que você verificaria em um teste funcional de API?
Resposta:
- Se a API retorna o código de status correto (ex.: 200 para sucesso, 404 para recurso não encontrado).
- Validação de resposta: JSON/XML correto, incluindo os campos esperados.
- Testes para casos positivos (dados válidos) e negativos (dados inválidos).
- Verificação de campos obrigatórios e opcionais.
6. O que são códigos de status HTTP? Cite exemplos.
Resposta:
Códigos de status HTTP indicam o resultado de uma requisição. Exemplos:
- 2xx (Sucesso): 200 (OK), 201 (Criado).
- 4xx (Erro do Cliente): 400 (Requisição inválida), 401 (Não autorizado), 404 (Não encontrado).
- 5xx (Erro do Servidor): 500 (Erro interno do servidor).
7. Como você testaria autenticação em uma API?
Resposta:
- Testar tokens válidos e inválidos (ex.: JWT ou OAuth).
- Testar endpoints protegidos sem autenticação (garantir que acesso seja negado).
- Verificar expiração do token e renovação.
- Analisar vulnerabilidades de autenticação, como tokens reutilizáveis ou mal configurados.
8. Como você valida a performance de uma API?
Resposta:
- Medindo o tempo de resposta e verificando se está dentro do SLA (ex.: abaixo de 500ms).
- Testando o comportamento com alta carga (ex.: 1.000 requisições simultâneas).
- Ferramentas: JMeter, K6, Locust.
9. O que é um teste de contrato?
Resposta:
É um teste que verifica se a estrutura da API (contrato) está conforme o esperado. Geralmente, é usado para validar:
- Campos obrigatórios no JSON/XML.
- Tipos de dados esperados (ex.:
string
,integer
). - Ferramentas como JSON Schema Validator ou Swagger/OpenAPI são úteis para validar contratos.
10. Como você integraria testes de API em um pipeline CI/CD?
Resposta:
- Configuraria scripts de teste automatizados (ex.: Rest-Assured, Newman).
- Usaria ferramentas como Jenkins, GitHub Actions ou GitLab CI/CD.
- Rodaria os testes automaticamente após cada novo commit ou pull request.
- Geraria relatórios de testes para análise (ex.: Allure, ExtentReports).
11. Qual é a diferença entre um schema e um resolver no GraphQL?
Resposta:
- Schema: Define a estrutura da API, incluindo os tipos, queries e mutations disponíveis.
- Resolver: Implementa a lógica para processar as queries ou mutations do cliente. Ele “resolve” o que o cliente pediu.
12. Como você trataria erros em APIs?
Resposta:
- Validando se a API retorna erros claros no formato JSON (ex.: mensagem de erro, código de erro).
- Verificando se a API lida com dados inválidos corretamente (ex.: retornando
400 Bad Request
ao invés de500 Internal Server Error
). - Analisando logs de erro para identificar falhas de backend.
13. Quais são os desafios ao testar APIs GraphQL?
Resposta:
- Erros de overfetching e underfetching, que podem impactar performance.
- Testar queries complexas ou aninhadas.
- Garantir que as mutations seguem as regras do negócio.
- Validar resolvers corretamente.
14. Como você verificaria se a API é segura?
Resposta:
- Testando a autenticação e autorização (quem pode acessar o quê).
- Testando vulnerabilidades comuns (ex.: injeção de SQL, ataques XSS).
- Verificando se as senhas e tokens estão sendo enviados de forma segura (ex.: HTTPS, sem exposição em logs).
- Ferramentas: OWASP ZAP, Burp Suite.
Exemplo Prático: Testando uma API REST
1. Cenário:
Testar o endpoint POST /users
para criar um usuário.
Passos:
- Enviar requisição válida com um corpo como:
json
{
"name": "Claudia",
"email": "claudia@exemplo.com",
"password": "123456"
} - Validar a resposta:
- Código de status:
201 Created
. - JSON de resposta:
json
{
"id": 1,
"name": "Claudia",
"email": "claudia@exemplo.com"
}
- Código de status:
- Testar casos negativos:
- Enviar requisição sem o campo
email
e verificar se retorna400 Bad Request
.
- Enviar requisição sem o campo