Webes alkalmazások fejlesztése 10. előadás. Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté

Hasonló dokumentumok
Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Eseményvezérelt alkalmazások fejlesztése II 4. előadás. Windows Forms alkalmazások architektúrája és tesztelése. Giachetta Roberto

Eseményvezérelt alkalmazások fejlesztése II 4. előadás. Windows Forms alkalmazások architektúrája és tesztelése

Térinformatikai és távérzékelési alkalmazások fejlesztése. Szoftverek minőségbiztosítása

Térinformatikai és távérzékelési alkalmazások fejlesztése. Szoftverek minőségbiztosítása. Szoftverek minőségbiztosítása Verifikáció és validáció

Eseményvezérelt alkalmazások fejlesztése I 11. előadás. Szoftverek tesztelése

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

Unit Teszt. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Unit Teszt / 22

Webes alkalmazások fejlesztése 10. előadás. Szolgáltatás alapú rendszerek megvalósítása (ASP.NET WebAPI) Cserép Máté

Webes alkalmazások fejlesztése 7. előadás. Autentikáció és autorizáció (ASP.NET Core) Cserép Máté

Webes alkalmazások fejlesztése 7. előadás. Autentikáció és autorizáció (ASP.NET)

Szoftvertechnolo gia gyakorlat

Webes alkalmazások fejlesztése 12. fejezet. Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET)

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET) Cserép Máté.

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET Core) Cserép Máté

Webes alkalmazások fejlesztése

Webes alkalmazások fejlesztése 3. előadás. Objektumrelációs adatkezelés (ASP.NET)

Osztályok. 4. gyakorlat

Generikus osztályok, gyűjtemények és algoritmusok

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

Enterprise JavaBeans 1.4 platform (EJB 2.0)

A legalacsonyabb szintű tesztelés. A programot felépítő egységek tesztelése Unit: egy rendszer legkisebb önálló egységként tesztlehető része.

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

Webes alkalmazások fejlesztése 3. előadás. Objektumrelációs adatkezelés (Entity Framework) Cserép Máté.

Bevezető. Servlet alapgondolatok

C#, OOP. Osztályok tervezése C#-ban

Programozási technológia II 7. előadás. Verifikáció és validáció Giachetta Roberto

Programozási technológia

Webes alkalmazások fejlesztése 6. előadás. Állapotfenntartás (ASP.NET Core) Cserép Máté

Unit tesztelés. Honfi Dávid, Micskei Zoltán. Integrációs és ellenőrzési technikák (VIMIA04) Méréstechnika és Információs Rendszerek Tanszék

Webes alkalmazások fejlesztése 3. előadás. Objektumrelációs adatkezelés (Entity Framework) Cserép Máté

Webes alkalmazások fejlesztése. Bevezetés az ASP.NET MVC 5 keretrendszerbe

Programozási nyelvek Java

Modern unit és integrációs tesztelés

A Java EE 5 plattform

Programozási nyelvek Java

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

Pénzügyi algoritmusok

Unit tesztelés. Honfi Dávid, Micskei Zoltán. Integrációs és ellenőrzési technikák (VIMIA04) Méréstechnika és Információs Rendszerek Tanszék

OOP #14 (referencia-elv)

Feladatok cím szerint

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

Webes alkalmazások fejlesztése. 9. előadás Bevezetés az ASP.NET MVC keretrendszerbe

Szoftvertechnológia alapjai Java előadások

Programozási alapismeretek 4.

Webes alkalmazások fejlesztése 2. előadás. Webfejlesztés MVC architektúrában (ASP.NET) Webfejlesztés MVC architektúrában Fejlesztés ASP.

Szoftvertechnolo gia 7. gyakorlat

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

Objektumelvű programozás

Sikeres végrehajtás(pass): ez azt jelenti, hogy a teszt rendben lefutott, és az ellenőrzési feltételek mind teljesültek.

ELTE, Informatikai Kar december 12.

