テストを科学する

日本で最も売れているJenkins本である「Jenkins実践入門」の改訂新版がこの度刊行されました。

http://www.amazon.co.jp/dp/4774174238

前書ではビルドツールとしてAntを採用していましたが、本改訂新版では時代の変化に合わせMavenに全面的に書き換えられ、また利用が広がりつつあるGradleを使ったビルドについても「Gradleを使ったビルド」でGradle Pluginの導入から解説しています。

その他、Seleniumを使った自動テストについてもSelenium IDEからSelenium WebDriverになり、導入先OSとインストールの手順も最新化されています。

また、弊社が取り扱っている商用版JenkinsであるCloudBees Jenkins Enterpriseとその各種プラグインについても解説がされており、今までの実践的入門書という位置づけからJenkinsを深く使いこなしているユーザーまでカバーする包括的な書籍へと進化しています。

前書が刊行された当時からCI(継続的インテグレーション)の概念はCD(継続的デリバリー)へ と広がり、コンテナ技術を始めとするインフラの自動化の技術革新が格段に進みました。改訂新版はその進化までをカバーする今の時代で実践的なJenkinsの入門書として再び最も売れるJenkins本になるのではないかと思います。

電子版も発売されており即座に入手可能なので、これからJenkinsを活用しようとしている方、また、最新のJenkins事情を知りたい方には是非おすすめしたい一冊です。

SHIFTでは、ソフトウェアに関する最先端の技術に対して、常にアンテナを張り巡らせ、いち早くキャッチしたメンバーが全社的に共有をするという文化があります。
とても有意義な内容も多く、社内だけにとどめず広く人々がその技術の恩恵を享受できるようにと、ある社員が誰にでも分かりやすく解説をし自身のブログで紹介していますので、本日はそちらを共有したいと思います。

===============================================================

突然ですがみなさん「Appium」というツールをご存知でしょうか。

AppiumとはSelenium作者のJason Huggins氏を中心に開発されているスマホやタブレットのテスト自動化を実現するためのテストフレームワークの一種です。

このAppium、自動テスト界でも注目されているツールなのですが、なんせ今年5月に正式版がリリースされたばかりということもあり、ネット上には有益な情報が少なく
いざ使ってみようと思うと結構ハマりポイントの多いツールです。

とはいえ、なかなか将来有望なツールなので、もっとユーザが増えて欲しい!という思いからこの度、Appiumの使い方を分かり易くまとめた記事を書いてみました。

スマホの画面が自動で動く様はなかなか面白いので、興味のある方は是非参考にして動かしてみてください!

なお、情報はすべてQiita(プログラマのための技術情報共有サービス)に公開しています。
—————————————————————————————–
【決定版】Appium環境をOSXに構築する方法
http://qiita.com/kzm7/items/4386f37434c39b6b8095
—————————————————————————————–
【決定版】Appiumのテストの書き方(その1)
http://qiita.com/kzm7/items/d3bdebd3930860d0b473
—————————————————————————————–
【決定版】Appiumのテストの書き方(その2)
http://qiita.com/kzm7/items/a08b5af00a865d473047
—————————————————————————————–

またちょっと情報古いですが、下記も併せて参照ください。
—————————————————————————————–
Appiumを使ってみた【iOS編】
http://qiita.com/kzm7/items/36629fe2a3c82e3e4933
—————————————————————————————–
Appium+JUnitで自動テストを書いてみた【iOS編】
http://qiita.com/kzm7/items/187ef263b6ac3ba7b3bd
—————————————————————————————–
Appiumでどこまで出来るか試してみた【iOS編】
http://qiita.com/kzm7/items/85c31bda0fbe5f90a5b2
—————————————————————————————–
AppiumでWebアプリのテストを実機で実行してみた【iOS編】
http://qiita.com/kzm7/items/1701a944784df76a9315
—————————————————————————————–

ちなみに、Androidの場合はGoogle Playで落としたアプリがそのままAppiumで使用できるので、がんばればソシャゲのbotなんかも作れるかもしれません。

10月18日(金)に開催された第2回 日本Seleniumユーザーコミュニティ勉強会に弊社からも参加・登壇させていただきました。

今回の勉強会は先日「実践 Selenium WebDriver」(オライリージャパン)が発売されたのをきっかけに開催され、翻訳者である玉川竜司さんと共に弊社の自動化コンサルタント玉川紘子(書籍では付録部分を担当)から発表をしました。書籍ではSeleniumとJenkinsの連携について寄稿したのですが、元々その内容は前回の勉強会で発表していた内容だったため今回はGebというWebDriverのラッパーについて入門的な内容を解説しました。

