Tesztelési lefedettség a szoftvertesztelésben: Hogyan mérjük?

⚡ Okos összefoglaló

A szoftvertesztelésben a tesztek lefedettsége azt méri, hogy egy alkalmazás mekkora részét vizsgálja egy tesztkészlet. Feltárja a nem tesztelt követelményeket, kódútvonalakat és kockázatokat, így a csapatok célzott eseteket adhatnak hozzá, és mérhető magabiztossággal adhatják ki a teszteket.

  • 🎯 Meghatározás: A tesztek lefedettsége azt mutatja, hogy a meglévő tesztek mely követelményeket, funkciókat és kódútvonalakat alkalmazzák.
  • 🧭 Típusok: Az utasítás, az elágazás, a feltétel, az elérési út, a követelmények és a kockázatfedezet mind más-más kérdésre ad választ.
  • 🇧🇷 Code vs. teszt: Code A lefedettség a végrehajtott forrásvonalakat méri, míg a tesztlefedettség a teljes teszttervet méri.
  • 🧮 képlet: Oszd el a végrehajtott sorok számát az összes sor számával, majd szorozd meg 100-zal a százalékos értéket.
  • 🇧🇷 technikák: A határérték-elemzés, a döntési táblázatok és az állapotátmenet-tesztelés szélesíti a lefedettséget a készlet felfújása nélkül.
  • 📈 Optimalizálás: Rangsorolja a modulokat kockázat szerint, automatizálja a regressziós csomagot, és tekintse át a lefedettségi trendet minden sprintben.
  • 🤖 AI segítség: A mesterséges intelligencia eszközei hiányzó egységteszteket generálnak, és a nem tesztelt útvonalakat az éles kockázat szerint rangsorolják.

Mi az a tesztlefedettség?

A tesztlefedettség a Szoftvertesztelésben egy olyan mérőszámként definiálható, amely a tesztkészlet által végrehajtott tesztelés mennyiségét méri. Tartalmazza az információk összegyűjtését arról, hogy a program mely részei futnak le a tesztkészlet futtatásakor, hogy megállapítsák, a feltételes utasítások mely ágait vették fel.

Egyszerűen fogalmazva, ez egy olyan technika, amely biztosítja, hogy a tesztek teszteljék a kódot, vagy azt, hogy a kódból mennyit használt a teszt futtatásával.

Mit csinál a teszt lefedettség?

Egy éles projekten a tesztek lefedettsége négy gyakorlati tevékenységet támogat:

  • Tesztesetek halmazával nem megvalósított követelmény területének megkeresése
  • Segít további tesztesetek létrehozásában a lefedettség növelése érdekében
  • A tesztlefedettség kvantitatív mérőszámának meghatározása, amely a minőségellenőrzés közvetett módszere
  • Az értelmetlen tesztesetek azonosítása, amelyek nem növelik a lefedettséget

A tesztlefedettség előnyei a szoftverfejlesztésben

Ezek a tevékenységek konkrét mérnöki előnyökké válnak.

  • Biztosítani tudja a teszt minőségét
  • Segíthet azonosítani, hogy a kód mely részeit érintették meg a kiadás vagy javítás során
  • Meg tudja határozni az alkalmazás összes olyan döntési pontját és útvonalát, amelyeket nem teszteltek, ami lehetővé teszi a tesztek lefedettségének növelését.
  • Megelőzése hiányosság szivárgás
  • Az idő, a terjedelem és a költségek ellenőrzés alatt tarthatók
  • Hibamegelőzés a projekt életciklusának korai szakaszában
  • A követelmények hiányosságai, tesztesetek és hibák egység- és kódszinten könnyen megtalálhatók

A teszt lefedettségének típusai

A lefedettség sosem egyetlen szám. Csapatok tracKeress egyszerre több típust is, mert mindegyik egy másik kérdésre válaszol ugyanarról a lakosztályról. Az alábbi táblázat a leggyakrabban előforduló típusokat csoportosítja.

Lefedettség típusa Mit mér Legjobban használható
Kimutatás (sor) lefedettsége A végrehajtható sorok legalább egyszer lefutnak Egységtesztek és régi kód auditok
Fióktelep vagy döntési lefedettség Minden döntés igaz és hamis következménye Feltételes és érvényesítési logika
Állapotfedezet Minden logikai részkifejezés igazként és hamisként van megadva. Összetett ÉS vagy VAGY kifejezések
Útvonal lefedettsége Egy modulon keresztül megtett egyedi útvonalak Biztonságkritikus és pénzügyi folyamatok
Funkciólefedettség Tesztek által meghívott függvények vagy metódusok API és szolgáltatási rétegek
Követelmények lefedettsége Legalább egy teszthez rendelt követelmények Elfogadás és elutasítástracvégső jóváhagyás
Kockázati fedezet Azonosított, magas kockázatú területek vizsgálata Rövid felszabadulási ciklusok

