Megosztás:


Application Verifier – Alkalmazások tesztelése

Az Application Verifier (AppVerifier) egy futtatókörnyezet-ellenőrző eszköz nem felügyelt kódhoz, amely segít megtalálni a finom programozási hibákat, a biztonsági problémákat és a felhasználói fiókok korlátozott jogosultsági problémáit, amelyek a normál alkalmazástesztelési technikákkal nehezen azonosíthatók.

Megbízható Windows-alkalmazások kézbesítése:

  1. Tesztelje a nem felügyelt (natív) kódban írt alkalmazásokat az Application Verifierrel a hibakereső alatt, és teljes oldalú halom használatával, mielőtt az ügyfelek számára közzétenné.
  2. Kövesse az Application Verifier által megadott lépéseket a hibás feltételek megoldásához.
  3. Az alkalmazás kiadása után rendszeresen monitorozza az összegyűjtött alkalmazáshibákról szóló jelentéseket, például ha elérhető a Windows hibajelentése.

A szálkészlet-ellenőrzések alapértelmezés szerint engedélyezve vannak az "Alapszintű" ellenőrzés címsorában. Mivel ez szerepel az alapértelmezett beállításban, a felhasználóknak csak az Application Verifiert kell futtatniuk a kódjukon az alapértelmezett beállításokkal, hogy kihasználhassák ezeket és más fontos ellenőrzéseket.

Az Application Verifier konfigurálása

Hibakereső beállítása

Az ellenőrzött alkalmazásnak felhasználói módú hibakeresővel kell futnia, vagy a rendszernek kernel-hibakereső alatt kell futnia, mivel hiba esetén hiba esetén hibakeresővé válik. További hibakeresési részletekért lásd Application Verifier – Hibakeresési alkalmazás-ellenőrző leáll.

Beállítások

Az Application Verifier nem engedélyezhető egy futó folyamathoz. Ennek eredményeképpen meg kell adnia az alábbi beállításokat, majd el kell indítania az alkalmazást. A beállítások állandóak, amíg explicit módon nem törlődnek. Ezért függetlenül attól, hogy hányszor indít el egy alkalmazást, az AppVerifier engedélyezésével kezdődik, amíg a beállítások nem törlődnek.

Az Application Verifier alapszintű tesztje

Az alábbi forgatókönyvek az ajánlott parancssori és felhasználói felületi beállításokat szemléltetik. Ezeket minden olyan teszt során futtatni kell, amely a kódot gyakorolja a teljes lefedettség biztosítása érdekében. Az ilyen forgatókönyvek elvárása, hogy az alkalmazás ne váljon hibakeresővé, és az összes teszt ugyanolyan átviteli sebességgel haladjon át, mint amikor az AppVerifier engedélyezve van.

Engedélyezze a hitelesítőt a tesztelni kívánt alkalmazás(ok) számára. A parancssorból: appverif /verify MyApp.exe.

A felhasználói felületen: Az alkalmazás hozzáadásához kattintson a jobb gombbal az Alkalmazások területre, és válassza az Alkalmazás hozzáadása lehetőséget. Válassza ki az Alapismeretek lehetőséget a Tesztek területen. Kattintson a Mentés gombra.

Megjegyzések:

A /verify lehetővé teszi az alapszintű teszteket

HA DLL-t tesztel, az Application Verifier-t engedélyezni kell a DLL-t használó teszt végrehajtásához.

Az ellenőrzési rétegeket külön futtassa. Az egyik munkamenetben például az összes alapszintű, a másikon pedig az összes LuaPriv-ellenőrzést engedélyezi.

Futtassa az összes tesztet az alkalmazás gyakorlása során.

Elemezze a hibakeresők által észlelt törés(ek)et. Ha szünet következik be, meg kell értenie és ki kell javítania. MEGJEGYZÉS: A súgó tartalma részletesen ismerteti a töréseket és azok kivizsgálását.

Ha végzett, törölje az összes beállítást. A parancssorból: appverif /n MyApp.exe.

A felhasználói felületen távolítsa el az alkalmazást a jobb gombbal az Alkalmazások területen, majd válassza az Alkalmazás törlése lehetőséget. Ezután kattintson a Mentés gombra.

Halom sérülése

