SlideShare une entreprise Scribd logo
1  sur  27
Testování v PHP Ondřej Mirtes ondrej@mirtes.cz
Proč psát testy? Nedílná součást vývoje Stálost Rychle odhalí chyby Refaktoring
„Testy někdy dopíšu.“
100% codecoverage?
Dobrý návrh aplikace Opravdové objekty (OOP) Minimum statických metod a proměnných DependencyInjection
DependencyInjection public function__construct() { $this->db = DbConnection::getInstance(); }
DependencyInjection public function__construct(IDbConnection $db) { $this->db = $db; }
PHPUnit
Instalace $ sudopearchannel-discover pear.phpunit.de $ sudopearinstallphpunit/PHPUnit $ phpunit –-version PHPUnit3.5.2by Sebastian Bergmann.
Bootstrap /myapp/tests/bootstrap.php /** načtení oblíbeného frameworku */ require_once(__DIR__. '/../libs/Nette/loader.php'); /** abstraktní třída jednotlivých testů */ require_once(__DIR__ . '/TestCase.php'); /** další nastavení... */
phpunit.xml /myapp/tests/phpunit.xml <phpunit bootstrap="bootstrap.php" colors="true" backupGlobals="false" />
TestCase /myapp/tests/TestCase.php abstractclassTestCase extendsPHPUnit_Framework_TestCase { }
První test /myapp/tests/Stack/StackTest.php classStackTestextendsTestCase { public functiontestInitialStackIsEmpty()   { $stack= newStack; $this->assertEquals(0, count($stack->items));   } }
Implementace /myapp/Stack/Stack.php classStack { private$items = array(); public functiongetItems()   { return$this->items;   } }
Spuštění testů /myapp/tests/ $ phpunit . PHPUnit 3.5.2 by Sebastian Bergmann. . Time: 0 seconds, Memory: 4.00Mb OK (1 test, 1 assertion)
Spuštění testů /myapp/tests/ $ phpunit –-testdox . StackTest  [x] Initialstackisempty
Vložení prvku /myapp/tests/Stack/StackTest.php public functiontestPushedItemIsInTheStack() { $stack= newStack; $stack->push(5); $this->assertContains(5, $stack->getItems()); }
Vložení prvku /myapp/tests/ $ phpunit –-testdox . StackTest  [x] Initialstackisempty  [ ] Pusheditemis in thestack
Vložení prvku /myapp/Stack/Stack.php public functionpush($item) { $this->items[] = $item; }
Vložení prvku /myapp/tests/ $ phpunit –-testdox . StackTest  [x] Initialstackisempty  [x] Pusheditemis in thestack
Výběr prvku /myapp/tests/Stack/StackTest.php public functiontestPoppedItemIsReturned() { $stack= newStack; $stack->push(5); $this->assertEquals(5, $stack->pop()); $this->assertNotContains(5, $stack->getItems()); }
Podtečení zásobníku /myapp/tests/Stack/StackTest.php /**  * @expectedExceptionStackUnderflowException  */ public functiontestStackCannotBeUnderflowed() { $stack= newStack; $stack->pop(); }
Další asserty assertNull assertSame assertGreaterThan assertType assertInstanceOf assertRegexp assertThat
setUp() & tearDown() classStackTestextendsTestCase { private$stack; protectedfunctionsetUp()   { $this->stack = newStack; } public functiontestInitialStackIsEmpty()  {     $this->assertEquals(0, count($this->stack->getItems()));   }   public functiontestPushedItemIsInTheStack()   {    $this->stack->push(5);     $this->assertContains(5, $this->stack->getItems());   } }
Další vlastnosti markTestSkipped() getMock() --coverage-html Propojení s ContinuousIntegration
Otázky?
Díky za pozornost!

Contenu connexe

Similaire à Testování v PHP

Zend Framework 2.0 (ZFMeetup Praha 3.11.2011)
Zend Framework 2.0 (ZFMeetup Praha 3.11.2011)Zend Framework 2.0 (ZFMeetup Praha 3.11.2011)
Zend Framework 2.0 (ZFMeetup Praha 3.11.2011)Martin Hujer
 
Technologie užívané při vývoji velkých e-shopů
Technologie užívané při vývoji velkých e-shopůTechnologie užívané při vývoji velkých e-shopů
Technologie užívané při vývoji velkých e-shopůPeckaDesign.cz
 
Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi
Lex Vjatkin + Ondřej procházka: Jak to děláme ve WikidiLex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi
Lex Vjatkin + Ondřej procházka: Jak to děláme ve WikidiDevelcz
 
atoto.cz - jak na snadnou integraci Codeception
atoto.cz - jak na snadnou integraci Codeceptionatoto.cz - jak na snadnou integraci Codeception
atoto.cz - jak na snadnou integraci Codeceptionatotocz
 
