Statikus tesztelés¶
A statikus tesztelés olyan szoftvertesztelési típus, amelyben a szoftveralkalmazást kódvégrehajtás nélkül vizsgálják. Ennek során a követelménydokumentumokat, a tervezési dokumentumokat és a kódot ellenőrzik, hogy megtalálják a hibákat. A statikus tesztelés fő célja a szoftveralkalmazások minőségének javítása azáltal, hogy a már szoftverfejlesztés korai szakaszában hibákat képes felfedezni. A statikus tesztelés képes olyan hibák felismerésére, amelyre a dinamikus tesztelés nem, ugyanakkor ez fordítva is igaz, a dinamikus tesztelés is ki tud olyan hibákat kimutatni, amelyek a statikus tesztelés látóteréből kiesnek. A tesztelési projektben mindkét tesztelési módra szükség van.
Példaprojekt betöltése:
- Csomagold ki a workspace.zip fájlt
- Indítssd el az IntelliJ-t.
File -> New -> Project From Existing Sources...
a dialógusban keressük meg a workspace mappán belül a .project filet és kattintsunk rá.
Projekt megnyitása Eclipse környezetben
Az adott file Eclipse projektet tartalmaz. Az eredeti környezetben így kell megnyitni:
- Indítsd el az Eclipse-et
File -> Import ... -> General -> Existing project into workspace
Projektek az IntelliJ keretrendszerben
Az IntelliJ képes különböző projektek megnyitására, kezelésére. Az Eclipse projektek általában .project
vagy .classpath
file-ként állnak rendelkezésre. A Maven projektek esetében a pom.xml
file, a Gradle esetén *.gradle
tartalmazza a projektfájlokat.
Kód review¶
A kód review a kód kézi elemzését jelenti. A kód review alá vett termék esetében a kódon történt változásokat át kell néznünk mielőtt a kódbázisba kerül az új implementáció. A review során hibákat (funkcionális, typo, nem oda való kódrészletek) keresünk és dokumentáljuk azt.
Egy kód review során van pár ökölszabály, amit követnünk kell:
- Tudatosítsuk és definiáljuk a review céljait!
- Ismerjük meg a kódot!
- A folyamat előtt build-eljük és teszteljük a kódot!
- Maximum 1 órát szánjunk a kód reviewra!
- 500 sornál többet ne vizsgáljunk!
- Építő kritikát fogalmazzunk meg, kerüljük a személyeskedést!
- Használjunk ellenőrzőlistákat!
A legfontosabb részek amiket figyelnünk kell egy kód review során: struktúra, stílus, logika, performancia, olvashatóság, funkcionalitás.
Kérdések amiket feltehetünk:
- Értem, hogy mit csinál a kód?
- Úgy működik-e a kód ahogy annak kellene, vagyis a funkcionális specifikációnak megfelelően?
- Megfelel a kód a cég kódolási stílusának?
Review feladat
Ellenőrizzük a workspace.zip fájlban lévő Calculator csomag kódját! A review-hoz készítsünk ellenőrzőlistát!
Kérdések
- Milyen hibákat sikerült felfedezni?
- Ezek valóban hibák-e?
Találatok, gondolatok
Beszéljük meg az érdekesebb találatokat.
Statikus elemzés¶
A statikus kódanalízis lényege, hogy egy bemenetként kapott forráskódról el kell dönteni, hogy milyen potenciális hibákat vagy sérülékenységeket tartalmaz. Mindezt pusztán a kód tartalmának és szerkezetének vizsgálata alapján kell eldöntenünk, tehát a kódot nem futtatjuk, csak fordítási időben elemezzük.
Előkészületek¶
IntelliJ esetében a következő elemzőket telepítjük:
- SpotBugs telepítése:
- Navigáljunk a következő oldalra: JetBrains Marketplace SpotBugs és kattintsunk a GET nyomógombra.
- Válasszuk ki az IntelliJ verziót (community, ultimate).
- Válasszuk ki a plugin verziót és kattintsunk a download linkre.
- Az IntelliJ felületen belül nyissuk meg a beállítások menüt. (CTRL-ALT-S)
- Kattintsunk a plugins menüre.
- A fogaskerék ikonra kattintva keressük meg az
Install plugin from disk
menüpontot. - A dialógusban keressük meg a letöltött plugint és kattintsunk rá. (például:
spotbugs-idea-1.2.5.zip
) -
Indítsuk újra a keretrendszert.
-
PMD telepítése:
- A link a következő: PMD plugin
- Navigáljunk a fenti linkre és kattintsunk a GET nyomógombra.
- Válasszuk ki az IntelliJ verziót (community, ultimate).
- Válasszuk ki a plugin verziót és kattintsunk a download linkre.
- Az IntelliJ felületen belül nyissuk meg a beállítások menüt. (CTRL-ALT-S)
- Kattintsunk a plugins menüre.
- A fogaskerék ikonra kattintva keressük meg az
Install plugin from disk
menüpontot. - A dialógusban keressük meg a letöltött plugint és kattintsunk rá. (például:
PMDPlugin-1.8.26.zip
) -
Indítsuk újra a keretrendszert.
-
Checkstyle telepítése:
- A kövektkező linken érhetjük el: Checkstyle IntelliJ Plugin
- Navigáljunk a fenti linkre és kattintsunk a GET nyomógombra.
- Válasszuk ki az IntelliJ verziót (community, ultimate).
- Válasszuk ki a plugin verziót és kattintsunk a download linkre.
- Az IntelliJ felületen belül nyissuk meg a beállítások menüt. (CTRL-ALT-S)
- Kattintsunk a plugins menüre.
- A fogaskerék ikonra kattintva keressük meg az
Install plugin from disk
menüpontot. - A dialógusban keressük meg a letöltött plugint és kattintsunk rá. (például:
CheckStyle-IDEA-5.83.0.zip
) - Indítsuk újra a keretrendszert.
Statikus elemzők telepítése Eclipse környezetben
Az Eclipse-ben a következőképpen kell telepíteni:
- SpotBugs telepítése:
Help -> Eclipse Marketplace
- Find: spotbugs;
SpotBugs Eclipse plugin 3.1.5
->Go - PMD telepítése:
Help -> Eclipse Marketplace
- Find: checkstyle;
pmd-eclipse-plugin 4.28.0
->Go - Checkstyle telepítése:
Help -> Eclipse Marketplace
- Find: pmd;
Checkstyle Plug-in 8.44.0
->Go
A statikus elemzők használata¶
Az összes elemző elindítható a projekt kontext menüjéből (jobb klikk a projekten):
- SpotBugs -> SpotBugs
- CheckStyle -> Check Current File
- PMD -> PMD
Statikus kódelemzés feladat
Futtassuk a statikus kódelemzőket a projekten!
Java futtatókörnyezet
A projekt importálásánál vigyázzunk, ha a futtatókörnyezet (JDK) nincs telepítve, előzőleg azt is fel kell telepíteni. Az IntelliJ erre figyelmezteti a felhasználókat.
Az eredmények a kódban és külön ablakban is megjelennek, utóbbiakat be tudjuk kapcsolni, amennyiben nem jelennek meg automatikusan az alábbi menüben: Window -> Show View -> Other ...
Vizsgáljuk meg az elemzők találatait!
Nézzünk szét a hibák között, keressünk érdekeseket, feleslegeseket, stb.
Kérdések
- Milyen hibákat sikerült megtalálni az elemzők segítségével?
- Ezek valóban hibák-e?
- Minden megtalált hibát valóban olyan fontosnak éreztek-e, mint amilyen fontos az adott elemző szerint?
- Mi történik, ha a SpotBugs esetében a riasztási szintet (minimum rank to report) levisszük 20-ról 15-re?
Találatok, gondolatok
Beszéljük meg az érdekesebb találatokat.
A statikus elemzők által adott találatok listája méretes lehet!
A statikus elemző eszközök konfigurációjára oda kell figyelni. Az ilyen eszközök egyrészt nagy mennyiségű hibát képesek jelezni, ami adott esetben kontraproduktív lehet. (10 hibát a fejlesztő szívesen átnéz, de ha 10.000 hibát teszünk elé egyszerre, bele sem fog kezdeni.) Konfiguráljuk úgy a rendszert, hogy csak a fontosabb hibákat mutassa!
Mely hibákat tekintünk fontosabb hibáknak?
A válasz egyén/szervezet/helyzet függő. A konkrét bug-okra, lehetséges meghibásodásokra utaló figyelmeztetéseket általában fontosabbnak tartjuk, míg a formai jellegű problémákat kevésbé. Hosszútávon ugyanakkor lehet, hogy a rossz formában megírt kód nagyobb költséggel jár, tehát a kapcsolódó találatok szintén fontosnak minősíthetők.
A statikus elemzők konfigurációi az alábbi módon érhetők el az IntelliJ IDEA keretrendszerben:
- CheckStyle
File -> Settings
- Válasszuk ki a konfigurációs fájlt (két alapértelmezett csatolva van, de tetszőleges konfigurációs állomány is hozzáadható).
Konfigurációs fájlok
A konfigurációs fájlok XML alapú fájlok, amelyek tetszőlegesen szerkeszthetők, bővíthetők. Lásd: CheckStyle configuration
- SpotBugs
-
File -> Settings
-
PMD
File -> Settings
Konfigurációs beállítások Eclipse környezetben
Az Eclipse esetén a következőképpen módosíthatjuk a beállításokat:
- SpotBugs
- Projekt kontext menü ->
Properties -> SpotBugs
Configure Workspace Settings
- CheckStyle
- Window menü ->
Preferences -> CheckStyle
New or Copy -> Configure...
- PMD
- Window menü ->
Preferences -> PMD -> Rule Configuration
Konfigurációs feladat
Nézzünk szét az eszközök konfigurációs beállításai között. Válasszuk ki valamelyik eszközt, és konfiguráljuk át az alapértelmezett elemzést.