TDD is dead. Long live testing.に触発されたわけではないがけど。
ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪
関連記事:
- behat3とzombiejsでBDDに挑戦(1)
- [behat3とzombiejsでBDDに挑戦(2)]
- [behat 3.0 とzombiejsでBDDに挑戦(3)]
- [behat 3.0とphantomjsでBDDに挑戦(4)]
- [behat 3.0とJenkins CIでBDDに挑戦(5)]
- [behatとChrome HeadlessでBDDを実践(6)]
[behat3とzombiejsでBDDに挑戦(1)]:http://qiita.com/dozo/items/be0ff9e9443413a32d25
[behat3とzombiejsでBDDに挑戦(2)]:http://qiita.com/dozo/items/4cb29ee55c4bd8891786
[behat 3.0 とzombiejsでBDDに挑戦(3)]:http://qiita.com/dozo/items/ec0448ffcbb703df9e43
[behat 3.0とphantomjsでBDDに挑戦(4)]:http://qiita.com/dozo/items/5a5f81061a5aade383d6
[behat 3.0とJenkins CIでBDDに挑戦(5)]:http://qiita.com/dozo/items/4de280e580bdc48c9d93
[behatとChrome HeadlessでBDDを実践(6)]:https://qiita.com/dozo/items/f023c3a4ae9c35768a65
昔からTDDを念頭にものを作ってきた。
のだが、「テストコードを書く」という行為に納得感がなく、手法をあれこれ変えてみたりしていた。
そんな折、自動テストについて調査する機会があり、そこでBDDという手法があることを知った。
BDDの詳細についてはこちらを: エンドツーエンドテストの自動化は Cucumber から Turnip へ
さて、ツールの選定をするわけだが、
必要なのはBDDテストツールとブラウザテストツール。
言語問わず探してみた。
BDDテストツール
ツール | 言語 | 詳細 |
---|---|---|
Cucumber | Ruby | RSpecよりも自然言語(英語とか日本語とかそういうの)に近いGherkin書式を使ってテストシナリオを記述できる |
Turnip | Ruby | cucumberの進化系でより読みやすくしたもの |
Cucumber.js | JavaScript | cucumberのJavaScript版。発展途上で今後の進化に期待したいところ |
Behat | PHP | Cucumberをインスパイアしたテストツール |
Codeception | PHP | 各種テストツールを統合的に取り扱う |
ブラウザテストツール
ツール | 言語 | 詳細 |
---|---|---|
Selenium | Java | 自動テストの定番。使いにくさも折り紙付き。 |
Capybara | Ruby | 受け入れテストツール。要QTライブラリ。 |
Phantomjs | node.js | JavaScriptも解析できる高性能ヘッドレスブラウザ |
Zombie.js | node.js | phantomjsの簡易版 |
最初はTurnipで行く予定だったが、
私があまりRubyに明るくなく、インストールの段階で挫折。
node.jsなら行けるかとMocha, Jasmine, Cucumber.jsと試すものの、内容を理解できず終了。
最後に残ったPHP製のBehatで行くことにした。
PHPerな私にはちょうどいいか。
Behat
PHP製のBDDツール。Cucumber互換のGherkin書式でテストコード(フィーチャ)を作成し、付属のヘッドレスブラウザ(Mink)を通してWebサービスのテストをすることができる。
Minkはドライバを経由してSeleniumやSahiなどの外部ツールとの連携が可能。
バージョン3ではTurnip書式にも対応。
ヘッドレスブラウザですが同梱のMinkだとHTMLは取得できてもJavaScriptを展開できない。
最近ではHTMLだけで済ますことが非常に少なく、これでは要求を満たせない。
そこでヘッドレスブラウザは外付けにすることにした。
JavaScriptを使えるPhantomjsかZombie.jsで迷ったが、
多機能なPhantomjsで行きたかったが、Seleniumを通さなきゃいけなかったり、ちゃんと動かなかったりと結構頑張ったが諦めた。
ということで、zombie.jsで行くことに。
zombie.js
JavaScriptを解析できるnode.jsベースのヘッドレスブラウザ
軽量コンパクトな反面、機能は限定的
Phantomjsはまた、そのうち試そう。
さて、次回はインストールを記事にしよう。