1

Seleniumのラッパーツールを自作して公開してみた～自動化WGのチャレンジ～
Team

自己紹介
 上田和樹JaSST北海道実行委員

TEF道札幌で活躍するアマチュアミュージシャン兼ソフトウェアエンジニア

2

Seleniumとは？
 Webアプリケーション用のオープンソースツール。ブラウザの操作を自動化することが出来る。
 WEBアプリケーションのUI自動テストなどに使用できる
 大きく分けて、以下の二種類が存在する
Selenium IDE
Selenium Web Driver3

Selenium IDE
 ブラウザ操作の自動化ツール。期待値比較も出来る。

（メリット）
 Firefoxのアドインとして動作するため、インストールが簡単 実際の操作を記録してスクリプト化してくれるので、プログラ
ム知識が不要 期待値も、操作を行いながら設定する事が可能 （デメリット）
 FireFoxでしか動作できない メンテナンス性が低い
 テスト対象画面に変更があると大変 部品化が困難4

Selenium WebDriver WEBを対象とした、テスト自動化のオープンツール マルチブラウザ対応
 JavaやPythonやC言語で動作する
 AndroidやiOSでも実行可能
 スクリプト記述式なので、高度な操作やテストスクリプト設計が可能
 テスト部分はJUnitなど、既存のフレームワークを使用

5

Selenium WebDriver（メリット）
 JAVAなどのオブジェクト指向言語が使えるため、部品化や最適化が容易 メンテナンスを考慮した設計が行える
 共通化をうまく行えば、修正は一箇所で済む
 メジャーなブラウザ毎にWebDriverが用意されているので、ブラウザを問わない （デメリット）
 言語の開発環境が必要（JAVA+ECLIPSなど）
 プログラム開発知識が必要
 期待値確認は、スクリーンショット出力か、JUNITなどの言語側のフレームワークが必要

6

経緯と問題点
 Seleniumを選択する自動化の場面が増えてきた Selenium IDEは取り掛かりやすいが、FireFoxでしか動作しない＆メンテナンス性が低いな
どの問題アリ Selenium Web Driverは上記の問題解決になったが、ある程度プログラム知識が必要になる

7

Selenium Web Driverをスクリプトで記載する場合（JAVA）

8「そもそもプログラム書けない」「書けるけどめんどくさい」「メンテナンスが面倒」「開発環境を用意するの面倒」

問題解決のために・・・ プログラムを書かずに自動化スクリプトを構成することはできないか？
 「キーワード駆動」という考えはとても良さそう！
 オープンソース／フリーツールで上記が達成できないか？
 あるにはあったが・・・
必要な機能が実装されていない
機能追加が困難な作り

9やりたいことのイメージ
自動化用のキーワードを記載

ココが欲しい・・・

Seleniumがコードを処理して自動テス
ト実施

10

操作対象

アクション

期待値

「お問い合わせ」のリンク

クリック

タイトルが「お問い合わせ」

ツールが勝手に読み込んでスクリプトに変換してくれる！

driver.findElement(Bt.linkText("お問い合わせ")).click;try{
assertEquals("お問い合わせ画面",driver.getrTitle());<略>}

弟子のS井に無茶ぶり
おれ「なんか、いいツール探して」
S井「わかりました！」
S井「・・・・」
S井「適したのが無いっス」

おれ「じゃあ作って」

S井「わかりました！」

1112
制作に携わった札幌の男たち（なんとなく立ち上がった自動化WG）
おれ（企画と無茶ぶり）
テスト屋
業務でコードは書かない

S井（全体設計とほぼすべてのコーディング）
テスト屋
業務でコードは書かない
A池（最終仕上げと他ツール連携の構築）
テスト屋
業務でコードは書かない

弟子のS井に無茶ぶり②
おれ「自動化部分はSelenium使ってね」
S井「わかりました！」
S井「でもSelenium一切知りません」

おれ「ググって」S井「わかりました！」13

