Végső riport¶
Dokumentum száma: VR-001
Tesztelt szoftver¶
docker-java - https://github.com/docker-java/docker-java
Csapattagok¶
- Kiss Pista István - tesztelő
- Metil Ibolya - tesztelő
- II. Derivált - vezető tesztelő
Verziótörténet¶
| Verzió | Kiadás dátuma | Leírás |
|---|---|---|
| 1.0 | 2025.11.10. | Végső riportként leadásra kerülő jelentés |
Tartalomjegyzék¶
- Végső riport
- Tartalomjegyzék
- Összefoglaló
- Tesztterv
- Köztes riport
- Statikus kézi kódelemzés eredményei
- Kérdőív és eredményei
- Összegzés, javítási javaslatok
- Tényleges ráfordítások mértéke
- Jóváhagyó
Összefoglaló¶
Ez a dokumentum a docker-java projekt tesztelési folyamatának eredményeit mutatja be, részletezve a teszttervben foglalt tesztmegközelítést, és a köztes riport által feltárt hibákat.
Továbbá bemutatjuk a véleménykutatás céljából készített kérdőívet és eredményét.
Tesztelt projekt¶
A tesztelt projekt a docker-java, egy nyílt forráskódú Java könyvtár, amely lehetővé teszi a Docker API-jával való kommunikációt és konténerek kezelését.
Tesztterv¶
A tesztterv áttekintést nyújt a projekt során alkalmazott tesztelési stratégiáról, beleértve a célzott tesztszinteket, a tesztelési típusokat, az alkalmazott technikákat, a belépési és kilépési feltételeket, valamint a teszteléshez szükséges környezetet.
Tesztmegközelítés¶
A projekt tesztelési stratégiája két fő tesztszintet ölel fel, különböző teszttípusok és technikák alkalmazásával:
| Tesztszint | Leírás |
|---|---|
| Modulszintű tesztelés | Forráskód alapos tesztelése automatizáltan és manuálisan. |
| Rendszerszintű tesztelés | Felhasználói vélemények gyűjtése kérdőívek segítségével. |
| Teszttípus | Leírás |
|---|---|
| Statikus tesztelés | A docker-java kódjának teljes és részleges elemzése statikus kódelemző eszközökkel és kézi áttekintéssel. |
| Használhatósági tesztelés | Felhasználói élmények és visszajelzések gyűjtése kérdőíves felmérések segítségével. |
| Teszttechnika | Leírás |
|---|---|
| Statikus tesztelés | Fehérdoboz technika alkalmazása a forráskód vizsgálatához, automatizált és manuális módszerekkel. |
| Használhatósági tesztelés | Feketedoboz/experience technikák használata a felhasználói tapasztalatok és vélemények gyűjtésére. |
Megjegyzés: A tesztelés során elsősorban nem funkcionális hibák (például kódminőségi, biztonsági és használhatósági problémák) azonosítása volt a cél.
Teszttermékek¶
A tesztelés folyamán az alábbiak készültek:
- Tesztterv: a tesztelési folyamat alapjául szolgáló dokumentum.
- A köztes és végső riportok: jelentések a tesztelés előrehaladásáról és eredményeiről.
- Kérdőív és a rájuk érkezett válaszok: felhasználói visszajelzések gyűjtése.
Belépési és Kilépési Feltételek¶
A tesztelési típusokhoz tartozó belépési és kilépési feltételek biztosítják a tesztelés szisztematikus végrehajtását és értékelését:
| Teszttípus | Belépési Feltételek | Kilépési Feltételek |
|---|---|---|
| Statikus tesztelés | Tesztterv jóváhagyása, Java és Maven konfigurációk, IntelliJ IDE és kódelemzők beállítása. |
Szabálysértések dokumentálása és javítása. |
| Használhatósági tesztelés | Kérdőív elkészítése és dokumentálása. | Kérdőívre érkezett válaszok dokumentálása. |
Tesztkörnyezet¶
A tesztelési folyamat során használt eszközök és technológiák részletezése:
- Statikus teszteléshez szükséges eszközök:
- Desktop környezet (Windows/Linux).
- Java 8+, Maven, IntelliJ IDEA.
- SpotBugs (Lombok függőséggel), CheckStyle, PMD.
- Használhatósági teszteléshez szükséges eszközök:
- Desktop környezet (Windows/Linux).
- Tetszőleges böngésző és Google Forms.
Köztes riport¶
A tesztelés során különféle statikus kódelemző eszközöket alkalmaztunk a kódhibák azonosítása, a kódolási szabványok betartásának ellenőrzése és az esetleges sebezhetőségek feltárása érdekében.
Használt eszközökhöz ld. Teszkörnyezet - Statikus teszteléshez szükséges eszközök.
Szabálysértések¶
SpotBugs¶
| Fájl | Sor | Hiba Típusa | Leírás |
|---|---|---|---|
NetworkAttachmentConfig.java |
- | Biztonsági sebezhetőség | Az osztály közvetlenül hivatkozik az aliases mezőre, ami belső reprezentáció felfedéséhez vezethet. |
FiltersBuilder.java |
112 | NullPointerException kockázat | Non-short-circuit logikai művelet használata, ami NullPointerException-t eredményezhet. |
NettyDockerCmdExecFactory.java |
198 | Felesleges változó | Használatlan lokális változó, amely kikommentezett kód miatt jött létre. |
- Általános szabálysértések
- Olvasatlan mezők: 14 eset
- Mutábilis objektum hivatkozások tárolása: 124 eset
- Mutábilis statikus mezők (
finalhiányában): 7 eset - Platformfüggetlen konverziók hiánya
CheckStyle¶
- Általános szabálysértések
- Hiányzó Javadoc kommentek
- Több sor hosszabb, mint 80 karakter
- Hiányzó
finalparaméterek
PMD¶
| Fájl | Sor | Hiba Típusa | Leírás |
|---|---|---|---|
Bind.java |
104 | Switch Density Violation | A switch utasításban a címkékhez képest túl magas állítási arány, ami nehezíti a kód karbantarthatóságát és olvashatóságát. |
Elvégzett feladatok¶
SpotBugs elemzés¶
A tesztforrásokkal együtt történő elemzést választottuk, a tesztforrások nélküli elemzést figyelmen kívül hagytuk.
- Analyze Project Files Including Test Sources:
- Kattintson a jobb egérgombbal a projekt gyökérkönyvtárára
SpotBugs>Analyze Project Files Including Test Sources
Az
Analyze Module Files ...opciót kihagytuk, mivel a modulok nem fordulnak le. AzAnalyze Scope Filesopciót kihagytuk, mert ugyanazt az eredményt adja, mint azAnalyze Project Files Including Test Sources
PMD elemzés¶
- Kattintson jobb egérgombbal a projekt gyökérkönyvtárára
Run PMD>Pre Defined>All
CheckStyle elemzés¶
Adott checkstyle-config.xml konfigurációs fájl csatolása.
Amennyiben ez nem működik, akkor
Google ChecksésSun Checkshasználata
Elért eredmények¶
SpotBugs Elemzési Eredmények¶
Analyze Project Files Including Test Sources:
| Category | Total Issues |
|---|---|
| Malicious Code Vulnerability | 316 |
| Dodgy Code | 148 |
| Internationalization | 20 |
| Performance | 19 |
| Bad Practice | 36 |
| Correctness | 3 |
| Total | 542 |
| Priority Level | Total Issues |
|---|---|
| Medium | 496 |
| High | 46 |
| Total | 542 |
| Severity Level | Total Issues |
|---|---|
| Of Concern | 398 |
| Troubling | 139 |
| Scary | 3 |
| Total | 542 |
CheckStyle Elemzési Eredmények¶
| Rules | Found items | File(s) |
|---|---|---|
| Sun Checks | 12,314 | 533 |
| Google Checks | 24,542 | 538 |
PMD Elemzési Eredmények¶
| Violation Category | Total Violations | Notes |
|---|---|---|
| bestpractices | 2,219 | 1 suppressed violation |
| codestyle | 5,762 | |
| design | 3,183 | |
| documentation | 4,095 | |
| errorprone | 408 | |
| multithreading | 91 | |
| performance | 148 | |
| Total | 15,906 | Across 695 files, 8 rule sets |
Statikus kézi kódelemzés eredményei¶
Az elemzés során a docker-java-core és a docker-java-api kódokat elemeztük részletesebben, de kitértünk a forráskód más részeire is.
Konkrét szabálysértések¶
HijackingInterceptor.java¶
Package: com.github.dockerjava.okhttp
1 2 3 4 | |
BuildImageCmdExec.java¶
Package: com.github.dockerjava.core.exec
NullPointerException-t dobhat
1 2 3 | |
CommitCmd.java¶
Package: com.github.dockerjava.api.command
Interface, amelyben rengeteg használatlan metódus van. Implementálásnál pedig ezek csökkentik majd a kód átláthatóságát és összezavarodást kelthetnek.
CommitCmdImpl.java¶
Package: com.github.dockerjava.core.command
Több felesleges változó, ami nem kerül felhasználásra.
Javadoc helytelen használata¶
Elemzés során a projektben több Javadoc hibát azonosítottunk. Az alábbi példa a ContainerDiffCmdImpl.java fájlban található, a helytelen Javadoc használatot illusztrálja:
1 2 3 4 5 6 7 8 | |
Példa elemzése¶
A @param tag nem alkalmazható osztály Javadoc-jában, mivel az annotáció kizárólag metódusok vagy konstruktorok dokumentációjára szolgál.
További hasonló hibák¶
- com.github.dockerjava.core.command:
- ContainerDiffCmdImpl.java
- PushImageCmdImpl.java
- RemoveContainerCmdImpl.java
- RestartContainerCmdImpl.java
- SearchImagesCmdImpl.java
- StopContainerCmdImpl.java
- TagImageCmdImpl.java
- UnpauseContainerCmdImpl.java
- LogContainerCmdImpl.java
Felhasználatlan osztályok¶
- com.github.dockerjava.core.command:
- InspectSwarmNodeCmdImpl.java
- com.github.dockerjava.core:
- KeystoreSSLConfig.java
- GoLangMatchFileFilter.java
Kérdőív és eredményei¶
Elkészítettük a projektünkhöz kapcsolódó kérdőívet: [...]
Eredményei¶
A kérdőívet 15 programozással foglalkozó személy töltötte ki.
Grafinok az eredményről!
Összegzés, javítási javaslatok¶
A tesztelés során az alábbi kulcspontokat azonosítottuk:
- Statikus tesztelés fő eredményei:
- Jelentős számú kódhibát és sebezhetőséget azonosítottunk a SpotBugs, CheckStyle és PMD eszközökkel. Ezek a problémák jelentős kockázatot jelentenek a kód fenntarthatóságára, teljesítményére és biztonságára nézve.
- Használhatósági tesztelés eredményei:
- Az elkészített kérdőív rálátást ad különböző felhasználók véleményére a docker-java használhatóságával és működésével kapcsolatban.
- Manuális kézi kódelemzés eredményei:
- Több helyen nem megfelelő Javadoc használat. Számos metódus, osztály és mező funkciója nem egyértelmű vagy nincs használva, ami hosszú távon csökkentheti a kód karbantarthatóságát.
Tényleges ráfordítások mértéke¶
Köztes riportra¶
- 2.1. Feature set felkutatása: 2 óra
- 2.2. Toolok felkutatása és beüzemelése: 4 óra
- 2.3. Szcenáriók megalkotása: 2 óra
- 2.4. Kérdőív megírása: 3 óra
- 2.5. Statikus elemző tool futtatása: 10 óra
- 2.6. Szabálysértések listájának szerializált formára alaítása: 4 óra
- 2.7. Szabálysértések kategorizálása: 3 óra
- 2.8. Általános szabálysértések riportjának készítése: 3 óra
- 2.9. Köztes riport készítése: 6 óra
- Meetingek: 8 óra
- Meeting memo-k megírása: 2 óra
- Feladatok Issue-ra bontása/becslése: 2 óra
docker-javasetup-olása: 4 óra
Végső riportra¶
- 3.1. Kérdőívek kitöltése: 4 óra
- 3.2. Statikus kézi kódelemzés: 12 óra
- 3.3. Kérdőívek kiértékelése: 3 óra
- 3.4. Szabálysértések mély elemzése: 8 óra
- 3.5. Kiemelt és elemzett szabálysértések riportjának készítése: 7 óra
- 3.6. Használhatósági tesztriport készítése: 8 óra
- 3.7. Statikus tesztriport készítése: 8 óra
- 3.8. Használhatósági tesztriport ellenőrzése: 2 óra
- 3.9. Statikus tesztriport ellenőrzése: 3 óra
- 3.10. Végső riport készítése: 10 óra
- Meetingek: 10 óra
- Meeting memo-k megírása: 3 óra
- Feladatok Issue-ra bontása/becslése: 2 óra
Jóváhagyó¶
Dátum: 2025.12.04.
Jóváhagyó: