Clean-account tesztelés hiányzik a fontos hiba
Egy új Unity építmény tökéletesen nézhet ki, ha üres profillal kezdődik. A friss fiók nem tartalmaz visszavonult mezőket, félkész küldetéseket, tárolt katalógus referenciákat, régi készletkészletkészleteket, megszakított vásárlásokat, vagy olyan értékeket, amelyek egy korábbi szabály szerint érvényesek voltak. Ezért csak azt bizonyítja, hogy az új formátum új állapotot hozhat létre. Nagyon keveset mond arról, hogy a játék biztonságosan tud-e vinni egy játékost a tegnapi világból a mai világba.
Migrációs munka kell kezdeni egy erősebb kérdés: lehet ez a pontos történelmi állam belépni a jelenlegi építmény, megőrizni a jelentést, hogy még mindig számít, és vagy érvényessé válik a jelenlegi állapot, vagy bukás oly módon, hogy hasznos diagnosztizálni? Ez egy termék kérdés, mint egy szerializer kérdés. A mező deszerializálhatja sikeresen, miközben még mindig megsérti a progresszió szabályt, ami a hiányzó tartalom, vagy a változó vásárlási jogosultság. Loading bytes nem elég.
Ez a cikk leírja a helyi-első próba folyamat. Szándékosan nem ígéretes, hogy egy eszköz képes megérteni minden Unity serialization beállítás, backend, vagy platform integráció. Unity adatmodellek változóak, és egy játék hozzá a saját titkosítás, felhő szinkron, bináris formátumú, vagy egyéni adapterek. A tartós része a vizsgálati fegyelem: megőrizni történelmi formák, másolja őket mutáció előtt, hogy a migrációs út explicit, és ellenőrizze a játék megszállók után minden határ.
Építs egy történelmi állam corpus
Kezelje a régi mentések, mint egy reverzioned corpus, nem mint laza fájlokat át a chat. Minden rögzítés szüksége van egy stabil azonosító, a verzió, hogy elkészítette, egy rövid forgatókönyv címke, a formátum nyilatkozat, és egy adatvédelmi besorolást. A forgatókönyv címke számít, mert a kioldódási csomag kell tartalmaznia értelmes államok, nem csak véletlenszerű JSON. Példák közé tartozik egy új játékos, egy játékos egy fejezethatáron határ, egy leltár a stack limit, egy megszakított oktatói, egy régi esemény jutalom, egy felhasználó opcionális kozmetikai tartalom, és egy profil, hogy szándékosan tartalmaz egy érvénytelen örökölt kombinációt.
Használjon változhatatlan munkamásolatokat. A tesztfutó soha nem írhatja felül a forrásrögzítést, miközben megpróbálja a kioldódást. Másolja a rögzítést egy ideiglenes munkakönyvtárba, jegyezze fel az ellenőrző összeget vagy tartalom hash-t, futtassa le az adaptert, és tartsa meg az eredmény külön-külön. Ez egy meglepő eredményt vált bizonyítékká, amit valaki más vissza tud adni. Ez azt is megakadályozza, hogy a teszt csendben javítsa saját inputját, amíg az eredeti probléma el nem tűnik.
Az éles környezetből származó játékosadatokat ne tárolja az általános fejlesztési tesztadatok könyvtárában. A korábbi állapotokat tartalmazó adatkészlet lehet szintetikus, hozzájárulással használható, gondosan kitakart, vagy determinisztikus forgatókönyvekből előállított. A lényeg, hogy megőrizze a fontos strukturális és szemantikai határeseteket. Az adatvédelem nem utólagos szempont: távolítsa el a közvetlen azonosítókat, az eszközazonosítókat, a kapcsolattartási adatokat, a fizetési tokeneket, a nyers bizonylatokat és a titkokat, mielőtt a tesztadatok szélesebb körben hozzáférhetővé válnak.
A konverter írása előtt rajzolja le a kioldódási grafikont.
Verzió számok nem egy migrációs terv. Egy játék is mozog 1 - 2, 2 - 3, és 3 - 4, majd találkozik egy játékos, aki kimaradt közvetlenül 1 - 4. Tud szállítani egy hotfix, amely megváltoztatja csak a fészkes leltár rekordot, vagy visszavonja a mezőt, hogy a régi tartalom még mindig elvárják. A grafikon teszi ezeket a döntéseket látható: minden csomópont egy mentési séma vagy szemantikai változat; minden széle egy explicit átalakítás vagy szándékos elutasítás; minden szélnek vannak előfeltételei és utófeltételei.
Minden támogatott start verzió, döntse el, hogy a játék láncok szomszédos átalakítása, használja a közvetlen átalakítás, vagy szükség van egy szerviz-side frissítés előtt az ügyfél terhelés. Ne hagyja kihagyott verziók, hogy bármi történik, ha a mezők hiányoznak. A lánc lehet biztonságosabb, ha minden lépés kicsi és tesztelt. A közvetlen átalakítás lehet biztonságosabb, ha a közbenső formátumok soha nem volt megfigyelhető. Mindkét megközelítés kell egyértelmű tulajdonosi és megismételhető rögzítések.

