Validar RENAVAM: a inversão de dígitos que quebra implementações copiadas de outro documento
Validar RENAVAM usa o algoritmo já detalhado na página do
gerador de RENAVAM — mas vale reforçar
aqui o erro de implementação mais específico deste documento entre
todos os deste site: como o vetor de pesos
[3,2,9,8,7,6,5,4,3,2] é o mesmo usado no PIS/PASEP, é
comum alguém adaptar um validador de PIS já pronto para RENAVAM
trocando só o comprimento esperado (10 para 11 dígitos) — e esquecer
que o RENAVAM exige inverter a ordem dos dígitos antes de aplicar os
pesos, e multiplicar a soma por 10 antes do módulo 11. Sem essas duas
etapas extras, o vetor de peso "certo" produz um dígito verificador
errado.
Por que testar contra o PIS não detecta esse bug
Se um validador de RENAVAM for implementado incorretamente (sem inversão de dígitos, sem a multiplicação por 10) mas testado só com valores de PIS reaproveitados adaptados manualmente, o teste pode passar por coincidência — porque quem escreveu os casos de teste também não tinha a inversão e a multiplicação em mente ao calcular o resultado esperado manualmente. A forma confiável de testar é gerar RENAVAMs através de uma implementação de referência (como o gerador de RENAVAM deste site) e verificar se o validador aceita esses valores — não construir o caso de teste esperado à mão com a mesma lógica potencialmente equivocada do validador sendo testado.
Uso em testes de sistemas de seguro e financiamento veicular
Sistemas que processam apólices de seguro ou contratos de financiamento veicular validam RENAVAM antes de qualquer consulta real ao DETRAN — um validador com o bug de inversão descrito acima rejeitaria RENAVAMs legitimamente válidos com uma taxa de falso-negativo que só apareceria em produção, com números reais, já que testes com poucos exemplos construídos manualmente tendem a não expor esse tipo de erro.