• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Consigli per iniziare tdd
 

Consigli per iniziare tdd

on

  • 1,624 views

 

Statistics

Views

Total Views
1,624
Views on SlideShare
1,561
Embed Views
63

Actions

Likes
4
Downloads
0
Comments
0

4 Embeds 63

http://www.phpday.it 47
http://www.slideshare.net 14
http://www.lmodules.com 1
https://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Consigli per iniziare tdd Consigli per iniziare tdd Presentation Transcript

    • Consigli per iniziare TDD PhpDay 2010 – Corropoli (TE) Pierluigi Tassi - tassoman@gmail.com
    • Il caso: EfficaciaFP
      • Codice legacy ereditato
      • Codice procedurale
      • Coding standard non coerenti
      • Librerie self made
      • Documentazione quanto basta
      • Commenti inefficaci
    • $fun is not fun! -_-° function emptyfoo($el){ return $el; }
    • $fun is not fun! -_-° function emptyfoo($el){ return $el; } // verifico se le date vanno in formato SQL (YYYY-MM-DD) if($SQLDATE) $foo = "dataSQL"; else $foo = "emptyfoo"; //echo $foo("10/9/2007"); exit; // verifica se bisogna inserire gli slashes nei caratteri che richiedono il quoting (es: ', ", ) if($ADDSLHS) $fun = "addslashes"; else $fun = "emptyfoo";
    • $fun is not fun! -_-° function emptyfoo($el){ return $el; } // verifico se le date vanno in formato SQL (YYYY-MM-DD) if($SQLDATE) $foo = "dataSQL"; else $foo = "emptyfoo"; //echo $foo("10/9/2007"); exit; // verifica se bisogna inserire gli slashes nei caratteri che richiedono il quoting (es: ', ", ) if($ADDSLHS) $fun = "addslashes"; else $fun = "emptyfoo"; "if($ADDSLHS) $fun = "addslashes"; else $fun = "emptyfoo";" is not so fun... Let's meet at http:// phpday.it /2010 to get started with QA 3:46 PM Apr 27th via Echofon
    • I valori di eXtreme Programming
      • Comunicazione
      (tutti possono parlare con tutti, ehm sono da solo)
      • Semplicità (unit testing, d.r.y., k.i.s.s.)
      • Feedback (user story, test funzionali, test immediati)
      • Coraggio
      (si dà in uso il sistema subito e si implementano i cambiamenti) ehm è già online! http://it.wikipedia.org/wiki/Extreme_Programming
    • Test Unitari e Funzionali Assumono una condizione E controllano che sia soddisfatta Unit Testing per astrarre ogni componente Functional testing per soddisfare i comportamenti desiderati
    • Test Driven Development
      • Test Driven Development:
      • Per scrivere solo il codice necessario
      • Per assicurarsi che soddisfi i requisiti,
      • Nel tempo...
    • Consigli per iniziare TDD Ok, red , green , prima i test e poi il codice … … Ma come inizio i test , se non ho codice da testare ? E poi la console di windows è in bianco e nero!
    • L'illuminazione: The more stress you feel, the less likely you are to test enough. La quantità di stress è inversamente proporzionale alla quantità di test . (Kent Beck Test Driven Development by example, p.129)
    • DAI! DAI! DAI! Portiamocelo a casa questo test!
      • Identificare un bisogno
      • Affermarlo nel test
      • Eseguire subito il test, sbagliandolo!
      • Leggere il messaggio di errore
      • Provare a risolvere il problema
      • Eseguire nuovamente il test, e ripetere fino a quando non si ottiene OK
      • Ricominciare con un nuovo bisogno
    • testProva.php (1) <?php require_once('PHPUnit/Framework.php'); require_once('PHPUnit/Extensions/WebBrowserTestCase.php'); class ProvaTest extends PHPUnit_Framework_TestCase { public function testProva () { $this-> assert True(true, 'True is true'); } }
    • testProva.php class ProvaFunzionaleTest extends PHPUnit_Extensions_WebBrowserTestCase { public function setUp() { $this->url = 'http://www.regione.emilia-romagna.it'; } public function testProvaFunzionale () { $this->get($this->url); $this->responseContains('PER I CITTADINI'); } }
    • testWsdl.php <?php require_once('PHPUnit/Framework.php'); require_once('../Packages/RERAuthentication.php'); class WsdlTest extends PHPUnit_Framework_TestCase { public function setUp() { $this->rerAuth = new RERAuthentication; } public function testSoapExtension() { $this->assertEquals(1, SOAP_1_1); $this->assertEquals(2, SOAP_1_2); } public function testHttpsSocket() { $fp = fopen($this->rerAuth->getWsdl(), 'r'); $this->assertNotEquals(false, $fp); fclose($fp); } }
    • RERAuthentication.php <?php class RERAuthentication { protected $wsdl = 'https://www……………/Authentication.asmx?WSDL'; […] /** * Restituisce la URL WSDL del webservice Autenticazione Centralizzata Authentication * * @return string URL WSDL * */ public function getWsdl() { return $this->wsdl; }
    • cmd.exe PHPUnit 3.4.11 by Sebastian Bergmann. ................ Time: 4 seconds, Memory: 4.75Mb OK (16 tests, 33 assertions) C:ProgrammiEasyPHP5.2.10wwwefficaciaFP est>
    • Praiche di eXtreme Programming
      • Progettare con il cliente
      • Test funzionali e unitari
      • Refactoring (riscrivere il codice senza alterarne le funzionalità esterne)
      • Progettare al minimo
      • Descrivere il sistema con una metafora, anche per la descrizione formale
      • Proprietà del codice collettiva (contribuisce alla stesura chiunque sia coinvolto nel progetto)
      • Scegliere ed utilizzare un preciso standard di scrittura del codice
      • Integrare continuamente i cambiamenti al codice ;
      • Il cliente deve essere presente e disponibile a verificare (sono consigliate riunioni settimanali)
      • Open Workspace
      • 40 ore di lavoro settimanali (The Pomodoro Technique)
      • Pair Programming (due programmatori lavorano insieme su un solo computer)
      http://it.wikipedia.org/wiki/Extreme_Programming
    • Appendice: WebBrowser Extension
      • Estensione per PHPUnit per test funzionali
      • Usabile al posto di Selenium RC
      • Proxy per sfBrowser (symfony)
      • Alpha! By Francesco Trucchia [email_address] Jacopo Romei [email_address]
    • Credits ;) Documentazione
      • PHPUnit manual – Sebastian Bergmann
      • Test Driven Development by Example – Kent Beck
      Materiale occorrente
      • Ambiente di sviluppo (lamp/wamp)
      • Integrazione di PHPUnit in include_path
      • Estensione PHPUnit_WebBrowser by Francesco Trucchia – cto ideato.it
      • UNXUTILS http://sourceforge.net/projects/unxutils /