11. rész: Tesztelés. Verziókezelés. Bakay Árpád NETvisor kft (30) 385 1711 arpad.bakay@netvisor.hu



Hasonló dokumentumok
12. rész: Verzió- és feladatkezelés a szoftverfejlesztésben. Bakay Árpád NETvisor kft (30) arpad.bakay@netvisor.hu

9. rész: Korszerő Implementációs Technikák

7. rész: A specifikációtól az implementációig az EJB rétegben

OOP és UML Áttekintés

Source control systems. Horváth Ernő, Dr. Pozna Claudiu Radu

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.

8. rész: Implementáció JDeveloperben

Teszt terv Új funkció implementációja meglévı alkalmazásba

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

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

extreme Programming programozástechnika

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

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

Verziókövető rendszerek használata a szoftverfejlesztésben

A TANTÁRGY ADATLAPJA

Közösség, projektek, IDE

4. rész: Java Enterprise Edition bevezetı. Bakay Árpád dr. NETvisor kft (30)

Enterprise JavaBeans 1.4 platform (EJB 2.0)

Üdvözli Önöket A PGY3 tantárgy! Bakay Árpád dr. NETvisor kft (30) arpad.bakay@netvisor.hu

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

WebService tesztelés. SOAPui Pro, GreenPepper és Confluence használatával. Verhás & Verhás Szoftver Manufaktúra KNOW-HOW

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

Fogalomtár Etikus hackelés tárgyban Azonosító: S2_Fogalomtar_v1 Silent Signal Kft. Web:

Verifikáció és validáció Általános bevezető

Használati alapú és modell alapú tesztelés kombinálása szolgáltatásorientált architektúrák teszteléséhez az ipari gyakorlatban

Komponens alapú fejlesztés

Név: Neptun kód: Pontszám:

A DevOps-kultúra eszközei

Biztonság java web alkalmazásokban

Data Integrátorok a gyakorlatban Oracle DI vs. Pentaho DI Fekszi Csaba Ügyvezető Vinnai Péter Adattárház fejlesztő február 20.

Adatbányászat és Perszonalizáció architektúra

A szoftverfejlesztés eszközei

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

Code review és continous integration toolok BME-MIT

Tortoise SVN használata. Képes útmutató

A szoftverfolyamat és s a tesztelés

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

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

Segédanyag: Java alkalmazások gyakorlat

MVC. Model View Controller

A FEJLESZTÉS KIHÍVÁSAI

A Java EE 5 plattform

Operációs rendszerek. Az X Window rendszer

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

Széchenyi István Egyetem

Szabálykezelés a gyakorlatban

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

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

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

Copyright 2012, Oracle and/or its affiliates. All rights reserved.

A Feldspar fordító, illetve Feldspar programok tesztelése

Projekt beszámoló. NEWSIT News basedearlywarning System forintradaytrading: Hír alapú Korai Figyelmeztető Rendszer Napon belüli Kereskedéshez

Oracle Enterprise Manager 12c Cloud Control és 11g Grid Control összehasonlítás

Segédanyag: Java alkalmazások gyakorlat

MŰSZAKI TESZTTERVEZÉSI TECHNIKÁK STRUKTÚRA ALAPÚ, VAGY FEHÉRDOBOZ TECHNIKÁK TAPASZTALAT ALAPÚ TECHNIKÁK

A fordítónak mindenhez lehet

webalkalmazások fejlesztése elosztott alapon

Alkalmazásportfólió. Szoftvermenedzsment. menedzsment. Racionalizálás. Konszolidáció. Nyilvántartás. Elemzés

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

Se S r e ial a iza z t a ion o n (in n Ja J v a a v ) a Szerializáció

Objektum orientáltság alapjai A Java nyelv Fordítás - futtatás

Nyílt forráskódú irodai programkomponensek vállalati környezetbe való integrációjának vizsgálata és implementációja

Reaktív programozás szerver oldalon

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

Java I. A Java programozási nyelv

Bevezetés az SAP világába

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Komponensek együttműködése web-alkalmazás környezetben. Jónás Richárd Debreceni Egyetem T-Soft Mérnökiroda KFT

Termék életciklus és a verziókezelés

(Teszt)automatizálás. Bevezető

Iványi László ARM programozás. Szabó Béla 1. Óra Verziókövetés

Adatbázis rendszerek I

rendszerszemlélető, adatközpontú funkcionális

Stateless Session Bean

Adatbázisok webalkalmazásokban

Hibrid Cloud az új Oracle Enterprise Manager Cloud Control 13c-vel

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

Angolul: Extreme Programming, röviden: XP Agilis módszertan. Más módszertanok bevált technikáinak extrém módú (nagyon jó) használata

Oracle Containers for Java - j2ee alkalmazás szerver funkciók. Molnár Balázs Oracle Hungary

