Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,733 views

Published on

2017年6月23日に行われた、JaSST'17 Kansai の発表資料です。以前にアップロードしたもの(https://www.slideshare.net/NozomiIto/uiaiai)は、「画像解析の詳細」 の話を除外してアップロードしていました。こちらはその内容も含んだ完全版です。

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

Published in: Software
  • Be the first to comment

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

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

×