SlideShare a Scribd company logo
2011/10/15 PHP Matsuri 2011




                PHPUnit で
               テストを始めよう
                                                         Piece Project
                                                         株式会社アイテマン
Spiral Staircase By Christopher Blizzard                 久保敦啓 (KUBO Atsuhiro)
http://www.flickr.com/photos/christopherblizzard/306043084
久保敦啓 (KUBO Atsuhiro)

    Piece Project プロジェクトリード

    株式会社アイテマン 代表取締役

    Twitter @iteman

    メンタリング
      
          師匠承ります

    ソフトウェア開発
Piece Framework by Piece Project

    PHP のアプリケーションフレームワーク

    オープンソースソフトウェア

    Piece Project
      
          開発者募集中
      
          スポンサー募集中
アジェンダ

    テスト?

    テストの自動化

    PHPUnit の導入

    Stagehand_TestRunner の導入

    MakeGood の導入
テスト?


   test By DaveBleasdale
   http://www.flickr.com/photos/sidelong/246816211
さまざまなテストの分類方法

    テストレベル
    単体テスト、結合テスト、システムテスト、受け入れテスト


    テストタイプ
    機能テスト、非機能テスト、構造テスト、回帰テスト


    テスト設計技法
    構造ベース、仕様ベース、経験ベース


    …
Questions By Oberazzi
http://www.flickr.com/photos/oberazzi/318947873
誰が何のために?
3 種類のテスト
Developer Testing

    誰が?
     
         開発者が

    何のために?
     
         開発促進のために
QA Testing

    誰が?
      
          品質保証担当者が

    何のために?
      
          品質保証のために

    QA = Quality Assurance
Customer Testing

    誰が?
     
         顧客が

    何のために?
     
         進捗管理のために
開発プロセス・方法論

    テスト駆動開発 (TDD)
    Test-Driven Development
      
          受け入れテスト駆動開発 (ATDD)
      
          検証指向 TDD

    ビヘイビア駆動開発 (BDD)
    Behavior-Driven Development
テスト駆動開発
3 種類のテストと開発手法
テストを実行する?
テストの実行プロセス
1.テストを実行する。
2.期待する結果と実際の結果を比較する。
3.結果をリポートする。
手作業で?


   Galley Slaves By ChibiJosh
   http://www.flickr.com/photos/chibijosh/17867308
テストの自動化


    Escalators By HKmPUA
    http://www.flickr.com/photos/hleung/1295585574
テスティングフレームワーク

    PHPUnit

    Behat

    PHPSpec

    …
PHPUnit
class 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));
   }