A grafikonnak többet kell tartalmaznia, mint a sorozatos típus. Rögzítse tartalomjegyzék függések, konfigurációs verziók, funkciók zászlók, amelyek befolyásolják az értelmezést, és az aktuális alkalmazás verzió. A mentés lehet szintaktikailag aktuális, de érvénytelen, mert egy hivatkozott elem már nem létezik, vagy egy szabály megváltoztatta jelentése. Ezek kompatibilitási határok, nem bosszantó szélek.
A biztonságos-betöltés kerek utak megfigyelhető
Amint egy tartozék eléri a vándorlási útvonalat, teljes körutat hajt végre: betölti a történelmi bemenetet, migrálja, megépíti az in-game modellt, kivéve az aktuális írót, majd újra betölti az aktuális teljesítményt. Az első terhelés ellenőrzi, hogy egy történelmi rekord be tud-e lépni a rendszerbe. A második terhelés ellenőrzi, hogy a jelenlegi író stabil, önkonzisztens eredményt hozott-e létre. Hasonlítsa össze az államot az első és a második terhelés után, a szemantikai szabályok szerint, nem csak a nyers byte egyenlőséget.
A nyers egyenlőség gyakran a rossz állítás. Új alapértelmezések adhatók hozzá, a területi sorrend változhat, az időbélyegek frissíthetők, és a gyűjtemények stabil rendelést kaphatnak. Definiálj egy normalizert a szándékosan nem szemantikus értékekre, majd hasonlítsd össze a többit. A normalizer maga is megérdemli a felülvizsgálatot; nem válhat olyan általános figyelmen kívül hagyó listává, amely elrejti az igazi veszteséget. Egy jó összehasonlító jelentést, amely mezőket adtak hozzá, távolítottak el, átalakítottak, vagy szándékosan figyelmen kívül hagyták.
A teszt eredményének meg kell neveznie az első érvénytelen állapotot. Ha egy átállási láncnak három átmenete van, ne csak azt jelentse, hogy a végső terhelés nem sikerült. Rögzítse az állapotot minden ellenőrzőpont után, érvényesítse azt, és álljon meg a legkorábbi határnál, amely megsérti a túlélőt. Ez a lokalizáció egy homályos, "régi mentett" jelentést alakít át egy adott migrációs szélre, rögzítésre és államkülönbségre.
Express game- specific resariants
Az általános migrációs hám nem tudja, hogy mit jelent a fejlődés egy adott játékban. A játék kell, hogy a saját túlélők. Írd le őket a nyelv, amely kapcsolódik a játékos eredmények: szint a jelenlegi tartományban; a leltár mennyisége nem negatív és határolt; minden tulajdonosnak van egy ismert definíciója vagy explicit örökölt lemaradás; egy befejezett bemutató marad befejezett; a valuta véges; a keresési hivatkozás tartozik a jelenlegi katalógus; a jogosultság egyedi; egy világmag és generált világállam egyetért.
Elkülöníti az idegenek rétegekbe. Strukturális inváziók válaszolnak, hogy szükséges mezők és típusok léteznek-e. Referenciális invariánsok válaszolnak arra, hogy az ID-k az ismert definíciókra utalnak-e. Tartománylakók válaszolnak arra, hogy az értékek megfelelnek-e a játék szabályainak. A biztonsági inváziók válaszolnak arra, hogy az adatok végesek-e, határosak és biztonságosan megjeleníthetők-e. Ha egy rögzítés nem sikerül, a réteg megmondja a csapatnak, hogy szüksége van-e egy szerializáló változásra, katalógus adapter, ruleset döntés vagy helyreállítási politika.
Használjon deterisztikai mutációkat, hogy a corpus keményebben működjön. Kezdje egy ismert rögzítéssel, és szándékosan távolítson el egy mezőt, másolja meg a leltár azonosítóját, helyettesítsen egy katalógus referenciát, ugorjon át egy változatot, rendeljen újra egy akciólistát, vagy változtasson meg egy határmennyiséget. Minden mutációnak kell lennie egy várt eredménynek: egy dokumentált alapértelmezéssel történő vándorlás, egy diagnosztikai kategória elutasítása, a helyreállításhoz szükséges karantén vagy egy saját jóváhagyott adatjavítás. "Nem esik össze" nem elegendő a várt eredmény.
A hibakeresés csökkentése a hiba elvesztése nélkül
Nagy játékos államok nehezen érthető. Ha egy tartozék több száz mezőt tartalmaz, és a migráció nem sikerül, a fejlesztő órákat tölthet el a nem kapcsolódó adatok olvasásával. A Counterexample minimalizálás csökkenti a rögzítést, miközben megőrzi a megsértett invariánst. Távolítson el egy mezőcsoportot, próbálja újra ugyanazt a determinista vándorlást, és tartsa az eltávolítást csak akkor, ha a hiba még mindig bekövetkezik. Ezután felosztási gyűjtemények, zsugorodó értékek a határok felé, és csökkentse az akció előzményeit, ha a visszajátszás a viselkedés számít.

