こんにちは、QAエンジニアの坂田です。
去る3月27〜28日に、東京御茶ノ水で開催された JaSST'19 Tokyo に参加してきました。 少し日が経ってしまいましたが、ミニレポートしたいと思います。
今年は AI がテーマ
JaSST は NPO法人ソフトウェアテスト技術振興協会(ASTER)が2003年から全国各地で開催している国内最大級のソフトウェアテストシンポジウムです。
毎回、特定のテスト技法に関する技術的な発表からチーム運営やキャリア形成まで様々なトピックのセッションが開かれます。今年は「AI」がフィーチャーされた構成になっていました。 (メイン会場は特にAI絡みが多かった!)
「AI で
テストする(AIによるテスト自動化)」話や「AI を
テストする(例えば自動運転システムに対する品質保証)」話など、様々な観点からテストとAIの関わりを学べるシンポジウムでした。
基調講演:AI-Driven Testing
基調講演は「AI で
テストする」側のトピックとして、海外から Ultimate Software のTariq King氏を迎えてAI駆動のテスト自動化の取り組みが紹介されました。
ソースはGitHubで公開されています。素晴らしいですね。 github.com
私が聞いた限り、概ね以下の流れでテストが行われるようです。
Webサイトに対し、AIがサイト内を探索して入力エリアやボタン等を探す ↓ 各要素に対し、サイト構造やDOM、前後のテキストの文脈からあるべき操作やインタラクションを推定する ↓ Test Agentがテスト実行プランを生成し、実際にテストを実行する ↓ 実行後、テスト結果をレポートする
面白かった話
- AIがテスト生成する際「IF→WHEN→THEN」の順にストーリーを組み立てる
- 「FirstNameというテキストボックスを見つけた→空にしたままSUBMITを押す→エラーが表示される」など
- 「事前条件→実行手順→期待結果」ということで、人間がテストを書く際のモデルと一緒ですね
- AIがAI自身の動作を評価しフィードバックする仕組みを入れている
- Adoptive behaviorと呼ばれてました
- 並列実行が可能
- 親分のTest Agentが多数の子workerを統制し、探索〜テスト実行を非同期かつ最適に行えるらしい
講演後も下記のような質疑が活発に行われました。
- AIによってブラックボックス化されたテストを、我々はどう信頼し正しいと判定すれば良いか?
- テスト結果の膨大なアウトプットに対し、どうトリアージを行えば良いか?
- 人間の感覚に基づくテスト(ユーザビリティテストなど)は可能か?
- Agentが学習すると、徐々に探索テストに近づくのではないか?そこに含まれるランダム性はどう制御できるか?
- システムの正しい振る舞いをAIが推測するのにも限界があるのでは?
- AIによる自律テストの今後は、汎化に向かうのか特化に向かうのか?
まだ開発は道半ばのようですが、今後の展開が楽しみです。
講演:AIプロダクトに対する品質保証の基本的考え方
こちらは「AI を
テストする」側の話です。
QA4AIコンソーシアム の設立発起人である電通大の西さんと国立情報学研究所の石川さんによる講演でした。
AIは下記の特性から従来の品質モデルによる評価やテストは不可能、新しい品質軸が必要、とのこと。
- 帰納的開発である
- 通常のプログラミング (演繹的開発) とは逆に、ML (機械学習) 技術は入出力ペアの集合から導き出し方 (関数) を構築するシステムである
- 結果実装はブラックボックスになり、なぜ正しいのか説明できない
- 確率的振る舞いをする
- CACE (Changing Anything Changes Everything) 性により入力条件が微妙に変わっただけで出力が全く別物になる可能性がある
- 非線形な振る舞いを予測できず同値クラスなど従来のテストアプローチも通用しないため、テスト不可能
- 結局大量で多角的なデータによる検証が必要になり、データ生成・検証・評価の自動化も必須になる
AIの面白い(困った)特性の例
- 自動運転の画像認識で天下一品の看板を進入禁止と認識し、永遠に天一に入れない
- 同じく自動運転で、STOPの標識にステッカーを貼りつけた途端にGOの標識と誤認識する
- オオカミの画像のどこが識別に効いたか分析したら、周りの雪景色しか見ていなかった
AIプロダクトの品質軸
以下の5つが提唱されました。
- Data Integrity
- Model Robustness
- System Quality
- Process Agility
- Customer Expectation
システム面では上3つの 学習に用いるデータ
適用する機械学習モデル
システム全体の信頼性・安全性
が該当します。
データに関しては学習の偏りや過学習を防ぐ必要があり、モデルに関しても筋の良いアルゴリズムを選定するなど、AIならではのテクニックを駆使しないと太刀打ちできなさそうだなぁ、、という感想。 信頼性・安全性もAIである以上確率的/非線形的な振る舞いは避けられず、クリティカルな機能や例外・制約・セーフティーネットに当たる部分は非AI(ルールベース)で押さえる等の考慮が必要だ、とのことでした。
講演資料
www.slideshare.net
参考資料:IoT/AI時代のテスティング・検証技術の最前線
www.slideshare.net
他に聴講したセッション
AI以外にもテスト自動化関連を中心にいくつか聞きました。長くなるのでこちらは割愛します。
- テストの未来、品質の未来 ~自動化はテスター撲滅の夢を見るか?~
- 赤い会社のテストエンジニアたちが語りつくす ~テスト現場で起こるリアル課題と対処策~
- Unit Testing: What Every Tester and Developer Should Know
行ってみて
元々は自動化が目当てで参加を決めたのですが、色々聞いて一番刺激を受けたのはAIでした。 日々のQAそのものに直接生きる訳ではありませんが、全く新しい視点から改めて「品質とは」を考える良い機会になりました!