Közel 10% alkalmazás összeomlása a Windows-rendszereken a halom sérülésének köszönhető. Ezek az összeomlások szinte lehetetlen hibakeresés után a tény. Ezeknek a problémáknak a elkerülésére a legjobb módszer az Application Verifierben található laphomok funkcióinak tesztelése. A Page Heapnak két íze van: "Full" és "Light". A teljes érték az alapértelmezett; A hibakereső azonnal leállítja a hibakeresőt a sérülés észlelésekor. Ezt a funkciót a hibakereső alatt kell futtatni. Ugyanakkor ez is a legnagyobb erőforrásigényű. Ha egy felhasználó időzítési problémákat tapasztal, és már futtatott egy forgatókönyvet a "Teljes" oldal halom alatt, a "Világos" értékre állítása valószínűleg orvosolja ezeket a problémákat. Emellett a Light Page Heap nem összeomlik, amíg a folyamat le nem lép. Veremkövetést biztosít a kiosztáshoz, de a diagnosztizálás jelentősen tovább tarthat, mint a teljes megfelelője kihasználása.

Az AppVerifier alacsony erőforrás-szimuláció használata (hibainjektálás)

Ebben a forgatókönyvben az az elvárás, hogy az alkalmazás ne törjön hibakeresővé. Ha nem tör be a hibakeresőbe, az azt jelenti, hogy nincs olyan hiba, amelyet meg kell oldania.

A tesztek áthaladási sebessége jelentősen csökkenhet, mivel véletlenszerű hibainjektálásokat vezetnek be a normál működésbe.

Engedélyezze az Application Verifier alacsony erőforrás-szimulációját (hibainjektálás) az alkalmazás(ok)hoz. A parancssorból: Appverif /verify MyApp.exe /faults. A felhasználói felületen: Az alkalmazás hozzáadásához kattintson a jobb gombbal az Alkalmazások területre, és válassza az Alkalmazás hozzáadása lehetőséget. Válassza ki az Alacsony erőforrás-szimulációt a Tesztek területen. Kattintson a Mentés gombra.

Megjegyzés: HA DLL-t tesztel, a teljes folyamat helyett alacsony erőforrás-szimulációt (hibainjektálást) alkalmazhat egy adott DLL-en. A parancssor formátuma a következő:

appverif /verify TARGET [/faults [PROBABILITY [TIMEOUT [DLL …]]]]

Példa:

appverif /verify mytest.exe /faults 50000 1000 d3d9.dll

Az összes teszt futtatása az alkalmazás gyakorlása során

Elemezze a hibakeresők által észlelt törés(ek)et. Ha szünet következik be, meg kell értenie és ki kell javítania.

Ha végzett, törölje az összes beállítást. A parancssorból: appverif /n MyApp.exe. A felhasználói felületen: távolítsa el az alkalmazást a jobb gombbal az Alkalmazások területen, majd válassza az Alkalmazás törlése lehetőséget, majd kattintson a Mentés gombra.

Megjegyzés: A hibainjektálási gyakorlatokkal való futtatás nagyrészt különböző kódútvonalakat jelent egy alkalmazásban, ezért mindkét forgatókönyvet futtatni kell az AppVerifier teljes kihasználtsága érdekében.

Az Application Verifier használata a WOW64 használatával

Az Application Verifier 32 bites vagy 64 bites verziójával ellenőrizheti a WOW64 alatt futó 32 bites alkalmazást.

AppVerifier-adatok elemzése

Az AppVerifier-elemzés során létrehozott összes adat bináris formátumban van tárolva az %USERPROFILE%\AppVerifierLogs mappában. Ezek a naplók ezután a felhasználói felületen vagy a parancssoron keresztül XML-fájllá alakíthatók további elemzés céljából.

Az XML-fájlok megtekintéséhez bármilyen eszközzel megtekintheti az XML-fájlt, például importálhat a Microsoft Excelbe – Importálhatja az XML-fájlt az Excelbe, és szűrők vagy kimutatástáblák használatával átrendezheti és elemezheti az összegyűjtött adatokat.

A parancssor használata

Az Application Verifier a felhasználói felületen vagy parancssori beállítások használatával használható.

Az alábbiakban példákat talál a parancssor használatára (az alábbiakban a részletek találhatók):

appverif /verify TARGET [/faults [PROBABILITY [TIMEOUT [DLL …]]]]

appverif /verify notepad

appverif -enable LAYER … -for TARGET ... [-with [LAYER].PROPERTY=[VALUE] …] 

appverif -disable LAYER ... -for TARGET ...

appverif -query LAYER ... -for TARGET ...

appverif –configure STOP ... -for TARGET ... [-with STOPPROPERTY=[VALUE] …]

appverif –logtofile {enable|disable}

Az Application Verifier engedélyezése egy adott ellenőrzési réteghez két alkalmazáshoz:

