SI-Toolkitで
テスト自動化を実現する現場で
遭遇した出来事
• はじめに
• SIT-Toolkit for Web Testing紹介
• 現場で遭遇した出来事
• まとめ
• Q/A
はじめに
• 登壇者
• 桑原雄一
• 株式会社モノクレア
• システム開発の技術コンサルティング
• アプリケーションアーキテクチャ設計
• テスト自動化
• CI/CD
SI-Tookit for Web Testing
SI-Toolkit for Web Testing
• Seleniumを拡張した自動テストツール
• 環境構築の簡略化
• スクリプト作成の簡略化
• エビデンスの自動取得
https://sitoolkit.org/sit-wt.html
Demo
• ブラウザ操作を記録してスクリプトを作成
• Seleniu IDEのスクリプトの変換
• エビデンス自動取得
• デバッグ実行
• スクリプト変更の自動反映
• 例外発生時の自動一時停止
• 並列実行
SI-Toolkit導入の
現場で遭遇した出来事
技術的な事 主にSeleniumに関する事
よく聞くもの
• ID属性等が無くロケーターが作りにくい
->DOM変更を覚悟してブラウザからXPathを拾う
• HTML標準外のUIが使われている (リッチテキストエディタ、オシャ
レなセレクトボックスなど)
->操作可能なスクリプトの書き方を地道に模索する
• 画面全体のスクリーンショットが取れない (Chrome、overflow付き
のdivなど)
->スクロールしながらスクリーンショットを取るようにスクリプト
を作る、または機能拡張する
厄介なもの
• タイミングによって時々発生する例外
• NoSuchElementException
• StaleElementReferenceException
• NoSuchElementException
• 発生する場合
• 通常:操作対象の画面項目が画面に存在しない
• 時々:画面遷移やJavaScript制御による項目出現が
implicitlyWaitよりも遅い
• 対処方法
• implicitlyWaitをスクリプト作成時は短く、一括実行時は長
く設定する
• スクリプト作成者は軽量なアプリ実行環境を使用する
厄介なもの 続き
• StaleElementReferenceException
• 発生する場合
1. テストスクリプト側 WebDriver.findElement
2. ブラウザ側 WebElementに該当するDOM要素が削除
3. テストスクリプト側 WebElementを操作
4. テストスクリプト側 StaleElementReferenceExceptionが
発生
• 対処方法
• StaleElementReferenceExceptionをcatch
• WebDriver.findElementを再実行
詳細は次頁
Proxy
StaleElementReferenceExceptionの対処
WebDriver
Proxy
WebElement
4. click()
2. <<create>>
1. findElement(locator)
try {
webElement.click();
} catch (StaleElementReferenceException e) {
webElement = webElement.findElement(sameLocator);
webElement.click();
}
ProxiedWebElement
Test
Script
3. <<create>>
SI-Toolkit導入の
現場で遭遇した出来事
あまり技術的ではない事
Non-Programmingでも
難しいと言われる
• Selenium経験者 • Selenium未経験プログラマー
• テスター
• プロジェクトマネージャー
Easy ! Difficult…
技術的な難しさというより、ただでさえ忙しい中で更
に新しいことを学ぶという心理的負担が大きいか?
スクリプト作成中に
アプリのバグをいくつも踏む
• スクリプト作成に予想以上に時間がかかり、そ
れをツールのせいにされる。
500
System Error
_□×
アプリが遅い
• スクリプト作成とテスト実行に予想以上に時間
がかかり、それをツールのせいにされる。
Loading...
_□×
現場が理解できない理由で
選定されない
• 現場の作業者 • クライアント企業
• 協業SIer
SI-Toolkit
有償製品
自社開発
ツール
対策
今後に向けて
ツール習熟コストの
計画化と極小化
Build & UT IT
Learning
IT
Automatic Test
IT
Manual Test & Bug fix
Preparation
App Team
Test Automation
Team
App Team
Test Automation
Team Preparation
Build & UT
自動テストをアプリ
チーム全体に展開する
と学習コスト・期間の
影響大
BUTの中盤からアプリ
チームの一部を自動テ
ストチームに移行
アプリを触らなくてもスクリ
プトが作成できる状態にする
• 画面項目定義書にID属性を定義する。
• これが無いと画面かソースコードからIDを探す羽目になる。
• ID属性は入力項目だけでなく表示項目に対しても定義する。
項目名 ID UI
検索条件_名前 name テキストボックス
検索ボタン search ボタン
検索結果一覧 searchResult 表
項目名 ロケーター種別 ロケーター 操作
検索条件_名前 id name Input
検索ボタン id search click
検索結果一覧 xpath //table[@id=“searchResult”]… storeElementIndex
画面項目定義書
スクリプト
まとめ
まとめ
SI-Toolkitでも
• 技術的課題はまだある
• 技術以外でも課題はたくさんある
技術以外で措置すべきこと
• 自動化し易い設計書体系、実装方式
• 自動化を展開し易い要員計画、作業計画
テスト自動化は
• プロジェクトマネージャー、アプリチームの協力が不可欠
• プロジェクト全体で取り組むべき
Q/A
ご清聴ありがとうございました!

SI-Toolkitでテスト自動化を実現する現場で遭遇したこと