Automatikus teszt futtatás, build keretrendszerek

Hasonló dokumentumok
Automatikus teszt futtatás, folytonos integráció

Build keretrendszerek

Tesztelési szintek Tesztautomatizálás

Programozási technológia 2.

Közösség, projektek, IDE

Szo$verfejlesztés Eclipse környezetben. Budapes( Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Automatizált Java Build. ApacheAnt használatával

A DevOps-kultúra eszközei

Szoftver technológia. Continuous integration & delivery. Cserép Máté ELTE Informatikai Kar 2019.

Fejlesztési projektek menedzselése IBM Rational CLM termékekkel. Ker-Soft Kft. Kaszás Orsolya - üzleti tanácsadó

A FEJLESZTÉS KIHÍVÁSAI

AZ APACHE MAVEN ÉLETE ÉS HALÁLA.! Cservenák Tamás

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

Gyakorlat és házi feladat tájékoztató

Code review és continous integration toolok BME-MIT

Gyakorlat és házi feladat tájékoztató

(Teszt)automatizálás. Bevezető

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

Java I. A Java programozási nyelv

Egy egyszerű, gyors és szabad újratelepítő eszköz: upi

Viczián István IP Systems JUM XIX szeptember 18.

Ráth István. A fejlesztés evolúciója

ADATBÁZIS VERZIÓKÖVETÉSE: LIQUIBASE

Ráth István. DECOS Nemzeti Nap október 15. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Több app. Egy kódbázis

OPENCV TELEPÍTÉSE SZÁMÍTÓGÉPES LÁTÁS ÉS KÉPFELDOLGOZÁS. Tanács Attila Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem

Szoftver technológia. Build systems. Cserép Máté ELTE Informatikai Kar 2019.

A Java EE 5 plattform

Java Parancssor Maven-nel

Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor

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

RH/CentOS felügyelet SUSE Manager segítségével. Kovács Lajos Vezető konzultáns

Petőfi Irodalmi Múzeum. megújuló rendszere technológiaváltás

Modell alapú tesztelés mobil környezetben

.NET alkalmazások telepítése

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

OOP és UML Áttekintés

Java I. A Java programozási nyelv

Modell alapú tesztelés: célok és lehetőségek

Selling Platform Telepítési útmutató Gyakori hibák és megoldások

Útmutató az OKM 2007 FIT-jelentés telepítéséhez

Mobil Informatikai Rendszerek

Hello Gradle. TestNG, Eclipse, IntelliJ IDEA. Óbudai Egyetem, Java Enterprise Edition Műszaki Informatika szak Labor 2. Bedők Dávid v0.

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

Miért érdemes váltani, mikor ezeket más szoftverek is tudják?

Moodle -egy ingyenes, sokoldalú LMS rendszer használata a felsőoktatásban

Image Processor BarCode Service. Felhasználói és üzemeltetői kézikönyv

Mobil Informatikai Rendszerek

CTools és Panels pluginok

A CAPICOM ActiveX komponens telepítésének és használatának leírása Windows7 operációs rendszer és Internet Explorer 8-es verziójú böngésző esetén

CI gyakorlat segédlet

Szathmáry László Debreceni Egyetem Informatikai Kar

Automatikus infrastruktúra menedzsment és alkalmazástelepítés

Selling Platform Telepítési útmutató Gyakori hibák és megoldások

Hello Maven. JSE vs. JEE, JEE vs Spring. Óbudai Egyetem, Java Enterprise Edition Műszaki Informatika szak Labor 2. Bedők Dávid v0.

Rational. Application Developer. Telepítési kézikönyv. 7.0 változat GI

1 Rendszerkövetelmények

C++ fejlesztés az ECLIPSE környezetben

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

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

Sz. Sz. Sz. R. Kiadási jegyzék. Szilágyi Attila. Verzió: 40. Kézirat lezárva:

VIRTUAL APPLIANCE KÉZIKÖNYV VIRTUAL APPLIANCE KÉZIKÖNYV

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

Kedvenc Ingyenes editorok avagy milyen a programozó jobbkeze? PSPAD editor DEVPHP IDE

Kinek szól a könyv? Hogyan épül fel a könyv? Megjelenés előtti szoftver A hálózati kézikönyv tartalma A könyv támogatása Kérdések és megjegyzések

Szoftverminőségbiztosítás

Miről lesz szó? Setup Project készítése. Tulajdonságok. 1. Készítsünk egy setup project alkalmazást egy már elkészített, lefordított programhoz.

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

Specifikáció alapú teszttervezési módszerek

A Zotero hivatkozáskezelő program bemutatása. Mátyás Melinda

Specifikáció alapú teszttervezési módszerek

K&H token tanúsítvány megújítás

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

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

DCWatch fejlesztői HUB: dchub://4242.hu:1411 Elite Hub, ahol megnézheted működés közben a BOT-ot: dchub://elite.4242.hu:4242

Virtualizációs Technológiák Operációs rendszer szintű virtualizáció Konténerek Forrás, BME-VIK Virtualizációs technológiák

STANDARD DEVELOPMENT U.L. FACTORY SYSTEMS GROUP IT DEPARTMENT

A felhőről általában. Kacsuk Péter MTA SZTAKI

Szoftverfejlesztés teszteléssel

Flex: csak rugalmasan!

Kommunikációs rendszerek teljesítőképesség-vizsgálata

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

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)

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

