Kihagyás

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.

    Plugin

  • 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 ChekSt
  • 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 SpotBG

  • PMD

  • File -> Settings PMD

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.


Utolsó frissítés: 2024-09-02 12:56:34