弟子のS井に無茶ぶり③
おれ「期待値の検証はJunit使ってね」
S井「わかりました！」
S井「でもJunit一切知りません」

おれ「何とかして」

S井「わかりました！」14

弟子のS井に無茶ぶり④15

おれ「やっぱりJenkins連携もしたいわ」

S井「わかりました！」

S井「でもJenkins・・・・
以下略S井とA池の活躍で、何とか完成

16

 エクセル上でキーワード書くと、スクリプトに変換してSeleniumが動く 期待値比較と結果出力はJunitを使用

・エクセルの使いやすいUIを利用できる・定義されたキーワードを配置していくだけなので、スクリプトの知識は不要・テストケースとして認識できるので、可読性とメンテナンス性が高い・・・はずGuarana（ガラナ） ブラウザの自動テストが可能（自動実行と期待値比較）
 IE／FireFox／Chrome/Edge
 プログラム言語の知識がなくても自動テストを実行できる テスト結果をスクリーンショットで保存する機能もあり
 ループ処理により大量のデータを生成などにも利用できる
 北海道名物のアレから仮にコードネームをつけたら、そのままになってる 基本は植物の名前ですね 開発環境は不要（JAVAのランタイムは必要）

17

Guarana概要「Selenium」

動作の記述

エクセルでテストケース記
述Seleniumが読み込めるスクリプトに自動変換Guarana

ここを作ったSeleniumDriverを動作させるクラス

自動操作対象IE
Driver

ブラウザ（IE）

FFDriver

ブラウザ
（ FF）

ChromeDriverブラウザ（ Chrome）

せっかくなので公開してみた
まずは自動化に興味を持ってもらいたい ツール（スタンドアロン版）を無償公開
 自動化を体験したことない方（ウチのメンバ含む）に「おおお、動いた！」を感じてもらいたい 小規模のWEB自動テストやテストデータ作成などに使えるはず（有用であるはず）
 公開によって適正なフィードバックを得て、自分たちの技術向上のために役立てたい

http://www.know-net.co.jp/blog/
 「ダウンロード」からご自由に使用してください（使用に関しては、READMEの内容を確認ください）19

テストケース兼自動化スクリプト画面

テストケース
概要

画面と部品要素指定部

動作キーワードとデータ指定

20

期待値と結果比較方法

アクションの指定

21
入力データ設定用意されたアクションワードから選択

期待値の比較方法選択

22期待値の設定

期待値の比較方法を選択

キーワードファイルをエクセルで作ったらバッチファイルにD＆D

23記載したキーワードの通りに動く

わたしはウエダ24

テスト結果例（テキストにて掃出し）

Test-001_全項目入力, テスト結果: NG
java.lang.AssertionError:
Expected: is “上田"
but: was “土田"Test-002_必須項目のみ入力, テスト結果: OK
期待値: 櫻井, 実測値:櫻井
期待値: 011, 実測値: 011
期待値: mail@hogehoge.co.jp, 実測値: mail@hogehoge.co.jp

25

スクリーンショット

26

その他（スタンドアロン公開版にはまだ未実装ですが） Jenkinsとの連携（CI）
 Appiumとの連携

スマフォ（WEBサイト／ネイティブ） SeleniumGridを使用して並行処理

27

参考 Jenkinsを使ったTest結果

28

制作を通じて
 自分たちが使いたいツール／使えるツールが手に入った
 色々な勉強ができた オブジェクト指向開発

 Selenium Junit Jenkins
 Appium やはりモノ作りは楽しかった まだフィードバックは少ないが、意見をくれる方（実際に使ってくれている方）がいると励みになる

29

適用事例
 Webサイト／アプリの回帰テスト
 大量テストデータの作成

 複数アカウントのログイン試験など

30

結論 使いたいツールがないなら作ってしまえ 作り方が分からないなら、ググれ それでもわからないなら、みんなで助け合え それでもわからないなら、S井に・・・
 意見が欲しければ公開しちゃいな31ありがとうございましたTeam32