testes de software para api rest
Laboratório de Engenharia de Software
25/26
Alexandre Grade, João Sousa, José Sousa, Nicia Jesus
O que é uma API REST?
Uma API REST é uma interface que permite a comunicação entre sistemas através do protocolo HTTP, seguindo princípios REST. Permite que aplicações web, apps mobile e microserviços comuniquem entre si de forma padronizada.
Boas práticas:
- Versionamento: /api/v1/users
- Paginação: ?limit=10&offset=0
Princípios:
- Recursos e Identificadores (URI)
Regra fundamental: nunca confiar no input do utilizador -- tudo deve ser validado
Importância dos Testes em APIs
Testar APIs é essencial porque falhas podem ter consequências graves.
Por exemplo:
Breaking Changes
Dados Inconsistentes
Alterações que provocam incompatibilidades, podem deixar aplicações cliente inutilizáveis.
Podem ser armazenados sem que ninguém perceba, e falhas em produção podem afetar múltiplos serviços ao mesmo tempo.
É por estas razões que a automatização e a cobertura de testes são cruciais.
benefícios dos Testes em APIs
Testar cedo significa: Identificar falhas antes de produção Reduzir impacto no frontend
Detectar Regressões Cedo
Garantem comunicação segura entre:MicroserviçosBackend e frontend
Contratos Estáveis
Corrigir erros: Em produção → caro Na API (no desenvolvimento)→ muito mais barato
Redução de Custos
Permitindo: Entregas frequentes e seguras através de Integração Contínua (CI).
Confiança na implementação
Testes Automatizados de APIs
O que podem verificar?
O que são?
- Status Codes: Validação de status esperados (ex: 200 OK ou 404 Not Found).
- Estrutura JSON: Campos obrigatórios (ex: id, nome, email).
- Tipos de Dados: Garantia de que cada campo tem o formato certo (ex: id como número, etc).
- Performance: Validação de tempos de resposta (ex: garantir que o pedido demora menos de 500ms).
- Execução Autónoma: Pedidos HTTP sem intervenção manual.
- Escalabilidade: Escritos uma vez e executados sempre que o código sofre alterações.
- Integração Contínua (CI/CD): Bloqueiam o deploy se algum teste falhar, garantindo segurança em produção.
Valor Estratégico
- Tipos: Funcionais, Contrato, Performance, etc.
- Pipeline CI/CD: Bloqueio automático de deploys com erros.
- Agilidade: Suporte a microsserviços e entregas rápidas com baixo risco.
Testes Funcionais
O que são?
Verificam se a API cumpre os requisitos de negócio definidos.
O que podem verificar?
- Fluxos Positivos: Sucesso com dados corretos
ex: 201 Created.
- Fluxos Negativos: Tratamento adequado de erros
ex: 400 Bad Request por falta de dados ou 401 por falta de login.
- Validação de Dados: Integridade dos inputs
ex: formato de emails, tamanho de passwords, etc.
- Regras de Negócio: Lógica do sistema
ex: emails únicos, permissões de eliminação de conta ou preços positivos.
- Segurança: Controlo de permissões
ex: utilizador comum impedido de aceder a funções de admin - 403 Forbidden.
Testes de Contrato
O que são?
Os testes de contrato garantem que a API mantém compatibilidade com os sistemas que a consomem.
Ou seja, verificam se a comunicação entre serviços continua estável mesmo quando um deles evolui.
Que aspetos são validados pelos testes de contrato?
- Estrutura da resposta (JSON esperado)
- Campos obrigatórios
- Tipos de dados
- Códigos de estado
- Compatibilidade com especificações OpenAPI
Eles garantem que o fornecedor da API (backend) cumpre aquilo que prometeu ao consumidor (frontend ou outro serviço).
Scripts de Teste
O que é um script de teste?
Quais são as principais características dos scripts de testes automatizados?
Scripts de teste é basicamente um conjunto de testes escritos que executa pedidos HTTP automaticamente e valida as respostas da API.Em vez de testar manualmente sempre que alteramos algo, escrevemos testes uma vez e eles passam a ser executados automaticamente sempre que há alterações no sistema.
- Execução automática de pedidos HTTP
- Escritos uma vez, executados continuamente
- Integrados em CI/CD
- Bloqueiam deploy se falharem
Na prática, um script de testes costuma seguir sempre a mesma lógica:
- Primeiro, faz um pedido, por exemplo um GET, POST, PUT ou DELETE.
- Depois valida o resultado, normalmente em três níveis:
Status code
Validar tipos de dados e regras simples
Validar o corpo da resposta
Se eu fizer um POST /users com dados válidos, espera se receber 201 Created. Se eu tentar pedir um utilizador que não existe, como GET /users/9999, espero um 404 Not Found.
Por exemplo:
- id deve ser número
- email deve ser string
- ativo deve ser boolean
- Se algum tipo vier errado, o teste falha.
Aqui verificamos se a estrutura está correta e se os campos obrigatórios existem. Por exemplo: se a API devolve um utilizador, o script confirma se existem os campos id, nome e email.
Ferramentas
Ferramentas Manuais:
Ferramentas Automatizadas:
- REST-assured - Java (Testes unitários e integração)
- pytest + requests - Python (Testes unitários, integração e CI/CD)
- Pact - (Consumer-Driven Contract)
- Supertest - Node.js (Testes funcionais de APIs REST)
- Jest - Node.js (Framework de testes unitários, integração)
10
Consumer
11
Provider
12
Consumer Test
13
Provider Test
14
Github CI
15
Provider Broken
Quebra o contrato
16
Github CI - Break
17
Conclusão
Em resumo, as APIs REST são componentes críticos em qualquer sistema moderno. Testar APIs não é opcional: garante fiabilidade, estabilidade e integração segura entre serviços.
A robustez resulta da combinação de testes funcionais, que validam regras de negócio, testes de contrato, que asseguram a integração, e a automatização, que permite integração contínua.
A qualidade de uma API determina a estabilidade de todo o sistema que dela depende.
18
Thanks !
Alguma Questão?
19
Trabalho Teorico
Nicia Jesus
Created on February 19, 2026
Start designing with a free template
Discover more than 1500 professional designs like these:
View
Pastel Color Presentation
View
Visual Presentation
View
Relaxing Presentation
View
Modern Presentation
View
Colorful Presentation
View
Modular Structure Presentation
View
Chromatic Presentation
Explore all templates
Transcript
testes de software para api rest
Laboratório de Engenharia de Software
25/26
Alexandre Grade, João Sousa, José Sousa, Nicia Jesus
O que é uma API REST?
Uma API REST é uma interface que permite a comunicação entre sistemas através do protocolo HTTP, seguindo princípios REST. Permite que aplicações web, apps mobile e microserviços comuniquem entre si de forma padronizada.
Boas práticas:
Princípios:
Regra fundamental: nunca confiar no input do utilizador -- tudo deve ser validado
Importância dos Testes em APIs
Testar APIs é essencial porque falhas podem ter consequências graves.
Por exemplo:
Breaking Changes
Dados Inconsistentes
Alterações que provocam incompatibilidades, podem deixar aplicações cliente inutilizáveis.
Podem ser armazenados sem que ninguém perceba, e falhas em produção podem afetar múltiplos serviços ao mesmo tempo.
É por estas razões que a automatização e a cobertura de testes são cruciais.
benefícios dos Testes em APIs
Testar cedo significa: Identificar falhas antes de produção Reduzir impacto no frontend
Detectar Regressões Cedo
Garantem comunicação segura entre:MicroserviçosBackend e frontend
Contratos Estáveis
Corrigir erros: Em produção → caro Na API (no desenvolvimento)→ muito mais barato
Redução de Custos
Permitindo: Entregas frequentes e seguras através de Integração Contínua (CI).
Confiança na implementação
Testes Automatizados de APIs
O que podem verificar?
O que são?
Valor Estratégico
Testes Funcionais
O que são?
Verificam se a API cumpre os requisitos de negócio definidos.
O que podem verificar?
- Fluxos Positivos: Sucesso com dados corretos
ex: 201 Created.- Fluxos Negativos: Tratamento adequado de erros
ex: 400 Bad Request por falta de dados ou 401 por falta de login.- Validação de Dados: Integridade dos inputs
ex: formato de emails, tamanho de passwords, etc.- Regras de Negócio: Lógica do sistema
ex: emails únicos, permissões de eliminação de conta ou preços positivos.- Segurança: Controlo de permissões
ex: utilizador comum impedido de aceder a funções de admin - 403 Forbidden.Testes de Contrato
O que são?
Os testes de contrato garantem que a API mantém compatibilidade com os sistemas que a consomem. Ou seja, verificam se a comunicação entre serviços continua estável mesmo quando um deles evolui.
Que aspetos são validados pelos testes de contrato?
- Estrutura da resposta (JSON esperado)
- Campos obrigatórios
- Tipos de dados
- Códigos de estado
- Compatibilidade com especificações OpenAPI
Eles garantem que o fornecedor da API (backend) cumpre aquilo que prometeu ao consumidor (frontend ou outro serviço).Scripts de Teste
O que é um script de teste?
Quais são as principais características dos scripts de testes automatizados?
Scripts de teste é basicamente um conjunto de testes escritos que executa pedidos HTTP automaticamente e valida as respostas da API.Em vez de testar manualmente sempre que alteramos algo, escrevemos testes uma vez e eles passam a ser executados automaticamente sempre que há alterações no sistema.
Na prática, um script de testes costuma seguir sempre a mesma lógica:
Status code
Validar tipos de dados e regras simples
Validar o corpo da resposta
Se eu fizer um POST /users com dados válidos, espera se receber 201 Created. Se eu tentar pedir um utilizador que não existe, como GET /users/9999, espero um 404 Not Found.
Por exemplo:
Aqui verificamos se a estrutura está correta e se os campos obrigatórios existem. Por exemplo: se a API devolve um utilizador, o script confirma se existem os campos id, nome e email.
Ferramentas
Ferramentas Manuais:
Ferramentas Automatizadas:
10
Consumer
11
Provider
12
Consumer Test
13
Provider Test
14
Github CI
15
Provider Broken
Quebra o contrato
16
Github CI - Break
17
Conclusão
Em resumo, as APIs REST são componentes críticos em qualquer sistema moderno. Testar APIs não é opcional: garante fiabilidade, estabilidade e integração segura entre serviços. A robustez resulta da combinação de testes funcionais, que validam regras de negócio, testes de contrato, que asseguram a integração, e a automatização, que permite integração contínua. A qualidade de uma API determina a estabilidade de todo o sistema que dela depende.
18
Thanks !
Alguma Questão?
19