Want to create interactive content? It’s easy in Genially!

Get started free

Trabalho Teorico

Nicia Jesus

Created on February 19, 2026

Start designing with a free template

Discover more than 1500 professional designs like these:

Pastel Color Presentation

Visual Presentation

Relaxing Presentation

Modern Presentation

Colorful Presentation

Modular Structure Presentation

Chromatic Presentation

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:

  • Versionamento: /api/v1/users
  • Paginação: ?limit=10&offset=0

Princípios:

  • Recursos e Identificadores (URI)
  • Stateless (Sem estado)
  • Interface uniforme

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:

  • Postman
  • Insomnia

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