2018年12月8日
テスト自動化
カンファレンス2018
AI for Testing
のスタートアップ情報共有
日本酒エバンジェリスト
板垣 真太郎
富士通株式会社
サービステクノロジー本部 技術戦略室
新技術のリサーチ部門
オープンに社内外と情報共有して、新技術を取り入れる
• マントラ「世界の最新技術を浸透させる」
• 自前主義からの脱却し、有望な技術の目利きと発掘をする
• 現在は、シリコンバレーのスタートアップ調査に注力
Curiosity
Unbiased
Keep it Simple
Embracing Failure
Openness
Diversity
Tenacity
Values
5
アジャイルが浸透し、開発は高速化したが、テストがボトルネックになっている
アジャイル開発を導入
89%
テストの半数以上を自動化
23%
テスト自動化のROI
アジャイルによって、開発の生産性は10倍以上になったが、テストの
生産性はあまり変わっていない。
テスト自動化しても、そのテストを繰り返さなければ、効果が得られ
ない。条件によっては投資回収に3年以上かかることもある。
http://www.atmarkit.co.jp/ait/articles/1406/27/news047.html
STATE OF TESTING REPORT 2018
課題解決の新しいアプローチ
AI for Testing
市場の期待
57%
QAとテストにAIを活用するプ
ロジェクトがある、または計
画している
World Quality Report 2018-19
ソフトウェア開発とAI
品質管理/テストはソフトウェア開発プロセスの中でBtoB Ready(製品化済)が最も多い
https://medium.com/ai-for-software-engineering/ai-for-software-engineering-industry-landscape-12-aug-2018-e8e028628663
アイディア
製品
ムーブメント
https://www.aitesting.org/
2017年、Artificial Intelligence for Software
Testing Association (AISTA)設立
Jason ArbonとTariq Kingが設立。
ArbonはMicrosoft, Googleでテスト自動化に携わり、「テスト
から見えてくるグーグルのソフトウェア開発」の共著者。
AISTAは、ソフトウェアテストに適用するAIシステムの開発、
AIシステムをテストする方法、最終的には自動でテストして
自動で修復するソフトウェアの設計を目的としている。
予測
Unitテスト 機能テスト
オムニチャネル
機能テスト AI
DevOps
10+ deploys/day
Agileマニフェスト
1997
JUnit Now
2009
2022年までに、40%のアプリ開発プロジェクトがAIを活用してテスト資産を
ビルド、保守、実行及び最適化するテスト最適化ツールを利用する
2004
Selenium
2011
Appium
2001
Gartner, 100 Data and Analytics Predictions Through 2022, G00353459, By Douglas Laney, Guido De Simoni, Rick
Greenwald, Cindi Howson, Ankush Jain, Valerie Logan, Alan D. Duncan 21 May 2018
2018
AIST設立
2017
テスト自動化
カンファレンス開始
2013
It’s time to ride on!
AI for Testing
本日紹介するAI for Testing
セルフテスティング
アプリの変更を検知し、テストを自動修復
セルフヒーリング
AIがテストを自動生成、実行する
セルフテスティングセルフヒーリング
アプリの変更を検知し、テストを自動修復 AIがテストを自動生成、実行する
アプリの変更
単純なモデル
2 ポイント 1 ポイント
Id Same Not Same
Class Not Same Not Same
Text Not Same Not Same
X-path Not Same Not Same
Tag Same Same
機械学習モデル
変数
Id
Class
Text
X-path
Tag
類似度機械学習
0.9
0.7
セルフテスティングセルフヒーリング
アプリの変更を検知し、テストを自動修復 AIがテストを自動生成、実行する
3つのステップ
要素の特定
コンテキスト
の学習
ユーザーフロー
の学習
Step 1 Step 2 Step 3
Step 1: 要素の特定
見出し
テキスト入力
パスワード入力
ボタン
リンク
機械学習不要
Step 2: コンテキストの学習 Jason Arbon – AI for User Flow Verification, https://aisummitguild.com/
Step 2: コンテキストの学習
Step 2: コンテキストの学習
Step 3: ユーザーフローの学習
https://www.youtube.com/watch?v=V1eYniJ0Rnk&feature=youtu.be
Reward
100
10
-10
-100
Q-Learning
Step 3: ユーザーフローの学習
1. IDを入力
2. パスワードを入力
3. ログインボタンをクリック
Step 3: ユーザーフローの学習
Step 3: ユーザーフローの学習
アプローチ
Tariq King - A Vision of Self-Testing Systems, https://aisummitguild.com/
主なスタートアップ
評価
記録再生ツールの拡張
アプリの変更を検知し、テストを自動修復。
モジュール化、データ駆動にも対応し、既存
のテスト自動化ツールの問題点を解決する。
セルフヒーリング
プレイヤー 資金調達 代表者 経歴 備考
(testim)
Series A
($7.9M)
Oren Rubin (CEO):
Googleなど20年以上
の経験を持つエンジ
ニア
2018/5/30 The AI Summit Guild
2017/11/2 Series A
2014/9 創業
複数企業が実用中。日本企業も
複数がPoCを実施している。
(Mabl)
Series B
($30M)
Dan Belcher, Izzy Azeri:
元Googleで
Stackdriverの開発者
2018/9/18 Series B
2018/5/30 The AI Summit Guild
2018/5/9 Nanalyze
2018/2/21 TechCrunch
2018/2/21 Series A
2017/1/23 創業
Google Venturesによる投資を受
け、急速にチームを拡充してい
る。
評価結果のサマリー
2 回 3 回
1 回
手動テスト
テスト自動化
インストール 5分
学習 1 時間
4 回1 回
4回 繰り返すと効果あり
できない / しにくいテスト
 プラグイン (Active X, Silverlight, Flash etc.)
 排他テストなどの同時処理
 見た目(崩れ、アニメーションなど)の検証
