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.
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