Slide 1

Slide 1 text

Intro  to  PHP  Integra,on  Tes,ng   A  rapid  guide  to  ge4ng  started  with   Selenium  and  PHPUnit   Jacob  Mather   @thejmather  

Slide 2

Slide 2 text

Why  We  Don’t  Test   Even  though  we  know  we  should…   Jacob  Mather   @thejmather  

Slide 3

Slide 3 text

Why  We  Don’t  Test   •  We  don’t  know  about  the  tools   •  We  don’t  understand  the  philosophy   •  We  don’t  think  we  have  the  ,me     Jacob  Mather   @thejmather  

Slide 4

Slide 4 text

Why  We  Don’t  Test   •  We  don’t  know  about  the  tools   •  We  don’t  understand  the  philosophy   •  We  don’t  think  we  have  the  ,me     Jacob  Mather   @thejmather  

Slide 5

Slide 5 text

Why  We  Don’t  Test   •  We  don’t  know  about  the  tools   •  We  don’t  understand  the  philosophy   •  We  don’t  think  we  have  the  ,me     Jacob  Mather   @thejmather  

Slide 6

Slide 6 text

Why  We  Don’t  Test   •  We  don’t  know  about  the  tools   •  We  don’t  understand  the  philosophy   •  We  don’t  think  we  have  the  ,me     Jacob  Mather   @thejmather  

Slide 7

Slide 7 text

Why  We  Don’t  Test   We  don’t  know  how.   Jacob  Mather   @thejmather  

Slide 8

Slide 8 text

Ge4ng  Started   Jacob  Mather   @thejmather  

Slide 9

Slide 9 text

Picking  A  Test  Type     Unit  Tests   Integra,on  Tests   Jacob  Mather   @thejmather  

Slide 10

Slide 10 text

Picking  A  Test  Type     Unit  Tests   Integra,on  Tests   Jacob  Mather   @thejmather  

Slide 11

Slide 11 text

Picking  A  Test  Type     Unit  Tests   Integra,on  Tests   Jacob  Mather   @thejmather  

Slide 12

Slide 12 text

Picking  A  Test  Tool     phpspec2   Behat   PHPUnit   Jacob  Mather   @thejmather  

Slide 13

Slide 13 text

Picking  A  Test  Tool     phpspec2   Behat   PHPUnit   Jacob  Mather   @thejmather  

Slide 14

Slide 14 text

Picking  A  Test  Tool     phpspec2   Behat   PHPUnit   Jacob  Mather   @thejmather  

Slide 15

Slide 15 text

Picking  A  Test  Tool     phpspec2   Behat   PHPUnit   Jacob  Mather   @thejmather  

Slide 16

Slide 16 text

Test  Types  &  Tools   Unit  Tests   Func,onal  Tests   phpspec2   X   X   Behat   X   X   PHPUnit   X   X   Jacob  Mather   @thejmather  

Slide 17

Slide 17 text

Installing  PHPUnit   Jacob  Mather   @thejmather  

Slide 18

Slide 18 text

Installing  PHPUnit   Jacob  Mather   @thejmather  

Slide 19

Slide 19 text

Installing  PHPUnit   File:  composer.json   {    “require-­‐dev”:  {      “phpunit/phpunit”:  “3.7.*”    },    “config”:  {      “bin-­‐dir”:  “bin”    }   }   Jacob  Mather   @thejmather  

Slide 20

Slide 20 text

Installing  PHPUnit  +  Selenium  Tools   File:  composer.json   {    “require-­‐dev”:  {      “phpunit/phpunit-­‐selenium”:  “*”    },    “config”:  {      “bin-­‐dir”:  “bin”    }   }   Jacob  Mather   @thejmather  

Slide 21

Slide 21 text

Installing  PHPUnit  +  Selenium  Tools  

Slide 22

Slide 22 text

Installing  Selenium  Server   For  more  informa,on,  visit:   h_p://seleniumhq.org/download/  

Slide 23

Slide 23 text

Configuring  PHPUnit   File:  phpunit.xml.dist                                  tests/                     Jacob  Mather   @thejmather  

Slide 24

Slide 24 text

Pre-­‐Flight  Check   Jacob  Mather   @thejmather  

Slide 25

Slide 25 text

Our  First  Test   File:  tests/ExampleTest.php  

Slide 26

Slide 26 text

Our  First  Test   File:  tests/ExampleTest.php   setBrowser('*firefox');                  $this-­‐>setBrowserUrl('h_p://jmather.com/');          }   }       Jacob  Mather   @thejmather  

Slide 27

Slide 27 text

Our  First  Test   File:  tests/ExampleTest.php   url('/');    $,tle  =  “It’s  Majax”;                  $this-­‐>assertEquals($,tle,  $this-­‐>,tle());          }   }       Jacob  Mather   @thejmather  

Slide 28

Slide 28 text

Our  First  Test   File:  tests/ExampleTest.php   url('/');                  $this-­‐>byXPath('//div[@class=”widget_categories"]/a[text()  =  ”PHP"]')-­‐>click();                  $,tle  =  “PHP|  It’s  Majax”;                  $this-­‐>assertEquals($,tle,  $this-­‐>,tle());          }   }       Jacob  Mather   @thejmather  

Slide 29

Slide 29 text

Our  First  Test   File:  tests/ExampleTest.php   setBrowser($this-­‐>browser);                  $this-­‐>setBrowserUrl('h_p://jmather.com/');          }            public  func,on  testTitle()  {  /*  …  */  }          public  func,on  testSomeNaviga,on()  {  /*  …  */  }   }    

Slide 30

Slide 30 text

File:  tests/ExampleTest.php   setBrowser($this-­‐>browser);                  $this-­‐>setBrowserUrl('h_p://jmather.com/');          }            public  func,on  testTitle()          {                  $this-­‐>url('/');                  $,tle  =  “PHP|  It’s  Majax”;                  $this-­‐>assertEquals($,tle,  $this-­‐>,tle());          }            public  func,on  testSomeNaviga,on()          {                  $this-­‐>url('/');                  $this-­‐>byXPath('//div[@class=”widget_categories"]/a[text()  =  ”PHP"]')-­‐>click();                  $,tle  =  “PHP|  It’s  Majax”;                  $this-­‐>assertEquals($,tle,  $this-­‐>,tle());          }   }   Jacob  Mather   @thejmather  

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

Our  Second  Test   File:  tests/ChromeExampleTest.php  

Slide 33

Slide 33 text

Our  Second  Test   File:  tests/ChromeExampleTest.php   setBrowser($this-­‐>browser);                  $this-­‐>setBrowserUrl('h_p://jmather.com/');          }   }       Jacob  Mather   @thejmather  

Slide 34

Slide 34 text