Intelligens eszközök fejlesztése az ipari automatizálásban Evosoft Hungary kft., Evosoft Hungary Kft.

Szolgáltatás Orientált Architektúra a MAVIR-nál

Osztott rendszerek, Java EE. Általános bevezető

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

STANDARD DEVELOPMENT U.L. FACTORY SYSTEMS GROUP IT DEPARTMENT

Adatbázis-kezelés ODBC driverrel

Térinformatikai és távérzékelési alkalmazások fejlesztése. A szoftverfejlesztés technikai támogatása

Agilis projektmenedzsment

Az internet ökoszisztémája és evolúciója. Gyakorlat 1

Bevezető. Servlet alapgondolatok

Az internet ökoszisztémája és evolúciója. Gyakorlat 1

Web-fejlesztés NGM_IN002_1

ProofIT Informatikai Kft Budapest, Petzvál J. 4/a

Integráci. ciós s tesztek. ciós s tesztek (folyt.) Integration Level Testing (ILT) Ficsor Lajos. Miskolci Egyetem Általános Informatikai Tanszék

Adatbázis, adatbázis-kezelő

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

Szoftver technológia. Verziókövető rendszerek. Cserép Máté ELTE Informatikai Kar 2019.

eseményvezérelt megoldások Vizuális programozás 5. előadás

DocBook útmutató. Jeszenszky Péter Debreceni Egyetem, Informatikai Kar

AMI KIMARADT AMI KIMARADT

A szoftverfejlesztés eszközei

Átírás:

11. rész: Tesztelés. Verziókezelés Bakay Árpád NETvisor kft (30) 385 1711 arpad.bakay@netvisor.hu

1. Hirdetmények 2. HF Beadási határidı: május 23 Készül az Ursula V2.0 legkésıbb holnap este

2. Entityk használata tanulságok NE használjunk CHAR(x) Oracle adattípust Az JPA nem tud rá rendesen search-elni A JDBC igen! Csak VARCHAR2-t A relációinkat persist elıtt mindkét végén el kell rendezni! A cache-elt objektumok relációit nem frissíti! Hogyan töröljünk egy teljes táblát?

DB törlés és cache ürítés - példa @PersistenceUnit private EntityManagerFactory emf; // factory-n keresztül // alacsonyabb szintő, Oracle specifikus hozzáférés!! public void ClearCache() { EntityManagerImpl emi = (EntityManagerImpl)emf.createEntityManager(); emi.getserversession().getidentitymapaccessor().invalidateall(); emi.close(); // le kell zárni! } public void ClearDB() { em. createnativequery("delete from ORVOS").executeUpdate(); em.createnativequery("delete from OSZTALY").executeUpdate(); em.createnativequery("delete from LABOR").executeUpdate(); em.createnativequery("delete from ELLATO").executeUpdate(); em.createnativequery("delete from USERACCOUNT").executeUpdate(); ClearCache(); }

Session bean JAVA RMI-ben nincsenek out paraméterek A megváltoztatott input parameter nem megy vissza a hívóhoz Csak a return value Több return value esetén: Használjunk vmi Collectiont (pl. map) Egyedileg definiált return osztályt Vagy legyen több facade method

Futtatás, debuggolás - Legfontosabb funkciók EJB oldalon: Debug - kliens osztályon: Run Wiew/ Run manager : a futó / debuggolt processzek listája Breakpointok az EJB-ben is elhelyezhetık Léptetés (F8), futtatás (F9), toggle (F5) Data inspector: View/Debugger/Data ablak az adatok futás közbeni megfigyelésére Közben az adatbázis is ellenırizhetı, ld. a Connections panelt Hagyományos eszközök, pl. System.out.println mindkét oldalon használhatók Megjelenik az egyik messages ablakban Console input viszont nincs!

3. Dokumentáció készítése - folyt

