Corpus de prueba público
Nuestras afirmaciones de compatibilidad de escáneres son tan buenas como la evidencia en la que se basan. Esta página es el corpus, las entradas canónicas con las que sometemos a prueba regresiva cada codificador, más el comportamiento de la cámara del teléfono que puedes auditar tú mismo sin creer en nuestra palabra.
Descargar corpus.zip JSON + CSV de fixtures + metodología + README. ~4 KB.
Cargando versión…
Cómo usar el corpus
Cada vector de prueba está en /test-vectors/fixtures.json. Un objeto JSON por tipo con los campos de entrada y las subcadenas decodificadas esperadas. Obtenido en tiempo real desde este sitio, sin copias obsoletas.
Toma el mapa de fields de cualquier fixture, introduce los valores en el generador para ese tipo y pulsa Generar. El QR resultante es bit a bit idéntico al que nuestro CI procesa en ida y vuelta.
Apunta una cámara iPhone, cámara Android, Google Lens, escáner industrial (Zebra, Honeywell, Datalogic) o lector específico de la app (app bancaria, autenticador) al QR generado. Confirma que el texto decodificado contiene cada subcadena expect de ese fixture.
Si un escáner de tu flota devuelve una decodificación que no coincide con el fixture, abre un issue. Lo reproduciremos, añadiremos tu escáner a la matriz de compatibilidad pública y (si es un bug del codificador) enviaremos una corrección.
Resultados de escaneo esperados, subconjunto seleccionado
Esta es una vista compacta del JSON completo de fixtures, agrupada por comportamiento del escáner. Para la lista exhaustiva de todos los tipos que Abundera soporta, ve a /test-vectors/.
| Tipo | Entrada del fixture | Cámara iOS | Cámara Android | Escáner pro |
|---|---|---|---|---|
| URL | https://example.com/test | Decodifica | Decodifica | Decodifica |
| WiFi | SSID=MyNet PSK=... WPA | Se une a la red | Se une a la red | Decodifica payload |
| vCard | FN=Alice ORG=Acme ... | Añadir a Contactos | Añadir a Contactos | Decodifica payload |
| TOTP | otpauth://totp/...?secret=JBSW... | La app de autenticación lo lee | La app de autenticación lo lee | Decodifica URI |
| eSIM | LPA:1$rsp.example.com$K2-LM... | iOS 17.4+ aprovisiona | Android 13+ aprovisiona | Decodifica URI |
| Bitcoin (BIP-21) | bitcoin:1A1zP1eP... | Abre app de cartera | Abre app de cartera | Decodifica URI |
| SEPA (EPC) | BCD header + name + IBAN + amount | Solo cadena en bruto | Solo cadena en bruto | Soporte en app bancaria |
| Swiss QR-bill | SPC header + IBAN + address + amount | Solo cadena en bruto | Solo cadena en bruto | Apps bancarias suizas nativas |
| GS1 Digital Link | https://id.gs1.org/01/09506000134352 | Abre URL | Abre URL | Firmware POS analiza AIs |
| Data Matrix | Arbitrary payload | Sin decodificación | Solo Google Lens | Nativo |
| Aztec | Arbitrary payload | Sin decodificación | Algunos lectores Android | Nativo |
| PDF417 | AAMVA or arbitrary | Sin decodificación | Google Lens parcial | Nativo |
| Carné de conducir AAMVA | @
ANSI 636014080002DL... | iOS 17+ reconoce licencia | Apps Android reconocedoras de licencia | Nativo |
| EAN-13 | 0012345678905 | Decodifica dígitos | Decodifica dígitos | Cada TPV minorista |
| Micro QR | Compact payload | Sin decodificación | Sin decodificación | Solo lectores industriales |
| rMQR | Rectangular payload | Sin decodificación | Sin decodificación | Algunos firmware Scandit/Cognex |
Qué significa "resultado de escaneo esperado"
- Decodes, Decodifica, el lector nativo del teléfono devuelve el payload sin necesitar una app separada.
- Partial, Parcial, la decodificación depende de una app específica (autenticador, cartera, banco) o de una versión específica del OS.
- No decode, Sin decodificación, la cámara nativa no devuelve nada. Requiere un escáner o lector especializado.
Notas de metodología
- Todos los fixtures son de ida y vuelta. Nuestro CI genera cada código en Chromium sin cabeza, lo decodifica de nuevo mediante la API
BarcodeDetectordel navegador y verifica la coincidencia de subcadenas. Un CI verde significa que el corpus es internamente consistente. - Los resultados del escáner en esta tabla provienen de pruebas manuales en dispositivos reales. Sin síntesis. iPhone 15 Pro en iOS 18.3, Pixel 8 en Android 14, Zebra DS8100 imager en firmware CAAACS00-002-R06.
- Publicamos resultados negativos. Si la cámara iPhone se niega a decodificar una simbología (Data Matrix, Aztec, PDF417), eso es un 'Sin decodificación' en la tabla, no una redenominación de 'lector nativo'.
- El corpus está versionado. Cuando añadimos un tipo o corregimos un bug del codificador, la entrada del fixture correspondiente se envía en el mismo commit. Consulta el historial del fixture para el rastro de auditoría.
Próximamente
- Artefactos pre-renderizados. El ZIP actual incluye fixtures + metodología + CSV. Una revisión futura añadirá SVG + PNG pre-renderizados de cada fixture para que puedas insertarlos directamente en un harness de flota de escáneres. Paso de navegador sin cabeza en tiempo de compilación pendiente.
- Atestación de flota de escáneres. Registro fechado en docs/SCANNER_ATTESTATION.md, crece cada vez que verificamos contra un nuevo dispositivo.
- Verificación de terceros. Un laboratorio de seguridad independiente ejecuta el corpus a través de una flota de escáneres y publica una atestación firmada. Pendiente, encargado; el informe se publicará aquí a su llegada.
Ver también
- /test-vectors/, JSON completo de fixtures y tabla buscable.
- /compatibility/, matriz de compatibilidad de escáneres en vivo.
- /standards/, páginas de referencia por estándar.
- /print-size/, guía de impresión física que acompaña al corpus.