20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitně20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitněJiří Mareš
 
Seminar Nastroje Jednotk Testovani
Seminar Nastroje Jednotk TestovaniSeminar Nastroje Jednotk Testovani
Seminar Nastroje Jednotk TestovaniJakub Holy
 
Představení Ruby on Rails
Představení Ruby on RailsPředstavení Ruby on Rails
Představení Ruby on Railsigloonet
 
Vizuální regresní testy
Vizuální regresní testyVizuální regresní testy
Vizuální regresní testyMartin Krištof
 
Proč chcete testovat své aplikace
Proč chcete testovat své aplikaceProč chcete testovat své aplikace
Proč chcete testovat své aplikaceatotocz
 
WordCamp Bratislava 2017 - Martin Hlaváč
WordCamp Bratislava 2017 - Martin HlaváčWordCamp Bratislava 2017 - Martin Hlaváč
WordCamp Bratislava 2017 - Martin HlaváčBrilo Team
 
Optimalizace Symfony na devu
 Optimalizace Symfony na devu Optimalizace Symfony na devu
Optimalizace Symfony na devuVašek Purchart
 
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)Péhápkaři
 
06 prez10(tvorba webu)
06 prez10(tvorba webu)06 prez10(tvorba webu)
06 prez10(tvorba webu)olc_user
 
Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...
Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...
Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...Michal Špaček
 
Trendy a nové možnosti test automation
Trendy a nové možnosti test automationTrendy a nové možnosti test automation
Trendy a nové možnosti test automationOndřej Machulda
 
Nette framework - How to compile an extensible di container
Nette framework - How to compile an extensible di containerNette framework - How to compile an extensible di container
Nette framework - How to compile an extensible di containerFilip Procházka
 
Deployment PHP aplikací | WebExpo 2011
Deployment PHP aplikací | WebExpo 2011Deployment PHP aplikací | WebExpo 2011
Deployment PHP aplikací | WebExpo 2011Jan Mittner
 

Similaire à Testování v PHP (20)

Zend Framework 2.0 (ZFMeetup Praha 3.11.2011)
Zend Framework 2.0 (ZFMeetup Praha 3.11.2011)Zend Framework 2.0 (ZFMeetup Praha 3.11.2011)
Zend Framework 2.0 (ZFMeetup Praha 3.11.2011)
 
Technologie užívané při vývoji velkých e-shopů
Technologie užívané při vývoji velkých e-shopůTechnologie užívané při vývoji velkých e-shopů
Technologie užívané při vývoji velkých e-shopů
 
Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi
Lex Vjatkin + Ondřej procházka: Jak to děláme ve WikidiLex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi
Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi
 
atoto.cz - jak na snadnou integraci Codeception
atoto.cz - jak na snadnou integraci Codeceptionatoto.cz - jak na snadnou integraci Codeception
atoto.cz - jak na snadnou integraci Codeception
 
20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitně20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitně
 
Seminar Nastroje Jednotk Testovani
Seminar Nastroje Jednotk TestovaniSeminar Nastroje Jednotk Testovani
Seminar Nastroje Jednotk Testovani
 
Představení Ruby on Rails
Představení Ruby on RailsPředstavení Ruby on Rails
Představení Ruby on Rails
 
Vizuální regresní testy
Vizuální regresní testyVizuální regresní testy
Vizuální regresní testy
 
Proč chcete testovat své aplikace
Proč chcete testovat své aplikaceProč chcete testovat své aplikace
Proč chcete testovat své aplikace
 
WordCamp Bratislava 2017 - Martin Hlaváč
WordCamp Bratislava 2017 - Martin HlaváčWordCamp Bratislava 2017 - Martin Hlaváč
WordCamp Bratislava 2017 - Martin Hlaváč
 
Optimalizace Symfony na devu
 Optimalizace Symfony na devu Optimalizace Symfony na devu
Optimalizace Symfony na devu
 
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
 
06 prez10(tvorba webu)
06 prez10(tvorba webu)06 prez10(tvorba webu)
06 prez10(tvorba webu)
 
Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...
Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...
Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...
 
Trendy a nové možnosti test automation
Trendy a nové možnosti test automationTrendy a nové možnosti test automation
Trendy a nové možnosti test automation
 
Nette framework - How to compile an extensible di container
Nette framework - How to compile an extensible di containerNette framework - How to compile an extensible di container
Nette framework - How to compile an extensible di container
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
 
TNPW2-2011-03
TNPW2-2011-03TNPW2-2011-03
TNPW2-2011-03
 
Deployment PHP aplikací | WebExpo 2011
Deployment PHP aplikací | WebExpo 2011Deployment PHP aplikací | WebExpo 2011
Deployment PHP aplikací | WebExpo 2011
 
Deployment prakticky
Deployment praktickyDeployment prakticky
Deployment prakticky
 

Testování v PHP