Unit Teszt Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) Unit Teszt 2013 1 / 22
Tartalomjegyzék 1 Bevezetés 2 Unit Teszt 3 Példa Tóth Zsolt (Miskolci Egyetem) Unit Teszt 2013 2 / 22
Szoftvertesztelés A szoftverfejlesztés része Célja: Hibák jelzése Olcsóbb hibajavítás Megfelelő működés igazolása Megrendelő elvárásainak megfelel? A specifikációnak megfelel? Fő csoportok Fekete dobozos teszt (Black Box) (specifikáció alapján) Fehér dobozos teszt(white Box) (forráskód alapján) Tóth Zsolt (Miskolci Egyetem) Unit Teszt 2013 3 / 22
Black Box Specifikáció alapján történik A forráskód nem ismert Adott bemenetre várt kimenet Kapott és elvárt eredmény összehasonlítása Programozási versenyek Tóth Zsolt (Miskolci Egyetem) Unit Teszt 2013 4 / 22
White Box Forráskód ismert Strukturális tesztelés Kód egyes részeit teszteli Kódsor Elágazás Ciklus Metódus Osztály Funkció Modul Tóth Zsolt (Miskolci Egyetem) Unit Teszt 2013 5 / 22
Tesztelés Szintjei 1 Komponensteszt 2 Integrációs teszt 3 Rendszerteszt 4 Átvételi teszt Komponensteszt Csak egyes komponensek tesztelése Komponens megfelelően működik e? Részei Unit teszt Modulteszt Tóth Zsolt (Miskolci Egyetem) Unit Teszt 2013 6 / 22
Tesztelés Szintjei Integrációs Teszt Több jól működő komponens Komponensek együttműködése Rendszerteszt Minden komponens együttes tesztelése Átvételi Teszt Felhasználók végzik Kész rendszer Végső teszt Tóth Zsolt (Miskolci Egyetem) Unit Teszt 2013 7 / 22
Statikus Technikák Kód átvizsgálása Hatékony Időigényes Szakértő Szakterületi, programozási ismeretek Átvizsgáló csapat Automatizált elemzők Gyors Szoftver eszköz Forráskód elemzés Inicializálás Vezérlési hibák Interface hibák Tóth Zsolt (Miskolci Egyetem) Unit Teszt 2013 8 / 22
Tartalomjegyzék 1 Bevezetés 2 Unit Teszt 3 Példa Tóth Zsolt (Miskolci Egyetem) Unit Teszt 2013 9 / 22
Unit Teszt Dinamikus tesztelési technika Komponensteszt része Egyes osztályok, modulok együttes tesztelése Legkisebb tesztelési egység. Általános Java JUnit IDE támogatás Könnyen implementálható, futtatható Miden metódushoz legalább egy Unit teszt Automatizált Tóth Zsolt (Miskolci Egyetem) Unit Teszt 2013 10 / 22
Unit Teszt Visual Studio Beépített automatizmusok Osztályok és metódusaik tesztelése A teszt külön projekt Solution része Csak publikus osztályokat lehet tesztelni Tóth Zsolt (Miskolci Egyetem) Unit Teszt 2013 11 / 22
Tesztosztály Osztály tesztelése Egységbezárás Adott osztályhoz tartozó tesztek [TestClass] Teszteseteket fog össze Inicializálás [TestInitialize] Teszteseteket előtt fut le egyszer Megszüntetés [TestCleanUp] Teszt esetek után fut le Tóth Zsolt (Miskolci Egyetem) Unit Teszt 2013 12 / 22
Teszteset Tesztelést végző metódus Egy teszteset Egy metódust Több tesztelő metódus Követelmények: [TestMethod] void visszatérési érték Üres paraméterlista [TestMethod] public void TestMethod() {... } Tóth Zsolt (Miskolci Egyetem) Unit Teszt 2013 13 / 22
AAA Minta Arrange, Act, Assert Unit tesztek általános felépítése 1 Arrange: Értékek, adatok beállítása, inicializálása ami kell az adott tesztesethez. 2 Act: Tesztelt metódus meghívása. 3 Assert: Viselkedés ellenőrzése. //arrange double r1 = 1.0; double area1 = r1*r1*math.pi; Circle c1 = new Circle(new Point(0.0,0.0),r1); //act double resultarea = c1.area(); //assert Assert.AreEqual( area1, resultarea, 0.0001); Tóth Zsolt (Miskolci Egyetem) Unit Teszt 2013 14 / 22
Assert Microsoft.VisualStudio.TestTools.UnitTesting Osztály Statikus metódusok AreEqual AreNotEqual AreSame AreNotSame Fail... Tóth Zsolt (Miskolci Egyetem) Unit Teszt 2013 15 / 22
Assert Különböző Típusok Fő paraméterek 1 Várt érték 2 Kapott érték 3 Üzenet szövege 4 Üzenet paraméterei Egyes típusoknál tűrés Double (delta) String (ignorecase) public static void AreEqual( Object expected, Object actual, string message, params Object[] parameters ) Tóth Zsolt (Miskolci Egyetem) Unit Teszt 2013 16 / 22
Tartalomjegyzék 1 Bevezetés 2 Unit Teszt 3 Példa Tóth Zsolt (Miskolci Egyetem) Unit Teszt 2013 17 / 22
Példa Készítsen egy kör osztályt. A Kört az (x,y) koordinátái és a sugara határozza meg. A körnek legyen területet lekérdező Area és kerületet visszaadó Cricurmference metódusa. Tóth Zsolt (Miskolci Egyetem) Unit Teszt 2013 18 / 22
Tesztesetek Test / New Test... Basic Unit Test Wizard Windows Test View Test List Editor Test Results Test Runs... Tóth Zsolt (Miskolci Egyetem) Unit Teszt 2013 19 / 22
Unit Test Wizard 1. ábra Tóth Zsolt (Miskolci Egyetem) Unit Teszt 2013 20 / 22
Teszteset [TestMethod] public void TestMethodArea() { double r1 = 1; double r2 = 4.5; double area1 = r1*r1*math.pi; double area2 = r2*r2*math.pi; Circle c1 = new Circle(new Point(0.0,0.0),r1); Circle c2 = new Circle(new Point(0.0,0.0),r2); Assert.AreEqual(area1,c1.Area(),0.0001); Assert.AreEqual(area2,c2.Area(),0.0001); } Tóth Zsolt (Miskolci Egyetem) Unit Teszt 2013 21 / 22
Tesztesetek Futtatása Test View Test Results Zöld Piros X Visual Studio 2010 esetén bug os lehet! A Test Pending marad! Unit Test Session működik! Tóth Zsolt (Miskolci Egyetem) Unit Teszt 2013 22 / 22