Automatikus teszt futtatás, folytonos integráció

Hasonló dokumentumok
Automatikus teszt futtatás, build keretrendszerek

Build keretrendszerek

Tesztelési szintek Tesztautomatizálás

Programozási technológia 2.

Code review és continous integration toolok BME-MIT

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

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

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

A DevOps-kultúra eszközei

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

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

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

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

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

(Teszt)automatizálás. Bevezető

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

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

Java I. A Java programozási nyelv

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

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

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

A FEJLESZTÉS KIHÍVÁSAI

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

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

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

Közösség, projektek, IDE

Szoftverminőségbiztosítás

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

Mobil Informatikai Rendszerek

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

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

Szathmáry László Debreceni Egyetem Informatikai Kar

Szoftverfejlesztés teszteléssel

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

1 Rendszerkövetelmények

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

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

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

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

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

.NET alkalmazások telepítése

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

Microsoft SQL Server telepítése

Állásidő minimalizálása: BTRFS, kgraft

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

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

Java I. A Java programozási nyelv

Mi is a git? Csapatban dolgozni Git pro eszközök. Git bevezető. Szabó Adrienn Adatbányászat és Webes Keresés Kutatócsoport

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

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

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

Mobil Informatikai Rendszerek

Mobil Informatikai Rendszerek

Frissítési útmutató LOGA. Kiadva: augusztus 12.

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

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

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

Java Parancssor Maven-nel

Szoftverminőségbiztosítás

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

MIÉRT KELL TESZTELNI?

.NET (Dot-NET) #1 (Bevezetés)

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

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

1. DVNAV letöltése és telepítése

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

Kameleon Light Bootloader használati útmutató

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

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

OOP és UML Áttekintés

telepítési útmutató K&H Bank Zrt.

A fordítónak mindenhez lehet

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)

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

6.2. TMS320C64x és TMS320C67xx DSP használata

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

Google Drive szinkronizálása asztali géppel Linux rendszeren

Frissítési útmutató

Programrendszerek tanúsítása szoftverminőség mérése

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

C++ fejlesztés az ECLIPSE környezetben

A szoftverfejlesztés eszközei

Memeo Instant Backup Rövid útmutató. 1. lépés: Hozza létre ingyenes Memeo fiókját. 2. lépés: Csatlakoztassa a tárolóeszközt a számítógéphez

Hardver és szoftver követelmények

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

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

Operációs Rendszerek. Windows Parancssor

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

Virtualizációs technológiák és alkalmazások. Házi feladat. A Virtualbox. készítette: Andrus Tamás

ÁNYK53. Az Általános nyomtatványkitöltő (ÁNYK), a személyi jövedelemadó (SZJA) bevallás és kitöltési útmutató együttes telepítése

ESZKÖZTÁMOGATÁS A TESZTELÉSBEN

Hogyan legyél DevOps

Java Programozó képzés A&K AKADÉMIA 2019.

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

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

Apache, MySQL, PHP/Perl NetWare-n

A Java EE 5 plattform

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

Szabálykezelés a gyakorlatban

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

Átírás:

Szoftver- és rendszerellenőrzés (VIMIMA01) Automatikus teszt futtatás, folytonos integráció Ujhelyi Zoltán, Micskei Zoltán, Monostori Dénes http://www.inf.mit.bme.hu/

Folytonos integráció 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 2

Gyakori agilis technika Céljai Folytonos integráció Minőség növelése Piacra kerülési idő csökkentése Build szerver Automatikus integráció támogatása Követelmények Jól definiált fejlesztői (és fordítói környezet) Közös verziókezelő rendszer 3

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! 4

Függőségek Mivel kezdjek? Megvan, de nem fordulnak Még mindig nem jó valami. Töltsd le az A, B és C plug-in-okat az XY repo-ból! Ja igen, még le kell tölteni az YX repo-ból a D és E library-t is. 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 5

Függőségek (Eclipse plug-in) 6

BUILD FOLYAMAT 7

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 8

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 9

Források beszerzése Pre-build lépések Build-elés Tesztelés Források beszerzése SVN,Git, 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 10

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 11

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 12

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 13

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 14

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 15

Főbb lépések Pre-build lépések Build-elés Tesztelés Telepítő készlet 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 16

Mit jelent? Build idő to detect integration errors as quickly as possible? folytonos integráció definíció Visszajelzés 10-15 percen belül Build folyamat legyen egy óra Minden éjjel fusson le Megoldható? Tesztelés ideje? 17

Mozilla Firefox (2010) 17 platform 12 branch forrásnak 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 18

