SlideShare a Scribd company logo
1 of 36
Download to read offline
Teszt alapú fejlesztés,[object Object],Simon Bence,[object Object],Duodecad, 2010-09-28,[object Object]
Miről lesz ma szó?,[object Object],Miért fontos a tesztelés,[object Object],Mi is az alapprobléma?,[object Object],Hogyan tesztelünk?,[object Object],Hogyan teszteljünk?,[object Object],Egységtesztek,[object Object],További lehetőségek,[object Object]
A Microsoft Zune új éve,[object Object],2008 szilveszter,[object Object],30GB Zune,[object Object],Mind meghalt,[object Object],Dátumkezelés bug,[object Object]
Air-TrafficControl System, LA Airport,[object Object],1994 szeptember 9,[object Object],Kapcsolatvesztés,[object Object],Több, mint 400 repülő,[object Object]
Az Ariane 5 felrobbanása,[object Object],1995,[object Object],36 másodpercet repült,[object Object],Hibás int kezelés,[object Object],Több, mint 500m USD kár,[object Object]
És velünk mi történhet…,[object Object]
Akkor mekkora is lehet a hiba?,[object Object]
Defektus/KLOC,[object Object],Vállalati standard: 15-50/1000,[object Object],Microsoft standard: 10-20/1000,[object Object],Space-shuttle software: 0/500.000,[object Object],Nálunk vajon mennyi?,[object Object]
A probléma megfogalmazása,[object Object],A komplex munka minden esetben hibával jár,[object Object],A hibák számát és hatását minimalizálni kell,[object Object],Költséghatékonyság,[object Object],Minden fázisban megfelelő „védekező mechanizmusok”,[object Object],Üzleti tervezés,[object Object],Technikai tervezés,[object Object],Fejlesztés,[object Object],Minőség-ellenőrzés,[object Object],ThxTyrael,[object Object]
Célunk,[object Object],	A szoftverminőség biztosítása, és az erőforrás-ráfordítás minimalizálása az egész életciklusra nézve.,[object Object]
Mit tehet a fejlesztő?,[object Object],Tervezés,[object Object],Implementálás,[object Object],Ellenőrzés,[object Object],Tesztelés,[object Object],Karbantartás,[object Object]
Tervezés,[object Object],[object Object]
Megfelelő specifikálás
Elvárt működés
Tesztelhetőségi feltételekMegfelelő struktúra,[object Object],Static hívások kerülése,[object Object],Dependencyinjection,[object Object]
Ellenőrzés,[object Object],Kódolás és tesztelés közti fázis,[object Object],Indirekt,[object Object],Csökkenti a tesztelés-javítás fázis idejét,[object Object],Codereview!,[object Object],Építő jellegű kritika,[object Object]
Tesztelés,[object Object],Adott rendszer adott körülmények között az elvártaknak megfelelően reagál e.,[object Object]
Mi a tesztelés,[object Object],A szoftvertesztelés a szoftverminőség-biztosítás és így a szoftverfejlesztés részétképezi. A tesztelés egy rendszer vagy program kontrollált körülmények melletti futtatása, és az eredmények kiértékelése. A hagyományos megközelítés szerint a tesztelés célja az, hogy a fejlesztés során létrejövő hibákat minél korábban felfedezze, és ezzel csökkentse azok kijavításának költségeit.,[object Object],- Wikipedia,[object Object]
Hibajavítás költsége,[object Object]
Hogy csináljuk tehát ezt most?,[object Object]
Kőkor,[object Object],Mi az, amit most csinálunk?,[object Object],Lefuttatjuk,[object Object],echo, var_dump, trigger_error,[object Object],debug() függvény,[object Object],Problémák,[object Object],Ad hoc,[object Object],Módosítások a kódban (korrumpálhat),[object Object],Nehezen kezelhető,[object Object],Kézzel kell futtatni a bemeneteket,[object Object]
Alapelvek,[object Object],Megismételhetőség,[object Object],Kiszámíthatóság,[object Object],Tervezettség,[object Object],Kicsitől a nagy fele (bottom-up),[object Object],Pareto-elv (80/20),[object Object]
Tesztek csoportosítása I,[object Object],Transzparensség,[object Object],Blackbox,[object Object],Whitebox,[object Object],Scope,[object Object],Egységteszt,[object Object],Integrációs teszt,[object Object],Rendszer teszt,[object Object],Rendszer integrációs teszt,[object Object]
Tesztek csoportosítása II,[object Object],Funkcionalitás,[object Object],Funkcionális,[object Object],Nem funkcionális,[object Object],Felelős,[object Object],Fejlesztő (Kivitelező),[object Object],Tesztelő,[object Object],Igénylő,[object Object],Harmadik személy (pl. felhasználó),[object Object]
A teljesség igénye nélkül,[object Object],Verifikációs teszt (a terméket jól készítettük e el?),[object Object],Validációs teszt (a megfelelő terméket készítettük e el?),[object Object],Elfogadási teszt,[object Object],Terhelés teszt,[object Object],Biztonsági teszt,[object Object],Kódminőségi tesztek,[object Object],Modul/Egységteszt,[object Object],Scenario alapú tesztelés,[object Object],GUI tesztelés,[object Object],Selenium,[object Object],Komplex állapotterek problémája,[object Object]
Mai elsődleges fókuszunk,[object Object],Egységteszt,[object Object],Whitebox,[object Object],Egység,[object Object],Funkcionális,[object Object],Fejlesztői,[object Object],Jellemzői,[object Object],Általános elveknek való megfelelés,[object Object],Egyszerűen írható és futtatható,[object Object],A legkisebb egység (osztály) funkcionális vizsgálata,[object Object],Alapelv,[object Object],Ha a részek hibásak, az egész sem lehet megfelelő,[object Object]
PHP Unit test framerok-ök listája,[object Object],PHPUnit,[object Object],Testilence,[object Object],PHPSpec,[object Object],BehaviorDrivenDevelopment,[object Object],Lime ,[object Object],Symfony,[object Object],Apache-Test,[object Object],Ojes,[object Object],DocumentationDriven Testing,[object Object],SimpleTest,[object Object],nem élő fejlesztés,[object Object],SnapTest,[object Object],nem élő fejlesztés,[object Object],Amock,[object Object],nem élő fejlesztés,[object Object]
PHPUnit,[object Object],Sebastian Bergmann,[object Object],thePHP.cc,[object Object],XUnit család,[object Object],JUnit-ból,[object Object],3.4-es verzió,[object Object],PHP5,[object Object],PEAR-ből installálható,[object Object],De facto PHP szabvány,[object Object],Kitünőmanual,[object Object]
Funkcionális tesztelés,[object Object],<?php$fixture = array();echo count($fixture) == 0 ? ’ok’ : ’not ok’; $fixture[] = ’element’;echo count($fixture) == 1 ? ’ok’ : ’not ok’;,[object Object],A példák a PHPUnitmanualból vannak,[object Object]
Assert-ek,[object Object],assertArrayHasKey(),[object Object],assertClassHasAttribute(),[object Object],assertClassHasStaticAttribute(),[object Object],assertContains(),[object Object],assertContainsOnly(),[object Object],assertEqualXMLStructure(),[object Object],assertEquals(),[object Object],assertFalse(),[object Object],assertFileEquals(),[object Object],assertFileExists(),[object Object],assertGreaterThan(),[object Object],assertGreaterThanOrEqual(),[object Object],assertLessThan(),[object Object],assertLessThanOrEqual(),[object Object],assertNull(),[object Object],assertObjectHasAttribute(),[object Object],assertRegExp(),[object Object],assertSame(),[object Object],assertSelectCount(),[object Object],assertSelectEquals(),[object Object],assertSelectRegExp(),[object Object],assertStringEndsWith(),[object Object],assertStringEqualsFile(),[object Object],assertStringStartsWith(),[object Object],assertTag(),[object Object],assertThat(),[object Object],assertTrue(),[object Object],assertType(),[object Object],assertXmlFileEqualsXmlFile(),[object Object],assertXmlStringEqualsXmlFile(),[object Object],assertXmlStringEqualsXmlString(),[object Object]
Assert-ek alkalmazása,[object Object],<?php$fixture = array();assertTrue(count($fixture) == 0); $fixture[] = 'element';assertTrue(count($fixture) == 1); function assertTrue($condition){    if (!$condition) {        throw new Exception(’Assertion failed!’);    }},[object Object]
Első unittest-ünk,[object Object],<?phprequire_once ’PHPUnit/Framework.php’; class StackTest extends PHPUnit_Framework_TestCase{    public function testPushAndPop()    {        $stack = array();        $this->assertEquals(0, count($stack));         array_push($stack, ’foo’);        $this->assertEquals(’foo’, $stack[count($stack)-1]);        $this->assertEquals(1, count($stack));         $this->assertEquals(’foo’, array_pop($stack));        $this->assertEquals(0, count($stack));    }},[object Object]
Osztályok tesztelése – az osztály,[object Object],<?php,[object Object],classMy_FleetimplementsCountable,[object Object],{,[object Object],protected$ships = array();,[object Object],publicfunctionaddShip($shipName),[object Object],{,[object Object],$this->ships[] = $shipName;,[object Object],},[object Object],publicfunctioncount(),[object Object],{,[object Object],returncount($this->ships);,[object Object],},[object Object],publicfunctiongetShip($index),[object Object],{,[object Object],return$this->ships[intval($index)];,[object Object],},[object Object],},[object Object],A példa a ZendDevzone-ről származik,[object Object]
Osztályok tesztelése – a teszt,[object Object],<?php,[object Object],require_once'PHPUnit/Framework.php';,[object Object],require_once'My/Fleet.php';,[object Object],classMyFleetTestextendsPHPUnit_Framework_TestCase,[object Object],{,[object Object],protected$fleet= null;,[object Object],publicfunctionsetUp(),[object Object],{,[object Object],$this->fleet= newMy_Fleet;,[object Object],},[object Object],publicfunctiontearDown(),[object Object],{,[object Object],unset($this->fleet);,[object Object],},[object Object],publicfunctiontestShouldNotHaveAnyShipsYetInIntitialState(),[object Object],{,[object Object],$this->assertEquals(0, count($this->fleet));,[object Object],},[object Object],publicfunctiontestAddingAShipWillIncrementCountByOne(),[object Object],{,[object Object],$this->fleet->addShip('USS Enterprise');,[object Object],$this->assertEquals(1, count($this->fleet));,[object Object],},[object Object],	// …,[object Object],},[object Object]
Mocking és Stub-ok,[object Object],<?php,[object Object],require_once 'SomeClass.php'; class StubTest extends PHPUnit_Framework_TestCase{    public function testStub()    {        // Create a stub for the SomeClass class.        $stub = $this->getMock('SomeClass');         // Configure the stub.        $stub->expects($this->any())             ->method('doSomething')             ->will($this->returnValue('foo'));         // Calling $stub->doSomething() will now return        // 'foo'.        $this->assertEquals('foo', $stub->doSomething());    }},[object Object]
Hova tovább,[object Object],Teszteléselmélet,[object Object],Formális módszerek,[object Object],Phing,[object Object],ContiniousIntegration,[object Object],Hudson,[object Object],PHPUnderControl,[object Object],TDD,[object Object]

More Related Content

Similar to Teszt alapú fejlesztés

IV. Elmélet - Az ERP rendszerek implementációja 2..pptx
IV. Elmélet - Az ERP rendszerek implementációja 2..pptxIV. Elmélet - Az ERP rendszerek implementációja 2..pptx
IV. Elmélet - Az ERP rendszerek implementációja 2..pptxSzabolcs Gulyás
 
Hogyan segítenek a felhasználók mobil appot fejleszteni? A crowdtestingről rö...
Hogyan segítenek a felhasználók mobil appot fejleszteni? A crowdtestingről rö...Hogyan segítenek a felhasználók mobil appot fejleszteni? A crowdtestingről rö...
Hogyan segítenek a felhasználók mobil appot fejleszteni? A crowdtestingről rö...Balázs Fónagy
 
Opel szentgotthard nem_ertekteremto_munka_csokkentese
Opel szentgotthard nem_ertekteremto_munka_csokkenteseOpel szentgotthard nem_ertekteremto_munka_csokkentese
Opel szentgotthard nem_ertekteremto_munka_csokkenteseLászló Tömpe
 
Szoftver bevezetés problémái
Szoftver bevezetés problémáiSzoftver bevezetés problémái
Szoftver bevezetés problémáitbodocz
 
Funkcionális tesztelés támogatása UFT tesztautomatizálással
Funkcionális tesztelés támogatása UFT tesztautomatizálássalFunkcionális tesztelés támogatása UFT tesztautomatizálással
Funkcionális tesztelés támogatása UFT tesztautomatizálássalGergő Hencz
 
Hogyan segítenek a felhasználók mobil appot fejleszteni? A crowdtesting röviden.
Hogyan segítenek a felhasználók mobil appot fejleszteni? A crowdtesting röviden.Hogyan segítenek a felhasználók mobil appot fejleszteni? A crowdtesting röviden.
Hogyan segítenek a felhasználók mobil appot fejleszteni? A crowdtesting röviden.Balázs Fónagy
 
Biztonságos Programozás
Biztonságos ProgramozásBiztonságos Programozás
Biztonságos ProgramozásPeter Perger
 
Tóth Lajos - Személyes élmények az ITIL bevezetésével
Tóth Lajos - Személyes élmények az ITIL bevezetésévelTóth Lajos - Személyes élmények az ITIL bevezetésével
Tóth Lajos - Személyes élmények az ITIL bevezetésévelInformatikai Intézet
 
Szoftverfejlesztés a repülőgépiparban
Szoftverfejlesztés a repülőgépiparbanSzoftverfejlesztés a repülőgépiparban
Szoftverfejlesztés a repülőgépiparbanÁkos Horváth
 
Forráskódtárak gráfalapú statikus analízise
Forráskódtárak gráfalapú statikus analíziseForráskódtárak gráfalapú statikus analízise
Forráskódtárak gráfalapú statikus analíziseDániel Stein
 
Modell alapú tesztelés: célok és lehetőségek
Modell alapú tesztelés: célok és lehetőségekModell alapú tesztelés: célok és lehetőségek
Modell alapú tesztelés: célok és lehetőségekZoltan Micskei
 
VI. Elmélet - Kitekintés az ERP-n túlra .pptx
VI. Elmélet - Kitekintés az ERP-n túlra .pptxVI. Elmélet - Kitekintés az ERP-n túlra .pptx
VI. Elmélet - Kitekintés az ERP-n túlra .pptxSzabolcs Gulyás
 
III. Elmélet - Az ERP rendszerek implementációja 1..pptx
III. Elmélet - Az ERP rendszerek implementációja 1..pptxIII. Elmélet - Az ERP rendszerek implementációja 1..pptx
III. Elmélet - Az ERP rendszerek implementációja 1..pptxSzabolcs Gulyás
 
Virtuális Platformváltás validált környezetben
Virtuális Platformváltás validált környezetbenVirtuális Platformváltás validált környezetben
Virtuális Platformváltás validált környezetbengazdagf
 
Süllyedünk! Ütközés a tesztelési jégheggyel (Teszt & Tea Meeup Budapest, 2018...
Süllyedünk! Ütközés a tesztelési jégheggyel (Teszt & Tea Meeup Budapest, 2018...Süllyedünk! Ütközés a tesztelési jégheggyel (Teszt & Tea Meeup Budapest, 2018...
Süllyedünk! Ütközés a tesztelési jégheggyel (Teszt & Tea Meeup Budapest, 2018...Gáspár Nagy
 
Agile meetup 2013_04_10
Agile meetup 2013_04_10Agile meetup 2013_04_10
Agile meetup 2013_04_10Gábor Fehér
 
Dr. Kollár Csaba: Az informatika(i biztonság) mutatószámai
Dr. Kollár Csaba: Az informatika(i biztonság) mutatószámai Dr. Kollár Csaba: Az informatika(i biztonság) mutatószámai
Dr. Kollár Csaba: Az informatika(i biztonság) mutatószámai Csaba KOLLAR (Dr. PhD.)
 
Objektum-orinetált mérések a gyakorlatban
Objektum-orinetált mérések a gyakorlatbanObjektum-orinetált mérések a gyakorlatban
Objektum-orinetált mérések a gyakorlatbanAntal Orcsik
 

Similar to Teszt alapú fejlesztés (20)

IV. Elmélet - Az ERP rendszerek implementációja 2..pptx
IV. Elmélet - Az ERP rendszerek implementációja 2..pptxIV. Elmélet - Az ERP rendszerek implementációja 2..pptx
IV. Elmélet - Az ERP rendszerek implementációja 2..pptx
 
Hogyan segítenek a felhasználók mobil appot fejleszteni? A crowdtestingről rö...
Hogyan segítenek a felhasználók mobil appot fejleszteni? A crowdtestingről rö...Hogyan segítenek a felhasználók mobil appot fejleszteni? A crowdtestingről rö...
Hogyan segítenek a felhasználók mobil appot fejleszteni? A crowdtestingről rö...
 
Opel szentgotthard nem_ertekteremto_munka_csokkentese
Opel szentgotthard nem_ertekteremto_munka_csokkenteseOpel szentgotthard nem_ertekteremto_munka_csokkentese
Opel szentgotthard nem_ertekteremto_munka_csokkentese
 
Szoftver bevezetés problémái
Szoftver bevezetés problémáiSzoftver bevezetés problémái
Szoftver bevezetés problémái
 
Funkcionális tesztelés támogatása UFT tesztautomatizálással
Funkcionális tesztelés támogatása UFT tesztautomatizálássalFunkcionális tesztelés támogatása UFT tesztautomatizálással
Funkcionális tesztelés támogatása UFT tesztautomatizálással
 
Hogyan segítenek a felhasználók mobil appot fejleszteni? A crowdtesting röviden.
Hogyan segítenek a felhasználók mobil appot fejleszteni? A crowdtesting röviden.Hogyan segítenek a felhasználók mobil appot fejleszteni? A crowdtesting röviden.
Hogyan segítenek a felhasználók mobil appot fejleszteni? A crowdtesting röviden.
 
Biztonságos Programozás
Biztonságos ProgramozásBiztonságos Programozás
Biztonságos Programozás
 
Tóth Lajos - Személyes élmények az ITIL bevezetésével
Tóth Lajos - Személyes élmények az ITIL bevezetésévelTóth Lajos - Személyes élmények az ITIL bevezetésével
Tóth Lajos - Személyes élmények az ITIL bevezetésével
 
Szoftverfejlesztés a repülőgépiparban
Szoftverfejlesztés a repülőgépiparbanSzoftverfejlesztés a repülőgépiparban
Szoftverfejlesztés a repülőgépiparban
 
Forráskódtárak gráfalapú statikus analízise
Forráskódtárak gráfalapú statikus analíziseForráskódtárak gráfalapú statikus analízise
Forráskódtárak gráfalapú statikus analízise
 
Modell alapú tesztelés: célok és lehetőségek
Modell alapú tesztelés: célok és lehetőségekModell alapú tesztelés: célok és lehetőségek
Modell alapú tesztelés: célok és lehetőségek
 
Szoftver tesztelés
Szoftver tesztelésSzoftver tesztelés
Szoftver tesztelés
 
VI. Elmélet - Kitekintés az ERP-n túlra .pptx
VI. Elmélet - Kitekintés az ERP-n túlra .pptxVI. Elmélet - Kitekintés az ERP-n túlra .pptx
VI. Elmélet - Kitekintés az ERP-n túlra .pptx
 
A jövő IT világa
A jövő IT világaA jövő IT világa
A jövő IT világa
 
III. Elmélet - Az ERP rendszerek implementációja 1..pptx
III. Elmélet - Az ERP rendszerek implementációja 1..pptxIII. Elmélet - Az ERP rendszerek implementációja 1..pptx
III. Elmélet - Az ERP rendszerek implementációja 1..pptx
 
Virtuális Platformváltás validált környezetben
Virtuális Platformváltás validált környezetbenVirtuális Platformváltás validált környezetben
Virtuális Platformváltás validált környezetben
 
Süllyedünk! Ütközés a tesztelési jégheggyel (Teszt & Tea Meeup Budapest, 2018...
Süllyedünk! Ütközés a tesztelési jégheggyel (Teszt & Tea Meeup Budapest, 2018...Süllyedünk! Ütközés a tesztelési jégheggyel (Teszt & Tea Meeup Budapest, 2018...
Süllyedünk! Ütközés a tesztelési jégheggyel (Teszt & Tea Meeup Budapest, 2018...
 
Agile meetup 2013_04_10
Agile meetup 2013_04_10Agile meetup 2013_04_10
Agile meetup 2013_04_10
 
Dr. Kollár Csaba: Az informatika(i biztonság) mutatószámai
Dr. Kollár Csaba: Az informatika(i biztonság) mutatószámai Dr. Kollár Csaba: Az informatika(i biztonság) mutatószámai
Dr. Kollár Csaba: Az informatika(i biztonság) mutatószámai
 
Objektum-orinetált mérések a gyakorlatban
Objektum-orinetált mérések a gyakorlatbanObjektum-orinetált mérések a gyakorlatban
Objektum-orinetált mérések a gyakorlatban
 

Teszt alapú fejlesztés