3/c. JavaDoc Kódba ágyazott dokumentációs kommenteket kell írni Jdeveloper: a dekl. elemek elıtti üres sorba szúrt /** -vel automatikusan Standard dokumentációs struktúra standard tag-ek alapján: @param [argument name] [argument description] - describes an argument of method or constructor. @return [description of return] - describes data returned by method (unnecessary for constructors and void methods). @throws [exception thrown] [exception description] - describes exception thrown by method. @author [author name] - identifies author(s) of a class or interface. @version [version] - version info of a class or interface. A javadoc pranccsal API dokumentáció generálható JDeveloperben: Run/Javadoc See also http://java.sun.com/j2se/javadoc/index.html

4. Kódolvasás, véleményezés Peer review : szakemberek átnézik és formálisan, tudatosan, szemérmeskedés nélkül értékelik egymás munkáját Bonyolult, embedded, R/T szoftver projekteknél különösen fontos Miért? Mert itt lehetetlen mindent kitesztelni. Eredete: NASA Tárgya lehet több minden: kód, terv, dokumentáció Szerepek: Szerzı Bírálók (elıre átolvassák) Moderátor Jegyzı Hallgatók

folyt Egy ülés keretében történik hosszát kb. 90 percre kell tervezni Nem megoldást javasolnak, csak kérdeznek, ill. megjelölik a problémákat Nem feltétlenül hiba, hanem bármi, ami nem tökéletes A javítás viszont megint a szerzı dolga Jegyzıkönyv készül az ülésrıl Ebbe késıbb az elvégzett javításokat is felveszik További elınye, hogy egységesíti a csoport programozási kultúráját Strukturális/logikai ügyek mellett formai javítások is kérhetık A formális code review csak nagy projektek esetén életszerő, de a kommunikáció, és egymás munkájának átnézése, ismerete mindig alapvetı!

5. Tesztelés A tesztelés mélysége és mennyisége a minıségi szoftverfejlesztés legfontosabb ismérve!!!! Pl: Agile/Xtreme programming: write tests first Két technika Manuális tesztelés Automatizált tesztelés Mindkét esetben elıre definiált teszt esetek alapján Ezen TestCase-ek győjteménye a TestSuite.

Manuális tesztelés Forgatókönyv Minden testcase-t részletesen leír Tesztelési jegyzıkönyv Hibák visszajelzése a fejlesztıknek (lehetıleg automatikus feladatkezelı rendszerrel)

Manuális tesztelés forgatókönyve Tesztelési forgatókönyv példa: 1. Indítsa el a XXX programot 2. Írja be a login adatokat: rozi, ill. pw321 3. Nyomja meg a Login gombot 4. Ellenırizze a megjelenı képernyıt: (Név: Róza Rozál, Szül.dátum: xxxx..) 5. Irja át a várost Gyır-ré 6. Lépjen ki. 7. Újra nyomja meg a Login gombot 8. Ellenırizze, hogy a város Gyır

Tesztelési jegyzıkönyv (pl. Excel) Alkalmazás: Verzió: Teszt ideje: Tesztelı: Testcase Ellenırzés 1. Ellenırzés 2. Ellenırzés 3 Megjegyés TC1114 OK OK TC1115 OK OK OK Sorok eltolódtak TC1116 İ betük kalaposak OK Miskolc jelent meg

Atomatizált tesztelés Elsısorban regressziós tesztekhez Tudja-e azt amit korábban tudott Vagy: tudja-e már amit tudnia kéne Ha elıre megírtuk a TestCase-et extreme programming Továbbá: load testing: bír e 300 klienst? performance testing: van-e olyan gyors, mint az elızı verzió? Modul tesztek: Olyan kis kód-darabok, amelyek a tesztelt kódot hívják, és így alapvetı ellenırzéseket végeznek annak egyes osztályain, vagy osztályok kisebb csoportján. Pl. egy Session EJB-n Ajánlás: Minden metódushoz legalább egy modul teszt-metódus Minden osztályhoz legalább egy TestCase

JUnit Egy keretrendszer modul-tesztek írásához és futtatásához Az teszteket csak meg kell írni, nem kell regisztrálni: test* nevő metódus egy önálló tesztnek számít, a framework gondoskodik a hívásukról. A teszt metódusokban hívások a tesztelt kódra, ill. ellenırzı junit metódusok: assertequals(), assertnotnull(), assertfalse(), failnotsame() Az eredményeket könnyen ellenırizhetı formában megjeleníti Pl. a végeredmény zöld vagy piros ikon vagy sáv JDeveloperrel, Eclipse-szel tökéletesen integrált Hogy még kényelmesebb legyen Fı a maximális kényelem, különben senki sem fog teszteket írni!!!

Elınyei, jellemzıi Ingyenes! Az egyszer már megírt tesztekkel a tesztelés rendkívül fáradságmentes. A teszteket a fejlesztık írják Nem objektív, viszont ık ismerik belülrıl a kódot A tesztek hierarchiába rendezhetık testxxxx methods YyyyTest class extends TestCase ZzzzAllTests class ú.n. test suite, tartalmaz tetszıleges számú testcase-t és testsuite-ot

JUnit tesztek felépítése, mőködése Teszt Case: pl. YyyyTest.java extends junit.framework.testcase Jellemzıen egy osztály tesztjei run()-nál végighívja az összes testxxxx() metódusát Ezek jellemzıen a tesztelt modul hívásait és assertpppp(), failpppp() junithívásokat is tartalmaznak Tesztek adatkörnyezete (az ú.n. fixture) a setup() és teardown() metódusokkal készíthetı elı ill bontható le Test Suite: ZzzAllTests.java Egy modul összes teszcase-je run()-ra meghívja az összes gyermeke run()-ját A junit testrunner framework Regisztrálja az összes teszt eredményét A végén szépen megjeleníti azt

Tudta-e Ön? Hogy a Java-ban is van assert utasítás? http://java.sun.com/j2se/1.4.2/docs/guide/lang/assert.html

Grafikus user interfész tesztelése A grafikus UI automatizált meghajtása Recording vs. Scripting mód Tájékozódás a UI ablakok, komponensek hierarchiájában. Adatbevitel szimulálása az egyes widgeteken Adatok kiolvasása és ellenırzése más widgetekbıl Hagyományos és WEB-alkalmazásokhoz HTTPUnit: következı félévben Problémák: A vizuális benyomás ellenırzése Rajzolt grafikus területek ellenırzése. Fizikai pozícionálás az ablakokban Természetes vagy szintetizált képek grabbelése és ellenırzése

További minıségbiztosítási szempont: Tesztelhetı és menedzselhetı alkalmazás Beépíteni az alkamazásba a tesztelést segítı funkciókat (black-box -> gray-box -> white-box) Assertion-ok pl.: belsı adatmodell dump-olása, vagy konzisztenciájának ellenırzése Cél interfészek erre a célra RMI, SNMP, JMX, management konzol Tesztelés szempontjából jól elkülönülı alkalmazás rétegek Öndiagnosztika hibák és problémák esetén Az éles rendszerben is bıséges ellenırzés és loggolás Konfigurálható loggolási képességek Java világban pl.: log4j

6. Verziókezelés és feladatkövetés - Version control, code repository, software confugration management (SCM), software asset management (SAM) - Bug/defect/change tracking/management,

Hol tartunk? Projekt tervezés, követés MS Project RequisitePro Követelmények Jdeveloper Tervezés, modellezés JDeveloper Implementáció Tesztelés JUnit / HTTPUnit SubVersion ClearQuest??? Konfigurációkezelés Feladat és hibakövetés

1. Verziókövetés Def: a szoftver megépítéséhez szükséges források tárolása és megosztása Biztonságosan Ellenırzött hozzáféréssel A fejlesztési munka legújabb állapotának ill. korábbi mérföldköveinek megırzésével.

Biztonság Megbízható hardveren Pl.: szerver tükrözött diszkkel gyakorlatban: workgroup server diszk hiba ellen Rendszeres mentés, archiválás szerver vagy környezeti hiba ellen A fejlesztés teljes történetének rögzítése Verziók azonosítása (pl. revision number ) fejlesztıi/kooperációs hiba ellen új verziók és visszamenı javítások párhuzamos fejlesztéséhez

Ellenırzött hozzáférés Felhasználó azonosítás Cél, hogy a változtatások névhez köthetık legyenek Nem elsısorban a rosszindulatú támadók ellen!! De: pl. a vétett hibák eltakarásának a szándéka elıfordulhat Esetleg: Ipari kémek ellen Konkurencia kezelés File szinten (párhuzamos módosítás követése) Alkalmazás logikai szinten Konzisztens szoftver-állapotok megjelölése, megkülönböztetése a napi biztonsági mentésektıl.

Verziókezelés architektúra Szerver Repository Munkamásolat Munkamásolat Munkamásolat Fejlesztıi munkaállomás #1 Fejlesztıi munkaállomás #2 Fejlesztıi munkaállomás #3

Verziókövetés alapmőveletek Lokális munkamásolat készítése checkout (CVS/SVN) Lokális másolat frissítése update (CVS/SVN) Változások megtekintése log, diff, status (CVS/SVN) Változások visszaküldése a repositoryba commit (CVS/SVN)

A file szintő konkurrencia kezelése Optimistic concurrency Mindenki írhat, mindent Nem kell lock-olni De: változások összefőzése szükséges lehet Merge Strictly controlled concurrency Megnyitás írásra mővelet kizárólagos Check-In elvben mindig sikerül

A két megközelítés (és a terminológia) összehasonlítása Munkalépés Lokális munkaverzió lekérése Optimistic Példa: CVS, SVN Checkout, update Pessimistic Példa: MS VSS get latest version Lockolás írásra Nincs checkout Párhuzamos változások egyesítése update (with merge) Nincs Visszaküldés a szerverre commit checkin

Subversion Általános, ingyenes CMS eszköz Többféle hálózati protokoll felett: Egygépes: URL: file:// Kliens-szerver http://, https:// svn:// svn+ssh:// = svn ssh tunnel felett

SVN használata svn <cmd> <opts> <url>[@rev] svn checkout svn://myrepos/myproj1/file.cpp svn commit. m Bugs fixed svn status myprog.java svn diff myprog.java Fejlesztıi környezetbe integrált verziók

Köszönöm a figyelmet! arpad.bakay@netvisor.hu