2011/12/25更新

[Selenium2] アプリケーション。画面の自動テストに挑戦!!

このエントリーをはてなブックマークに追加            

こんにちは、@yoheiMuneです。
今日は、JJUGのセミナーに行ってきて、UIの自動テストについて学んできたので、ブログに残しておきたいと思います。
sea

Webテストの自動化がテストの世界でホットな話題となっている

最近、テスト自動化の話が一杯です!Jenkins(Hudson)とJUnitを組み合わせた単体テスト自動化は、よくされている事ではないでしょうか。

■テスト自動化を進めるメリットは何か?
1、人的コストが不要になる
 ・自信をもってリファクタリングできる
 ・リリース頻度を上げられる
 ・ミドルウエアやOSのパッチを当てられる
2、テストの品質を上げられる
 ・手作業に完全という事はない
 ・手作業は監査できない

ふむふむ、なるほどです(*´∇`*)テスト自動化が出来れば、あの大変なテスト作業が楽になるとは嬉しい限りです。
細かい点までチェックするようなテスト項目ばかりだと、やっぱりチェック漏れとかも発生します。

■なぜ自動化が進まないのか?
じゃあ、続いて、必要なのは分かっているけどなぜ自動化が進まないのか。良く語られる点ですが、以下のような問題点があります。

1、テスト自動化にコストがかかりすぎる
 ・IFに近づくにつれて、オペレーションの自由が増え、テストケースが増える
 ・アプリ側の問題:テスト自動化を想定していない。例:特定のテキストボックスを指定出来ない。
 ・ツールの問題:例、AJAXなどの動きに対応していない。使いこなすのも難しい。
2、アプリの変更に追随するのが大変
 ・ビジネスロジックに比べ、頻繁に変更が多く入る。レコード系テストツール(Seleniumなど)は、変更に弱い。
3、そもそも自動化出来ない場合がある
 ・ツールに制限がある。例:アラートウインドウのボタンが押せない、ファイルアップロードできない、など。

確かに、その通りです。UIのテスト自動化はしづらい。自動化用コードもたくさん書かなきゃだし、ツールの制限も多いという実感です(; ̄ェ ̄)



それでも、画面テストの自動化を目指すぞ!!

画面自動化テストで良く取り上げられるのは、Seleniumというツールです。
Seleniumを使うと、テキストボックスに自動的に文字を埋めてくれたり、決定ボタンを押したりできて、ある程度の自動化が出来ます。

■Seleniumの最近
Selenium1(2004〜)。Selenium IDEやSelenium-Gridなどがある。
Selenium2 + WebDriver(2009〜)。WebDriverはGoogleが2006年から作り始めた。
→Selenium2.0(2011/07)。現在はSelenium2.6とか。
・Selenium1.0の問題点・・・ブラウザ上で動作するため、様々な制限があった。
・WebDriverは、ブラウザ外部で稼働する為、上記の制限を受けない。ブラウザを操作するAPIを利用する。非常に多くのブラウザに対応している。Headless Driverにも対応。
 JavaやC、LL言語にも対応している。でもJavaとか色々書くのが面倒。


そうなのです。Seleniumは進化して、ツールの制限というものがすんごく解消されたのです。
これを使わない手はないです!!
しかしそれでも問題点が。テスト用コードをたくさん書かなきゃいけない点。
セミナーでは、GepとSpockというフレームワークが紹介されていました。。
それらは、Groovyという言語を使ってテストコードを書けるようで、Groovyの特性を生かして、テストコード削減が出来るようです。

自分としては、GroovyでもJavaでも良いので、画面テスト自動化を楽に出来るように、Selenium2.0やWebDriverについて、もっと調べてみようかと思います(・∀・)



参考ページ/資料

GebとSpockでWebテストを自動化せよ(slideshare)
http://seleniumhq.org/
http://groovy.codehaus.org/Japanese+Home
Gebの本家ページ
SpockのGoogle Codeページ



最後に

Webアプリの画面テスト自動化は、なんとか出来ないものかと考えていた時なので、すんごくありがたい情報でした(*´∇`*)
Selenium2系を使ってみたいと思います。とりあえずJavaで使ってみるべし!!


こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。