33. 33Copyright (C) Masanori Kataoka, All Rights Reserved.
6.GUIテストとその支援ツール
6.1 GUIテストの自動化の重要性
近年、GUIテストの自動化は、極めて重要なものになって来ている。
1) GUIベースのAP の急増
GUIベースのAP(Application Program)は、これまでも急増してき
たが、今後とも更なる増加が見込まれる。
a) 情報の共有、統合化を目的としたネットベースのAPの増加、
そして、そのGUIとしてのWebの活用。
b) スマートフォンの出現が、上記を加速化。
c) GUIの利用は、Androidなどを活用した組み込み機器にも拡大。
2) GUIテストの自動化が必須
a) GUIのテストの全てを手作業で行うには膨大な工数がかかると
共に、確認漏れ等の信頼性の問題が生じる。
b) ビジネスが加速化される中で、WebApに対する短期間、高頻度
の改変要求が生じる。改変に伴うデグレードを防止するためのテス
トの自動化が必須となって来ている。
47. 47Copyright (C) Masanori Kataoka, All Rights Reserved.
7.Selenium
7.5 Selenium RC
Selenium RC(Remote Control)は、
① リモートサーバにアクセスしてテストを行う
② 開発言語でテストを作成し、実行する
の二つの機能を持つ。
Seleniumコマンドによりテストを実行する方法については、既に7.4
で述べた。Selenium RCを用いて、開発言語でテストを作成すれば、
繰り返し使われる機能等は共通メソッドとして作成して、必要時に呼び
出す、と言ったより高度なことが出来る。そして、その開発言語に備
わっているテスト支援機能と組み合わせての活用も出来る。
Selenium RCは、Java, C#, Ruby, PHP, Perl, Python
等、多様な開発言語に対応している。Javaの場合は、単体テスト支援
ツールJUnitと組み合わせて利用することも出来る。
48. 48Copyright (C) Masanori Kataoka, All Rights Reserved.
7.Selenium
7.6 Selenium IDE
Selenium IDEは、
① ブレイクポイントの設定が可能なデバッグ支援機能
② Web操作の記録機能
③ 上記②によるテストコードの自動生成機能
等を実現している。Selenium IDEの開発者は、日本のAppirits社の笠
谷氏であり、日本語にも対応している。
上記の③の機能では、HTML形式のSeleniumコマンドの他に、各開
発言語対応のテストコードを生成する。したがって、最初に手作業でテ
ストした後は、2回目からは、生成したコードを使って自動リグレッショ
ンテストが実行出来る。また、いちいちテストコードを自分で記述する
手間が省ける。
しかしながら、生成されたテストコードが正しいか、また、共通化等の
改善の必要性が無いか、の確認が必要である。
49. 49Copyright (C) Masanori Kataoka, All Rights Reserved.
8.Selenium WebDriver
8.1 Selenium2
Google社のSimon Stewart は、Web GUIのテスト自動化支援を目
的としたWebDriverを開発した。2011年にリリースされたSelenium2
は、Seleniumの特徴を継承しつつWebDriverの良さを取り込んでいる。
Selenium + WebDriver = Selenium2
Selenium 2 は WebDriver の簡潔なオブジェクト指向の API を継承
し、ブラウザーとのやりとりは、そのブラウザーに最善の方法で行うよう
になっていて、テストプログラムが書きやすくなっている。
また、Selenium2は、Seleniumの機能を包含していて、Seleniumで
作成したテストデータをSelenium2向けに簡単に変換・移行できるよう
にしてある。
Selenium2が提供開始され始めてから5年が経過しつつあるが、
人々が受け入れたのはSelenium2全体ではなく、WebDriverの機能で
あった。Selenium2全体ではなく、Selenium WebDriverあるいは単に
WebDriverの名でWebDriver機能だけが取り出されることが多い。
62. 62Copyright (C) Masanori Kataoka, All Rights Reserved.
8.Selenium WebDriver
8.6 WebDriverがサポートするブラウザー
WebDriverでは、次のようなブラウザーをサポートしている。各ブラ
ウザー対応のDriverを起動して、それぞれに固有な機能、インタ
フェースの相違を吸収している。
① Firefox
② InternetExplorer
③ Chrome
④ Safari
⑤ Opera
63. 63Copyright (C) Masanori Kataoka, All Rights Reserved.
8.Selenium WebDriver
8.7 PageObject パターン
PageObjectパターンとは、アプリケーションの画面を一つのオブジェ
クトと捉えるデザインパターンである。WebDriverの利用に当たっては、
PageObjectの活用が次のような効果をもたらす。(参考文献8))
① 画面内部(配置情報等)にアクセスするコードとこれを外から利用
するテスト用のコードとを完全に分離する。画面内部にアクセスす
るコードによりPageクラスを実現する。外からこの画面にアクセス
する場合はこのPageクラスだけを用いてアクセスする。
② 画面に関するコードがばらばらに分散配置されずに一か所に
集中管理される。
すなわち、PageObjectは、画面を仮想化し、画面の外からの画面へ
のアクセスをサービス化する。これにより画面固有の内部の変更が外
部のサービスに影響しないようにする。そして画面機能の再利用を容
易にし、そのソフトウェアの保守性を優れたものにする。
64. 64Copyright (C) Masanori Kataoka, All Rights Reserved.
9.BDDとJBehave
9.1 BDDが求められる背景
BDD(Behavior Driven Development)は、顧客が求める動作要求
(Behavior)に基づき、ソフトウェアを開発しよう、とする開発技法である。
このBDDが求められてきた背景として次の二つがあげられる。
① TDDへの批判、改善要求(4.8 TDDの課題 を参照)
② 顧客要求を顧客にも理解できる形式で記述し、それに基づき
テストをしたい、との基本的要請への対応
BDDという言葉は、上記①を意識したもので、TDDの利点を取り込
み、欠点を改善しようとの考え方に基づく。
一方、②は、古くから現在に至るまで継続的に追及されてきたテーマ
であり、その実現方式が多様な形態で発展してきた。現代的には、
DSL(Domain Specific Language)と表現されることが多い。
BDDとDSLは、表現形式は異なるが考え方に共通する部分が多い。
BDDのBehavior = DSLのDomain Specification +テストシナリオ
と捉えられる。
65. 65Copyright (C) Masanori Kataoka, All Rights Reserved.
9.BDDとJBehave
9.2 BDDの考え方
BDD(Behavior Driven Development)は、4.8に述べたTDDに対す
る批判に基づいて生まれた開発技法である。
1) BDD: BDDは、顧客他(Stakeholders)の観点からの振る舞い
(Behavior)の記述に基づくソフトウェアの開発技法である。
Behaviorを先に記述し、それに基づきコードを書き、テストを実行
する。
2) BDDの3原則
a) It’s all behavior: コードレベルであっても、アプリケーションレベル
であっても、どのような粒度であっても、常に 振る舞い(behavior )
の観点で考える。
b) Deliver Stakeholder value: 顧客等関与者にとって価値のある
ものを開発、提供する。それ以外のものは開発、提供しない。
c) Enough is enough: やるべきことはきちんとやる。しかし、それ
以上の無駄なことはやらない。浪費になる。
79. 79Copyright (C) Masanori Kataoka, All Rights Reserved.
1) 「現場で使えるソフトウェアテスト Java編」 町田欣史、高橋和也、小堀一雄、飯
山教史 2008年 翔泳社
2) “The ThoughtWorks Anthology-Essays on Software Technology and
Innovation” R. Singham, M. Fowler, et al. 2005 by O’Reilly
「ThoughtWorksアンソロジー」 (訳)オージス総研 2008年 オライリー・ジャ
パン
3) “Agile Testing: A Practical Guide for Testers and Agile Teams” L. Crispin,
J. Gregory 2009 by Pearson Education, Inc. 「実践アジャイルテスト:テス
ターとアジャイルチームのための実践ガイド」 (訳)榊原 彰 他 翔泳社
4) “The RSpec Book: Behavior-Driven Development with RSpec, Cucumber,
and Friends” David Chelimsky 2010 The Pragmatic Bookshelf
5) 「はじめる! Cucumber」 諸橋恭介 2010.12.09版 達人出版会
(電子ブック)
6) Cucumberのblogから転載: http://blog.geekdaily.org/2009/06/cucumber-
webrat-who-names-these-things.html
7) JBehave Official Site: http://jbehave.org/
8) Selenium Official Site: http://www.seleniumhq.org/
<以上>