Egységtesztek manuális származtatása legtöbb esetben specifikáció alapján történik, ám magas kódfedettség a tesztesetek automatikus generálásával is elérhető. A forráskód alapján történő generáláshoz számos technika és eszköz áll rendelkezésre, amelyek hasznos kiegészítői lehetnek a fejlesztői és tesztelői eszköztárnak. Az előadás bemutatja a forráskód alapú tesztbemenet-generáló módszereket, és egy konkrét .NET-es egységteszt-generáló megoldás, a Microsoft IntelliTest eszközével kapcsolatos tapasztalatokat.
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Tesztgenerálás a gyakorlatban - Az IntelliTest és ami mögötte van
1. Budapesti Műszaki és Gazdaságtudományi Egyetem
Méréstechnika és Információs Rendszerek Tanszék
Budapesti Műszaki és Gazdaságtudományi Egyetem
Hibatűrő Rendszerek Kutatócsoport
Tesztgenerálás a gyakorlatban
Az IntelliTest és ami mögötte van
Honfi Dávid
honfi@mit.bme.hu
9. Enterprise Developer Meetup
2. Az előadás fókusza
modul B
modul C
service
Egységtesztelés
(unit testing)
modul A
Struktúra alapú
tesztelés
(kód ismert)
3. Forráskód alapú teszttervezés
public int M1(int a, int b)
{
if(a == 0)
{
Console.WriteLine(ERROR_MSG);
return -1;
}
if(b > a) return b*a+5;
else return (a+b)/2;
}
Fedjük le az
összes utasítást!
a==0
a!=0 && b>a
a!=0 && b<=a
a==0 a!=0 && b>a a!=0 & b<=a
a 0 2 1
b 0 1 2
4. Mi az, ami kimaradt?
Mi az, amit észre lehet venni?
oAlap, általános hibák (pl. nem várt kivételek)
oEllenőrzések megsértése (pl. assertionök)
oEltérés már meglévő kimenettől
• Regressziós teszt: korábbi változatok összevetése
• Más implementációk összehasonlítása
teszteset = bemenet + elvárt kimenet
5. Kód alapú tesztgenerálás automatizálása
Jól láthatóan automatizálható (kódbejárás)
o ’70-es évek óta módszerek
(pl. szimbolikus végrehajtás)
o DE: számítási igények + egyéb kihívások
Napjainkban válik alkalmazhatóvá
o Újabb és újabb módszerek
o Meglévő technikák vegyítése
o Fejlett számítási algoritmusok
o …
14. Mit várhatunk a hasonló eszközöktől?
Kiértékeléshez megfelelő „experiment” kell
o SF100 benchmark: 100 projekt SourceForge-ról
• 50% körüli elágazás lefedettség
• Nagy szórás
o Saját tapasztalatok
• Modellező eszköz: 99% blokklefedettség, jól alkalmazható
• CMS rendszer: Komplex rendszerekhez iteratív használat
Használhatósági kiértékelés?
o Ipari méretű problémákra hogyan használható?
o Mérnökök hogyan alkalmazzák? Demóból mit
hagytam ki?
15. Összefoglalás
Struktúra alapú tesztelés automatizálható
Sok eszköz létezik, különböző hatékonysággal
Microsoft IntelliTest
o Parametrizált egységteszt
o Szimbolikus végrehajtás
o Több használati eset
• Bemenetek generálása
• Tesztgenerálás
Használhatóságuk kiértékelése nehéz kérdés