Validação de Dados: Além do "Campo Obrigatório"
Validar se um campo é obrigatório é o básico do básico. Aprenda TODAS as validações que você deveria fazer em cada tipo de campo: texto, número, data, email, telefone e mais.
Introdução
"Validar se o campo é obrigatório? Já fiz."
Se você acha que isso é validação completa, este artigo é para você. Porque validar obrigatoriedade é apenas 5% do trabalho.
Neste artigo, você vai aprender TODAS as validações que deveria fazer em cada tipo de campo. É o guia de referência completo que você vai consultar em todo projeto.
---
1. Campos de Texto
1.1 Limite de Caracteres
Teste:
☐ Mínimo - 1 caractere
☐ Exatamente o mínimo
☐ Meio do intervalo
☐ Exatamente o máximo
☐ Máximo + 1 caractere
Exemplo: Campo aceita 10-100 caracteres
Teste com: 9, 10, 50, 100, 101 caracteres
1.2 Caracteres Especiais
Teste:
☐ Letras (a-z, A-Z)
☐ Números (0-9)
☐ Espaços
☐ Acentos (á, é, í, ó, ú)
☐ Símbolos (@, #, $, %, &)
☐ Emojis (😀, 🚀, ❤️)
Pergunte: Quais são permitidos?
1.3 Espaços
Teste:
☐ Espaço no início: " texto"
☐ Espaço no fim: "texto "
☐ Múltiplos espaços: "texto texto"
☐ Apenas espaços: " "
Sistema deve: Trim (remover) ou rejeitar?
1.4 Case Sensitivity
Teste:
☐ MAIÚSCULAS
☐ minúsculas
☐ MiStUrAdO
Pergunte: Faz diferença? Converte automaticamente?
1.5 Encoding
Teste:
☐ UTF-8: áéíóú, ñ, ç
☐ Caracteres especiais: ™, ®, ©
☐ Outros idiomas: 中文, العربية, עברית
---
2. Campos Numéricos
2.1 Tipo de Número
Teste:
☐ Inteiro: 10
☐ Decimal: 10.5
☐ Negativo: -10
☐ Zero: 0
☐ Muito grande: 999999999999
2.2 Casas Decimais
Teste:
☐ 1 casa: 10.5
☐ 2 casas: 10.55
☐ 3 casas: 10.555
☐ 10 casas: 10.5555555555
Sistema deve: Arredondar ou truncar?
2.3 Separadores
Teste:
☐ Vírgula: 1,5
☐ Ponto: 1.5
☐ Ambos: 1.000,50
☐ Nenhum: 1000
Pergunte: Qual formato aceita?
2.4 Notação Científica
Teste:
☐ 1E18
☐ 1e-5
☐ 1.5E10
Sistema aceita?
2.5 Números Especiais
Teste:
☐ Infinity
☐ -Infinity
☐ NaN (Not a Number)
---
3. Campos Monetários
3.1 Formato
Teste:
☐ R$ 1.000,00
☐ 1000.00
☐ 1000
☐ $ 1,000.00
3.2 Casas Decimais
Teste:
☐ Sem decimais: 1000
☐ 1 casa: 1000.5
☐ 2 casas: 1000.50
☐ 3 casas: 1000.555
Esperado: Sempre 2 casas decimais
3.3 Símbolos
Teste:
☐ Cifrão antes: $ 100
☐ Cifrão depois: 100 $
☐ Sem cifrão: 100
☐ Porcentagem: 10%
3.4 Valores Extremos
Teste:
☐ R$ 0,00 (zero)
☐ R$ 0,01 (mínimo)
☐ R$ 999.999.999,99 (muito grande)
☐ R$ -100,00 (negativo - permitido?)
---
4. Campos de Data
4.1 Formato
Teste:
☐ dd/mm/yyyy: 31/12/2024
☐ mm/dd/yyyy: 12/31/2024
☐ yyyy-mm-dd: 2024-12-31
☐ dd-mm-yyyy: 31-12-2024
4.2 Datas Inválidas
Teste:
☐ 31/02/2024 (fevereiro não tem 31)
☐ 32/01/2024 (dia não existe)
☐ 00/00/0000 (zeros)
☐ 99/99/9999 (valores absurdos)
4.3 Anos Bissextos
Teste:
☐ 29/02/2024 (bissexto - válido)
☐ 29/02/2023 (não bissexto - inválido)
4.4 Datas Especiais
Teste:
☐ Data futura (se não permitido)
☐ Data passada (se não permitido)
☐ Data de hoje
☐ 01/01/1900 (data muito antiga)
☐ 31/12/2099 (data muito futura)
4.5 Máscaras
Teste:
☐ Digitar letras (deve bloquear)
☐ Colar texto
☐ Ultrapassar limite
4.6 Copy & Paste
Teste:
☐ Copiar de Excel
☐ Copiar de Word
☐ Copiar de outro sistema
4.7 UTC e Fusos Horários
Teste (se aplicável):
☐ Salvar às 23:59
☐ Salvar às 00:00
☐ Mudar fuso horário
4.8 Calendário (Se houver)
Teste:
☐ Seleção por clique
☐ Navegação entre meses
☐ Navegação entre anos
☐ Atalhos de teclado
4.9 Intervalos
Teste:
☐ Data Início > Data Fim
☐ Data Início = Data Fim
☐ Intervalo muito grande
---
5. Campos de Email
5.1 Formato Válido
Teste:
✅ usuario@dominio.com
✅ usuario.nome@dominio.com
✅ usuario+tag@dominio.com
✅ usuario@subdominio.dominio.com
5.2 Formato Inválido
Teste:
❌ usuario (sem @)
❌ @dominio.com (sem usuário)
❌ usuario@ (sem domínio)
❌ usuario @dominio.com (espaço)
❌ usuario@dominio (sem TLD)
5.3 Caracteres Especiais
Teste:
☐ usuario_nome@dominio.com
☐ usuario-nome@dominio.com
☐ usuario.nome@dominio.com
☐ usuario+tag@dominio.com
5.4 Case Sensitivity
Teste:
☐ USUARIO@DOMINIO.COM
☐ usuario@dominio.com
☐ Usuario@Dominio.Com
Esperado: Email não é case-sensitive
5.5 Espaços
Teste:
❌ " usuario@dominio.com" (espaço antes)
❌ "usuario@dominio.com " (espaço depois)
❌ "usuario @dominio.com" (espaço no meio)
5.6 Domínios Válidos
Teste (opcional):
☐ Verificar se domínio existe (DNS lookup)
☐ usuario@dominioqueexiste.com ✅
☐ usuario@dominioqueNAOexiste.xyz ❌
---
6. Campos de Telefone
6.1 Formato
Teste:
☐ (11) 98765-4321
☐ 11987654321
☐ +55 11 98765-4321
☐ +5511987654321
6.2 Máscaras
Teste:
☐ Digitar letras (deve bloquear)
☐ Colar texto
☐ Formato internacional
6.3 DDI/DDD
Teste:
☐ Com DDI: +55
☐ Sem DDI
☐ DDD válido: 11, 21, 47
☐ DDD inválido: 00, 99
6.4 Quantidade de Dígitos
Teste:
☐ Fixo: (11) 3333-4444 (8 dígitos)
☐ Celular: (11) 98765-4321 (9 dígitos)
☐ Menos dígitos: (11) 9876-432 ❌
☐ Mais dígitos: (11) 98765-43210 ❌
---
7. Campos de CPF/CNPJ
7.1 Formato
Teste:
☐ 123.456.789-00 (com máscara)
☐ 12345678900 (sem máscara)
7.2 Validação de Dígitos Verificadores
Teste:
✅ 123.456.789-09 (válido)
❌ 123.456.789-00 (inválido)
IMPORTANTE: Sistema DEVE validar dígitos!
7.3 CPFs Conhecidos
Teste:
❌ 111.111.111-11
❌ 222.222.222-22
❌ 000.000.000-00
❌ 123.456.789-00
Esperado: Rejeitar CPFs óbvios
7.4 Formatação
Teste:
☐ Sistema aceita sem máscara?
☐ Sistema formata automaticamente?
☐ Sistema salva com ou sem máscara?
---
8. Campos de CEP
8.1 Formato
Teste:
☐ 12345-678 (com hífen)
☐ 12345678 (sem hífen)
8.2 Busca Automática
Teste (se houver):
☐ CEP válido: Preenche endereço
☐ CEP inválido: Mensagem de erro
☐ CEP inexistente: Como trata?
8.3 Validação
Teste:
☐ 00000-000 (zeros)
☐ 99999-999 (noves)
☐ 12345-67 (menos dígitos)
☐ 12345-6789 (mais dígitos)
---
9. Campos de Senha
9.1 Requisitos Mínimos
Teste:
☐ Tamanho mínimo (ex: 8 caracteres)
☐ Letra maiúscula
☐ Letra minúscula
☐ Número
☐ Caractere especial
9.2 Caracteres Especiais
Teste:
☐ @, #, $, %, &
☐ Espaços (permitido?)
☐ Emojis (permitido?)
9.3 Visibilidade
Teste:
☐ Botão mostrar/ocultar funciona
☐ Senha oculta por padrão
☐ Copy/paste funciona
9.4 Confirmação
Teste:
☐ Senhas iguais: Aceita
☐ Senhas diferentes: Rejeita
☐ Mensagem de erro clara
9.5 Senhas Fracas
Teste (se houver validação):
❌ 12345678
❌ password
❌ qwerty
❌ 11111111
---
10. Campos de URL
10.1 Formato
Teste:
✅ https://exemplo.com
✅ http://exemplo.com
✅ https://www.exemplo.com
✅ https://exemplo.com/pagina
10.2 Protocolo
Teste:
☐ Com https://
☐ Com http://
☐ Sem protocolo: exemplo.com
☐ Protocolo inválido: ftp://
10.3 Domínio
Teste:
✅ exemplo.com
✅ sub.exemplo.com
❌ exemplo (sem TLD)
❌ .com (sem domínio)
---
Checklist Universal de Validação
PARA TODOS OS CAMPOS:
☐ Obrigatório vs Opcional
☐ Limite mínimo/máximo
☐ Caracteres permitidos
☐ Formato esperado
☐ Valores padrão
☐ Mensagens de erro claras
TEXTO:
☐ Limites de caracteres
☐ Caracteres especiais
☐ Espaços
☐ Case sensitivity
☐ Encoding (UTF-8)
NUMÉRICO:
☐ Inteiro vs decimal
☐ Casas decimais
☐ Separadores
☐ Negativos
☐ Zero
MONETÁRIO:
☐ Formato
☐ Casas decimais (sempre 2)
☐ Símbolos
☐ Valores extremos
DATA:
☐ Formato
☐ Datas inválidas
☐ Anos bissextos
☐ Fusos horários
☐ Intervalos
EMAIL:
☐ Formato válido
☐ Caracteres especiais
☐ Domínio válido
TELEFONE:
☐ Formato
☐ Máscaras
☐ DDI/DDD
☐ Quantidade de dígitos
CPF/CNPJ:
☐ Formato
☐ Dígitos verificadores
☐ CPFs conhecidos
SENHA:
☐ Requisitos mínimos
☐ Caracteres especiais
☐ Visibilidade
☐ Confirmação
---
Conclusão
Validação de dados não é "marcar checkbox de obrigatório". É garantir que apenas dados válidos entrem no sistema.
Use este guia como referência em TODOS os seus projetos. Imprima. Cole na parede. Consulte sempre.
Lembre-se: Dados inválidos no banco = bugs em produção = problemas sérios.---
Quer aprender mais sobre testes práticos?Inscreva-se no canal LiraQuality no YouTube
Tem validações específicas do seu projeto?Compartilhe no fórum da comunidade
🧪 Exercícios Práticos
Agora é hora de colocar em prática o que você aprendeu!