Codeception, Code Coverage

Kódbevezetés

Néhány ponton szeretné tudni, hogy az alkalmazás mely részeire vonatkozik tesztek és mely részek nem.
Ezt használja a CodeCoverage. A lefedettségi adatok gyűjtésére irányuló tesztelések során statisztikákat kapsz a tesztek által érintett összes osztályról, módszerről és kódsorról.
A kódsorok számának és a tesztelés során érintett sorok számának különbsége a legfontosabb kritérium a kód tesztekkel történő lefedésére. Ideális világban a kód lefedettsége 100%, de valójában 80% elég. Azonban még egy 100% -os kódlefedettség sem védi meg a hibákat és az alkalmazás leesését.

A Codeception tartalmazza a CodeCoverage eszközöket az 1.5 verzió óta. Az Xdebugnak információt kell gyűjtenie a tesztek lefedettségéről.

Codeception, Code Coverage

A teszt lefedettségi adatokat manuálisan lehet összegyűjteni helyi vagy távoli tesztekhez. Távoli tesztek végezhetők egy másik csomóponton,
vagy helyileg, de webszerver használatával. Nehéznek látni a kódfedezést a Selenium vagy a PhpBrowser tesztek esetében. Azonban a Codeception
támogatja a távoli lefedettséget ugyanúgy, mint a helyi.

konfiguráció

A teszt lefedettség segédprogramjának engedélyezéséhez adja hozzá a következő sorokat a globális konfigurációs fájlhoz: codeception.yml:

jól néz ki. De milyen fájlokat kell felvenni a lefedettségi jelentésbe? A fájlokat feketelistákkal és fehérlistákkal szűrheti.

Mi a fekete-lap és a fehérlisták?

  • A listák listája azoknak a fájloknak a listája, amelyeket fel kell venni a jelentésbe, még akkor is, ha azok nincsenek hatással.
  • A feketelista listája azon fájlok listája, amelyeket ki kell zárni a jelentésből, még akkor is, ha azok érintettek.

Adja át a fájlok / könyvtárak sorát a be / kizárási szakaszban. A "" elérési út a könyvtárra utal.
Használhatja a '' maszkot a fájlnevekben, például az app / models / * Model.php fájlban, hogy meghatározza az összes modellt.

Íme egy példa, ha nem kell komplex szűrők:

A kiegészítõ és kizáró beállítások itt hozzáadnak vagy eltávolítanak fájlokat a fehérlistából.

Mindegyik beállítás felülírható a megfelelő konfigurációs fájlok minden egyes készletére.

Helyi teszt lefedettség

Egy alapvető lefedettségi jelentés érhető el a funkcionális és egység tesztekhez.
Ha konfigurálta a konfigurációt, mint fent, akkor készen áll a műveletre.
Minden, amire szüksége van egy kódmeghatározás a --coverage opcióval.
Xml-jelentés vagy szép html jelentés létrehozásához adja hozzá a -xml és az -html beállításokat.

Az XML és HTML jelentések a _logs könyvtárban találhatók. A jelentés legmegfelelőbb módja a böngészőben található tesztek / _logs / coverage könyvtárban található index.html megnyitása.
Az XML-jelentéseket az IDE-kben (például a PHPStorm) vagy a folyamatos integrációs kiszolgálókban (például a Jenkins) használják.

Távoli tesztelés

Abban az esetben, ha az alkalmazás egy webszerver (Apache, Nginx, PHP WebServer) használatával indult el, akkor nem fér hozzá a tesztelni kívánt kódhoz,
így a kód lefedettségére vonatkozó adatok gyűjtése nem triviális feladat. Ugyanez a script fut egy másik csomóponton.
Ahhoz, hogy hozzáférhessen a kódhoz, meg kell adnod az xdebug kiterjesztést, ha engedélyezve van a távoli_enabled opció.
A Codeception egy kis "kémre" is szüksége van ahhoz, hogy kölcsönhatásba lépjen az alkalmazással.
Még ha az alkalmazás offline is működik, anélkül, hogy tudta volna, hogy tesztelték volna, ezt a fájlt össze kell kötni, hogy képes legyen gyűjteni a tesztek lefedettségével kapcsolatos információkat.

Ezt a fájlt c3.php-nak nevezik, és elérhető a GitHub-on.
A c3.php-t le kell tölteni és az alkalmazásba be kell venni a vezérlő első sorában.
Speciális fejlécek küldése A Codeception parancsokat ad az alkalmazásnak, lehetővé téve a kód lefedettségi adatok gyűjtését és leállítását.
Miután futtatta a tesztcsomagot, a jelentés mentésre kerül és a Codeception az alkalmazásától veszi figyelembe.

Kövesse a readme fájl telepítési utasításait.

Soha nem állított fel egy távoli generációs kódlefedettségi jelentést a tesztekkel. Bármely más keretben. Komolyan.

Ha azonban teszteket futtat egy távoli szerveren (vagy a webszerver nem használja az aktuális könyvtárból származó kódot), hozzá kell adnia a távoli beállítást a konfigurációs fájlhoz.
Tegyük fel például a távoli eszközt a kód lefedettségi információinak gyűjtésére az acceptance.suite.yml sorban

Ebben az esetben a jelentések eredményei nem lesznek összevonva a helyiekkel, ha az opció engedélyezve van.
A jelentések konszolidálása csak akkor lehetséges, ha a fájl távoli és helyben van egy elérési úton.
Ha azonban teszteket futtat egy távoli szerveren, akkor nincs semmi biztos abban, hogy ez így van.

következtetés

Soha nem volt olyan könnyű beállítani egy helyi és távoli teszt lefedettségi jelentést egyszerre. Csak egy konfigurációs fájl és egy további fájl szerepel az alkalmazásban!
A Codeception használatával egyszerűen létrehozhat CodeCoverage-jelentéseket a szelén tesztekhez (vagy más elfogadási és API tesztekhez). Jelentések összekapcsolása az elfogadáshoz. működőképes. és a készülékkészleteket, akkor kaphatja a legteljesebb információt arról, hogy melyik alkalmazás része és milyen nem.

Hibát, hibát, görbét és unalmas fordítást találtunk. Segítsen javítani!