Publiczny korpus testowy
Nasze twierdzenia o kompatybilności skanerów są tyle warte, ile dowody, na których się opierają. Ta strona to korpus, kanoniczne dane wejściowe, względem których regresyjnie testujemy każdy koder, oraz zachowanie aparatu telefonu, które możesz samodzielnie zweryfikować bez konieczności ufania nam na słowo.
Pobierz corpus.zip Pakiet fixtures JSON + CSV + metodologia + README. ~4 KB.
Ładowanie wersji…
Jak używać korpusu
Każdy wektor testowy znajduje się w /test-vectors/fixtures.json. Jeden obiekt JSON na typ z polami wejściowymi i oczekiwanymi podciągami zdekodowanymi. Pobierane na żywo z tej strony, żadnych nieaktualnych kopii.
Weź mapę fields dowolnej fixture, wstaw wartości do generatora dla tego typu i kliknij Generuj. Wynikowy QR jest bit po bicie identyczny z tym, co nasze CI testuje w cyklu.
Skieruj iPhone Camera, Android Camera, Google Lens, skaner przemysłowy (Zebra, Honeywell, Datalogic) lub czytnik dedykowany dla aplikacji (aplikacja bankowa, autentykator) na wygenerowany QR. Potwierdź, że zdekodowany tekst zawiera każdy podciąg expect dla danej fixture.
Jeśli skaner w Twojej flocie zwróci dekodowanie niezgodne z fixture, zgłoś problem. Odtworzymy go, dodamy Twój skaner do publicznej matrycy kompatybilności i (jeśli to błąd kodera) wyślemy poprawkę.
Oczekiwane wyniki skanowania, wyselekcjonowany podzbiór
To zwięzły widok pełnego fixture JSON, pogrupowany według zachowania skanerów. Pełna lista wszystkich typów obsługiwanych przez Abundera jest dostępna na /test-vectors/.
| Typ | Wejście fixture | iOS Camera | Android Camera | Skaner profesjonalny |
|---|---|---|---|---|
| URL | https://example.com/test | Dekoduje | Dekoduje | Dekoduje |
| WiFi | SSID=MyNet PSK=... WPA | Łączy z siecią | Łączy z siecią | Dekoduje payload |
| WiFi Enterprise (EAP) | WPA2-EAP PEAP identity=alice@corp | iOS 17+ | Dekoduje | Dekoduje |
| vCard | FN=Alice ORG=Acme ... | Dodaj do kontaktów | Dodaj do kontaktów | Dekoduje payload |
| TOTP | otpauth://totp/...?secret=JBSW... | Aplikacja autentykator odczytuje | Aplikacja autentykator odczytuje | Dekoduje URI |
| eSIM | LPA:1$rsp.example.com$K2-LM... | iOS 17.4+ provisionuje | Android 13+ provisionuje | Dekoduje URI |
| Bitcoin (BIP-21) | bitcoin:1A1zP1eP... | Aplikacja portfela otwiera się | Aplikacja portfela otwiera się | Dekoduje URI |
| SEPA (EPC) | BCD header + name + IBAN + amount | Tylko surowy ciąg | Tylko surowy ciąg | Wsparcie aplikacji bankowych |
| Swiss QR-bill | SPC header + IBAN + address + amount | Tylko surowy ciąg | Tylko surowy ciąg | Natywny dla szwajcarskich aplikacji bankowych |
| GS1 Digital Link | https://id.gs1.org/01/09506000134352 | Otwiera URL | Otwiera URL | Firmware POS parsuje AI |
| Data Matrix | Arbitrary payload | Brak dekodowania | Tylko Google Lens | Natywny |
| Aztec | Arbitrary payload | Brak dekodowania | Niektóre czytniki Android | Natywny |
| PDF417 | AAMVA or arbitrary | Brak dekodowania | Google Lens częściowo | Natywny |
| AAMVA driver license | @\n\x1e\rANSI 636014080002DL... | iOS 17+ rozpoznaje prawo jazdy | Aplikacje Android obsługujące prawo jazdy | Natywny |
| EAN-13 | 0012345678905 | Dekoduje cyfry | Dekoduje cyfry | Każdy POS detaliczny |
| Code 128 | ABC-123 | Dekoduje | Dekoduje | Natywny |
| Micro QR | Compact payload | Brak dekodowania | Brak dekodowania | Tylko czytniki przemysłowe |
| rMQR | Rectangular payload | Brak dekodowania | Brak dekodowania | Niektóre firmware Scandit/Cognex |
Co oznacza „oczekiwany wynik skanowania"
- Dekoduje, natywny czytnik aparatu telefonu zwraca payload bez potrzeby oddzielnej aplikacji.
- Częściowo, dekodowanie zależy od konkretnej aplikacji (autentykator, portfel, bankowość) lub konkretnej wersji systemu operacyjnego.
- Brak dekodowania, natywny aparat nie zwraca niczego. Wymagany jest specjalistyczny skaner lub czytnik.
Uwagi metodologiczne
- Każda fixture przechodzi pełny cykl. Nasze CI generuje każdy kod w bezgłowym Chromium, dekoduje go z powrotem przez API
BarcodeDetectorprzeglądarki i weryfikuje dopasowanie podciągu. Zielone CI oznacza, że korpus jest wewnętrznie spójny. - Wyniki skanerów w tej tabeli pochodzą z ręcznych testów na prawdziwych urządzeniach. Nie są syntetyzowane. iPhone 15 Pro na iOS 18.3, Pixel 8 na Android 14, Zebra DS8100 imager na firmware CAAACS00-002-R06.
- Publikujemy negatywne wyniki. Jeśli iPhone Camera odmawia dekodowania symbologii (Data Matrix, Aztec, PDF417), w tabeli widnieje „Brak dekodowania", nie przemianowujemy tego na „natywny czytnik".
- Korpus jest wersjonowany. Gdy dodajemy typ lub naprawiamy błąd kodera, odpowiadający wpis fixture trafia do tego samego commitu. Sprawdź historię fixture dla śladu audytu.
Co nadchodzi
- Wstępnie wyrenderowane artefakty. Obecny ZIP zawiera fixtures + metodologię + CSV. Przyszła wersja doda wstępnie wyrenderowane SVG + PNG każdej fixture, dzięki czemu będziesz mógł wrzucić je bezpośrednio do uprzęży floty skanerów. Oczekuje na etap bezgłowej przeglądarki podczas budowania.
- Attestacja floty skanerów. Datowany dziennik na docs/SCANNER_ATTESTATION.md, rośnie za każdym razem, gdy weryfikujemy nowe urządzenie.
- Weryfikacja przez trzecią stronę. Niezależne laboratorium bezpieczeństwa uruchamia korpus przez flotę skanerów i publikuje podpisaną attestację. W toku, zlecono; raport zostanie tu opublikowany po dostarczeniu.
Zobacz też
- /test-vectors/, pełny fixture JSON i przeszukiwalna tabela.
- /compatibility/, aktualna matryca kompatybilności skanerów.
- /standards/, strony referencyjne dla poszczególnych standardów.
- /print-size/, wskazówki dotyczące druku fizycznego uzupełniające korpus.