Rastreabilidade dos casos de teste do projeto. Esta tabela não duplica os passos dos cenários — eles já estão documentados em Gherkin nos arquivos .feature, com o ID do test case como tag (@TC-XXX) em cada Cenário, garantindo rastreabilidade bidirecional.
Um Esquema do Cenário com Exemplos conta como um único test case (a variação de dados não infla a contagem).
A tabela é conferida automaticamente por tests/unit/test_traceability.py: todo TC dos .feature precisa estar aqui, e vice-versa, e cada link precisa apontar para a linha do Cenário correspondente.
Legenda:
- Tipo:
Funcional(caminho feliz) ouNegativo(validação de erro/bloqueio esperado) - Prioridade: importância do caso para o negócio (
Crítica/Alta/Média/Baixa) — escala independente da Severidade/Prioridade usada nos bug reports, que mede urgência de correção de um defeito, não importância de um caso de teste - Automação:
Automatizado/Manual/Planejado(identificado, ainda não implementado)
| ID | Módulo | Título | Tipo | Prioridade | Automação | Cenário |
|---|---|---|---|---|---|---|
| TC-001 | Autenticação | Gerar token com credenciais válidas | Funcional | Crítica | Automatizado | auth.feature:5 |
| TC-002 | Autenticação | Tentar gerar token com credenciais inválidas | Negativo | Alta | Automatizado | auth.feature:10 |
| TC-003 | Criação | Criar booking sem nenhum token de autenticação | Funcional | Alta | Automatizado | create_booking.feature:9 |
| TC-004 | Consulta | Buscar um booking existente pelo id | Funcional | Alta | Automatizado | get_booking.feature:5 |
| TC-005 | Consulta | Buscar um booking inexistente | Negativo | Média | Automatizado | get_booking.feature:11 |
| TC-006 | Consulta | Buscar bookings filtrando por firstname e lastname | Funcional | Média | Automatizado | get_booking.feature:16 |
| TC-007 | Atualização | Atualizar booking com token válido (PUT) | Funcional | Crítica | Automatizado | update_booking.feature:6 |
| TC-008 | Atualização | Tentar atualizar booking sem token de autenticação | Negativo | Alta | Automatizado | update_booking.feature:13 |
| TC-009 | Atualização | Atualizar parcialmente o booking com PATCH | Funcional | Média | Automatizado | update_booking.feature:31 |
| TC-010 | Remoção | Remover booking com token válido | Funcional | Crítica | Automatizado | delete_booking.feature:5 |
| TC-011 | Remoção | Tentar remover booking sem token de autenticação | Negativo | Alta | Automatizado | delete_booking.feature:12 |
| TC-012 | Atualização | Tentar atualizar parcialmente booking sem token (PATCH) | Negativo | Alta | Automatizado | update_booking.feature:39 |
| TC-013 | Atualização | Tentar atualizar booking com token inválido (PUT) | Negativo | Alta | Automatizado | update_booking.feature:23 |
| TC-014 | Remoção | Tentar remover um booking que não existe | Negativo | Baixa | Automatizado | delete_booking.feature:22 |
| TC-015 | Criação | Tentar criar booking sem um campo obrigatório (bug) | Negativo | Média | Automatizado | create_booking.feature:22 |
| TC-016 | Criação | Criar booking com totalprice em formato inválido | Negativo | Média | Automatizado | create_booking.feature:32 |
| TC-017 | Criação | Criar booking com depositpaid em formato inválido | Negativo | Média | Automatizado | create_booking.feature:41 |
| TC-018 | Criação | Criar booking com checkin em formato inválido | Negativo | Média | Automatizado | create_booking.feature:51 |
| TC-019 | Criação | Criar booking com totalprice negativo | Negativo | Baixa | Automatizado | create_booking.feature:60 |
| TC-020 | Atualização | Tentar atualizar booking com corpo vazio (PUT) | Negativo | Alta | Automatizado | update_booking.feature:49 |
| TC-021 | Atualização | Atualizar booking com totalprice em formato inválido | Negativo | Média | Automatizado | update_booking.feature:61 |
| TC-022 | Atualização | Tentar atualizar booking sem o campo bookingdates | Negativo | Alta | Automatizado | update_booking.feature:69 |
| TC-023 | Atualização | Atualizar parcialmente com lastname em formato inválido | Negativo | Média | Automatizado | update_booking.feature:79 |
| TC-024 | Atualização | Atualizar parcialmente com corpo vazio não altera nada | Funcional | Baixa | Automatizado | update_booking.feature:89 |
| TC-025 | Atualização | Tentar atualizar (PUT/PATCH) um booking inexistente | Negativo | Média | Automatizado | update_booking.feature:102 |
BookingApiClient.get_booking_ids também aceita filtro por checkin/checkout, mas o TC-006 cobre só firstname/lastname: o filtro por data na API pública de demonstração é conhecido por ser instável, e testá-lo arriscaria um teste flaky em vez de validar um comportamento real.
TC-017 a TC-025 estendem a investigação de payload inválido (iniciada em TC-015/TC-016) para depositpaid, checkin, totalprice negativo e para os verbos PUT/PATCH: PUT valida corretamente campos obrigatórios ausentes (400), mas ainda corrompe silenciosamente um totalprice de tipo inválido — o mesmo defeito do TC-016, agora confirmado também nesse verbo; PATCH não valida tipo nenhum; e PUT/PATCH em um id inexistente retornam 405 Method Not Allowed, o mesmo comportamento já visto em DELETE (TC-014). Bugs reais novos (TC-017, TC-018, TC-019, TC-021+TC-016, TC-023, TC-025+TC-014) estão documentados como issues no GitHub.
Os fluxos ponta-a-ponta mais críticos (um caminho feliz por operação de CRUD, cobrindo autenticação + criação + consulta + atualização + remoção) estão marcados com a tag @smoke (marker smoke do pytest): TC-001, TC-003, TC-004, TC-007, TC-010.
Rodar apenas a smoke suite:
pytest -m smoke