Kódminőség és alacsony szintű teszt lefedettség vizsgálat - Módszertani leírás(KM-MOD-01:2022-1)

Kódminőség és alacsony szintű teszt lefedettség vizsgálat új alkalmazáson módszertani leírás

Bevezetés

Jelen módszer célja, hogy új alkalmazásfejlesztés és teljes kódminőség vizsgálat esetén, a kódhoz készített tesztek futtatásra kerüljenek és a kódra vetített alacsony szintű teszt lefedettség és statikus kódminőség vizsgálat végrehajtása megtörténjen. A vizsgálat során feltárásra kerülnek a karbantarthatósági hiányosságok, programhibák és kódban szereplő sérülékenységek; amelyekről javítási javaslat megtalálható a jegyzőkönyv mellékletében.

Vizsgálat előfeltételek

A vizsgálat előfeltételeket az Általános szerződési feltételek dokumentum Nyújtott szolgáltatások bemeneti követelményeinek gyűjteménye című melléklete tartalmazza, ahol jelen módszertan esetében a következő azonosítójú követelmények értelmezettek: KM-F-01, KM-F-02, KM-F-04, KM-F-05, KM-F-06, KM-F-07, KM-F-08, KM-F-09, KM-F-10.

A vizsgálati módszer során használt eszközök

  • AlmaLinux (Arctic Sphynx)
  • Gitea 4.2.1
  • SonarQube 9.6
  • SonarScanner 4.7

A vizsgálati módszer leírása

  • A forráskód felépítésének megvizsgálása.
  • A Git forráskód tároló szoftverben a projekt létrehozása, konfigurálása megfelelő beállításokkal.
  • A leszállított forráskód elhelyezése a létrehozott, projekthez tartozó Git forráskód tároló projektben.
  • A projekthez szükséges dedikált virtuális gép létrehozása, konfigurálása, majd a build végrehajtása, amennyiben szükséges.
  • SonarQube kódminőség vizsgálatra alkalmas eszköz konfigurálása.
  • SonarQube properties kiterjesztésű állomány megfelelő konfigurálása a fejlesztőkkel egyeztetettek szerint.
  • A forráskódhoz készített tesztek futtatása a fejlesztők által meghatározott konfigurációs beállításokkal, melynek hatására előállnak a SonarQube számára értelmezhető jelentések.
  • SonarScanner futtatása, ahol beolvasásra kerülnek a jelentések, és a szkennelésre kerül a forráskód.
  • A forráskódban feltárt karbantarthatósági hiányosságok, programhibák, alacsony szintű teszt lefedettség, kódban szereplő sérülékenységek kiértékelése.
  • A vizsgálat dokumentálása, jegyzőkönyv készítése.

Mérőeszközök

A KDIV által kódminőség vizsgálatra használt statikus kódelemző szoftver a tesztek futtatására és a tesztek futtatási eredményének jelentés generálására nem alkalmas, viszont a kész jelentések megjelenítését lehetővé teszi. A komponens és komponens-integráció szintű tesztek futtatásához és jelentés eredmények generálásához szükséges eszköz programozási nyelvenként eltérő, így ezen eszközök használatához szakmai támogatás szükséges a fejlesztő szervezettől.
Amennyiben a fejlesztő szervezet alkalmazott a fejlesztés folyamatában lefedettség mérő eszközt, abban az esetben azon eszköznek a validáción és verifikáción kell átesni, azaz az eszköz lefedettség mérő módszerének igazolását és érvényesítését szükségszerűen kell elvégezni.
Abban az esetben, ha a fejlesztő szervezet a fejlesztési folyamatába nem építette be a kódhoz készített tesztek kódra vetített lefedettségének vizsgálatát, úgy a KDIV javaslatot tehet, mely eszköz beépítése valósuljon meg a fejlesztő szervezet által a kódminőség vizsgálathoz.
Amennyiben a fejlesztő szervezet nem alkalmazott alacsony szintű teszt lefedettség mérő eszközt, úgy lehetőséget biztosít a KDIV arra, hogy beépítésre kerüljön a projektbe a lefedettség mérő eszköz, elkerülve a leszállított forráskód felülírását, a program működésének megváltoztatását és a vizsgálat hamis eredmény kimenetelét. (Amennyiben az alkalmazott programnyelvben vagy keretrendszerben ez megvalósítható.)

Verifikálás és validálás

A vizsgálat elvégzéséhez a fejlesztő szervezet által alkalmazott alacsony szintű teszt lefedettség mérő eszköz igazolása(verifikálása) és érvényesítése(validálása) szükséges.
Az alkalmazott alacsony szintű teszt lefedettség mérő eszköz verifikálásának és validálásának leírását a „Verifikációs és validálási eljárás utasítás” dokumentum tartalmazza.

Hibák feltárása