弊社では多くのプロジェクトでSeleniumによる自動化を手がけていますが、お客様の既存テストコードや製品で使用しているプログラミング言語、立ち上げの期間などの条件によっていくつかのフレームワークを使い分けています。それぞれ一長一短がありますので必ずしもどれがベストとは言えないのですが、最近いくつかのプロジェクトで使用して感触の良かったGebについて今回は発表しました。Gebはまだ知名度が低く日本語の情報も少ないのですが、公式サイト(英語)が非常に充実しているため利用のハードルはそれほど高くありません。これを機に、日本でもGebのユーザーが増えると良いなと思います。弊社でも利用のノウハウが溜まってきたため、今後積極的にGebを活用していくことを考えています。

勉強会の後半では、海外のSeleniumカンファレンスでの発表内容の紹介、実際の製品でのSeleniumやAppiumの導入事例などバリエーションに富んだ発表が続き、前回よりもさらに広がりの出た内容となりました。ぜひ次回以降も何らかの形で参加させていただきたいと思います。

今回は2014年9月18日に刊行された書籍「実践 Selenium WebDriver」(オライリー・ジャパン)のご紹介です。

Webアプリケーションのテスト自動化ツールとして圧倒的な知名度を誇るSelenium、Web上にも多くの情報がありますがこれまで日本語で読める書籍はなく、各自がブログや質問サイトなどにある情報を集めて取り組んでいるという状況でした。2011年にSelenium2(WebDriver)が登場してから3年が経ち、Seleniumに挑戦している人口は増えたものの体系的な情報を得るのに苦労している、という方は多かったのではないでしょうか。

洋書ではいくつかWebDriverに関する書籍が出ていますが、今回はその中の一冊「Selenium WebDriver Practical Guide」を翻訳したものが刊行されました。「Practical Guide」の名が示すとおり、本書ではHTML要素の取得・操作・マウスやキーボードの操作・スクリーンショットの取得といった基本的なWebDriverの機能に加えて多くの周辺情報を提供しています。たとえば第7章「RemoteWebDriverとWebDriverBackedSelenium」では、ローカルマシンではなくテスト専用マシンを用いて本格的に運用をする際には欠かせないRemoteWebDriverの仕組み、さらにSelenium1で書き溜めたテストコードを活用するためのWebDriverBackedSeleniumクラスについて解説しています。また、第9章「PageObjectパターン」では以前このブログでもご紹介したPageObjectデザインパターンを使って保守性の高いWebDriverのテストコードを書く方法を丁寧に解説しています。これからWebDriverに挑戦するという方はもちろん、既に少し使い始めているという方にもお勧めの一冊です。

翻訳者の玉川竜司さんのご厚意により、弊社からも自動化コンサルタントの玉川(竜司さんと同姓なのは偶然です)が付録を寄稿させていただきました。WebDriverのコードをJenkinsと組み合わせて実運用するためのTipsを解説していますので、ご興味のある方はぜひ書店で手に取っていただければと思います。

JaSST’14 Kansaiも醒めやらぬ翌日にテスト自動化を含む自動化に特化したカンファレンス 「Asian Automation Alliance(以下、AAA) 〜自動化を語り合おう!」 が同じく関西の兵庫で開催されました。こちらも弊社エンジニアが登壇者として参加してきましたので当日レポートをさせて頂きます。
 

オープニングセッション
よろしい、ならば自動化だ! ~自動家の自動化哲学~
@ 三浦一仁氏(@kazuhito_m)

発表スライド

「諸君、私は自動化が好きだ」という三浦氏の熱いメッセージから始まり、自動化をするエンジニアを「自動家」と定義し、システム開発の自動化の歴史を紐解いていく関西弁で熱いセッションでした。

この後のセッションの全体像を開設するセッションにもなっており、テストの自動化を含む各種の自動化が土のような位置づけにあるかも解説していました。異なる背景で複数の領域で同時多発的に自動化が流行してきたので、このような概念の整理は貴重ですね。
 

スマートフォンアプリ開発と自動化 ~なじむ。実に!なじむぞ!~
@長谷川孝二氏(@nowsprinting)

大量の機種があり、アップデートも頻繁なスマートフォンアプリ開発と自動化は非常に相性が良いと長谷川氏は述べています。