Az első öt típus kódszintű mérték, és a következőhöz tartoznak: fehér dobozos tesztelés, míg a követelmények és a kockázatok fedezése a tesztterv szintjén történik.

Melyek a fő különbségek Code Lefedettség és tesztlefedettség?

Code lefedettség és a tesztlefedettség olyan mérési technikák, amelyek lehetővé teszik az alkalmazáskód minőségének felmérését.

Íme néhány lényeges különbség a lefedettségi módszerek fülkéi között:

paraméterek Code Lefedettség Teszt lefedettség
Meghatározás Code lefedettségi kifejezés, amelyet akkor használnak, amikor az alkalmazáskódot egy alkalmazás futása közben hajtják végre. A teszt lefedettsége átfogó teszttervet jelent.
Cél Code A lefedettségi mérőszámok segíthetnek a csapatnak az automatizált tesztek monitorozásában. A tesztlefedettség részleteket tartalmaz arról, hogy egy alkalmazás írásos kódolását milyen szinten tesztelték.
altípusok Code fedezet, amely altípusokra oszlik, mint például kivonatfedezet, feltételfedezet, fiókfedezet, Toggle lefedettség, Mikronéziai lefedettség. A Tesztlefedettség módszerének nincs altípusa.

Tesztfedezeti képlet

A teszt lefedettségének kiszámításához kövesse az alábbi lépéseket:

Step 1) Gróf Y, a szoftverben használt kód teljes sorszáma tesztelés

Step 2) Gróf X, a jelenleg futtatott tesztesetek kódsorainak száma

Most meg kell találnia (X osztva Y-vel) szorozva 100-zal. A számítás eredménye a tesztlefedettség %-a.

Például:

Ha egy rendszerkomponens kódsorainak száma 500, és az összes meglévő tesztesetben végrehajtott sorok száma is 50, akkor a teszt lefedettsége a következő:

(50 / 500) * 100 = 10%   // executed lines divided by total lines

Példák a teszt lefedettségére

A százalékos arány önmagában soha nem a teljes történet, ahogy az alábbi példák is mutatják.

Példa 1:

Például, ha a „kés” egy tesztelni kívánt tárgy, akkor arra kell összpontosítania, hogy ellenőrizze, hogy pontosan vágja-e a zöldségeket vagy gyümölcsöket. Vannak azonban más szempontok is, amelyeket figyelembe kell venni, például hogy a felhasználó kényelmesen tudja-e kezelni.

Példa 2:

Például, ha ellenőrizni szeretnéd a Jegyzettömb alkalmazást, akkor elengedhetetlen az alapvető funkcióinak ellenőrzése. Azonban más szempontokat is figyelembe kell venned, például a Jegyzettömb alkalmazás a várt módon reagál más alkalmazások használatakor, a felhasználó megérti az alkalmazás használatát, és nem omlik össze, amikor valami szokatlan dolgot próbál csinálni stb.

Tesztelési lefedettségi technikák

Mindkét példa ugyanarra a következtetésre utal: a lefedettségi cél elérése kevésbé függ több teszt megírásától, és inkább a megfelelő teszttervezési technika megválasztásától. Az alábbi technikák szélesítik a lefedettséget, miközben megtartjákping kicsi a lakosztály.

  • Határérték-elemzés: Az egyes érvényes tartományok szélein választja ki a bemeneteket, ahol a hibák a legsúlyosabban csoportosulnak. Lásd: határérték-elemzés kidolgozott esetekhez.
  • Ekvivalencia particionálás: Csoportosítja azokat a bemeneteket, amelyeket az alkalmazás azonosan kezel, így egyetlen eset biztonságosan képviselhet egy teljes értékosztályt.
  • Döntési tábla tesztelése: Egyetlen rácson belül lefedi a feltételek kombinációit és azok várható eredményeit.
  • Állapotátmeneti tesztelés: Minden érvényes és érvénytelen mozgást végrehajt az alkalmazásállapotok között.
  • Alapút tesztelés: A vezérlési folyamatgráfból származtatja a független útvonalak minimális halmazát.
  • Kockázatalapú tesztelés: A funkciókat üzleti hatásuk szerint rangsorolja, és a legnagyobb kockázatúakat emeli ki elsőként.
  • Feltáró tesztelés: Olyan hiányosságokat tár fel, amelyeket a forgatókönyves esetek és a tudósítások soha nem mutatnak meg.

Hogyan lehet teljesíteni a teszt lefedettségét?

Miután kiválasztották a technikákat, négy bevált útvonal biztosítja a lefedettséget.

  • A tesztek lefedettsége elvégezhető a statikus felülvizsgálati technikák, például a szakértői értékelések, ellenőrzések és áttekintések alkalmazásával
  • Az ad-hoc hibákat végrehajtható tesztesetekké alakítva
  • Kódszinten vagy egységteszt szintjén a tesztlefedettség elérhető az automatizált kódlefedettség vagy az egységteszt lefedettségi eszközök használatával
  • A funkcionális tesztek lefedettsége megfelelő tesztmenedzsment eszközök segítségével valósítható meg

