
Teste de Software


Escrevendo Histórias Eficientes

NVEST é um checklist simples pra você escrever histórias testáveis e prontas pra sprint. A ideia é evitar histórias “grandes demais”, “ambíguas” ou “que dependem de tudo ao mesmo tempo”.
O que significa INVEST (bem direto)
-
I — Independent (Independente): a história consegue ser feita sem depender de outra para “fazer sentido”.
-
N — Negotiable (Negociável): não é contrato fechado; deixa espaço pro time decidir como implementar.
-
V — Valuable (Valiosa): entrega valor claro para alguém (usuário/negócio).
-
E — Estimable (Estimável): dá pra estimar porque está clara e tem escopo.
-
S — Small (Pequena): cabe numa sprint (idealmente poucos dias).
-
T — Testable (Testável): tem critérios de aceite verificáveis.
Exemplo prático (antes e depois)
História ruim (não INVEST)
“Como aluno, quero pagar tudo no portal com cartão e pix para ficar mais fácil.”
Problemas:
-
Grande (não Small)
-
Ambígua (não Testable)
-
Sem regras claras (não Estimable)
-
Pode depender de muita coisa (não Independent)
História melhor (INVEST)
História:
“Como aluno, quero pagar minhas mensalidades com cartão em até 9 parcelas no Portal do Aluno, para quitar débitos sem ir ao financeiro.”
Critérios de aceite (testáveis):
-
Dado que selecione apenas mensalidades, quando escolher cartão, então o portal deve exibir no máximo 9 parcelas.
-
Dado que a mensalidade não permita cartão por regra financeira, então o meio “cartão” não deve aparecer.
-
Ao confirmar o pagamento, o sistema deve registrar a transação e atualizar o status das mensalidades.
Por que agora é INVEST:
-
Cabe numa sprint (Small)
-
Dá pra testar (Testable)
-
Dá pra estimar (Estimable)
-
Valor claro (Valuable)
-
Time ainda decide solução técnica (Negotiable)
-
Dá pra tratar separado de Pix/Acordo (Independent)
História de usuário é uma descrição curta e simples de uma funcionalidade do ponto de vista do usuário final.
Ela ajuda a:
-
Guiar o desenvolvimento com foco no valor entregue
-
Criar alinhamento entre Product Owner, DEV, QA e UX
-
Servir como base para teste
Formato clássico:
Como [tipo de usuário]
Quero [uma ação ou funcionalidade]
Para que [benefício ou valor entregue]
Como cliente do e-commerce
Quero visualizar meus pedidos anteriores
Para que eu possa acompanhar minhas compras
Escrita eficiente em Gherkin
O Gherkin serve pra transformar a história em casos de teste legíveis por humanos e máquinas, usados tanto por testes manuais quanto automatizados.
Regras para boa escrita em Gherkin:
-
Simples, clara e objetiva
-
Um cenário = um fluxo de teste
-
Usar linguagem de negócio
-
Incluir dados representativos (ex: produtos, status, códigos)
Estrutura:
Funcionalidade: Histórico de Pedidos
Cenário: Exibir pedidos finalizados
Dado que o cliente está logado no sistema
E acessa o menu “Meus Pedidos”
Quando ele visualizar a lista de pedidos
Então ele deve ver os pedidos com status "Entregue"
Exemplos de histórias de usuário
API – Consulta de Saldo do Cliente
Como cliente logado
Quero consultar meu saldo atual via API
Para que eu possa visualizar meu limite disponível nos canais digitais
Critérios de aceitação:
-
Deve retornar saldo, data de atualização e moeda
-
A resposta deve seguir padrão JSON
-
A API deve estar protegida por token de autenticação
Tela – Histórico de Transações
Como cliente do app
Quero visualizar o histórico das minhas últimas transações bancárias
Para que eu possa acompanhar movimentações da minha conta
Critérios de aceitação:
-
Exibir data, tipo de transação, valor e descrição
-
Permitir filtro por data
-
Exibir as 10 últimas transações por padrão
-
A interface deve estar alinhada com o novo design system
Financeiro – Geração de Boleto
Como cliente com pagamento em aberto
Quero gerar o boleto da minha fatura atual
Para que eu possa realizar o pagamento dentro do prazo
Critérios de aceitação:
-
A geração deve incluir vencimento, valor e código de barras
-
O boleto deve estar disponível em PDF
-
Deve ser possível copiar o código de barras
-
A API de geração deve validar se a fatura está vencida antes de emitir o boleto
Segurança – Recuperar Senha
Como usuário que esqueceu a senha
Quero recuperar minha senha via e-mail
Para que eu possa acessar minha conta novamente com segurança
Critérios de aceitação:
-
O link enviado por e-mail deve expirar em 15 minutos
-
A nova senha deve ter pelo menos 8 caracteres, 1 número e 1 letra maiúscula
-
A recuperação deve ser auditada no log de segurança
Integração – Enviar Notificação via Kafka
Como sistema financeiro interno
Quero enviar um evento para o tópico Kafka após o pagamento ser confirmado
Para que outros sistemas possam reagir ao status do pagamento
Critérios de aceitação:
-
O evento deve conter ID do pagamento, status, timestamp e CPF do cliente
-
O envio deve ser assíncrono
-
Em caso de falha, deve ser registrado e reprocessado
Critério de Aceite
O que é:
Critérios de aceite são regras objetivas que definem quando uma história de usuário pode ser considerada funcionalmente correta e pronta para ser aceita pelo Product Owner (PO).
São condições mínimas e verificáveis, escritas antes ou junto com a história, que orientam:
-
O que deve funcionar
-
O que deve ser validado
-
Limites e exceções
Importância:
-
Evita mal-entendidos entre DEV, QA, PO e UX
-
Garante foco no valor do negócio
-
Serve de base para criação de cenários de teste
-
Ajuda na automação de testes com Cucumber/Gherkin
-
Define claramente o que é sucesso na entrega
Exemplo prático:
História: Como cliente, quero visualizar meu saldo bancário para acompanhar minha conta
Critérios de aceite:
-
O saldo deve ser retornado com duas casas decimais
-
O valor deve estar em reais (BRL)
-
Deve ser exibida a data da última atualização
-
A API deve retornar código 200 com conteúdo válido
-
Se o cliente estiver deslogado, deve retornar 401
Definição de Pronto (Definition of Ready - DoR)
O que é:
É uma checklist acordada pelo time que define quando uma história está pronta para entrar em desenvolvimento.
Ela garante que a história esteja madura, clara e com todos os insumos necessários para começar o trabalho sem dúvidas.
Importância:
-
Evita histórias "pela metade" sendo desenvolvidas
-
Minimiza retrabalho e interrupções
-
Facilita a planejamento da sprint
-
Ajuda o time a dizer “não está pronto para desenvolver”
-
Fortalece o papel de QA e UX desde o início
Exemplo de checklist – Definição de Pronto:
-
História de usuário escrita no formato correto
-
Critérios de aceite claros e objetivos
-
Regras de negócio discutidas
-
Protótipo disponível (se houver interface)
-
Dependências mapeadas
-
Dados de teste definidos (para QA e DEV)
-
API contratada/documentada (se houver)
-
Pontuada e priorizada
Diferença entre Critério de Aceite e Definição de Pronto:
Critério de Aceite - Define o que precisa estar funcionando para a história ser considerada "feita e aceita"
Definição de Pronto - Define o que precisa estar preparado antes da história entrar em desenvolvimento
Uma história, várias tarefas (quebra técnica)
Uma única história de usuário pode (e deve!) ser dividida em múltiplas tarefas técnicas, como:
Tipo de Tarefa: Modelagem do banco
-
Responsável: DEV
-
Exemplo: Criar tabela orders
Tipo de Tarefa: API backend
-
Responsável: DEV
-
Exemplo: Criar endpoint GET /orders por usuário
Tipo de Tarefa: Teste da API
-
Responsável: QA ou DEV
-
Exemplo: Validar o retorno da API com status code 200 e conteúdo esperado
Tipo de Tarefa: Criação de tela
-
Responsável: DEV
-
Exemplo: Desenvolver componente em React para exibir o histórico de pedidos
Tipo de Tarefa: Teste da interface
-
Responsável: QA
-
Exemplo: Validar a renderização da tela com mock de pedidos, checando campos e layout
Estimativas (Story Points, tempo e limite por sprint)
O que é 1 ponto?
-
Representa uma unidade de complexidade relativa
-
Pode SIM ser aproximadamente igual a 1 hora (em squads que escolhem esse critério) — embora o ágil prefira complexidade a tempo.
💡 Dica prática:
Se você usa "1 ponto = 1 hora" e sua sprint tem 40h úteis por dev, o máximo seria 40 pontos. Mas na prática,
considere 60% da capacidade (24 pontos por dev) para absorver reuniões, bugs e ajustes.
Sprint com entregas pequenas
Boa prática:
-
Quebre grandes funcionalidades em entregas incrementais.
-
Evite deixar para integrar só no final da sprint.
Exemplo prático:
Sprint 1
-
Backend: GET /orders, modelagem e testes
-
API testada com Postman ou RestAssured
-
Frontend com tela mockada, apenas layout
-
Sprint 2
-
Integração front com API real
-
Ajustes visuais
-
Testes funcionais e exploratórios
Exemplo completo de jornada DEV + QA
Tarefas (quebra por função):
Tarefa Pontos Responsável Descrição
Criar endpoint /orders/{id} 3 DEV Retorna pedido por ID
Testes unitários da API 1 DEV Cobertura mínima 80%
Testes da API (RestAssured) 2 QA Validar código, corpo, mensagens
Componente de tela 3 DEV Criar modal ou página
Integração com backend 2 DEV Fazer chamada e exibir dados
Testes funcionais (manual ou Selenium) 3 QA Validar se tudo aparece corretamente
Teste exploratório 2 QA Cobrir caminhos não mapeados
Pontuação total por Sprint (referência prática)
Cargo Capacidade (horas úteis) % alocação em tarefas Pontos médios
DEV Pleno 40h 60% 24 pontos
QA Pleno 40h 60% 20–24 pontos
Obs: Se o time estiver muito maduro, pode usar até 75% da capacidade para tarefas técnicas.