Behat
Feature: ls
  In order to see the directory structure
  As a UNIX user
  I need to be able to list the current directory's 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
       """
PHPSpec
class 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);
    }
3 種類のテストとフレームワーク
さらなる自動化
継続的テスト



CCTV By alancleaver_2000
http://www.flickr.com/photos/alancleaver/4103405016
継続的テストツール

    MakeGood

    Stagehand_TestRunner
継続的インテグレーション



       Monitor By Boyce Duprey
       http://www.flickr.com/photos/boyce-d/5160787240
継続的インテグレーションサーバ

    Jenkins

    TeamCity

    CruiseControl

    …

    Sismo (created by Fabien Potencier)
PHPUnit の導入




PHP Tester's Toolbox : Sebastian Bergmann By Stuart Herbert
http://www.flickr.com/photos/stuartherbert/6231499431
インストール
$   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
テストの作成
FooTest.php:

<?php
class FooTest extends PHPUnit_Framework_TestCase
{
    /**
      * @test
      */
    public function alwaysTrue()
    {
         $expected = $actual = true;
         $this->assertEquals($expected, $actual);
    }
}
テストの実行
$ phpunit FooTest.php
PHPUnit 3.5.15 by Sebastian Bergmann.

.

Time: 0 seconds, Memory: 6.00Mb

OK (1 test, 1 assertion)
Stagehand_TestRunner の導入
インストール
$ pear channel-discover pear.piece-framework.com
$ pear install piece/stagehand_testrunner
テストの実行
$ phpunitrunner FooTest.php
PHPUnit 3.5.15 by Sebastian Bergmann.

.

Foo
 [x] Always true

Time: 0 seconds, Memory: 6.75Mb

OK (1 test, 1 assertion)
継続的テスト
$ phpunitrunner -a .
(FooTest.php を編集するとテストが実行される。 )
$ phpunitrunner -an .
(Growl/notify-send で結果が通知される。 )
MakeGood の導入
参考

    和田卓人「[動画で解説]和田卓人の“テスト駆動開発”講座:第 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 年。
参考

    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/

More Related Content

PDF
Introduction to Continuous Test Runner MakeGood
Atsuhiro Kubo
 
PDF
PHPUnit でテスト駆動開発を始めよう
Yuya Takeyama
 
PPT
PHP agile test tips
Tsutomu Chikuba
 
PDF
8時間耐久PHPUnitの教室
Yusuke Ando
 
PPTX
Behat Driven Development
Ryo Tomidokoro
 
PDF
第4回勉強会 単体テストのすすめ
hakoika-itwg
 
PDF
ゼロから始めたE2Eテスト
ushiboy
 
PDF
Laravelとテストについて
Takeo Noda
 
Introduction to Continuous Test Runner MakeGood
Atsuhiro Kubo
 
PHPUnit でテスト駆動開発を始めよう
Yuya Takeyama
 
PHP agile test tips
Tsutomu Chikuba
 
8時間耐久PHPUnitの教室
Yusuke Ando
 
Behat Driven Development
Ryo Tomidokoro
 
第4回勉強会 単体テストのすすめ
hakoika-itwg
 
ゼロから始めたE2Eテスト
ushiboy
 
Laravelとテストについて
Takeo Noda
 

What's hot (20)

PDF
テストを書こう、Unity編
Hiroto Imoto
 
PPTX
C++でテスト駆動開発
Akineko Shimizu
 
PDF
Eclipseデバッガを活用するための31のtips
Hiroki Kondo
 
PDF
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~
aha_oretama
 
PDF
テストエンジニアのおっさんの日常です
ryuji koyama
 
PPT
Test Plugins
ykhr
 
PDF
Pythonでブラウザをいっぱい動かしたい
Kameko Ohmura
 
PPTX
reg-suitとQA Wolfを活用したVisual Regression Test
Kazuyuki Tsuzisaki
 
PDF
Myweekdays and testing
ryuji koyama
 
PPT
Eclipse を使った java 開発 111126 杉浦
urasandesu
 
PDF
よりよいPHPUnitの実行方法を求めて
Akio Ishida
 
PDF
モックライブラリを使ってきちんとユニットテストする #Objective-C
Shoichi Matsuda
 
PDF
Awsで実現するseleniumテスト高速術
finoue
 
PPT
ビジネス的に高価値なアジャイルテスト
Tsutomu Chikuba
 
PDF
Unity testtool
大介 束田
 
PPT
Sue445 Style TDD #atest_hack
Go Sueyoshi (a.k.a sue445)
 
PDF
Twitter4Jとテスト
Yusuke Yamamoto
 
PDF
Try_to_writecode_practicaltest #atest_hack
kimukou_26 Kimukou
 
PPT
第5回勉強会
Mugen Fujii
 
PPT
wankuma #28
高見 知英
 
テストを書こう、Unity編
Hiroto Imoto
 
C++でテスト駆動開発
Akineko Shimizu
 
Eclipseデバッガを活用するための31のtips
Hiroki Kondo
 
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~
aha_oretama
 
テストエンジニアのおっさんの日常です
ryuji koyama
 
Test Plugins
ykhr
 
Pythonでブラウザをいっぱい動かしたい
Kameko Ohmura
 
reg-suitとQA Wolfを活用したVisual Regression Test
Kazuyuki Tsuzisaki
 
Myweekdays and testing
ryuji koyama
 
Eclipse を使った java 開発 111126 杉浦
urasandesu
 
よりよいPHPUnitの実行方法を求めて
Akio Ishida
 
モックライブラリを使ってきちんとユニットテストする #Objective-C
Shoichi Matsuda
 
Awsで実現するseleniumテスト高速術
finoue
 
ビジネス的に高価値なアジャイルテスト
Tsutomu Chikuba
 
Unity testtool
大介 束田
 
Sue445 Style TDD #atest_hack
Go Sueyoshi (a.k.a sue445)
 
Twitter4Jとテスト
Yusuke Yamamoto
 
Try_to_writecode_practicaltest #atest_hack
kimukou_26 Kimukou
 
第5回勉強会
Mugen Fujii
 
wankuma #28
高見 知英
 
Ad

Viewers also liked (8)

PDF
Introduction to Continuous Testing
Atsuhiro Kubo
 
PDF
Software Development with Symfony
Atsuhiro Kubo
 
PDF
MakeGoodで快適なテスト駆動開発を
Atsuhiro Kubo
 
PDF
意図を表現するプログラミング
Atsuhiro Kubo
 
PDF
Cake php + php unitによる実践的ユニットテスト
慶信 若松
 
PDF
ジェネレーティブプログラミングの世界
Atsuhiro Kubo
 
PDF
Frameworks We Live By: Design by day-to-day framework development: Multi-para...
Atsuhiro Kubo
 
PDF
Frameworks We Live By: Design by day-to-day framework development: Multi-para...
Atsuhiro Kubo
 
Introduction to Continuous Testing
Atsuhiro Kubo
 
Software Development with Symfony
Atsuhiro Kubo
 
MakeGoodで快適なテスト駆動開発を
Atsuhiro Kubo
 
意図を表現するプログラミング
Atsuhiro Kubo
 
Cake php + php unitによる実践的ユニットテスト
慶信 若松
 
ジェネレーティブプログラミングの世界
Atsuhiro Kubo
 
Frameworks We Live By: Design by day-to-day framework development: Multi-para...
Atsuhiro Kubo
 
Frameworks We Live By: Design by day-to-day framework development: Multi-para...
Atsuhiro Kubo
 
Ad

Similar to Getting Started with Testing using PHPUnit (20)

PDF
ぼくのかんがえた iOSテスト戦略
Naoki Umehara
 
PDF
ワンクリックデプロイ101 #ocdeploy
Ryutaro YOSHIBA
 
KEY
EC-CUBE + PHPUnit で 実践テスト駆動開発
Kentaro Ohkouchi
 
PPTX
CLRH_120414_WFTDD
Tomoyuki Obi
 
PDF
Tokyor14 - R言語でユニットテスト
Yohei Sato
 
PDF
TDD勉強会キックオフ for Java
Yuta Kawadai
 
PDF
ビルドプロセスとCI #STAC2014
Koji Hasegawa
 
PDF
あなたの安心を高速に守る Container-based CI
Wataru MIYAGUNI
 
PDF
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~
Recruit Lifestyle Co., Ltd.
 
PDF
おまえらこのライブラリ使ってないの? m9 (2013-07)
Toru Furukawa
 
PDF
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
智治 長沢
 
PDF
Spock's world
Takuma Watabiki
 
PDF
behatエクステンションの作り方
Ryo Tomidokoro
 
PPT
tech talk about JS #0
Hika Maeng
 
PPT
CruiseControl.NET設置
Kuniaki Igarashi
 
PDF
海外のSeleniumカンファレンスではどんな発表がされているのか2014
Nozomi Ito
 
PPTX
JPAの基礎と現場で役立つ開発Tips
yuichi_kuwahara
 
PPTX
Async awaitでの繰り返し処理についての小話
Masakazu Muraoka
 
PPT
Struts2を始めよう!
Shinpei Ohtani
 
PDF
Eclipse PDT + MakeGoodによるPHPコードのテスト
Atsuhiro Kubo
 
ぼくのかんがえた iOSテスト戦略
Naoki Umehara
 
ワンクリックデプロイ101 #ocdeploy
Ryutaro YOSHIBA
 
EC-CUBE + PHPUnit で 実践テスト駆動開発
Kentaro Ohkouchi
 
CLRH_120414_WFTDD
Tomoyuki Obi
 
Tokyor14 - R言語でユニットテスト
Yohei Sato
 
TDD勉強会キックオフ for Java
Yuta Kawadai
 
ビルドプロセスとCI #STAC2014
Koji Hasegawa
 
あなたの安心を高速に守る Container-based CI
Wataru MIYAGUNI
 
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~
Recruit Lifestyle Co., Ltd.
 
おまえらこのライブラリ使ってないの? m9 (2013-07)
Toru Furukawa
 
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
智治 長沢
 
Spock's world
Takuma Watabiki
 
behatエクステンションの作り方
Ryo Tomidokoro
 
tech talk about JS #0
Hika Maeng
 
CruiseControl.NET設置
Kuniaki Igarashi
 
海外のSeleniumカンファレンスではどんな発表がされているのか2014
Nozomi Ito
 
JPAの基礎と現場で役立つ開発Tips
yuichi_kuwahara
 
Async awaitでの繰り返し処理についての小話
Masakazu Muraoka
 
Struts2を始めよう!
Shinpei Ohtani
 
Eclipse PDT + MakeGoodによるPHPコードのテスト
Atsuhiro Kubo
 

More from Atsuhiro Kubo (9)

PDF
MPD Osaka Extra 5
Atsuhiro Kubo
 
PDF
Enaction, Not Design on MPD Osaka Extra 1
Atsuhiro Kubo
 
PDF
Enaction, Not Design on Symfony Meetup Kansai 2
Atsuhiro Kubo
 
PDF
The Birth of FormalBears - A new META for BEAR.Sunday applications
Atsuhiro Kubo
 
PDF
Lean Architecture / DCI Evening Report
Atsuhiro Kubo
 
PDF
Symfony2でより良いソフトウェアを作るために
Atsuhiro Kubo
 
PDF
Eclipse PDT + MakeGood による PHP コードのテスト
Atsuhiro Kubo
 
PDF
How To Create Custom DSLs By PHP
Atsuhiro Kubo
 
PDF
Piece Framework 2.0 Background
Atsuhiro Kubo
 
MPD Osaka Extra 5
Atsuhiro Kubo
 
Enaction, Not Design on MPD Osaka Extra 1
Atsuhiro Kubo
 
Enaction, Not Design on Symfony Meetup Kansai 2
Atsuhiro Kubo
 
The Birth of FormalBears - A new META for BEAR.Sunday applications
Atsuhiro Kubo
 
Lean Architecture / DCI Evening Report
Atsuhiro Kubo
 
Symfony2でより良いソフトウェアを作るために
Atsuhiro Kubo
 
Eclipse PDT + MakeGood による PHP コードのテスト
Atsuhiro Kubo
 
How To Create Custom DSLs By PHP
Atsuhiro Kubo
 
Piece Framework 2.0 Background
Atsuhiro Kubo
 

Recently uploaded (7)

PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 

Getting Started with Testing using PHPUnit