appverif –enable Heaps Locks –for notepad.exe iexplore.exe

Két X és Y nevű réteg engedélyezése a cél test.exe X.DebugLevel és Y.DebugLevel tulajdonsággal:

appverif –enable X Y –for test.exe –with X.DebugLevel=1 Y.DebugLevel=2

Az alkalmazáson futtatott összes ellenőrzés letiltása:

appverif -disable * -for notepad.exe

vagy

appverif -delete settings -for notepad.exe

Az Application Verifier naplózásának globális engedélyezése vagy letiltása az összes folyamat esetében:

appverif –logtofile enable

appverif –logtofile disable

A naplózás alapértelmezés szerint minden folyamat esetében engedélyezve van.

Application Verifier parancssori szintaxis

Application Verifier parancssori használata:

-enable TEST ... -for TARGET ... [-with [TEST.]PROPERTY=VALUE ...]
-disable TEST ... -for TARGET ...
-query TEST ... -for TARGET ...
-configure STOP ... -for TARGET ... -with PROPERTY=VALUE...
-verify TARGET [-faults [PROBABILITY [TIMEOUT [DLL ...]]]]
-export log -for TARGET -with To=XML_FILE [Symbols=SYMBOL_PATH] [StampFrom=LOG_STAMP] [StampTo=LOG_STAMP] [Log=RELATIVE_TO_LAST_INDEX]
-delete {logs|settings} -for TARGET ...
-stamp log -for TARGET -with Stamp=LOG_STAMP [Log=RELATIVE_TO_LAST_INDEX]
-logtoxml LOGFILE XMLFILE
-installprovider PROVIDERBINARY
-sppath [PROTECTED_PROCESS_LOG_PATH]
-cppath
-logtofile [enable | disable]

A parancssor szintaxisa egy vagy több réteget fogad el, és alkalmazza őket egy vagy több célra, a rétegek opcionális tulajdonság-megjelölőivel.

appverif -enable LAYER ... -for TARGET ... [-with [LAYER].PROPERTY=[VALUE] …] appverif -disable LAYER ... -for TARGET ... appverif -query LAYER ... -for TARGET ... appverif –configure STOP ... -for TARGET ... [-with STOPPROPERTY=[VALUE] …]

ahol:

A LAYER egy ellenőrző réteg szabványos neve. Ha egy új hitelesítő szolgáltató van telepítve, ez egy új ellenőrzőréteg-nevet tesz elérhetővé a parancssorban. Ilyenek például a halom, a fogópontok vagy a zárolások.

A LAYER beállítást *értékre állíthatja, így megadhatja, hogy a parancs az összes rétegre érvényes legyen.

A TARGET egy bináris név (például notepad.exe). Ez egy statikus beállítás, amely megmarad a beállításjegyzékben, és az alkalmazás indításakor figyelembe lesz véve. Az appverif –Disable parancs esetében a TARGET beállítást * értékre állíthatja, hogy az összes cél le legyen tiltva.

A TULAJDONSÁG a parancssorban említett LAYER tulajdonságnév. A Fogópontok rétegben például vannak nyomkövetések tulajdonságként.