Karbantarthatósági hiányosságok (Code smells) feltárása:
Feltárásra kerülnek a karbantarthatóságot nagyban befolyásoló problémák, amelyek kihatással vannak a kód olvashatóságára és értelmezhetőségére is.
A SonarSource által fejlesztett és a minőségbiztosító által alkalmazott SonarQube kódminőség vizsgálatra alkalmas szoftver programnyelvenként értelmezett szabályait az adott alkalmazásverzió határozza meg. A kódminőség vizsgálat során a lehívás időpontjában érvényes alkalmazásverzió szabályrendszere érvényes. Továbbá a minőségbiztosító lefuttatja a kódminőségvizsgálatot az alkalmazott legújabb verzió szabályrendszerében érvényes szabályok figyelembevételével is. A vizsgálat során kritikus hibákon kívül minden, a verzióváltás hatására keletkezett új hibát a minőségbiztosító figyelmen kívül hagy. Kisebb stilisztikai, ellentmondásos vagy a kódminőséget szignifikánsan nem befolyásoló szabályt szintén figyelmen kívül hagy. Ezen szabályokat a minőségbiztosító valamennyi projekt esetében egyedileg bírálja felül.
Programhibák (BUG) feltárása:
Feltárásra kerülnek azok a kódolási hibák is, amelyek a program helyes működését befolyásolják. Kritikus esetben akár az szoftvertermék fő funkcióinak vagy a teljes szoftverterméknek a leállásához vezethetnek, így a váratlan hiba miatti leállás szinte minden esetben adatvesztéssel járhat. Kijavításuk erősen indokolt a nem várt program viselkedés elkerülése és stabil működés érdekében.
Kódban szereplő biztonsági rések és sérülékenységek feltárása:
A biztonsági rések és a sérülékenységek átfogó képet nyújtanak az szoftvertermék biztonságáról, vizsgálva az OWASP Top 10 2017, a CWE/SANS Top 25 sérülékenységeket:

  • CWE: kiberbiztonsági sérülékenységek listája, amely hatóságilag kerül beszámozásra és megjelenítésre; metrikaként szolgál a biztonsági eszközök számára, és kiindulási alapként szolgál a gyengeségek azonosításához, enyhítéséhez és megelőzéséhez.
  • OWASP: egy olyan non-profit szervezet, mely a szoftver biztonságát hivatott előmozdítani. Az ott fellelhető és eszközölt projektek révén valósítja meg, melyek témái széles spektrumon mozognak: audit módszertanok, fejlesztést támogató eszközök, követendő praktikák, szabvány javaslatok.
Kódhoz készített tesztek kódra vetített lefedettségének vizsgálata:
A forráskódhoz készített tesztek kódra vetített lefedettség küszöbhatára almodulonként 60% sor lefedettség, amennyiben ezen kritériumnak nem feleltethető meg a forráskód, abban az esetben a vizsgált rendszer nem teljesíti a követelményeket.

A vizsgálati módszer eredményterméke(i)

A laboratórium nem állít ki megfelelőségi nyilatkozatot, a vizsgálatok kimenete kizárólag a vizsgálatok végrehajtása során keletkezett jegyzőkönyv és a vizsgálat eredményei.
Vizsgálati jegyzőkönyv:
A laboratóriumi vizsgálat elvégzését követően egy vizsgálati jegyzőkönyv készül a vizsgálatokhoz rendszeresített vizsgálati jegyzőkönyv sablon alapján.
Vizsgálati eredmények:
A vizsgálati eredményeket a SonarQube program adatbázisából nyerjük ki egy saját fejlesztésű eszközzel. Az eszköz képes a SonarQube projektjei közül választani és .xlsx formátumban riportot generálni adott projekt vizsgálati eredményeiből. Az említett .xlsx fájl csatolásra kerül a vizsgálati jegyzőkönyvhöz. A táblázat tartalma:

  • 1. munkalap: Általános
    • component - a vizsgált komponens elérési útja a projekten belül
    • name – a vizsgált komponens neve
    • coverage – adott komponensre számított sorlefedettség
    • duplication – adott komponensre számított duplikációs ráta
  • 2. munkalap: Bug (programhibák)
    • rule – a Sonar szabály azonosítója
    • message – a Sonar szabály leírása
    • hint – a Sonar szabály KDIV által írt magyarázata
    • type – a hiba típusa
    • severity – a hiba súlyossága
    • component – a komponens elérési útja
    • line – a hiba helye a komponensen belül
    • effort – a hiba kijavítására kalkulált időtartam
    • status – a hiba státusza
  • 3. munkalap: Vulnerability (sérülékenységi hibák)
    • rule – a Sonar szabály azonosítója
    • message – a Sonar szabály leírása
    • hint – a Sonar szabály KDIV által írt magyarázata
    • type – a hiba típusa
    • severity – a hiba súlyossága
    • component – a komponens elérési útja
    • line – a hiba helye a komponensen belül
    • effort – a hiba kijavítására kalkulált időtartam
    • status – a hiba státusza
  • 4. munkalap: Code Smell (karbantarthatósági hibák)
    • rule – a Sonar szabály azonosítója
    • message – a Sonar szabály leírása
    • hint – a Sonar szabály KDIV által írt magyarázata
    • type – a hiba típusa
    • severity – a hiba súlyossága
    • component – a komponens elérési útja
    • line – a hiba helye a komponensen belül
    • effort – a hiba kijavítására kalkulált időtartam
    • status – a hiba státusza
  • 5. munkalap: Security Hotspot (biztonsági hibák)
    • rule – a Sonar szabály azonosítója
    • message – a Sonar szabály leírása
    • hint – a Sonar szabály KDIV által írt magyarázata
    • type – a hiba típusa
    • severity – a hiba súlyossága
    • component – a komponens elérési útja
    • line – a hiba helye a komponensen belül
    • effort – a hiba kijavítására kalkulált időtartam
    • status – a hiba státusza