0
PHPUnit●   What is Unit Testing?●   Benefits●   What is PHPUnit?●   Installation●   The Bank Account Example●   Categories...
What is Unit Testing?●   In computer programming, unit testing is a method by which    individual units of source code are...
Benefits    The goal of unit testing is to isolate each part of the program and    show that the individual parts are corr...
What is PHPUnit?●   PHPUnit is the de-facto standard for unit testing    in PHP projects. It provides both a framework    ...
Installation●   PHPUnit should be installed using the PEAR Installer. This installer is    the backbone of PEAR, which pro...
The Bank Account Example  <?php  class BankAccount  {       protected $balance = 0;       public function getBalance()    ...
Bank Account Test<?phprequire_once BankAccount.php;class BankAccountTest extends PHPUnit_Framework_TestCase{   public func...
Running the Test(s)Test can server as an executable specification.
The setUp() template method<?phprequire_once BankAccount.php;class BankAccountTest extends PHPUnit_Framework_TestCase{   p...
More Tests...<?phprequire_once BankAccount.php;class BankAccountTest extends PHPUnit_Framework_TestCase{   // ...   public...
Even More Tests...<?phprequire_once BankAccount.php;class BankAccountTest extends PHPUnit_Framework_TestCase{   // ...   p...
More and More Tests...<?phprequire_once BankAccount.php;class BankAccountTest extends PHPUnit_Framework_TestCase{   // ......
Live Documentation
Categories of (Unit) Tests●   Small: Unit Tests    ●   Check conditional logic in the code    ●   A debugger should not be...
Software Testing Pyramid
Links●   http://www.phpunit.de/manual/3.6/en/index.html●   https://github.com/sebastianbergmann/phpunit/●   http://en.wiki...
Upcoming SlideShare
Loading in...5
×

Php unit (eng)

911

Published on

● What is Unit Testing?
● Benefits
● What is PHPUnit?
● Installation
● The Bank Account Example
● Categories of (Unit) Tests / Software Testing
Pyramid
● Links

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
911
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Php unit (eng)"

  1. 1. PHPUnit● What is Unit Testing?● Benefits● What is PHPUnit?● Installation● The Bank Account Example● Categories of (Unit) Tests / Software Testing Pyramid● Links
  2. 2. What is Unit Testing?● In computer programming, unit testing is a method by which individual units of source code are tested to determine if they are fit for use. A unit is the smallest testable part of an application. In procedural programming a unit may be an individual function or procedure. Unit tests are created by programmers or occasionally by white box testers.● Ideally, each test case is independent from the others: substitutes like method stubs, mock objects, fakes and test harnesses can be used to assist testing a module in isolation. Unit tests are typically written and run by software developers to ensure that code meets its design and behaves as intended. Its implementation can vary from being very manual (pencil and paper) to being formalized as part of build automation
  3. 3. Benefits The goal of unit testing is to isolate each part of the program and show that the individual parts are correct. A unit test provides a strict, written contract that the piece of code must satisfy. As a result, it affords several benefits. Unit tests find problems early in the development cycle.● Facilitates change (refactor, regression, etc.)● Simplifies integration (parts, sum & integration)● Documentation (live, understand API)● Design (TDD, no formal design, design element)
  4. 4. What is PHPUnit?● PHPUnit is the de-facto standard for unit testing in PHP projects. It provides both a framework that makes the writing of tests easy as well as the functionality to easily run the tests and analyse their results.● Part of xUnit family, created by Sebastian Bergmann, integrated & supported by Zend Studio/Framework.● Simple installation with PEAR
  5. 5. Installation● PHPUnit should be installed using the PEAR Installer. This installer is the backbone of PEAR, which provides a distribution system for PHP packages, and is shipped with every release of PHP since version 4.3.0.● The PEAR channel (pear.phpunit.de) that is used to distribute PHPUnit needs to be registered with the local PEAR environment. Furthermore, components that PHPUnit depends upon are hosted on additional PEAR channels. pear channel-discover pear.phpunit.de pear channel-discover components.ez.no pear channel-discover pear.symfony-project.com● This has to be done only once. Now the PEAR Installer can be used to install packages from the PHPUnit channel: pear install phpunit/PHPUnit● After the installation you can find the PHPUnit source files inside your local PEAR directory; the path is usually /usr/lib/php/PHPUnit.
  6. 6. The Bank Account Example <?php class BankAccount { protected $balance = 0; public function getBalance() { return $this->balance; } protected function setBalance($balance) { if ($balance>=0) { $this->balance = $balance; } else { throw new BankAccountException; } } public function depositMoney($balance) { $this->setBalance($this->getBalance() + $balance); return $this->getBalance(); } public function withdrawMoney($balance) { $this->setBalance($this->getBalance() - $balance); return $this->getBalance(); } }
  7. 7. Bank Account Test<?phprequire_once BankAccount.php;class BankAccountTest extends PHPUnit_Framework_TestCase{ public function testBalanceIsInitiallyZero() { $ba = new BankAccount; $this->assertEquals(0, $ba->getBalance()); }}
  8. 8. Running the Test(s)Test can server as an executable specification.
  9. 9. The setUp() template method<?phprequire_once BankAccount.php;class BankAccountTest extends PHPUnit_Framework_TestCase{ protected $ba; public function setUp() { $this->ba = new BankAccount } public function testBalanceIsInitiallyZero() { $this->assertEquals(0, $this->ba->getBalance()); }}
  10. 10. More Tests...<?phprequire_once BankAccount.php;class BankAccountTest extends PHPUnit_Framework_TestCase{ // ... public function testBalanceCannotBecomeNegative() { try { $this->ba->withdrawMoney(1); } catch (BankAccountException $e) { $this->assertEquals(0, $this->ba->getBalance()); return; } $this->fail(); }}
  11. 11. Even More Tests...<?phprequire_once BankAccount.php;class BankAccountTest extends PHPUnit_Framework_TestCase{ // ... public function testBalanceCannotBecomeNegative2() { try { $this->ba->withdrawMoney(-1); } catch (BankAccountException $e) { $this->assertEquals(0, $this->ba->getBalance()); return; } $this->fail(); }}
  12. 12. More and More Tests...<?phprequire_once BankAccount.php;class BankAccountTest extends PHPUnit_Framework_TestCase{ // ... public function testDepositingAndWithdrawingMoneyWorks() { $this->assertEquals(0, $this->ba->getBalance()); $this->ba->depositMoney(1); $this->assertEquals(1, $this->ba->getBalance()); $this->ba->withdrawMoney(1); $this->assertEquals(0, $this->ba->getBalance()); }}
  13. 13. Live Documentation
  14. 14. Categories of (Unit) Tests● Small: Unit Tests ● Check conditional logic in the code ● A debugger should not be required in case of failure● Medium: Functional Tests ● Check whether the interfaces between classes abide by their contracts● Large: End-to-End Tests ● Check for “wiring bugs”
  15. 15. Software Testing Pyramid
  16. 16. Links● http://www.phpunit.de/manual/3.6/en/index.html● https://github.com/sebastianbergmann/phpunit/● http://en.wikipedia.org/wiki/Unit_testing● http://www.slideshare.net/sebastian_bergmann/ getting-started-with-phpunit● http://www.slideshare.net/DragonBe/introductio n-to-unit-testing-with-phpunit-presentation- 705447
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×