完全版:「ui自動テストツールとai」〜aiを使った自動テストの「今」と「未来」〜...
Post on 28-Jan-2018
52 Views
Preview:
TRANSCRIPT
p 2通りの方式がある
1. テスト実行時検索方式
n 画面キャプチャだけでテストを作成
2. テスト作成時検索方式
n もう少しシステム情報を活用した方式
n 画像解析が間違っていたら手直しできる
n 実運用ではこちらをメインに使ってもらっている
テスト作成・実行エンジンの仕組み
1.テスト実行時検索方式-テストを実行する-
⑤実行時に再度画像解析
⑥対応するAppium要素を取得
UIATextField[1]
⑦Appiumで実行
「名前」入力エリア UIATextField[1]
の対応はキャッシュし、2回目からは高速に動作
p ディープラーニング技術の得意分野
p畳み込みニューラルネットワーク(CNN)を使用p画像の種類を人間が教えた上で、大量に学習させる
p Googleの写真分類(1000クラス以上)ですらこのアプローチ
「検索アイコン」「ボタン」を見た目から特定する
p CNNを学習させる様子
これは「search」クラスだよ
これは「button」クラスだよ 学習させたデータに応じて、
重みパラメータが変化していく
「検索アイコン」「ボタン」を見た目から特定する
p学習していないアイコンは認識できない
p間違えてもユーザーが直せる &見慣れないアイコンにはラベルが付いていることが多いので大丈夫
この画像は何のクラス?
わかりません..
「検索アイコン」「ボタン」を見た目から特定する
p画像解析
1. 領域分割(独自ロジック)2. 各領域をCNNにかけて物体認識3. OCR(文字認識)4. Captioning5. 2.3.4.の結果をマージして表示
p 1.&2.が時代遅れ&低速なので改善したい。。n FastR-CNNn FasterR-CNNn SingleShotMultiBox Detector
画像解析の全体像
p学習データの一部をテストデータとして使い、正答率でエンジンの性能を測る (交差検証)
p機械学習エンジニアは、大抵このテストをしている
機械学習エンジンのテスト
テストデータ
①学習させる
エンジン
学習データ
②テストする③正答率が低いとNG
p正答率の数字だけでは気づかないこともある
p例:
1. 学習データを増やした
2. その結果、正答率が96%=>98%にアップ3. だが、これまで「ボタン」と認識できていた画像が認識できなくなった
機械学習エンジンのテスト
p どう学習されたかは、人間にはブラックボックス
n 意図せぬ結果が時々起きる
p学習ロジックの中に、ランダム処理がある(ことが多い)n 例:確率的勾配降下法:学習データの偏りをなくすため、毎回データをランダムに選んで学習
n 「データもロジックも変えてないのに、学習し直したら結果が変わった!」みたいなことが..
原因
p失敗することはあるか
n わかりやすいアイコン等の識別は、通常失敗しない
n 人間も判断に困るような際どいデータの判定は、学習ごとに結果が変わりがち
p失敗した時の対策
n 対策1:間違えたデータを学習データに加えるn 対策2:とりあえず再学習n 対策3:諦めるn 対策4:機械学習ロジック自体の改良
基本テストケースが失敗したら
p現状世の中で機械学習が使われているところ
1. 不安定さを許容できる処理
n 投稿写真のタグ付け
n チャットボット
n 商品のレコメンド
2. 人間より精度が良い処理
n 工場の不良品検出
n 病気の原因診断
そんな不安定で大丈夫か?
p MagicPodは?n 不安定さを許容できる部分に機械学習を使っている
n 画像解析結果は、間違えてもユーザーが直せる
n テスト実行には、現状機械学習エンジンを使っていない
p自動運転は?n 画像認識の精度はすでに人間と同レベル?n センサーなど、非機械学習技術と併用?
そんな不安定で大丈夫か?
現在のMagicPod
メールアドレスに「user@example.com」を入力パスワードに「pass01」を入力ログインボタンをクリック
Input("id=mail","user@example.com")Input("id=pass","pass01")Click("loginbutton")
既存自動テストツールのコード
形式の決まった日本語の詳細ステップ
MagicPodの最終目標
多くが「UI手動テスト」
1. Excel(など)でテストケース作成2. 人間がUIからテスト実施
世界で毎年テストに費やされている金額
15兆円 (推定)
この部分を置き換える
実現するには
user@example.com/pass01でログイン
メールアドレスに「user@example.com」を入力パスワードに「pass01」を入力ログインボタンをクリック
Input("id=mail","user@example.com")Input("id=pass","pass01")Click("loginbutton")
行間を読んで自動展開
既存自動テストツールのコードに変換
大変そう
できそう
行間を読んで自動展開 -アイデア1. MagicPodで、共通関数機能を提供
メールアドレスに{user}を入力パスワードに{pass}を入力ログインボタンをクリック
{user}/{pass}でログイン
ユーザーが、好きな名前で共通関数を作成できる
行間を読んで自動展開 -アイデア2. 共通関数名→処理名のビッグデータを学習すれば、自動展開できるように!
メールアドレスに{user}を入力パスワードに{pass}を入力ログインボタンをクリック
{user}/{pass}でログイン
行間を読んで自動展開 -アイデア2. 共通関数名→処理名のビッグデータを学習すれば、自動展開できるように!
メールアドレスに{user}を入力パスワードに{pass}を入力ログインボタンをクリック
{user}/{pass}でログイン
QAの未来はpテストの中に単純作業があることが、QAの地位や価値を下げている
p単純作業がなくなり、スキル(業務理解、ユーザー理解、テスト技法、等)勝負の世界になれば、QAの地位はむしろ向上するはず!
top related