Szoftvertechnológia 8. előadás. Szoftverrendszerek tervezése. Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.

BME MOGI Gépészeti informatika 8.

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Collections. Összetett adatstruktúrák

és az instanceof operátor

Grafikus felhasználói felületek. Dr. Szendrei Rudolf Informatikai Kar Eötvös Loránd Tudományegyetem. Programozási technológia I. Dr.

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Már megismert fogalmak áttekintése

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Models are not right or wrong; they are more or less useful.

C++ programozási nyelv Konstruktorok-destruktorok

Reaktív programozás szerver oldalon

Microsoft SQL Server telepítése

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

Integrációs mellékhatások és gyógymódok a felhőben. Géczy Viktor Üzletfejlesztési igazgató

Programozási nyelvek Java

Eseményvezérelt alkalmazások fejlesztése II 10. előadás. Objektumrelációs adatkezelés (Entity Framework) Cserép Máté

3. Osztályok II. Programozás II

JSF alkalmazások teljesítményhangolása JMeter és dynatrace segítségével

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Vizuális, eseményvezérelt programozás X. V 1.0

public class HelloWorld extends TestCase { public void testmultiplication() { // Testing if 3*2=6: assertequals ("Multiplication", 6, 3*2);

Models are not right or wrong; they are more or less useful.

Szűgyi Zalán. Unit tesztek Java és C++ környezetben

A KASPERSKY SECURITY CENTER

Élő webes alkalmazások rendszerfelügyelete cím- és tartalomteszteléssel

Vizuális, eseményvezérelt programozás XI.

Java programozási nyelv 5. rész Osztályok III.

Szoftver technológia. Projektmenedzsment eszközök. Cserép Máté ELTE Informatikai Kar 2019.

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Objektumorientált programozás C# nyelven

Objektum orientált kiterjesztés A+ programozási nyelvhez

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Kompozit alkalmazások fejlesztése. IBM WebSphere Portal Server

Programozási nyelvek Java

Programozás C++ -ban 2007/7

GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és. Függvénysablonok

Az UPPAAL egyes modellezési lehetőségeinek összefoglalása. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Segédanyag: Java alkalmazások gyakorlat

Átírás:

Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 10. előadás Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu

Tesztelés A webszolgáltatások tesztelése elvégezhető manuálisan, kliens oldalon, a kérések küldését biztosító program, így böngésző vagy célszoftver (pl. Postman, Insomnia, Fiddler) segítségével automatikusan, kliens oldalon, a kérések küldését biztosító osztály (pl. HttpClient) segítségével automatikusan, szerver oldalon, a vezérlő műveleteinek közvetlen tesztelésével a szolgáltatás tesztelését célszerű felügyelt környezetben, a teszten belül elvégezni zárjuk ki a külső tényezőket (pl. adatbázis) ELTE IK, Webes alkalmazások fejlesztése 10:2

Memóriabeli adatbázis Az adatbáziskontextus függőségi befecskendezés révén paraméterezhető a használt adtabázis motorral: services.adddbcontext<mydbcontext>(options => options.usesqlserver( Configuration.GetConnectionString( "DefaultConnection"))); Használhatunk ideiglenes memóriában tárolt adatbázist is a teszteléshez: var options = new DbContextOptionsBuilder<MyDbContext>().UseInMemoryDatabase("TestDb").Options; var context = new MyDbContext(options); ELTE IK, Webes alkalmazások fejlesztése 10:3

xunit & NUnit A platformfüggetlen egységtesztekhez használhatjuk többek között az xunit vagy az NUnit keretrendszert is. az xunit natívan támogatott a Visual Studio 2017 által, az NUnit a megfelelő NuGet csomag révén telepíthető. MSTest xunit NUnit [TestClass] n/a [TestFixture] Teszt osztály. [TestMethod] [Fact] [Test] Teszteset (metódus). [TestInitialize] ctor [Setup] Tesztesetek inicializálása. [TestCleanup] IDisposable [TearDown] Tesztesetek takarítása. ELTE IK, Webes alkalmazások fejlesztése 10:4

Példa Feladat: Teszteljük az utazási ügynökség webszolgáltatását. egy külön xunit tesztprojektben létrehozzuk a tesztkörnyezetet biztosító osztályt (TravelAgencyTest), ezen belül pedig a vezérlők teszteseteit. az entitásmodellhez egy memóriabeli adatbázist használunk az adatbázist minden teszteset előtt inicializáljuk egy minta adathalmazzal. az adatbázist minden teszteset végrehajtása után semmisítsük meg. ELTE IK, Webes alkalmazások fejlesztése 10:5

Mock objektumok Amennyiben függőséggel rendelkező programegységet tesztelünk, a függőséget helyettesítjük annak szimulációjával, amit mock objektumnak nevezünk megvalósítja a függőség interfészét, egyszerű, hibamentes funkcionalitással használatukkal a teszt valóban a megadott programegység funkcionalitását ellenőrzi, nem befolyásolja a függőségben felmerülő esetleges hiba Mock objektumokat manuálisan is létrehozhatunk, vagy használhatunk erre alkalmas programcsomagot pl. NSubstitute, Moq letölthetőek NuGet segítségével ELTE IK, Webes alkalmazások fejlesztése 10:6

Mock objektumok Pl. : class DependencyMock : IDependency // mock objektum { // egy egyszerű viselkedést adunk meg public Double Compute() { return 1; } public Boolean Check(Double value) { return value >= 1 && value <= 10; } } Dependant d = new Dependant(new DependencyMock()); // a mock objektumot fecskendezzük be a függő // osztálynak ELTE IK, Webes alkalmazások fejlesztése 10:7

Mock objektumok Moq segítségével könnyen tudunk interfészekből mock objektumokat előállítani a Mock generikus osztály segítségével példányosíthatjuk a szimulációt, amely az Object tulajdonsággal érhető el, és alapértelmezett viselkedést produkál, pl.: Mock<IDependancy> mock = new Mock<IDependancy>(); // a függőség mock objektuma Dependant d = new Dependant(mock.Object); // azonnal felhasználható a Setup művelettel beállíthatjuk bármely tagjának viselkedését (Returns( ), Throws( ), Callback( )), a paraméterek szabályozhatóak (It) ELTE IK, Webes alkalmazások fejlesztése 10:8

Mock objektumok pl. : mock.setup(obj => obj.compute()).returns(1); // megadjuk a viselkedést, mindig 1-t ad // vissza mock.setup(obj => obj.check(it.isinrange<double>(0, 10, Range.Inclusive))).Returns(true); mock.setup(obj => obj.check(it.isany<double>()).returns(false); // több eset a paraméter függvényében lehetőségünk van a hívások nyomkövetésére (Verify( )) ELTE IK, Webes alkalmazások fejlesztése 10:9

Az Entity Framework mock-olása Hasonló módon az Entity Framework interfésze is mockolható, DbSet típusonként, például: var citydata = new List<City> { new City { Id = 1, Name = "TESTCITY" } }; IQueryable<City> qcitydata = citydata.asqueryable(); citymock = new Mock<DbSet<City>>(); ELTE IK, Webes alkalmazások fejlesztése 10:10

Az Entity Framework mock-olása citymock.as<iqueryable<city>>().setup(mock => mock.elementtype).returns(qcitydata.elementtype); citymock.as<iqueryable<city>>().setup(mock => mock.expression).returns(qcitydata.expression); citymock.as<iqueryable<city>>().setup(mock => mock.provider).returns(qcitydata.provider); citymock.as<iqueryable<city>>().setup(mock => mock.getenumerator()).returns( citydata.getenumerator()); // a korábban megadott listát fogjuk visszaadni ELTE IK, Webes alkalmazások fejlesztése 10:11