Automatikus tesztgenerálás modell ellenőrző segítségével

Mobil Informatikai Rendszerek

A szoftverfejlesztés eszközei

Alkalmazás és megjelenítés virtualizáció

Több platform egy kódbázis Tanulságok a Tresorittól. Budai Péter, vezető fejlesztő

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

Folyamatmodellezés és eszközei. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Fekete Csaba Csongor Üzleti intelligencia vezető Citibank ZRt.

Operációs Rendszerek. Windows Parancssor

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

Verziókezelt konfigurációmanagement++ Pásztor György, SZTE Klebelsberg Könyvtár

Üzleti intelligencia eszköztár a SAS 9.2 platformon

Nagy bonyolultságú rendszerek fejlesztőeszközei

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

Új technológiák az Ubuntuban. Új fejlesztések Amik egy éven belül jelenhetnek meg az Ubuntuban

Internetkonfigurációs követelmények. A számítógép konfigurálása. Beállítások Windows XP alatt

Átírás:

Szoftverellenőrzési technikák (vimim148) Automatikus teszt futtatás, build keretrendszerek Ujhelyi Zoltán, Micskei Zoltán, Monostori Dénes http://www.inf.mit.bme.hu/

Fordítás, tesztelés, kiadás nagy projekteknél Sokáig tartó tesztelés Eclipse: 6 óra 40 perc (2010 márciusában) Sok fejlesztő Sok változat Classic, JEE, Modeling Sokféle platform 1. Windows, Linux, Mac OSX, Solaris 2. Win32, GTK, Motif, Carbon 3. x86, x86_64, sparc Shipping is hard, that s why we do it 7 times a release. 2

17 platform 12 branch forrásnak Mozilla Firefox 1200 build and teszt gép Fordítási idő: 12.40 óra Tesztelési idő: 54.48 óra CPU időben: 2.79 nap (!) Korábban release: 10 nap Forrás: http://relengofthenerds.blogspot.com/2010/11/mozilla-versus-eclipse-build.html 3

Automatikus tesztelés Teszt futtatás, kiértékelés automatizálása Manuális vagy automatikus? Nehézség Pl. GUI, CD írás, rajzolás Tesztelés élethossza Meddig kell a teszt, milyen gyakran Pontosság Hibás pozitív (false positive) 4

Automatikus tesztelés tipikus lépései Setup Legfrissebb verzió telepítése Különböző platform, OS, böngésző Virtuális gépek, Lab manager programok Execution Egyszerű script / xunit / keretrendszer Naplózás Analysis Teszt kiértékelése Sokszor nem triviális Reporting Tesztek ezrei esetén nem elegek a naplófájlok Összesítő információk Cleanup Ismert, tiszta állapotba visszaállítás Cél: tesztek ne befolyásolják egymás futását Help Teszt kód is ugyanolyan kód, azt is dokumentálni kell Sokszor a teszt kód hosszabb, mint az éles 5

Források változásai Figyelmeztetések Tesztek ID, név Környezet Naplózás SUT (System Under Test) információk Verzió Beállítások Nyelv Eredmények 6

Teszt futtatás nagy léptékben Nagy projektek esetén (OS, böngésző, IDE ) Tesztek futtatása 10-100-1000 gépen Tipikus felállás Teszt vezérlő Teszt adattár (kód, log, jelentések) Ágens a tesztelő gépeken Pl.: Rational, Visual Studio, saját megoldások 7

Tartalom Tesztelés automatizálása Build folyamat Build keretrendszerek 8

Központi build folyamat Bonyolult, összetett folyamat Cél: Futtatás egyetlen, központi helyen Erőforrásigény Automatikusan Nem felejtődik el Környezetfüggetlen, fut Fejlesztő gépén parancssorból (GUI nélkül) Fejlesztőkörnyezetben! Build szerveren 9

Főbb lépések Pre-build lépések Build-elés Tesztelés Egyéb ellenőrzések Csomagolás / publikálás Értesítések küldése Jelentések készítése 10

Források beszerzése Pre-build lépések Build-elés Tesztelés Források beszerzése SVN, CVS, fájlrendszer Környezet előállítása vagy alaphelyzetbe állítása Egyéb ellenőrzések Csomagolás / publikálás Értesítések küldése Jelentések készítése 11

