GS1 sprendiklio testų rinkinys: DPP nuorodų patikimumo tikrinimas prieš paleidimą

Stabilus GS1 testų rinkinys leidžia tikrinti Resolver 1.2. Prieš paleidimą patikrinkite peradresavimus, nuorodų rinkinius, CORS, kalbas ir klaidų scenarijus.

autorius QR3 Redaktion

GS1 sprendiklio testų rinkinys: DPP nuorodų patikimumo tikrinimas prieš paleidimą

QR kodas, naršyklėje atveriantis puslapį, dar neįrodo, kad sprendiklis yra patikimas. GS1 skaitmeninės nuorodos sprendikliui svarbus visas HTTP elgesys: kokie identifikatoriai priimami? Koks tikslas yra numatytasis? Ar paslauga pateikia mašinoms skaitomą nuorodų rinkinį? Ar naršyklės užklausos iš kitų domenų veikia? Ar netinkamos arba nepasiekiamos užklausos grąžina tinkamą klaidą?

Nuo 2026 m. sausio 16 d. galioja GS1 atitinkančio sprendiklio standartas 1.2.0. Susijęs viešas GS1 testų rinkinys dabar laikomas stabiliu; jo kodas paskutinį kartą atnaujintas 2026 m. birželio 29 d. Taip abstraktų standartą galima paversti konkrečiu priėmimo testu. Šiame straipsnyje paaiškinama, ką reikėtų patikrinti prieš paleidimą, kokios yra testų rinkinio ribos ir kokie įrodymai turi būti įtraukti į techninį patvirtinimą.

Sėkmingas nuskaitymas – tik pradžia

Vienas GS1 Digital Link turi GS1 identifikatorių HTTPS URI. Sprendiklis susieja šį identifikatorių su vienu ar keliais ištekliais, pavyzdžiui, produkto puslapiu, instrukcija, duomenų lapu arba programavimo sąsaja. Mūsų pagrindų straipsnyje pateikiamas GS1 skaitmeninės nuorodos sprendiklis su veikiančiu pavyzdžiu. Tačiau gamybinės aplinkos patvirtinimui vien sėkmingo standartinio peradresavimo nepakanka.

Sprendiklio standartas 1.2.0 be kita ko reikalauja HTTPS, GET, HEAD ir OPTIONS palaikymo, dalijimosi ištekliais tarp skirtingų kilmių (CORS), aiškiai atpažįstamos standartinės nuorodos ir nuorodų rinkinio išvesties. Naudojant linkType=linkset arba Accept antraštę application/linkset+json, sprendiklis neturi peradresuoti. Vietoj to jis turi grąžinti galimas tipizuotas nuorodas kaip atskirą pateiktį.

Šis atskyrimas svarbus: žmogui skirta naršyklės eiga gali veikti, o prieiga mašinoms, kalba, nuorodų tipai arba klaidų scenarijai gali būti sutrikę. Būtent tokie neatitikimai lieka nepastebėti atliekant vien nuskaitymo testą.

Priėmimo planas septyniais etapais

1. Nustatykite reprezentatyvius testinius URI

Nepradėkite nuo vieno pavyzdinio produkto. Sudarykite nedidelį versijuojamą testų rinkinį:

  • bent po vieną galiojantį identifikatorių kiekvienam palaikomam GS1 pirminiam raktui;
  • vieną GTIN atvejį be kvalifikatoriaus;
  • atvejus su partijos arba serijos numeriu, jei palaikomas toks detalumas;
  • sintaksiškai negaliojantį identifikatorių;
  • galiojantį, bet nežinomą identifikatorių;
  • žinomą identifikatorių be prašomo nuorodos tipo.

Standartas leidžia sprendikliui palaikyti tik dalį GS1 pirminių raktų. Tačiau kiekvieno palaikomo pirminio rakto kvalifikatoriai ir duomenų atributai turi būti apdorojami visiškai. Todėl testų rinkinys turi atitikti faktiškai deklaruojamas galimybes, o ne bendro pobūdžio rinkodaros teiginį.

2. Patikrinkite standartinį peradresavimą ir metodus

Pirmiausia patikrinkite įprastą užklausą be specialių antraščių. Tikimasi deterministinės standartinės nuorodos. Tada atlikite HEAD ir OPTIONS: HEAD neturi naudoti kitokios maršrutizavimo logikos nei GET, o OPTIONS turi aiškiai parodyti siūlomus metodus.

Minimalus rankinis testas atrodo taip:

curl -sS -D - -o /dev/null \
  "https://id.gs1.org/01/09506000134352"

curl -sS -I \
  "https://id.gs1.org/01/09506000134352"

Užfiksuokite būsenos kodą, Location, spartinančiosios podėlio antraštes ir peradresavimų skaičių. Peradresavimo ciklas, atsitiktinis tikslas arba kiekvienam metodui besiskiriantis kelias yra patvirtinimo klaida, net jei išmanusis telefonas galiausiai parodo puslapį.

3. Prašykite nuorodų rinkinio, o ne tinklalapio

Svarbiausias mašininis patikrinimas yra nuorodų rinkinys:

curl -sS \
  -H "Accept: application/linkset+json" \
  "https://id.gs1.org/01/09506000134352"

RFC 9264 apibrėžia application/linkset+json kaip atskirą JSON pateiktį, sudarytą iš tipizuotų saityno nuorodų. GS1 sugriežtina sutartį: išvestis turi būti validi pagal norminę 1.2.0 versijos nuorodų rinkinio schemą. Todėl tikrinkite ne tik tai, ar grąžinamas JSON, bet ir medijos tipą, schemą, absoliučius tikslų URI, pagrindines nuorodas bei nuorodų sąryšius.

