Getting Started with Testing using PHPUnit

2,489 views

Published on

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

No Downloads
Views
Total views
2,489
On SlideShare
0
From Embeds
0
Number of Embeds
14
Actions
Shares
0
Downloads
12
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Getting Started with Testing using PHPUnit

  1. 1. 2011/10/15 PHP Matsuri 2011 PHPUnit で テストを始めよう Piece Project 株式会社アイテマンSpiral Staircase By Christopher Blizzard 久保敦啓 (KUBO Atsuhiro)http://www.flickr.com/photos/christopherblizzard/306043084
  2. 2. 久保敦啓 (KUBO Atsuhiro) Piece Project プロジェクトリード 株式会社アイテマン 代表取締役 Twitter @iteman メンタリング  師匠承ります ソフトウェア開発
  3. 3. Piece Framework by Piece Project PHP のアプリケーションフレームワーク オープンソースソフトウェア Piece Project  開発者募集中  スポンサー募集中
  4. 4. アジェンダ テスト? テストの自動化 PHPUnit の導入 Stagehand_TestRunner の導入 MakeGood の導入
  5. 5. テスト? test By DaveBleasdale http://www.flickr.com/photos/sidelong/246816211
  6. 6. さまざまなテストの分類方法 テストレベル 単体テスト、結合テスト、システムテスト、受け入れテスト テストタイプ 機能テスト、非機能テスト、構造テスト、回帰テスト テスト設計技法 構造ベース、仕様ベース、経験ベース …
  7. 7. Questions By Oberazzihttp://www.flickr.com/photos/oberazzi/318947873
  8. 8. 誰が何のために?
  9. 9. 3 種類のテスト
  10. 10. Developer Testing 誰が?  開発者が 何のために?  開発促進のために
  11. 11. QA Testing 誰が?  品質保証担当者が 何のために?  品質保証のために QA = Quality Assurance
  12. 12. Customer Testing 誰が?  顧客が 何のために?  進捗管理のために
  13. 13. 開発プロセス・方法論 テスト駆動開発 (TDD) Test-Driven Development  受け入れテスト駆動開発 (ATDD)  検証指向 TDD ビヘイビア駆動開発 (BDD) Behavior-Driven Development
  14. 14. テスト駆動開発
  15. 15. 3 種類のテストと開発手法
  16. 16. テストを実行する?
  17. 17. テストの実行プロセス1.テストを実行する。2.期待する結果と実際の結果を比較する。3.結果をリポートする。
  18. 18. 手作業で? Galley Slaves By ChibiJosh http://www.flickr.com/photos/chibijosh/17867308
  19. 19. テストの自動化 Escalators By HKmPUA http://www.flickr.com/photos/hleung/1295585574
  20. 20. テスティングフレームワーク PHPUnit Behat PHPSpec …
  21. 21. PHPUnitclass StackTest extends PHPUnit_Framework_TestCase{ public function testPushAndPop() { $stack = array(); $this->assertEquals(0, count($stack)); array_push($stack, foo); $this->assertEquals(foo, $stack[count($stack)-1]); $this->assertEquals(1, count($stack)); $this->assertEquals(foo, array_pop($stack)); $this->assertEquals(0, count($stack)); }
  22. 22. BehatFeature: ls In order to see the directory structure As a UNIX user I need to be able to list the current directorys contents Scenario: Given I am in a directory "test" And I have a file named "foo" And I have a file named "bar" When I run "ls" Then I should get: """ bar foo """
  23. 23. PHPSpecclass DescribeNewBowlingGame extends PHPSpecContext{ private $_bowling = null; public function before() { $this->_bowling = $this->spec(new Bowling); } public function itShouldScore0ForGutterGame() { for ($i=1; $i<=20; $i++) { // someone is really bad at bowling! $this->_bowling->hit(0); } $this->_bowling->score->should->equal(0); }
  24. 24. 3 種類のテストとフレームワーク
  25. 25. さらなる自動化
  26. 26. 継続的テストCCTV By alancleaver_2000http://www.flickr.com/photos/alancleaver/4103405016
  27. 27. 継続的テストツール MakeGood Stagehand_TestRunner
  28. 28. 継続的インテグレーション Monitor By Boyce Duprey http://www.flickr.com/photos/boyce-d/5160787240
  29. 29. 継続的インテグレーションサーバ Jenkins TeamCity CruiseControl … Sismo (created by Fabien Potencier)
  30. 30. PHPUnit の導入PHP Testers Toolbox : Sebastian Bergmann By Stuart Herberthttp://www.flickr.com/photos/stuartherbert/6231499431
  31. 31. インストール$ pear channel-discover components.ez.no$ pear channel-discover pear.symfony-project.com$ pear channel-discover pear.phpunit.de$ pear install phpunit/phpunit-3.5.15
  32. 32. テストの作成FooTest.php:<?phpclass FooTest extends PHPUnit_Framework_TestCase{ /** * @test */ public function alwaysTrue() { $expected = $actual = true; $this->assertEquals($expected, $actual); }}
  33. 33. テストの実行$ phpunit FooTest.phpPHPUnit 3.5.15 by Sebastian Bergmann..Time: 0 seconds, Memory: 6.00MbOK (1 test, 1 assertion)
  34. 34. Stagehand_TestRunner の導入
  35. 35. インストール$ pear channel-discover pear.piece-framework.com$ pear install piece/stagehand_testrunner
  36. 36. テストの実行$ phpunitrunner FooTest.phpPHPUnit 3.5.15 by Sebastian Bergmann..Foo [x] Always trueTime: 0 seconds, Memory: 6.75MbOK (1 test, 1 assertion)
  37. 37. 継続的テスト$ phpunitrunner -a .(FooTest.php を編集するとテストが実行される。 )$ phpunitrunner -an .(Growl/notify-send で結果が通知される。 )
  38. 38. MakeGood の導入
  39. 39. 参考 和田卓人「[動画で解説]和田卓人の“テスト駆動開発”講座:第 3 回  「テスト」という言葉について ── Developer Testing , Customer Testing , QA Testing 」 http://gihyo.jp/dev/serial/01/tdd/0003, 2007 年。 川西俊之「 DevLOVE LT: Do you know axes of software testing? 」 http://www.slideshare.net/tosikawa/ss-1632677, 2009 年。 大田健一郎「テストエンジニアと TDD 」『ソフトウェア・テスト PRESS 総集編』、技術評論社、 2011 年。
  40. 40. 参考 Sebastian Bergmann 「 PHPUnit Manual 」 http://www.phpunit.de/manual/3.5/ja/index.html Konstantin Kudryashov 「 Behat Documentation 」 http://docs.behat.org/index.html Pádraic Brady, The PHPSpec Development Team 「 Reference Manual 」 http://www.phpspec.net/documentation/

×