Főbb lépések Pre-build lépések Build-elés Tesztelés Statikus analízis Függőségek kezelése Fordítás Egyéb ellenőrzések Csomagolás / publikálás Értesítések küldése Jelentések készítése 12

Főbb lépések Pre-build lépések Build-elés Tesztelés BVT (Build Verification Test) Gyors ellenőrzés Részletesebb tesztelés Egyéb ellenőrzések Csomagolás / publikálás Értesítések küldése Jelentések készítése 13

Főbb lépések Pre-build lépések Build-elés Tesztelés Kódolási stílus Javadoc kommentek Kódfedettség Egyéb ellenőrzések Csomagolás / publikálás Értesítések küldése Jelentések készítése 14

Főbb lépések Pre-build lépések Build-elés Tesztelés Teszteredmények Kód fedettségi mérőszámok Egyéb ellenőrzések Csomagolás / publikálás Értesítések küldése Jelentések készítése 15

Főbb lépések Pre-build lépések Build-elés Tesztelés Hiba esetén Adminisztrátornak Fejlesztőknek Egyéb ellenőrzések Csomagolás / publikálás Értesítések küldése Jelentések készítése 16

Főbb lépések Pre-build lépések Build-elés Tesztelés Telepítő készlet MSI, P2 Update site Archiválás Egyéb ellenőrzések Csomagolás / publikálás Értesítések küldése Jelentések készítése 17

Tartalom Tesztelés automatizálása Build folyamat Build végrehajtó motorok Build keretrendszerek 18

Make C/C++ Apache Ant Build végrehajtó motorok Make fájl Java-hoz, XML alapokon Apache Maven Egységes forrás letöltés és fordítás Funkcionalitásában hasonlít az Ant-hoz 19

Ant Java library és parancssori eszköz Rugalmas, bővíthető Fő felhasználási terület: Java alkalmazások build-elése 20

Project Build fájlonként egy Target Ant alapfogalmak Végrehajtandó taszkok egy halmaza 1..* Egymástól függhetnek Pl. compile, deploy Task Végrehajtható kód Pl. javac, copy, junit, exec, signjar, mail 21

További elemek Név érték párok (properties) <property name="build" location="build"/> <target name="init"> <mkdir dir="${build}"/> </target> Útvonalak, classpath <classpath> <pathelement path="${classpath}"/> <pathelement location="lib/helper.jar"/> </classpath> Bármely projektelemnek lehet ID-ja Minden hivatkozható 22

Szükséges: junit.jar Előkészületek ant-junit.jar Alapértelmezett helye: ANT_HOME/lib junit.jar megadása: ANT_HOME/lib könyvtárba másolással, vagy -lib argumentummal, vagy <junit> taszk <classpath> elemében 23

<project default="test" > Példa <path id="classpath.test"> <pathelement location= lib/junit.jar" /> </path> <pathelement location="${build}" />...... <target name="compile-test"> <javac srcdir="${tst-dir}" > </javac> </target> <classpath refid="classpath.test"/> 24

... Példa (folytatás) <target name="test" depends="compile-test" > <junit printsummary="yes" haltonfailure="yes"> <classpath refid="classpath.test" /> <formatter type="plain" /> <test name="hu.optxware.junitcourse. bookstore.book.test.bmlisttest" haltonfailure="no" outfile="result" > <formattertype="xml"/> </test> </junit> </target> 25

Leíró pom.xml: projekt modell Maven Archetípus: minta Eltérések felsorolása a mintától Fordítás Megnevezünk egy célt (pl. teszt, csomagolás) Végignézi az összes szükséges fázist 26

Maven életciklus és célok 27

Példa: JUnit teszt futtatás Mavennel Projekt struktúra my-app pom.xml src main java» com» mycompany» app» App.java test java com» mycompany» app» AppTest.java 28

<project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http:// www.w3.org/2001/xmlschema- instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http:// maven.apache.org/xsd/maven- 4.0.0.xsd"> <modelversion>4.0.0</modelversion> <groupid>com.mycompany.app</groupid> <artifactid>my- app</artifactid> <version>1.0- SNAPSHOT</version> <name>maven Quick Start Archetype</name> <url>http://maven.apache.org</url> <packaging>jar</packaging> <dependencies> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>4.8.0</version> <scope>test</scope> </dependency> </dependencies> </project> Mi hiányzik? Metaadatok Java alkalmazás JUnit függőség 29

Példa: JUnit teszt futtatás Mavennel Projekt struktúra Alapértelmezett van minden alkalmazástípushoz Felülbírálható Ugyanakkor Maven plug-inek olvassák! 30

Igazi vallásháború Ant Minden kézben tartható Ant vs Maven Egyedi projektnél hasznos Maven Convention over configuration Minden Maven projekt hasonló Függőségkezelés 31