Ypač klastingi yra formaliai galiojantys, bet dalykiškai neteisingi nuorodų rinkiniai: pavyzdžiui, vadovas, pateiktas produkto informacijos puslapio nuorodos tipu, arba su serija susietas tikslas GTIN lygmeniu. Todėl schemos validavimas ir dalykiniai testiniai duomenys turi būti naudojami kartu.

4. Patikrinkite sprendiklio aprašą

Atitinkantis sprendiklis adresu /.well-known/gs1resolver pateikia mašinoms skaitomą aprašą. Jame, be kita ko, nurodoma sprendiklio pagrindinė dalis ir palaikomi pirminiai raktai. Failas turi būti validus pagal GS1 sprendiklio aprašų failų schemą.

Šis testas padeda išvengti dažnos neatitikties: paslauga gali gebėti daugiau arba mažiau, nei teigiama jos pačios apraše. Todėl į priėmimą įtraukite ir schemos validavimą, ir palyginimą su realiais testiniais atvejais.

5. Išbandykite CORS ir turinio derybas

CORS nėra patogumo funkcija. Standartas jo reikalauja, kad naršyklės programos galėtų kreiptis į sprendiklį iš skirtingų domenų. Išbandykite bent vieną leidžiamą naršyklės kilmę ir parengiamąją užklausą. Taip pat patikrinkite, ar Accept: application/linkset+json ir linkType=linkset pateikia nuoseklius rezultatus.

Pridėkite neigiamą testą nepalaikomam medijos tipui. Paslauga, kuri nepaisydama Accept antraštės visada siunčia HTML, žmonėms yra pasiekiama, tačiau mašinoms nėra patikimai skaitoma.

6. Aprėpkite kalbą, kontekstą ir detalumą

Standartas numato Accept-Language ir užklausos parametrą context kaip priemones kelioms tinkamoms nuorodoms atskirti. Ne kiekvienas sprendiklis turi siūlyti kiekvieną variantą. Tačiau jei palaikoma kalba arba kontekstas, pasirinkimo taisyklės turi būti atkuriamos.

Todėl išbandykite esamą kalbą, nesamą kalbą ir apibrėžtą atsarginio pasirinkimo eilę. Tas pats principas taikomas GTIN, partijai ir serijos numeriui: detalesnis identifikatorius gali atsižvelgti į svarbias aukštesnių lygmenų nuorodas, tačiau neturi iškreipti dalykinio susiejimo. Tikėtiną nuorodų rinkinį išsaugokite kaip testinius duomenis; vien tik momentinės kopijos testai, tikrinantys eilės tvarką, yra pernelyg trapūs.

7. Semantiškai atskirkite klaidas

Klaidų kodai yra sutarties dalis. Sprendiklio standartas sintaksiškai negaliojantiems GS1 identifikatoriams numato pranešimą su HTTP 400. Kai prašomas konkretus nepasiekiamas nuorodos tipas, peradresavimas į standartinį tikslą nėra tinkamas atsakymas. Tokius atvejus reikia atskirti nuo nežinomo, bet sintaksiškai galiojančio identifikatoriaus.

Taip pat patikrinkite, ar klaidų atsakymai neatskleidžia vidinės informacijos, prieigos raktų arba dėklo sekų ir ar GET, HEAD bei naršyklės užklausos išlaiko tą pačią semantiką. Gražus HTML klaidos dokumentas negali kompensuoti neteisingo būsenos kodo.

Kaip tinkamai naudoti GS1 testų rinkinį

Viešas testų rinkinys priima skaitmeninės nuorodos URI ir tikrina elgseną pagal Resolver 1.2.0. Jis puikiai tinka kaip nepriklausomas dūmų ir atitikties patikrinimas. Patvirtinimui išsaugokite testo datą, tikrintą URI, standarto versiją, rezultatą ir, jei reikia, atkuriamus klaidų atvejus.

Tačiau rinkinys nepakeičia jūsų regresinių testų. GS1 aiškiai nurodo, kad šiuo metu jis netikrina glaudinimo. Jei jūsų sprendiklis apdoroja EPC dvejetaines eilutes arba kitas suglaudintas formas, tam reikės atskirų testinių vektorių. Be to, viešas rinkinys nežino jūsų dalykinių nuorodų tipų, autorizavimo, nuomininkų ar pasiekiamumo reikalavimų.

Todėl patikimas procesas apima tris lygmenis:

  1. viešą GS1 rinkinį kaip išorinį atitikties patikrinimą;
  2. nuorodų rinkinio ir sprendiklio aprašo schemų testus CI aplinkoje;
  3. savo visos eigos testus su realiais identifikatoriais, vaidmenimis, kalbomis ir sutrikimais.

Kas turi būti patvirtinimo įraše

Priėmimas tampa pakartojamas tik tada, kai rezultatas ne tik matomas naršyklėje, bet ir dokumentuojamas. Patvirtinimo įraše turėtų būti bent standarto ir testų rinkinio versija, testo laikas, tikslinė aplinka, testiniai URI, tikėtini nuorodų tipai, HTTP rezultatai, schemos validavimas, CORS patikra ir žinomos išimtys.

Stabiliąsias dalis automatizuokite CI aplinkoje, tačiau prieš kiekvieną esminį sprendiklio pakeitimą atlikite tikslinį išorinį testą viešame rinkinyje. Taip teiginys „QR kodas atsidaro“ tampa patikrinamu teiginiu apie tapatybę, maršrutizavimą ir mašinoms skaitomą produkto informaciją.

Šaltiniai