Seleniumスゲー。DHTMLの動作をテストできるのに感激。

はてブでかなり昔に話題になってたWebアプリのテスト用ツール「Selenium」。

開発チームから「Seleniumへの移行が完了したよ」と報告があったので、きょう実質はじめてさわってみた。

スゲーーーーー。見た目の派手さに騙されそうw

Jmeter時代

移行前は統合テストっつーかなんつーかアプリの動きのところのテストにはJmeterを使っていた。

悪くないんだけれども、開発がLAMPなので、カスタマイズや動作環境とかをJavaで調整しなきゃいけないJmeterがどうしてもハマりきらなかった。

例えば開発チームが文句言っていたのは*1こんなところ。

  • 少し複雑なことをしようとすると、ドキュメントを細かく読む必要がある
  • 高機能ゆえに習得する必要があることが多くなる(テスト自体に必要なくても)
  • 出来合いのアプリケーションのため、柔軟性に欠ける
  • JAVA知識がないと拡張などは一苦労
  • 実行時のリソース(JAVAアプリなのでそれ自体でリソースを食う)
  • エラー時の問題きりわけが難しい

ほかにも

  • DHTMLのテストの仕方がわかんねー。

ってのもあった。UI的にAJAXとはいかなくても、DHTMLが使われる部分が増えてくると、そこが全部手動テストになってうざかった。手動テストがふえると、めんどくなって回帰やらないベクトル生まれるし。

テストに不満がある状態というのはよくない。

当り前だけど、テストに対して不満や不安がある状態というのはよくない。

テストに不満があると、テストしたくなくなるし、テストしたくないと、機能追加したくなくなる。テストから足が遠のきがちになる。

で、開発チームが下記を検討した結果、

Seleniumに移ることになった。で、リソースつっこんでSeleniumに移行したわけです。

Selenium時代

なにがよくなったか? たぶんだけど。

  • さくさく動くからテストが楽しい
  • Javascript+HTMLだから、LAMPとも相性バッチリ。カスタマイズも簡単。たいていのことは出来るげ。
  • とは言え、テスト対象と実行環境が異なるから、「テストのテストが必要」なんてハメになりにくい。
  • テストコードがただのHTMLだから、おれみたいな開発じゃない人も様子がわかる
  • ブラウザでテストするから、ある程度ブラウザ依存の確認まで出来る。

なによりDHTMLのテストが簡単にできる! これってこれからのWebアプリには必須だよね。

さらに楽をするための実装のポイントとしては

  • Selenium
    • クラスやタグの出現回数何番目で指定できる要素指定子を作った。
  • HTML
    • Seleniumから容易に対象箇所を識別できるよう、Smartyの変数部分を識別子出力するよう拡張した

あたり?*2

で、統合テストのカバー範囲もJmeter時代よりも大きく広げることが出来たみたい。

まだまだやりきれてないところは多いけど、テストが少しでも気持ちよくまわるというのは大事なことだな。

でも、最初にも書いたけど見た目の派手さに騙されて「テストした気になっちゃう」落とし穴もありそ。ちゃんとレビューしないとね。あ、自分? 見た目の派手さに騙されてはしゃいでますよええ今まさに。

*1:ごめんねごめんねカーチャンが調査した時にはJmeterしか見つからなかったんだよ、、

*2:※理解間違ってたらおせーてください。>>開発の中の人。