A tesztelés célja, hogy biztosítsa a rendszer helyes működését, azonosítsa az esetleges hibákat, és elősegítse a minőség javítását. A tesztelési szintek segítenek abban, hogy a rendszert rétegekre bontva, lépésről lépésre ellenőrizzük. Az alábbiakban áttekintjükk a tesztelés legfontosabb szintjeit. Unit teszt: Egyes függvények, metódusok tesztelése. Célja, hogy egy kisebb egység (metódus vagy osztály) működését verifikálja. Modul vagy komponenes teszt Több, összefüggő unit tesztet foglal magában. Különböző osztályok vagy metódusok integrálása. Integrációs teszt: Két vagy több modult, rendszert tesztel, hogy biztosítja e azok együttműködését. Rendszerteszt Az egész rendszer működését vizsgálja, teljes funkcionalitással. Átviteli teszt: A végfelhasználó által elfogadott teszt, amely az üzleti igényeket validálja. Unit teszt Célja Egy adott kód egység tesztelése Az egység izolált vizsgálata, hogy az önállóan helyesen működik e Jellemzői Fejlesztő által írt tesztek Általában autómatikusan futtatott tesztek Segítenek a hibák gyors azonosításában, és csökkentik a későbbi tesztelési költségeket. Eszközök C# esetén népszerű keretrendszer az NUnit, xUnit, vagy MSTest Modul vagy komponenes teszt Célja Egy modul vagy komponens tesztelése (amely több egységet foglal magában) Az egységek közötti kapcsolat és a modul helyes működésének ellenőrzése Jellemzői Több egységből álló részegységeket vizsgálat Izolált, a többi modultól független tesztelésre törekszik KLülönösen fontos az objektumorientált rendszerekben Integrációs teszt Célja Több komponens vagy modul együttműködésének tezstelése. Biztosítja, hogy a különböző részek helyesen kommunikálnak egymással Jellemzői: Nem izolált, hanem több komponens együttes vizsgálatát jelenti. Külső rendszerek vagy adatbázisok is bevonhatók. Eszközök: Mocking keretrendszerek használata, mint a Moq, vagy NSubstitute. Rendszerteszt Célja A teljes rendszer együttes vizsgálata a felhasználói követelményekk alapján Annak ellenőrzésére hogy a rendszer az elvárt funkciókat teljesíti. Jellemzői A tesztkörnyezet hasonlít az éles környezethez. Funkcionális és nem funkcionális teszteket egyaránt tartalmaz (teljesítmény,biztonság) Eszközök: Selenium (automata tesztekhez webes környezet) JMeter (teljesítményteszteléshez) Átviteli teszt Célja Annak biztosítása hogy a rendzser megfelel az üzleti követelményeknek és a felhasználói elvárásoknak. A fejlesztls befejezésének hivatalos felvétele. Jellemzői Üzleti szakértők vagy végfelhasználók végezhetik Az éles környezetben történő működés próübája Típusai: felhasználói átviteli teszt (User Acceptance Testing UAT) végfelhasználók végzik Szerződéses teszt: üzleti szerződéses feltételek ellenőrzése Regressziós teszt: Biztosítja hogy a frissítések ne okozzanak hibát a rendszerben Tesztelési szintek kapcsolata A tesztelési szintek hierarchiája biztosítja, hogy a rendszer fejlesztése során fokozatosan kerüljenek feltárására és javítására a hibák Unit tesztek az alapok gyorsak izoláltak kicsik Modul tesztek kiterjedtebbek több függvényt vizsgálnak eggyszerre integrációs tesztek rendszertesztelés átviteli tesztek Tesztelési állítások néhány használt assert metódus AreEqual AreNotEqual IsNull IsNotNull IsTrue IsFalse Assert.AreEqual(expected, actual) Ellenőrzi, hogy a várt expected és a tényleges érték megegyezik e. Ha nem a teszt sikertelen lesz. [TestMethod] public void AddTwoNumberS(){ //ARRANGE var calc = new Calc(); //act int result = calc.Add(3,5); //assert Assert.AreEqual(8,result); } IsTrue public void IsNumberPositive_ReturnsTrue(){ int number = 10; Assert.IsTrue(number > 0); } IsFalse public void IsNumberNegative_ReturnsFalse(){ int number = 10; Assert.IsFalse(number < 0); } IsNull public void Object_ShouldBeNull(){ object obj = null; Assert.IsNull(obj); } IsNotNull public void Object_ShouldNotBeNull(){ object obj = null; Assert.IsNotNull(obj); } Assert.ThrowsException public void Withdraw_Insufficient_Balance_ThrowsException(){ var Account = new BankAccount(50); Assert.ThrowsException(() => Account.Withdraw(100)); } Mikor használjuk? AreEqual függvények visszatérési értékének ellenőrzésére IsTrue, IsFalse feltételek vizsgálata IsNotNull, IsNull Null tesztelés ThrowsException kivételdobás AAA minta (Arrange - Act - Assert) egy általnosan használt struktúra az unit tesztek írásakor, amely segít a tesztek átlátahtóságában és olvashatóságában. A három lépés jelentése: Arrange előkészítés: A teszt környezet és szükséges adatok előkészítése. Act Végrehajtása: A tesztelendő metódus vagy osztály meghívása Assert ellenőrzés: Az eredmény ellenőrzése, az elvárt és kapott érték összehasonlítása