ScopeROI
80 % がテスト可能(Webのみ)
* 検証用の簡易Webアプリで検証: 39 テストケース, 818 LOC
Testim, Mablに
大きな差はない
セルフヒーリング
単一要素の変更
1. ID, 2. class, 3. タグ, 4. 位置, 5. テキス
ト, 6. 見た目
要素の順序変更
セルフヒーリング
繰り返し要素の変更 NG
セルフヒーリング
評価
セルフテスティング
探索的ボット
AIがテストを自動生成、実行する。
テストの70%は単純作業と言われており、こ
の70%分をAIが代替できる。
プレイヤー 資金調達 代表者 経歴 備考
(test.ai)
Series A
($17.6M)
• Jason Arbon (CEO)
Microsoft, Google出身
でAIST創設者、
「How Google Tests
Software」の共著者
• Justin Liu (COO)
2018/6/31 Series A
2016/9/14 Seed
2015/10/1 創業
AISTAを立ち上げるなど、この分野
のパイオニア
(Appvance.ai)
Series A
($7M)
• Frank Cohen: シリア
ルアントレプレナー
• Kevin Surace: 元
Serious EnergyのCEO
2016/2/24 Series A
2013/2/1 Seed Round
2011/10/1 創業
Sum Microsystemsからのスピンアウ
トで日本市場にも精通している
リサーチ結果
対象 モバイル
* 今年中にWebも対応予定?
Webとモバイル
提供形態 SaaS オンプレ
学習方法 アプリをクローリング 人による要素定義、httpログ
結果判定 人の確認が必要だが実装済? 人によるバリデーション定義
その他の特徴 Gherkin言語の拡張(AISTAで策定中)でAIに
テストを指示できる
-
appvanceのみ実機
検証
3つのステップ
要素の特定
コンテキスト
の学習
ユーザーフロー
の学習
Step 1 Step 2 Step 3
アプローチの違い:コンテキストの学習
30kのアプリから学習
公開されているアプリを学習
データにしてログインボタン、
ショッピングカートなどの要
素を学習
Jason Arbon – AI for User Flow Verification, https://aisummitguild.com/
アプローチの違い:コンテキストの学習
人が要素を定義
X Pathで要素を特定し、種類、
バリデーションを人が定義し
て、コンテキストを教える
アプローチの違い:ユーザーフローの学習
QLearningで学習
QLearningを用いて、どのよ
うにしてショッピングカート
にたどり着くかといったユー
ザーフローを学習
Jason Arbon – AI for User Flow Verification, https://aisummitguild.com/
アプローチの違い:ユーザーフローの学習
httpログから学習
httpログから、実際のユー
ザーによるユーザーフローを
再現する
まとめ
レベル1(セルフヒーリング) :記録・再生ツールの拡張として実用段階
レベル2(セルフテスティング):製品化されているもののトライアル段階
レベル3(宣言的スクリプト) :製品開発段階
自動化補助、セルフヒーリング
セルフテスティング
宣言的スクリプト
AIがほぼ全てを実施
完全AI化(人の補助が不要)
https://blog.appdiff.com/test-autonomy-levels-7de7967d030eAI for Testingのレベル(AISTA版)
評価のポイント
 創業者、投資家、開発
チーム
 鵜呑みにせず、機能とア
プローチを確認
 ROI、ユースケース、課題
Contact me!
参考
testimとmablの比較表
テストカバー率 79% 71%
対象システム要件 Webシステム ※Active X, Silverlightなどプラグインは不可
対応ブラウザ Chrome, Firefox, Safari, Edge, IE11 Chrome, Firefox
ツール実行環境 Chrome ※エクステンションをインストールして使用
ユースケース 繰り返しが前提のテスト。ただし、一部は手動テストにする必要がある。
• スモークテスト
• リグレッションテスト
• クロスプラットフォームテスト
課題 • 排他テストなどの並列処理、アニメーション、マウスオーバー検証、見た目(崩れなど)の検証が
できない(Seleniumベースのため、今後も解消は難しい)
• 効率的な管理には命名規約とモジュール化設計が必要
• ファイルアップロードができない
• ポップアップ・ダイアログの操作ができない
モジュール化
(繰り返す処理をモジュール化し、再
利用する機能)
Shared Stepとしてモジュール化できる
http://docs.testim.io/getting-started/groups
Flowとしてモジュール化できる
https://help.mabl.com/docs/using-reusable-flows-in-the-trainer
乱数入力
(ユーザー名など、同じ値を入力でき
ない場合に利用する機能)
JavaScriptで記述する
http://docs.testim.io/guides/set-random-data-as-text-value
アルファベット、数字、アルファベッ
トと数字の混合を{{alpha:5}}, {{digit: 2}},
{{alnum:8}}のように指定できる
https://help.mabl.com/docs/adding-variables
検証の種類 要素が存在する、存在しない、テキス
トの値(正規表現利用可)、JavaScript
によるカスタム検証が可能。画像検証
(Pixel)も可能
http://docs.testim.io/getting-started/validations
等しい/等しくない、含む/含まない、~
ではじまる/はじまらない、~より大き
い/小さい、~以上/以下JavaScriptによる
カスタム検証が可能
https://help.mabl.com/docs/including-assertions-in-your-
journey
アプリが生成した値の利用(アプリが
受付番号などを発行、次の処理でその
番号が必要なテストで利用)
画面に表示された値を変数に保持する
機能がある
http://docs.testim.io/advanced-steps/extract-text
JavaScriptで要素を取得し、値を変数に
保存できる
https://help.mabl.com/docs/using-javascript-steps-in-the-
trainer

Ai for software testing