スマートフォンアプリでの自動化は自動テストツールを始めとして、ビルドツール、CIツールなども群雄割拠状態ですが、それらを広くカバーしたセッションになっていました。

直近では「iOSアプリ テスト自動化入門」 も執筆されており、iOS開発での自動化を検討されているのなら、必読の一冊になっています。
 

テスト自動化セッション1
○テスト自動化のROIの理論と実践
@太田健一郎氏(@oota_ken)

 

弊社エンジニア太田が発表させて頂きました。定性的な説明になりがちなテスト自動化について、ROIの試算式を紹介しながら、実際に試算式を使いながらROIを求めていくという内容になっています。どちらかというとリーダーやマネージャ向けですが、テスト自動化導入のために定量的な説明を必要としている現場エンジニアにも有用です。

スライドを更に詳細に解説した内容を@ITで連載しています。

 

テスト自動化セッション2
○テスト自動化の品質を作りこもう
@井芹洋輝氏(@goyoki)

発表スライド

テスト自動化を進めていくと、テスト対象のシステムの品質だけでなく、テスト自体の品質を考慮、検証しないと障害を検出しないテスト、実行時間が非常に長い自動テストなどを生み出してしまう可能性があります。

本セッションでは井芹氏が提唱しているテストシステム品質モデルを解説し、テスト自身の品質の検証と評価の必要性を説いています。

テスト自動化を進めたのは良いが、やがて何らかの理由により自動テストが保守されなくなり、元の手動テストに戻ってしまったなど経験が有る方はこのテストシステム品質モデルを使って原因を検証し、次のテスト自動化に活かすことを検討してみましょう。
 

テスト自動化セッション3
○FA(Factory Automation)な自動化
@川口慎一郎氏

工場のFactory Automationに組み込むソフトウェアという非常にミッション・クリティカルかつ実機検証が難しい領域でのテスト自動化の事例です。

自動化の難易度が高い領域ですが逆に自動化しすぎてしまって保守コストが高くなる、単純作業と言われる作業でも、人は意外と頭を使っているなど、保父な実務に基づく見解が語られ有用なセッションでした。

本事例の経験は別セッションの テスト自動化パターン言語 にも反映されており、川口氏たちの深い経験に基づく各種のパターンはこれから自動化を進めるもしくは現在進めているエンジニアの方々にも参考になると思います。
 

自動化の功罪~ゆりかごから墓場まで~
@徳隆宏氏(@tokutaka)

発表スライド

自動化する理由の材料集めから、自動化の抵抗勢力へ対応策など、実際には自動化を進めるに当たっては前段階で解決すべき問題が沢山あります。本セッションでは徳氏の豊富な自動化経験に基づいてこれらの自動化の実作業の周辺技術が軽快に語られました。特に大組織で自動化を進めて行くに当たって有効なノウハウが盛りだくさんでしたので、大組織で自動化を試みている方はスライドをご一読頂くことをお勧めします。
 

テスト自動化のパタンランゲージ
@前川博志氏(@posaune)

発表スライド

テスト自動化パターン言語プロジェクト で収集中のテスト自動化パターン言語の紹介です。

テスト自動化は導入や運用の初期段階ではアンチパターンに嵌まってしまうことが多く、その共有から始まったとのことですが、現在はアンチパターン以外の通常のパターンも増えてきています。

テスト自動化の導入や運用で嵌まってしまうアンチパターンは似通っていますので、自分たちの組織がアンチパターンを選択して閉まっていないかを確認する意味でも本パターン言語確認してみるとよいでしょう。フィードバックはIssuesの起票やPull Requestsで受け付けているとのことなので、自分たちの経験とは異なる、付け足したいことがあるなどがあったらPull Requestsしてみるとよいでしょう。
 

まとめ

関東からも弊社エンジニアの太田を始めとして、登壇者、参加者が複数参加し、開催地の関西だけでなく、全国の自動化エンジニアの祭典となったAAA。主催者の三浦氏は閉会の挨拶で来年は更にパワーアップして開催すると宣言してしましたので、自動化に興味を持つ方、自分たちの経験を発表してみたい方は来年のAAAの参加を検討してみると良いと思います。

ソフトウェアテストに関するお悩みなど、まずはお気軽にお問い合わせください。

  • お問い合わせフォーム【お問い合わせはコチラ】
  • 電話でのお問い合わせ【0120-142-117】