9. A probléma megfogalmazása A komplex munka minden esetben hibával jár A hibák számát és hatását minimalizálni kell Költséghatékonyság Minden fázisban megfelelő „védekező mechanizmusok” Üzleti tervezés Technikai tervezés Fejlesztés Minőség-ellenőrzés ThxTyrael
10. Célunk 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.
11. Mit tehet a fejlesztő? Tervezés Implementálás Ellenőrzés Tesztelés Karbantartás
18. Mi a tesztelés 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. - Wikipedia
21. Kőkor Mi az, amit most csinálunk? Lefuttatjuk echo, var_dump, trigger_error debug() függvény Problémák Ad hoc Módosítások a kódban (korrumpálhat) Nehezen kezelhető Kézzel kell futtatni a bemeneteket
23. Tesztek csoportosítása I Transzparensség Blackbox Whitebox Scope Egységteszt Integrációs teszt Rendszer teszt Rendszer integrációs teszt
24. Tesztek csoportosítása II Funkcionalitás Funkcionális Nem funkcionális Felelős Fejlesztő (Kivitelező) Tesztelő Igénylő Harmadik személy (pl. felhasználó)
25. A teljesség igénye nélkül Verifikációs teszt (a terméket jól készítettük e el?) Validációs teszt (a megfelelő terméket készítettük e el?) Elfogadási teszt Terhelés teszt Biztonsági teszt Kódminőségi tesztek Modul/Egységteszt Scenario alapú tesztelés GUI tesztelés Selenium Komplex állapotterek problémája
26. Mai elsődleges fókuszunk Egységteszt Whitebox Egység Funkcionális Fejlesztői Jellemzői Általános elveknek való megfelelés Egyszerűen írható és futtatható A legkisebb egység (osztály) funkcionális vizsgálata Alapelv Ha a részek hibásak, az egész sem lehet megfelelő
27. PHP Unit test framerok-ök listája PHPUnit Testilence PHPSpec BehaviorDrivenDevelopment Lime Symfony Apache-Test Ojes DocumentationDriven Testing SimpleTest nem élő fejlesztés SnapTest nem élő fejlesztés Amock nem élő fejlesztés
28. PHPUnit Sebastian Bergmann thePHP.cc XUnit család JUnit-ból 3.4-es verzió PHP5 PEAR-ből installálható De facto PHP szabvány Kitünőmanual
35. Mocking és Stub-ok <?php 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()); }}
37. Tipikus Problémák Nem megfelelő erőforrás-ráfordítás Túl kevés Túl sok Lefedettség Rejtett hibák Immunissá válás Többszörös hiba Kontextus függőség