31. 31Copyright (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に対する短期間、高頻度
の改変要求が生じる。改変に伴うデグレードを防止するためのテス
トの自動化が必須となって来ている。
43. 43Copyright (C) Masanori Kataoka. All Rights Reserved.
7.GUIテスト自動化ツールSelenium
7.5 Selenium RC
Selenium RC(Remote Control)は、
① リモートサーバにアクセスしてテストを行う
② 開発言語でテストを作成し、実行する
の二つの機能を持つ。
Seleniumコマンドによりテストを実行する方法については、既に7.4
で述べた。Selenium RCを用いて、開発言語でテストを作成すれば、
繰り返し使われる機能等は共通メソッドとして作成して、必要時に呼び
出す、と言ったより高度なことが出来る。そして、その開発言語に備
わっているテスト支援機能と組み合わせての活用も出来る。
Selenium RCは、Java, C#, Ruby, PHP, Perl, Python
等、多様な開発言語に対応している。Javaの場合は、単体テスト支援
ツールJUnitと組み合わせて利用することも出来る。
44. 44Copyright (C) Masanori Kataoka. All Rights Reserved.
7.GUIテスト自動化ツールSelenium
7.6 Selenium IDE
Selenium IDEは、
① ブレイクポイントの設定が可能なデバッグ支援機能
② Web操作の記録機能
③ 上記②によるテストコードの自動生成機能
等を実現している。Selenium IDEの開発者は、日本のAppirits社の笠
谷氏であり、日本語にも対応している。
上記の③の機能では、HTML形式のSeleniumコマンドの他に、各開
発言語対応のテストコードを生成する。したがって、最初に手作業でテ
ストした後は、2回目からは、生成したコードを使って自動リグレッショ
ンテストが実行出来る。また、いちいちテストコードを自分で記述する
手間が省ける。
しかしながら、生成されたテストコードが正しいか、また、共通化等の
改善の必要性が無いか、の確認が必要である。
45. 45Copyright (C) Masanori Kataoka. All Rights Reserved.
7.GUIテスト自動化ツールSelenium
7.7 Selenium2
Google社のSimon Stewart は、Web GUIのテスト自動化支援を目
的としたWebDriverを開発した。2011年にリリースされたSelenium2
は、Seleniumの特徴を継承しつつWebDriverの良さを取り込んでいる。
Selenium + WebDriver = Selenium2
Selenium 2 は WebDriver の簡潔なオブジェクト指向の API を継承
し、ブラウザーとのやりとりは、そのブラウザーに最善の方法で行うよう
になっていて、テストプログラムが書きやすくなっている。
また、Selenium2は、Seleniumの機能を包含していて、Seleniumで
作成したテストデータをSelenium2向けに簡単に変換・移行できるよう
にしてある。
46. 46Copyright (C) Masanori Kataoka. All Rights Reserved.
8.BDDとCucumber
8.1 BDDが求められる背景
BDD(Behavior Driven Development)は、顧客が求める動作要求
(Behavior)に基づき、ソフトウェアを開発しよう、とする開発技法である。
このBDDが求められてきた背景として次の二つがあげられる。
① TDDへの批判、改善要求(3.5 TDDの課題 を参照)
② 顧客要求を顧客にも理解できる形式で記述し、それに基づき
テストをしたい、との基本的要請への対応
BDDという言葉は、上記①を意識したもので、TDDの利点を取り込
み、欠点を改善しようとの考え方に基づく。
一方、②は、古くから現在に至るまで継続的に追及されてきたテーマ
であり、その実現方式が多様な形態で発展してきた。現代的には、
DSL(Domain Specific Language)と表現されることが多い。
BDDとDSLは、表現形式は異なるが考え方に共通する部分が多い。
BDDのBehavior = DSLのDomain Specification +テストシナリオ
と捉えられる。
52. 52Copyright (C) Masanori Kataoka. All Rights Reserved.
8.BDDとCucumber
8.5 Cucumberにおける Story の構造
Cucumberにおいては、一つの Story(説明)は、次の要素から
構成される。
-A title: 標題
-A narrative: 説明記述
① feature: 仕様
② benefit: 目的、期待する効果
③ stakeholder: 関与者(ユーザ、企画者、運用者 等)
-A acceptance criteria: Storyが成り立つためのシナリオ
① given: どんな条件が成り立つ場合に
② when: 何がおきたら(どんな入力、イベントがあると)
③ then: どのような結果、出力が期待できるか
53. 53Copyright (C) Masanori Kataoka. All Rights Reserved.
9.システムテスト支援ツール
システムテストでは、システム全体の特性としての性能、セキュリ
ティー、ユーザビリティー等をテストする。
以下に示すように、性能を評価するための支援ツールは、多くのもの
が出回っている。
しかし、セキュリティー評価については評価指標の標準は確立されつ
つあるものの、そのための支援ツールはまだ少ない。
また、ユーザビリティーについては、評価指標自体が確立されてなく
て、ユーザビリティーそのものを評価する支援ツールも確たるものは存
在していない。しかしながら、ユーザビリティーの一つの構成要素であ
るWebアクセス状況の評価ツールは存在する。
57. 57Copyright (C) Masanori Kataoka. All Rights Reserved.
9.システムテスト支援ツール
9.3 Webアクセス評価ツール
1)ClicTale:一人一人のユーザーのマウスの動き、クリック、キー入力、
ページ遷移を記録し、後から、その一連の操作を動画として確認し、
分析することが出来る。いわば、ミクロ分析ツールである。ClicTale社
の製品である。
2) Google Analytics:Google社の製品であり、以下の項目について
集計結果を確認する事が出来る。いわば、マクロ分析ツールである。
・サイト滞在時間
・ページビュー数(そのページが閲覧された回数)
・直帰率(サイト内の閲覧開始ページだけを見て、他のサイトへ移動
した割合)
・離脱率(そのページを最後に、他のサイトへ移動した割合)
・参照サイト(どのサイトから来たか)
・検索ワード(どのような検索ワードで来たか)
58. 58Copyright (C) Masanori Kataoka. All Rights Reserved.
10. まとめ
1) アジャイル開発を効率良く進めるためには、開発サイクルを高速
に回転する必要があり、テスト自動化技術が極めて重要である。
2) テスト自動化技術は、次の5階層に分類できる
a) 単体・コンポーネントテスト技術およびコード分析・検証技術
b) 機能テスト技術
c) GUIテスト技術
d) システムテスト技術
e) リリーステスト技術
3) テストの自動化に当たっては、関連するツール間、機能間の緊密
な連携が必要である。この連携により、顧客に短期間で要求された
仕様のシステムを、繰り返し提供するためのライフサイクルを高速
で回転させて行くことが出来る。
59. 59Copyright (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
<以上>