STAR Auto Testing Frameworkでドキュメント駆動開発

テスト, PHPUnit, SimpleTest

09:29:55, by dozo Email , 115 words, 548 views   Japanese (JP)

del.icio.us
以前の記事でSTAR Auto Testing Frameworkを紹介した。
(作者本人も驚いていたようだ。)
今回は実践してみたのでその辺りを書いてみようと思う。

テスト駆動開発を実践する上で、
私はテストケースをというコードを書くことに異議を唱えた。
(もちろん理解者はゼロ)
理由は以前も書いたが、
テスト仕様書とテストケースという内容が全く同じで言語が違うだけもの2回も用意する意味がないからだ。
仕様書を書けばテストケースが出来上がるのが理想の形だろう。
そうすれば仕様書とテスト内容が異なるようなことも起きない。

似たような例にデータベースがある。
MySQLにはMySQL Workbenchというデータベース設計ツールがある。
(旧DB Designer4と言えばわかるだろうか。)
これでDB設計し、ER図を書くと、SQL分が発行されデータベースが出来上がる。
こうすることで設計書と実際の齟齬を無くしている。


逆にドキュメントを書かないとテストも出来ないし、
ER図を描かないとDBができないので、
ドキュメント作成の意識も高まるといえる。


STAR Auto Testing Frameworkは単体テストとSTに対応している。
前者はPHPUnit, JUnitを使用、後者はSeleniumを使うことを前提としている。
これら一つ一つだけでも一冊の本があるぐらいなのでここでは詳細な説明は省く。
そして私はJavaに明るくは無いのでJUnitのことは今回は取り上げないが内容に差はないと思う。
あと文章が長くなったので今回は単体テストだけ行う。

PHPUnitSimpleTestと並んで割と一般的に使われているテストフレームワーク。
テストケースを作成しphpunitとコマンドを打てばがんがんテストをしてくれる。

Seleniumはブラウザを使って自動テストをしてくれるテストフレームワーク。
いくつか種類があるがSTAR Auto Testing FrameworkではFirefoxプラグインのSeleniumIDEを使うことを想定しているようだ。


では実際どのような流れになるのか。
全体的なフローは以下の通り。
  1. 仕様書を作成する
  2. 空のプログラムを作成
  3. 全部エラーになるようにテスト仕様書の作成
  4. テストケースの生成
  5. テスト実行しエラーになるのを確認
  6. 実装作業
  7. テスト実行しエラーがなくなるのを確認


重要なのは最初のテストを全部エラーになるようにし、
実装後すべてのエラーが出なくなることを確認すること。
こうすることで一つのメソッドに対する入出力を保障することが出来る。
テストのパターンは自身が想定しうる問題すべてを網羅しておくこと。

=> Read more!


PHPUnitでprivate,protectedのメソッドをテストする方法

PHP, テスト, PHPUnit, SimpleTest

09:24:42, by dozo Email , 90 words, 899 views   Japanese (JP)
del.icio.us
PHPUnitなどでテストを実行するとき、
どうしても発生する問題がある。
それは

privateメソッドをテストできない

クラスを定義するときに、
privateやprotectedのプロパティ、メソッドを定義することは珍しくも無い。
特に複数人でシステムを組んでいるときはアクセス制限は非常に重要になってくる。
ただ、問題としてテストを行う際、
外部のプログラムであるPHPUnit側からアクセスが出来なくなりテストが出来ない。
そのためにpublicメソッドにするのは本末転倒といえる。

クラスを拡張してparent::親クラスメソッドとして動かす方法もあるが、
べた書きコードならともかくフレームワークに組み込まれているものだととり回しがしずらい。

(゚ω゚)? じゃあどうするの?

そこで使うのがReflectionMethod


=> Read more!

powered by b2evolution

shinobi

Neighbors
Relative
Favorites

極論istの技術屋を始めて早幾年。 流れの速い業界の波にもまれながらも精一杯生きている様をとくとごらんあれ。

Archives
スポンサー

Latest bookmark
Search

Categories

Who's Online?
Misc
Syndicate this blog XML

Valid XHTML 1.0! Valid CSS! Valid RSS 2.0! Valid Atom 1.0!