Build folyamat Eclipse kiadások 9 óra (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. 20

Visszajelzés gyorsítása Első lépés: Profiling Lássuk, hol lassú Eredmények alapján Egyszerűsített build Build munkafolyamat Digitális aláírás nem kell mindig Tesztelés nehezebb ügy Eclipse nightly build (2009. 11.) Forrás beszerzése Digitális aláírás Director használata Update site Csomagolása Tesztelés 20 perc 1 óra 14 perc 20 perc 4 perc 30 perc 6 óra 40 perc Forrás: https://bugs.eclipse.org/bugs/show_bug.cgi?id=293830#c11 21

AUTOMATIKUS TESZTFUTTATÁS 22

Automatikus tesztelés Teszt futtatás, kiértékelés automatizálása Emberi kiértékelés lassú Hibakezelés 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) 23

Automatikus tesztelés tipikus lépései Setup Legfrissebb verzió fordítása/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 24

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

Teljes tesztelés Tesztfuttatási stratégiák Minden tesztet futtatunk Minden kiadás előtt kell Smoke tesztelés Megfelelően válogatott teszthalmaz készítése Gyengébb pontosság Lényegében alap funcionalitás ( elindul-e ) Gyorsabb futás Így lehet gyorsan visszajelezni Unit tesztek tipikusan beleférnek 26

Teljes build munkafolyamat Több lépcsős ellenőrzés Első lépés Fordítás + smoke teszt Későbbi lépések Integrációs tesztek Teljesítmény tesztek Statikus analízis Manuális tesztelés Későbbi fázis tovább tart De lehet ritkábban is futtatni 27

Integrációs teszt Hiba azonosítás Több commit hatását teszteli egyszerre Melyik okozta a hibát? Delta debugging technika Azonosítsuk a hibás teszteket Futtassuk őket újra a köztes committokon Rendezett lista -> bináris keresés működik Git verziókezelő beépítve támogatja git bisect parancs 29

Teszt futtatás nagy léptékben Nagy projektek esetén (OS, böngésző, IDE ) Tesztek futtatása 10-100-1000 gépen Jó tesztek függetlenek Tesztkészlet jól párhuzamosítható 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 30

BUILD VÉGREHAJTÓ MOTOROK 31

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 32

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

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 34

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ó 35

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 36

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

... 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" > </test> </junit> </target> <formattertype="xml"/> 38

Leíró Maven pom.xml: projekt modell 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 Magas szintű fogalomkészlet Függőségkezelés Repository, mirror repository 39

Maven életciklus és célok 40

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 41

<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 42

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! 43

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

Gradle Egyéb eszközök Groovy scriptekkel leírt build folyamat Maven repository-t érti MSBuild Microsoft build technológia Rake Ruby alapú keretrendszer 45

BUILD SZERVER ESZKÖZÖK 46

Eszközök Apache Continuum (Java) XML szerkesztés + webes UI CruiseControl (Java,.NET, Ruby) XML szerkesztés Hudson/Jenkins (Java, de kiterjeszthető) Webes UI TeamCity (Java,.NET, Ruby) Fizetős Travis CI Egyszer használatos virtuális gép a buildre GitHub integráció 47

Java szervlet alapú Hudson (Jenkins) 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 48

https://hudson.eclipse.org/hudson/ 49

Hudson munkafolyamat Trigger Pre-build Build Postbuild 50

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ő) 51

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

Hudson munkafolyamat Trigger Pre-build Build Postbuild Tényleges fordítási lépések Végrehajtó támogatás Ant Shell script Maven Bővítményekkel kb. bármi 53

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 54

Blame mail 55

Metrikák, trendek 56

Kódfedettség trendek 57

Code Review Integráció (Gerrit) 58

Egyéb metrikák (Sonar) 59

Build slave-ek További lehetőségek 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 60

GYAKORLATI TIPPEK 61

Verziókezelő rendszer Minden legyen verziókezelőben Kód Build scriptek Függőségdefiníció Adatbázisséma Ökölszabály Új fejlesztő Új gép Checkout + build működik 62

Verziókezelő rendszer Commit early, commit often Praktikusan minimum napi 1, de inkább több commit Minden commit egy funkcionális egység Commit komment! Hosszú távú kísérleti ágak Branchek a verziókezelőben Folyamatosan frissíteni fejlesztői ággal Ugyanúgy tesztelhető, mint a normál ág 63

Build job nem működik Azonnal javítani Nincs több módosítás Cél Release bármikor lehet Hibák kezelése 64

ÖSSZEFOGLALÁS 65

Bonyolult problémák Összetett folyamat Sok részlépés Teszt automatizálás Külön-külön is automatizálható Fokozatos bevezethetőség Fejlesztői és üzemeltetői ismereteket is igényel 66

Folytonos integráció Nem technológia Fejlesztési módszertan Összefoglalás Build folyamat Minimálisnál nagyobb projekt esetén kötelező Jó eszköztámogatás Nem triviális beállítani 67