「UI自動テストツールとAI」〜AIを使った自動テストの「今」と「未来」〜

654 views

Published on

2017年6月23日に行われた、JaSST'17 Kansai の発表資料です。

http://jasst.jp/symposium/jasst17kansai.html

Published in: Software
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
654
On SlideShare
0
From Embeds
0
Number of Embeds
20
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

「UI自動テストツールとAI」〜AIを使った自動テストの「今」と「未来」〜

  1. 1. 「UI自動テストツールとAI」 〜AIを使った自動テストの「今」と「未来」〜 株式会社TRIDENT 伊藤望
  2. 2. About Me p 伊藤 望 p 株式会社TRIDENT 代表取締役 n テスト自動化の支援を行うベンチャー p コミュニティ運営 n 日本Seleniumユーザーコミュニティ p 執筆
  3. 3. 今日のお話 1. AI技術を使った自動テストサービス 「Magic Pod」 2. Magic Podの仕組み 3. Magic Pod自身のAIエンジンのテスト 4. AI自動テストの今後の可能性
  4. 4. 1. AI技術を使った自動テストサービス 「Magic Pod」
  5. 5. 定型的な作業は、 どんどん置き換えられていく 今、様々な仕事が AIに置き換えられつつある p 運転 p 翻訳 p 倉庫作業 p 記事執筆
  6. 6. テストの領域における 定型作業
  7. 7. 主なテストの領域 テスト設計 テスト実行 AIでもっと効率よくなりそう! 主に非定型作業 単純作業・繰り返し作業が かなり多い
  8. 8. AI技術を活用したテスト自動化
  9. 9. Magic Pod p AIを活用した自動テストWebサービス n ディープラーニングなどの機械学習技術などを活用 n 現在はモバイルアプリ向けのみ p 旧「Magic Pot」から改名
  10. 10. コンセプト動画 https://www.youtube.com/watch?v=f6SO9pZANas
  11. 11. デモ (Yahoo!乗換案内) https://www.youtube.com/watch?v=f6SO9pZANas
  12. 12. Magic Pod ニュースレター p Magic Podの情報を定期的にお知らせ
  13. 13. 2. Magic Podの仕組み
  14. 14. p 2通りの方式がある 1. テスト実行時検索方式 n 画面キャプチャだけでテストを作成 2. テスト作成時検索方式 n もう少しシステム情報を活用した方式 n 画像解析が間違っていたら手直しできる n 実運用ではこちらをメインに使ってもらっている テスト作成・実行エンジンの仕組み
  15. 15. 1. テスト実行時検索方式
  16. 16. 1. テスト実行時検索方式 -テストを作成する- ①画像解析 ②選んでテスト作成
  17. 17. 1. テスト実行時検索方式 -テストを実行する- ③Appiumスクリプトに変換 ④コマンドラインから実行 ④CIで実行
  18. 18. 1. テスト実行時検索方式 -テストを実行する- ⑤実行時に再度画像解析 ⑥対応するAppium要素を取得 UIATextField[1] ⑦Appiumで実行
  19. 19. 1. テスト実行時検索方式 -テストを実行する- ⑤実行時に再度画像解析 ⑥対応するAppium要素を取得 UIATextField[1] ⑦Appiumで実行 「名前」入力エリア UIATextField[1] の対応はキャッシュし、 2回目からは高速に動作
  20. 20. 2. テスト作成時検索方式
  21. 21. 2. テスト作成時検索方式 -テストを作成する- ②画像解析& 対応する要素計算 ①Magic Pod Desktopで画像と UIツリー情報をアップロード
  22. 22. 2. テスト作成時検索方式 -テストを作成する- ③選んでテスト作成 テストスクリプト UIマップ ④実行前に UIマップを作成可能
  23. 23. 2. テスト作成時検索方式 -テストを作成する- テストスクリプト UIマップ • 画像解析で生成されたラベル • 人間が書き換えてもよい
  24. 24. 2. テスト作成時検索方式 -テストを実行する- ⑤そのままAppiumで実行
  25. 25. 3. Magic Pod自身のAIエンジンのテスト
  26. 26. 1. 人間のように賢そうなプログラムをAIと呼ぶケース 2. 機械学習を使ったプログラムを指すケース n データを学習させる作業が発生 n 学習データによって挙動が変わる AIって何?
  27. 27. p 学習データの一部をテストデータとして使い、正答率で エンジンの性能を測る (交差検証) p 機械学習エンジニアは、大抵このテストをしている 機械学習エンジンのテスト テストデータ ①学習させる エンジン 学習データ ②テストする ③正答率が低いとNG
  28. 28. p 正答率の数字だけでは気づかないこともある p 例: 1. 学習データを増やした 2. その結果、正答率が96% => 98%にアップ 3. だが、これまで「ボタン」と認識できていた画像が認識できな くなった 機械学習エンジンのテスト
  29. 29. p どう学習されたかは、人間にはブラックボックス n 意図せぬ結果が時々起きる p 学習ロジックの中に、ランダム処理がある(ことが多い) n 例:確率的勾配降下法:学習データの偏りをなくすため、毎回 データをランダムに選んで学習 n 「データもロジックも変えてないのに、学習し直したら結果が 変わった!」みたいなことが.. 原因
  30. 30. p 正答率を見る + きちんと動作して欲しい基本テストケー スを自動テスト化 p 開発中もこまめにテスト Magic Pod開発ではどうしているか
  31. 31. p 失敗することはあるか n わかりやすいアイコン等の識別は、通常失敗しない n 人間も判断に困るような際どいデータの判定は、学習ごとに 結果が変わりがち p 失敗した時の対策 n 対策1:間違えたデータを学習データに加える n 対策2:とりあえず再学習 n 対策3:諦める n 対策4:機械学習ロジック自体の改良 基本テストケースが失敗したら
  32. 32. p 現状世の中で機械学習が使われているところ 1. 不安定さを許容できる処理 n 投稿写真のタグ付け n チャットボット n 商品のレコメンド 2. 人間より精度が良い処理 n 工場の不良品検出 n 病気の原因診断 そんな不安定で大丈夫か?
  33. 33. p Magic Podは? n 不安定さを許容できる部分に機械学習を使っている n 画像解析結果は、間違えてもユーザーが直せる n テスト実行には、現状機械学習エンジンを使っていない p 自動運転は? n 画像認識の精度はすでに人間と同レベル? n センサーなど、非機械学習技術と併用? そんな不安定で大丈夫か?
  34. 34. p不安定さを許容できる処理 p人間より精度が良い処理 機械学習は使い所が大事
  35. 35. 4. AI自動テストの今後の可能性
  36. 36. 人間向けの テストケースを理解したい
  37. 37. 現在のMagic Pod メールアドレスに「user@example.com」を入力 パスワードに「pass01」を入力 ログインボタンをクリック Input("id=mail", "user@example.com") Input("id=pass", "pass01") Click("loginbutton") 既存自動テストツールのコード 形式の決まった日本語の詳細ステップ
  38. 38. Magic Podの最終目標 p 人間向けの手動テストケースをAIが理解し自動実行 user@example.com / pass01 でログイン user@example.com pass01
  39. 39. Magic Podの最終目標 多くが「UI手動テスト」 1. Excel(など)でテストケース作成 2. 人間がUIからテスト実施 世界で毎年テストに 費やされている金額 15兆円 (推定)
  40. 40. Magic Podの最終目標 多くが「UI手動テスト」 1. Excel(など)でテストケース作成 2. 人間がUIからテスト実施 世界で毎年テストに 費やされている金額 15兆円 (推定) この部分を置き換える
  41. 41. 実現するには user@example.com / pass01 でログイン メールアドレスに「user@example.com」を入力 パスワードに「pass01」を入力 ログインボタンをクリック Input("id=mail", "user@example.com") Input("id=pass", "pass01") Click("loginbutton") 行間を読んで自動展開 既存自動テストツールのコードに変換 大変そう できそう
  42. 42. 行間を読んで自動展開 - アイデア 1. Magic Podで、共通関数機能を提供 メールアドレスに{user}を入力 パスワードに{pass}を入力 ログインボタンをクリック {user}/{pass}でログイン ユーザーが、好きな名前で 共通関数を作成できる
  43. 43. 行間を読んで自動展開 - アイデア 2. 共通関数名 → 処理名のビッグデータを 学習すれば、自動展開できるように! メールアドレスに{user}を入力 パスワードに{pass}を入力 ログインボタンをクリック {user}/{pass}でログイン
  44. 44. 行間を読んで自動展開 - アイデア 2. 共通関数名 → 処理名のビッグデータを 学習すれば、自動展開できるように! メールアドレスに{user}を入力 パスワードに{pass}を入力 ログインボタンをクリック {user}/{pass}でログイン
  45. 45. テスト設計も自動化したい
  46. 46. テスト設計の自動化 p 背後のデータモデルの推定など、複雑な論 理的思考が必要 p システム仕様の背後にある、暗黙の常識を 読み取る必要がある
  47. 47. テスト設計の自動化 p効率化は、色々できる p完全自動化は当面無理では? n 自動化された時は、おそらくシステム開発の 仕事は全て自動化されている
  48. 48. AIとQAの未来
  49. 49. QAの仕事はどう変わっていくか pテスト実行などの定型的な仕事は、少しず つ減っていくのではないか pテスト設計などの、より創造性の必要なテ ストに注力できるはず
  50. 50. QAの未来は pテストの中に単純作業があることが、QAの 地位や価値を下げている p 単純作業がなくなり、スキル(業務理解、ユー ザー理解、テスト技法、等)勝負の世界になれ ば、QAの地位はむしろ向上するはず!
  51. 51. ご静聴ありがとうございました!

×