[Selenium2] アプリケーション。画面の自動テストに挑戦!!
こんにちは、@yoheiMuneです。
今日は、JJUGのセミナーに行ってきて、UIの自動テストについて学んできたので、ブログに残しておきたいと思います。
■テスト自動化を進めるメリットは何か?
1、人的コストが不要になる
・自信をもってリファクタリングできる
・リリース頻度を上げられる
・ミドルウエアやOSのパッチを当てられる
2、テストの品質を上げられる
・手作業に完全という事はない
・手作業は監査できない
ふむふむ、なるほどです(*´∇`*)テスト自動化が出来れば、あの大変なテスト作業が楽になるとは嬉しい限りです。
細かい点までチェックするようなテスト項目ばかりだと、やっぱりチェック漏れとかも発生します。
■なぜ自動化が進まないのか?
じゃあ、続いて、必要なのは分かっているけどなぜ自動化が進まないのか。良く語られる点ですが、以下のような問題点があります。
1、テスト自動化にコストがかかりすぎる
・IFに近づくにつれて、オペレーションの自由が増え、テストケースが増える
・アプリ側の問題:テスト自動化を想定していない。例:特定のテキストボックスを指定出来ない。
・ツールの問題:例、AJAXなどの動きに対応していない。使いこなすのも難しい。
2、アプリの変更に追随するのが大変
・ビジネスロジックに比べ、頻繁に変更が多く入る。レコード系テストツール(Seleniumなど)は、変更に弱い。
3、そもそも自動化出来ない場合がある
・ツールに制限がある。例:アラートウインドウのボタンが押せない、ファイルアップロードできない、など。
確かに、その通りです。UIのテスト自動化はしづらい。自動化用コードもたくさん書かなきゃだし、ツールの制限も多いという実感です(; ̄ェ ̄)
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について、もっと調べてみようかと思います(・∀・)
・http://seleniumhq.org/
・http://groovy.codehaus.org/Japanese+Home
・Gebの本家ページ
・SpockのGoogle Codeページ
Selenium2系を使ってみたいと思います。とりあえずJavaで使ってみるべし!!
今日は、JJUGのセミナーに行ってきて、UIの自動テストについて学んできたので、ブログに残しておきたいと思います。
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で使ってみるべし!!