Hogyan javítható a teszt lefedettsége?

A lefedettség megteremtése a kiindulópont; annak növelése egy ismételhető rutin. Minden kiadási ciklus elején végezd el ezt a sorrendet.

  1. Alapozza meg a jelenlegi számot. Futtasson lefedettségi jelentést, és rögzítse a kimutatás, az ág és a követelmények lefedettségét külön-külön, hogy a hiányosságok modulonként láthatóak maradjanak, ne pedig egyetlen projektszintű átlagban rejtőzzenek el.
  2. A tesztek megfeleltetése a követelményeknek. Build a tracEgy teljesítőképességi rács, amely minden követelményt legalább egy tesztesethez kapcsol. Minden üres sor megerősített hiányosságot jelent, nem gyanút.
  3. Modulok rangsorolása kockázat szerint. A fizetési, hitelesítési és adatmigrációs logika sokkal alaposabb ismertetést érdemel, mint egy statikus súgóképernyő, ezért a költségvetést oda kell fordítani, ahol egy hiba a leginkább fájna.
  4. Negatív és élesetek hozzáadása. Az üres bemenetek, a túlméretezett értékek, a hálózati időtúllépések és az engedélyezési hibák olyan ágakat érnek el, amelyeket a boldogútvonal-tesztek soha nem érintenek.
  5. Rétegezd a tesztszinteket. Kombájn egység tesztelés, integrációs tesztelésés végponttól végpontig tartó ellenőrzéseket, mivel minden szint lefedi azt, amit a többi strukturálisan nem.
  6. Automatizálja a regressziós csomagot. Promoa stabil esetekbe automatizálási tesztelés és végrehajtja őket a CI/CD csővezeték minden commit után.
  7. Felesleges esetek visszavonása. Törölje azokat a duplikált teszteket, amelyek végrehajtási perceket adnak hozzá anélkül, hogy egyetlen fedetlen sort is hozzáadnának.
  8. RevNézd meg a trendet minden sprintben. Track lefedettség mellett hibasűrűségA sík lefedettség ellenére növekvő szivárgás egy korai figyelmeztetés a vakfoltra.

⚠️ Figyelmeztetés: Ne a 100 százalékot tekintsd célnak. Egy 85 százalékos hatékonyságú, erős assertions-ekkel rendelkező csomag sokkal jobban védi a kiadást, mint a felszínes ellenőrzések 95 százaléka, amelyek eredmény ellenőrzése nélkül futtatnak kódot.

A teszt lefedettségének hátrányai

A lefedettség továbbra is értékes, de korlátai vannak, amelyeket érdemes megemlíteni, mielőtt bármilyen százalékos értéket közölnénk.

  • A tesztlefedettségben szereplő feladatok többsége manuális, mivel nincsenek automatizálható eszközök. Ezért sok erőfeszítést igényel a követelmények elemzése és tesztesetek létrehozása.
  • A tesztlefedettség lehetővé teszi a funkciók megszámlálását, majd több teszt alapján történő mérést. Az ítéleti hibáknak azonban mindig van helye.

GYIK

A legtöbb csapat a 70-80 százalékot tekinti reális célnak, a biztonságkritikus modulok esetében pedig a 90 százalékot vagy annál többet. A 100 százalék elérése ritkán térül meg. A tesztelések mélységét a magas kockázatú logikákra kell helyezni, ahelyett, hogy egyenletesen elosztanánk a teszteket a kódbázisban.

Nem. A teljes lefedettség azt bizonyítja, hogy minden elem lefutott, nem pedig azt, hogy minden érték, követelmény vagy felhasználói út validálva lett. A hiányzó követelmények, a gyenge állítások és a nem funkcionális hibák, mint például a lassú válaszidők, továbbra is 100 százalékos eredményt mutatnak.

A lefedettségi jelentés fájlonként felsorolja a lefedett és nem lefedett vonalakat, ágakat és funkciókat, modulonként és projektenként összesített százalékokkal. Eszközök, mint például JaCoCo jelölje meg a részben fedett ágakat is, amelyek általában a leggyorsabban záródó réseket jelentik.

A mesterséges intelligencia elemzi a forráskódot, a végrehajtási előzményeket és a hibaadatokat, hogy meghatározza a nem tesztelt, magas kockázatú útvonalakat, majd olyan eseteket javasol, amelyek lezárják azokat. Azt is rangsorolja, hogy mely teszteket futtassa először, lerövidítve a visszajelzések idejét a folyamatban a lefedettség feláldozása nélkül.

Igen. Eszközök, mint például Diffblue Automatikusan írjon egységteszteket a fedetlen logikához, és a generatív modellek a sima nyelvi követelményeket végrehajtható esetekké alakítják. Az emberi felülvizsgálat továbbra is elengedhetetlen, mivel a generált állítások érdemi viselkedés ellenőrzése nélkül is átmehettek.

Foglald össze ezt a bejegyzést a következőképpen: