JaSST'19 Tokyo
基調講演 AI-Driven Testing タリク¶
今まではテストの分野は寝ていた。
テストの自動化を再定義する
40以上の論文を書いてきた。
教授とQuality CoE Headの役割
機械学習を使ってテストをしたい
博士論文を書いても棚に飾ってるだけでは意味がない
ソフトウェアテストはマニュアルテスティングが多い
Seleniumがあったとしてもテストを作る必要がある
自動であっても結果が正しいのか人が確認する
本当にソフトウェアテストを自動化できないだろうか
ソフトウェアをテストする上でAIを使う事をしたい
AIは知性を模倣する
Intelligent Agent: Autonomous Entity
自分自身の行動を内省し適応していく
Machine LearningはAIの一つのモデル
自らプログラムを獲得する
明示的な命令を与えない
機械は命令に従うが・・・
娘は言っても聞かない、経験から学ぶ
雨粒を理解すると、雨粒じゃないものを違うとわかる
新しい雨粒っぽいものがきたらどうだろう?
このようにMLは分類というすることができる
つまりClusteringということ。
MLのカテゴリ:教師あり、教師なし、強化学習
テストに活かすに当たって・・・
InputをDomainにして、OutputをRangeにする
テストと機械学習にはとても共通項が多い
コスト便益法でテストしきることはできない
AI Driven Testingの場合は機能が増えるごとに労力が増えない
(機能が指数関数的に増えても、直線的)
Mabl test.ai applitools sofy.ai diffblue eggplant
App test.ai function is testrigor testim autonoml
AIの問題を解決しようとしている企業たち
1画像やDOMで学習
2モデルを構築する 確率論的
3アクションを生成
4フィードバック
MAPE + KML
アプリケーションの探索をする
CoordinatorがTestを生成して
WorkerがTestを実行する
Explore worker
Run worker
Coordinatorが評価する
テキスト生成でも隠しレイヤーを追加するだけで
かなり文章っぽくなる
General Purpose, Pesticide free, large scale
Self-Configure Self-Heal Self-Optimize Self-Protect
そしてSelf-Testができるようになる
テストしながら、自分もテストしなければならない
膨大なテストの結果をグループ化して処理している
そのほか、新しいAIの技術を使って解決していける
ある一つの行動を制限したい時どうするのか
二つのゴールをいっきに解決するのは難しい
ある分野において制限したいというのは難しい
だからスコープを制限する。無いようにする
振る舞いの制限のために見えるようにする
こういう質問をきくとここ3年で何してきたかがわかる
ソフトウェアが予想通りの振る舞いをするかどうか
それ以外の振る舞いをしないかどうか
マシーンのトレーニングをしていく必要がある
State of Testing Survey & Report¶
現状を把握するというより、未来をみていくのにしている
調査の結果をご覧いただくのですが、これからどちらの方向に進んでいるかを知る
なぜグローバルのテストのトレンドを知ろうとしている?
自動化でテスターの職は失われるのだろうか?
だからといって何も変わってないわけではない
20年前テスターは1日中テストをしている仕事だった
データ、ドキュメント、アナリシス、コーチ、Programming
といったことをする時間が増えている
しかしテストチームは小さくなってきている。
wfからagileになっていくにあたってチームが小さくなっている
デベロッパーのためにスクリプトテストが必要になってきてる
テスターの新しいスキルとは何か
1コミュニケーション
2機能自動化
3テストメソドロ時
4web
5API
7agile
ソフトスキルにフォーカスしている。
テスターという仕事自体が消滅することはないが、
変化に対応していくことは必要だと感じている。
Timeline to the new normal for software testing
テストマネジメント¶
欠陥管理の鉄則
バグトラッキングツールを導入したからといってうまくいくわけではない
テスト自動化してよくなるわけじゃないのと同じ
ツールとプロセスをどちらもちゃんと管理しないとムダである
ツールはメンバーと同じで、はい効果だしてといっても無理がある
欠陥管理ってなんでやるの?が答えられないなら何使ったって上手くいかない
マイクロサービス 自動テスト戦略¶
新構成・新技術に適したテスト手法
アーキや技術が変化してるのにQAは古いまま
自動テストピラミッド・UT IT ST
FEとBEでUT ITをそれぞれテストする
品質をしたから積み上げていこう
2008年4月で新卒入社した
自動テストチームと手動テストチームで別れてやった
GUIテストがなくなるわけでは無いので
結合でやる部分もあった
実際はスクリプト作成よりも、テスト設計が苦労した
手動テストとの切り分け、実際の入力値の調査など
自動テストの準備が間に合わず、結局手動でやることも
テスト設計にかかる時間は手動とかわらない
GUIテストとおなじテストデータでやってしまっていた
時間短縮のためテストパターンの粒度を段階的に細かく
疎通>パターンを少し増やす>細かいパターンまで作る
手動テストチームと方針を共有して
GUIの自動化とくらべて、簡単にテストケースが増やせる
ITによせて自動テストをつくることにした
どうしても残ったものをE2Eで実施した
STでやる範囲はへったものの、労力が減っていない
本来やらなくていいことをITでやっていた
構成がテスタブルじゃないところが多かった
どこを重点的にテストするかの指標がない
UT IT レイアウト E2E 探索的という役割で分類
テスト自体がホワイトボックステストだから質が担保できない
あとメンテがとても大変だという問題
テストコードのルール策定・レビュー・そしてレビュー
完璧をわすれて、網羅的にするのをやめた。
続けられない事に意味はない。
UT/ITのスナップショット、レイアウトはスクリーンショット
E2Eは無理にユーザーの動きを再現せずに安定を優先する
障害管理を徹底して、そこから振り返りながら潰していく
テストケースをちゃんとレビューしている
AIに何ができないか¶
知能を定義することが人口知能の目標?
人間のような知性をもった人工物をつくることを目標とする
目で見たものを理解する、聞いた事を理解する、この認知も知能
100%ちゃんと動いたらAIではない
昔はAIの領域に数式処理があった。微分とか積分ができる。
100%うまくいくようになったらAIから卒業してしまう。
うまくいかないのがAIに残っていくから、いつも変な事をやっている。
物理学が物理学とはという本はつくらない
人工知能研究者ごとに人工知能の定義が異なっている
言葉を使うのが重要だという人は自然言語処理をする
見たものとなると、画像認識処理をする
知能とは何なのか?心とは?感情とは?
人工知能の研究は人間とは何かを知る事につながる
過去の2回のブームとは違って、今回はそれなりにすごいことが出来る
シンギュラリティ:技術的特異点 2045年に来ると予測されている
AIは道具でしかないから、その道具をどう使えば良いのか
人類がAIに負けたら、どういう振る舞いをしたら良いのかわからない
将棋や囲碁でAIに負けたので、その業界がどうなるのかは観察できる
ルールが明確で範囲が限定されている状況で解を早く求めるのが得意
ルールが不明確あるいは範囲が非限定の状況ではまだ人間が得意
人間なら絶対しないような間違いをAIがやってしまうことがある
お医者さんが無意識にやっている知識は聞き出せない
画像認識コンテストでヒントンが圧倒的に優勝してブームに
2006年機械学習で評価関数を作るボナンザ
創造性を発揮するような仕事は人間にのこりそう
AIが作った手をもうプロ棋士とかは勉強している
人間より強くなるために強化学習する
コンピュータの指す手の意味がプロ棋士にも理解できない
アルゴリズムがブラックボックスになっている
将棋や囲碁は勝てば良い。俳句は良いかどうか判定しにくい。
将棋で負けると、将棋だとなぜ悔しいのか?
人間は体力で負けることは経験があるが、知性で負けた経験がない
知性というのは人間だけが得ることができた
藤井聡太は日頃からAIと対戦に親しんでいる
コンピュータの指し手との一致率が高い
AIネイティブ世代、人間が人工知能から学ぶ時代
アメリカで会計ソフトが販売されはじめ
みんな会計士に頼まないようになってしまった
20年後にどの仕事がコンピュータに代替えされるのか?
野村総研が日本でもつくった
一般事務員 駅務員 会計監査 学校事務 銀行窓口 タクシー
いまの労働人口の49%
想定外の状況における判断、新しい枠組み、新しい価値とか
今もスマホに意識を任せている。どんどん任せていく事になる
漢字の書き取りとか英語のつづりとかテストして意味あるのか?
賢くなった人工知能をうけいれるには時間が必要
人工知能をいいものにするのも悪いものにするのも人間次第
パネルディスカッション¶
自分たちが送り出したにかかわらず、どう動くかはわからない。
テストオラクル、テストの良し悪しをつけるのがわからない。
仕様というのが厳密じゃない。厳密じゃなくても許される。
今までのやり方が通じないという事でAIのテストが難しい。
そもそもどうあるべきかというのは難しい。何が品質なのか。
人材や人事などのドメインの製品もある
天気予報が説明なしに晴れと言ってきてもどうだと思う
かといって膨大なデータからなる機械が説明して伝わるのか?
相手によって説明の仕方が変わってくるのは人間同士でも同じ
自動運転のデータに雪の日のデータをいれたか?霧の日は?
オンラインバリデーションがやっぱり必要だと思う
日本に降り立って多くの文化を学習して気をつけてきた
そのように短時間で適用できるようなマシーンを作ることができるかが重要
AIもどんどんこれからも変わっていくので
品質を考えるのも、今完璧なのをやってもすぐに変わる
訓練データやテストデータの保証が必要
たくさんのデータを使っている以上、そのデータをいじられると問題になる
専門家が24時間はむりにしても、結果が正常か見ている
倫理的ハッカーを雇ってセキュリティを見てもらう
データを使ってソフトウェアのプログラミングをしようということ
だからデータセキュリティというのは今後伸びていく
データをもっと防御できるような仕組みに投資していく事になる
ダメな例は言えばたくさんでてくる
だから育てるという観点でQAとして携わらないと意味がなくなる
プロジェクトが前に進んでいくようにガイドする事がQAの役割
QAは開発のなくてはならない一つの場所だということ
顧客の目的をしっかり捉えて、その問題を解決するためにどういったシステムが適切か
そのシステムにAIやMLやら関係なく、そのニーズを満たすものを作る必要がある