Az ÉRTÉK a tulajdonság értéke. Az érték típusa a tulajdonsághoz társított típustól függ, és a rendszer kikényszeríti. A támogatott típusok jelenleg a következők: logikai (igaz/hamis), egész szám (decimális/oktális/hexa C jelölésben), sztring és többsztring (\0’ between strings and being terminated by \0\0'). Ha az ÉRTÉK nincs megadva, az azt jelenti, hogy a felhasználó törölni szeretné ezt a tulajdonságot, és vissza szeretné állítani a viselkedést a tulajdonság alapértelmezett értékére.

A STOP a konfigurálni kívánt hitelesítő leállítási probléma száma (decimális vagy hexa C jelölésben). A stop kódoknak egyedinek kell lenniük (két réteg nem használhatja ugyanazt a stop kódot, ezért maga az eszköz határozza meg, hogy melyik réteghez tartozik a stop)

A STOPPROPERTY egy tulajdonságnév, amely elfogadható a hitelesítő leállásokhoz. Ha az érték nincs megadva, akkor feltételezzük, hogy a tulajdonságot törölni kell. A leállások engedélyezett tulajdonságai a következők (további részletekért lásd a Hitelesítő leállások konfigurálását alább):

  • Hibajelentés
  • Súlyosság
  • Íz

A tulajdonságokat igény szerint az a réteg minősítheti, amelyhez tartoznak. Erre azonban nincs szükség, ha a parancssor csak egy réteget engedélyez. Ha például két X és Y nevű réteget szeretne engedélyezni a cél test.exe X.DebugLevel és Y.DebugLevel tulajdonsággal, a parancs a következő:

appverif –enable X Y –for test.exe –with X.DebugLevel=1 Y.DebugLevel=2

Ha azonban az X réteg engedélyezve van, akkor egy nem minősített tulajdonságnév használható:

appverif –enable X –for test.exe –with DebugLevel=1

A tulajdonság neve és értéke közötti elválasztó karakter lehet = (egyenlőségjel) vagy : (kettőspont).

Egyéb parancsok

appverif –query providers

appverif –delete logs –for TARGET ...

appverif –delete settings –for TARGET ...

Törölje a teljes TARGET-t a beállításjegyzékből.

appverif –stamp log –for Target –with Stamp=”LOG_STAMP”[Log= RELATIVE_TO_LAST_INDEX]

Ez a parancs LOG_STAMP fogja lebélyegzni a naplót. Ez a bélyeg akkor hasznos, ha a naplónak csak egy szakaszát azonosítja relevánsnak a napló XML-formátumban való megtekintésekor.

appverif –export log –for TARGET –with To=XML_FILE[Symbols=SYMBOL_PATH][Stamp=LOG_STAMP][StampTo=LOG_STAMP][Log=RELATIVE_TO_LAST_INDEX]

A fenti parancs egy bináris naplót exportál egy XML-fájlba. Az opcionális Stamp tulajdonság segítségével azonosíthatja, hogy a napló mely részét kell XML-be exportálni. Ha nincs megadva, a rendszer a teljes naplót konvertálja. A Napló tulajdonság lehetséges értéke negatív egész szám, és azt jelzi, hogy melyik naplófájlt kell konvertálni az utolsótól kezdve (feltételezve, hogy a tulajdonság nincs jelen). Például egy sorban háromszor kell elindítania notepad.exe. Az első létrehozott napló eléréséhez adja meg a Log=-2 értéket a parancssorban.

Parancssori parancsikonok

A következő billentyűparancsok találhatók:

appverif /verify TARGET [/faults [PROBABILITY [TIMEOUT [DLL …]]]]

ahol:

A TARGET jelentése megegyezik a fent leírt jelentéssel.

A VALÓSZÍNŰSÉG az injektált hibák valószínűsége. A 0,.10000000 tartományban lévő értéknek kell lennie. Ha nincs megadva, az alapértelmezett érték 5%.

Az IDŐTÚLLÉPÉS az időintervallum ezredmásodpercben a folyamat indításakor, ha a hibainjektálás nem történik meg. Ez azért történik, hogy a folyamat megfelelően induljon el a hibák előtt. Ha nincs megadva, az érték 500 msecs.

A DLL annak a modulnak a neve, amely betöltődik a folyamatban. Ez általában egy dinamikus kódtár neve (.dllkiterjesztés), de lehet ActiveX (.ocx kiterjesztés) vagy más betölthető modul.

Példák:

appverif /verify notepad.exe /faults 100000 1000 msvcrt.dll

Engedélyezze a hibainjektálást notepad.exe (amikor elindítja). A hibáknak 10%valószínűséggel kell történnie , és csak 1000 msec-nek kell történnie a folyamat elindítása után, és csak a msvcrt.dll- ból indított műveletek esetén .

A hibainjektálás részleteinek engedélyezése

A /faults parancssor használata lehetővé teszi a hibainjektálást csak OLE_ALLOC és HEAP_ALLOC. A parancssor használatával azonban konfigurálhatja, hogy milyen típusú hibainjektálást szeretne bekapcsolni. Ha például hibát szeretne beszúrni egy beállításjegyzékbe vagy fájl API-ba 2%, használja a parancssort:

appverif -enable lowres -for hello.exe -with registry=20000 file=20000

Egy másik példa:

appverif -query lowres -for hello.exe

Settings for hello.exe:
Test [lowres] enabled.

Include = *
Exclude =
TimeOut = 2000 (0x7D0)
WAIT = 0 (0x0)
HEAP_ALLOC = 20000 (0x4E20)
VIRTUAL_ALLOC = 0 (0x0)
REGISTRY = 20000 (0x4E20)
FILE = 20000 (0x4E20)
EVENT = 0 (0x0)
MAP_VIEW = 0 (0x0)
OLE_ALLOC = 20000 (0x4E20)
STACKS = false

Hitelesítő leállások konfigurálása

A parancssor (vagy a felhasználói felület) használatával konfigurálhatja a hitelesítő leállások. Az alábbiakban példákat láthat a kihasználandó lehetőségekre:

Appverif -configure STOP ... -for TARGET ... -with PROPERTY=VALUE ...

A STOP az olyan leállítási kód, mint például a 0x200 0x201

A TARGET az alkalmazás neve, például foo.exe

A TULAJDONSÁG lehet az egyik "ErrorReport", "Súlyosság" és "Íz"

Az ErrorReport esetében az ÉRTÉK a következő értékek kombinációja lehet.

0x00000001 azt jelenti, hogy a leállítás aktív. (Ha ez a bit nulla, az azt jelenti, hogy a leállítás le van tiltva)

0x00000020 azt jelenti, hogy a stop törésponttal hibakeresővé válik.

0x00000040 azt jelenti, hogy egy Ellenőrző kivétel létrehozásával leállítja a hibakeresőbe való betörést.

0x00000080 azt jelenti, hogy a leállítás a naplófájlban lesz naplózva.

0x00000100 azt jelenti, hogy a leállításhoz tartozó verem nyomkövetése a naplófájlban lesz naplózva.

A súlyosság esetében az ÉRTÉK az alábbiak egyike lehet.

0x00000003 Informatív megálló.

0x0000000F figyelmeztetés.

0x0000003F hiba.

Az Ízek esetében az Érték a következő értékek kombinációja lehet.

0x00000002 Nem folyamatos leállást.

0x00000010 Ez a leállítás csak egyszer jelenik meg. A rendszer a következő időpontban figyelmen kívül hagyja a tesztfuttatáson belül.

Tiltsa le például 0x2700, 0x2701 foo.exe

Appverif –configure 0x2700 0x2701 –for foo.exe –with ErrorReport=0

Állítsa be a stop kódot 0x2700 hibakeresőbe való betörésként (alapértelmezés szerint ki van kapcsolva), mentse a naplót veremkövetés nélkül, és ne legyen folyamatos

Appverif –configure 0x2700 –for foo.exe –with ErrorReport=0xA1 Flavor=0x2

Hitelesítő leállítási beállításai – Speciális beállítások

Az Application Verifier speciális beállításokkal (például inaktiválás) rendelkezik, amelyeket a hitelesítő leállításanként módosíthat.

Access Verifier stop options – A Hitelesítő leállítási beállításai módosulnak egy párbeszédpanelen, amely felsorolja az elérhető beállításokat. A hitelesítő leállítási beállításainak elérése:

  1. Válassza ki a teszt nevét a Tesztek panelen.
  2. A Szerkesztés menüben válassza a Verifier leállítási beállításai lehetőséget, vagy kattintson a jobb gombbal a tesztre, és válassza a Hitelesítő leállítási beállításai lehetőséget.

Ellenőrző leállítási beállításai

A leállítási kódra kattintva módosíthatja a következő elemeket a hitelesítő leállítása listában (vegye figyelembe, hogy a leállítás leírása a kattintáskor megjelenik).

Az inaktív jelölőnégyzet bejelölésével inaktiválja a hitelesítő leállítási kód futtatását.

A súlyosság határozza meg, hogyan kell megjelölni a hitelesítő leállását:

  • Hagyd figyelmen kívül
  • Információ
  • Figyelmeztetés
  • Hiba

A hibajelentés meghatározza, hogyan szeretné jelenteni/naplózni az adott hitelesítő leállását:

Log to File (Log to File) – egy jelölőnégyzet, amely ha be van jelölve, a kijelölt fájlba fog bejelentkezni.

Naplóverem nyomkövetése – egy jelölőnégyzet, amely ha be van jelölve, naplózza a verem nyomkövetéseit, ha elérhetők.

Nincs törés – a hibakeresőben nem lehet megszakítani a hibát.

Kivétel – lehetőség törés és töréspont nélkül

Töréspont – lehetőség törés vagy kivétel nélkül.

A vegyes két lehetőséget kínál

Egyszeri leállítás – a bejelölt jelölőnégyzet csak egyszer fog leállni az alkalmazás tesztelése során.

Nem Continuable – egy jelölőnégyzet, amely ha be van jelölve, nem teszi lehetővé a folytatást vizsgálat nélkül.

Lásd még:

Application Verifier – Áttekintés

Application Verifier – Szolgáltatások

Application Verifier – Az Application Verifier tesztelése

Application Verifier – Kódok és definíciók leállítása

Application Verifier – Az alkalmazás-ellenőrző hibakeresése leáll

Application Verifier – Gyakori kérdések