Tartalom Tesztelés automatizálása Build folyamat Build keretrendszerek 32

Continuous Integration Gyakori agilis technika Céljai Minőség növelése Piacra kerülési idő csökkentése Build szerver Automatikus integráció támogatása 33

Continous Integration Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Martin Fowler http://www.martinfowler.com/articles/continuousintegration.html 34

Eszközök Apache Continuum (Java) XML szerkesztés + webes UI CruiseControl (Java,.NET, Ruby) XML szerkesztés Hudson (Java, de kiterjeszthető) Webes UI TeamCity (Java,.NET, Ruby) Fizetős 35

Hudson (Jenkins) Java szervlet alapú Tetszőleges alkalmazás szerveren fut Plug-in alapú, bővíthető Frissítések keresése automatikus Gyorsan bele lehet tanulni Nem végez tényleges fordítást Időzítés Menedzselés Több folyamat, köztük akár függőségekkel 36

https://hudson.eclipse.org/hudson/ 37

Hudson munkafolyamat Trigger Pre-build Build Postbuild 38

Hudson munkafolyamat Trigger Pre-build Build Postbuild Kézi Időzített Verziókezelő rendszer változása Függő job befejeződése Egyéb (bővíthető) 39

Hudson munkafolyamat Trigger Pre-build Build Postbuild Opcionális Források beszerzése 40

Hudson munkafolyamat Trigger Pre-build Build Postbuild Tényleges fordítási lépések Beépített támogatás Ant Shell script Bővítéssel Maven Buckminster 41

Hudson munkafolyamat Trigger Pre-build Build Postbuild Opcionális Archiválás Publikálás Függő build-ek indítása Értesítések 42

Blame mail 43

Metrikák, trendek 44

Kódfedettség trendek 45

Egyéb metrikák 46

További lehetőségek Build slave-ek További Hudson példányok kezelése Munkafolyamatdefiníció Több job egymás után Sokféle bővítmény Trigger Jelentések Közzététel 47

Példa: Eclipse plug-inek fordítása Eclipse plug-in Beépülő modul Jól definiált függőségek Verziószámok De önmagában nem Fordul Fut Tesztelésnél izoláció problémás lehet! 48

Példa: Eclipse plug-inek fordítása Követelmények 49

Probléma 50

Probléma (folytatás) Mivel kezdjek? 51

Probléma (folytatás) Töltsd le az A, B és C plug-in-okat az XY repo-ból! 52

Probléma (folytatás) Megvan, de nem fordulnak 53

Probléma (folytatás) Ja igen, még le kell tölteni az YX repo-ból a D és E library-t is. 54

Probléma (folytatás) Még mindig nem jó valami. 55

Probléma (folytatás) Oh, hát persze, a D-nek csak az 1.2-es változata a jó, és másold be az E-t a plugins könyvtárba, majd 56

Kitérő: Target Platform Plug-in-ek egy halmaza, amit alapként használunk Fordításhoz Elég a hivatkozott interfész Futtatáshoz Kell a teljes implementáció Kapcsolódó beállítások Célkörnyezet JVM verzió 57

Target Platform szerkesztő 58

OSGi függőségek kezelése Ant4Eclipse PDE/Build kikerülése Pax, Tycho Maven felkészítése OSGi függőségekre PDE headless build Ant szkriptek generálásával Lényegében lehetetlen debug-olni Buckminster Fordítási modellek megadása (Mindegyik bonyolult!) 59

Eclipse Tools Project Magas szintű eszköz Buckminster Meglévő eszközök felett fut Ami Eclipse-ben fordítható, az Buckminsterrel is Leírók segítsége XML dokumentumok Részben generáltak Többihez szerkesztési támogatás Függőségek kezelése 60

Felhasználási módok IDE támogatás Leírók szerkesztése Futtatás Headless mód Hudson plug-in 61

Forrás beszerzés Képességek Fordítás PDE/Build, Ant, Maven Csomagolás P2 update site Target platform 62

CQUERY Leírók MSPEC RMAP BOM {Materialize} (Remote) Component Locations Component1 Component2 Component3 {Resolve} CSPEC CSPEC CSPEC Target Host Materialized Component Assembly 63

Tycho Maven alapú build Meglevő projektekből származtatható build vezérlés Maven csomagoló típusok Plug-in Plug-in teszt projekt Feature Repository (update site) 64

Elérhető példakód Minerva projekt http://wiki.eclipse.org/minerva Kipróbálás Maven telepítés Letöltés gitről mvn clean install 65

Teszt automatizálás Összetett folyamat Összefoglalás Sok részlépés Külön-külön is automatizálható Build folyamat Minimálisnál nagyobb projekt esetén kötelező Jó eszköztámogatás Nem triviális beállítani 66