Csökkentés szükséges reprodukálhatóság. Zárd be a rögzítés hash, kioldódási változat, adapter verzió, determinista vetőmag, vonatkozó konfigurációs pillanatfelvétel, és a várt invazív. Ha a környezet változik minden ismétlés során, a redukáló képes létrehozni egy kisebb állapot egy másik probléma. Tartsa meg a visszajátszás manifesztet az említett bemenetek és a megfigyelt eredmény. A kimenet nem csak egy kisebb fájl; ez egy regressziós eset valaki más tudja végrehajtani.
Az generált regressziós rögzítések ugyanabba a felülvizsgálati útvonalba kell, hogy kerüljenek, mint a kézi készítésű rögzítések. Minden egyes rögzítés legyen egy stabil név, egy rövid magyarázat a hibára, a megmaradásra, és egy várható osztályozás. A regressziós rögzítés értékes, mert ez egy korábban meglepő határrutint eredményez. Nem válhat a gyártó játékos adatainak rejtett forrásaivá, vagy a megmagyarázhatatlan hibák esetén az összesé.
Tedd a próbát informátorba, anélkül, hogy zajos lenne.
Futasson le egy gyors reprezentatív alcsoportot minden lényeges változásról: jelenlegi migrációs szélek, magas kockázatú történelmi államok, és egy kis determinista mutációk. Futtassa a teljes corpus egy tervezett munkát, kiadás jelölt, vagy a változás, amely érinti a serializáció, progresszió, katalógus értelmezés, felhő szinkron, vagy save-format kód. Darabok rögzítésével család vagy migrációs széle helyett küld minden tesztet egy hosszú sorozatban.
A CI kimenetének tömörnek kell lennie, de ellenőrizhetőnek kell lennie. Jelentse be a rögzítés azonosítóját, a start és a cél verziókat, a migrációs szélét, az állandó réteget, az első érvénytelen ellenőrzőpontot, és az utat a szerkesztett ereklyéhez vagy diffhoz. Kerülje a teljes profiltartalom nyomtatását a naplókban. Ha a hiba új, tartsa meg a helyi reprodukáláshoz szükséges minimális információt; ha várható, jegyezze fel, hogy a kibocsátás nem fogja halkan normalizálni az ismert kockázatot.
A felszabadítási döntésnek meg kell határoznia, hogy mit jelent a bizonyíték. A kioldódási tesztek alátámasztják a körülhatárolt igényt: a tesztelt corpus és a bejelentett ösvények úgy viselkedtek, ahogy az várható volt ebben a környezetben. Nem bizonyítják, hogy minden játékos mentett, eszköz vagy külső szolgáltatás azonos módon fog viselkedni. A csapatoknak még mindig szükségük van a visszafordítási tervekre, a személyre szabott támogatás kezelésére és a magánélet tiszteletben tartásának ellenőrzésére.
Gyakorlati ellenőrzőlista
- Tartsa meg a versioned historical corpus a forgatókönyv címkék és adatvédelmi besorolások.
- Másolja a bemenetek a migráció előtt, és megőrizni hamu forrás és kimeneti leletek.
- A támogatott migrációs szélek rajzolása, beleértve a skipped- version politikát és a kifejezett elutasításokat.
- Minden ellenőrzőpont után hitelesítse a szerkezeti, népszavazási, tartományi és biztonsági inváziókat.
- A Round- trip az aktuális írón és olvasón keresztül vándorolt ki.
- Determinista mutációk segítségével teszteljük a hiányzó mezőket, lemásoljuk a lemezeket, a visszavonult tartalmakat és a határértékeket.
- Csökkentse reprodukálható hibák felülvizsgált regressziós rögzítések visszajátszás manifesztek.
- Risk-focused alsets folyamatosan és a teljes corpus előtt release- érzékeny változások.
- Tartsa naplók és leletek redukált; ne változtassa a CI egy lejátszó-adat archívum.
Gyakran feltett kérdések
Valódi játékosmentésre van szükségünk a migráció teszteléséhez?
Nem. Valódi történelmi formák hasznosak, de a korpusz lehet szintetikus vagy gondosan átszerkesztett. Mi a lényeg, hogy megőrizze a nehéz állapot kombinációk: visszavonult tartalom, hosszú progresszió, megszakított átmenetek, opcionális adatok, és értékek értelmes határokon. Ha gyártási adatokat használnak, hogy felfedezzen egy peremesetet, hozzon létre egy biztonságos tartozékot, amely megtartja csak az ingatlan vizsgált.
Minden régi verziót örökké támogatni kell?
Nem feltétlenül. A támogatás egy termék és operatív döntés. A fontos dolog, hogy a határ explicit: melyik verziók migrate, amely megköveteli a korábbi frissítést, amelyeket elutasítottak, és hogyan a játékos tájékozódik. A dokumentálatlan véletlen út a legkevésbé biztonságos lehetőség, mert nem megbízható, és nem is egyértelműen elutasítják.
Egy sorozat teszt helyettesítheti a játék teszteket?
Nem. Serializer tesztek azt állapítják meg, hogy az adatok olvashatók és írhatók a bejelentett formák szerint. Gameplay és domain tesztek azt állapítják meg, hogy az így kapott állapotnak van értelme a jelenlegi szabályokban. Egy robusztus kioldódási próbának mindkettőre szüksége van, plusz a tartalom és a konfigurációs referenciák felülvizsgálata, amelyek befolyásolják a mentett értékek jelentését.
Mi az Persistium szerepe itt?
Persistium egy belső fejlesztési hely- első megbízhatóság termék család. Az útmutató ebben a megjegyzésben gyakorlati mérnöki tanácsokat, nem azt az állítást, hogy egy nyilvános Persistium termék elérhető, vagy hogy ő diagnosztizált valós ügyféladatok. Folytonosság iránya feltárja a fajta explicit migráció, visszajátszás, összehasonlítás, és csökkenti a munkafolyamat fent leírt.






