HOME > 活動報告 > イベント報告 > JaSST'20 Hokuriku

イベント報告
 ソフトウェアテストシンポジウム 2020 北陸

2020年1月24日(金) 於 タワー111ビル スカイホール(富山県富山市牛島新町)

ソフトウェアテストシンポジウム 2020 北陸

はじめに

2020年1月24日(金)この時期の富山としては珍しいぐらい雪がなく、曇り空ながらも静穏な天候の富山で第2回となるJaSST Hokurikuが開催された。
今回は、昨年の参加人数117名を上回る184名の参加となるシンポジウムとなった。
プログラムは、基調講演、招待講演が2セッションと、招待講演と並行してテスト設計初心者向けチュートリアルが行われた。

開会宣言

共同実行委員長の坂口氏からのあいさつから始まる。坂口氏から、JaSSTについての説明と参加者の内訳についての説明があった。参加者184名の内訳は、富山:102名、石川:32名、北陸外(北は北海道、南は大阪):約50名とのことである。北陸地域の参加者が多く、北陸地域のソフトウェアテストに対する関心の高さが伺えた。
天気が良ければ会場で立山連峰を眺められるはずが、当日は曇り空のため観ることができなかった。そこを察知していたのか、坂口氏は立山連峰が描かれたネクタイを装着しており、「このネクタイでご勘弁してください。」とおもてなし心を盛り込んだトークで会場を和ませた。
今回のJaSST北陸のテーマは、今年がオリンピックイヤーということもあり、五輪の輪にちなんで「北陸で広がるテストの輪」となっていた。

基調講演
「AIのテストにおける課題と技術から考える今後のテスト」
石川 冬樹 氏(国立情報学研究所)

概要

参加者の中でAIに関わる仕事を行っている人がほとんどいなかったことから、「そもそもAIとは何か」という解説から始まり、「AIの品質」「AIのテスト」を考える話、そして「AIを使ったテスト」の紹介があった。
また、これまで「AIを使って何かをする」ということを考える、「AIを使ったモノ」を作る、ということに注力していたが、これらを利用する時代になろうとしている。そのため、AI開発では、「AIの品質」や「AIをどのようにテストすると良いか?」という課題に向き合い始めている、と語られていた。

「AIの品質」を考える事例

対象のAIは何ができて、これに必要な品質とは何か?どのようなテストが必要になるか?を事例を踏まえながら語られた。事例ごとに参加者に考えさせるように話されていた。

例:「始点」から「終点」を決めることで動画を生成する

「人のキャラクターの正面画像+ポーズを指定することでキャラクターが動き回ったり変身したりする動画を生成するシステム」のテストは何でしょう?テスト観点はなんでしょう?例えば「自然さ」ということが思い浮かびますが「自然さ」とは何でしょうか?そして、これらをどのようにテストコードに落とすと良いでしょうか?

例:自動運転してはいけない場所での自動運転

そもそも自動運転対象外の状況で、運転手は操作していなかった。警告音も鳴らしていたが、強制的に止めなかったのは問題ではないか?
ハンドルを握って自動運転させないようにすると良いのでしょうか?AIの品質の問題なのでしょうか?

例:路上の物体の判断が困難

ブレーキを踏むなどの人の判断を優先する部分は自動化していない。路上の物体の識別で、自転車を押している人は、歩行者なのか、自転車なのか、という判断が難しい場合、どのように振舞うのが良いでしょう?

例:誤ったタグ付け

人の目で認識しない少しのノイズでAIは誤認識する。人の営みに任せている事をAIにすると識別が難しい。やろうと思えば、例えば、「Stopのカンバンに白い線などのノイズを入れることで90マイルに認識させる」ということもできてしまう。

例:Botによる不適切発言

差別や放送禁止用語を「教えた」ユーザーがいたことが原因。故意に教えるという攻撃もできてしまう。その差別の定義はなんでしょうか?差別に関するブラックリストを持っておけば良いのでしょうか?どれくらいの用語を持っていないといけなかったのでしょうか?

例:AI採用が男女差別

男女差別をするつもりがなくても男性のデータが多いと男性を優先させた結果を出してしまう。マイノリティデータが無視され、マジョリティデータが優先される。訓練データの偏りによって判定が変わる。過去のデータは「教師」として現在でも適切だったのでしょうか?

このような事例より、入力データの何が結果に効いたのかという、なんで?の説明可能性が品質の一つになってくる。そして、何をもって「品質保証」「完成」とするのかが、課題であると話されていた。

機械学習の本質的な違い

「演繹的」は規則から規則を作る、「帰納的」は実例をもとに類推する、という説明から始まる。
従来のソフトウェアは、規則があるため、カバーする範囲が明確になっている。一方、機械学習は、帰納的でデータをもとに動きを決めるため、カバーする範囲が曖昧で説明がつかなくなる。原則として機能は不完全になる。これは、期待する結果として「90%成功しました」というのがテストとなる。試していない画像を持ってきて正しく判定されるかは誰にもわからない。ノイズが少し入るだけで違う判定になることもある。AIだけで判定を行うと明らかに異なっていても見逃す場合が起きてしまう。大まかに平均的に当たるように作れるが、何かを狙って当てるようなものは作れない。従来ソフトウェアと機械学習の違いを話されていた。
そして、機械学習における課題を次のように示していた。

  • 機械学習には訓練をする技術が必要
    大量かつ「適切な」訓練データが必要だが、どうふるまうかは未知である。ある出力がなぜ起きたのかは説明できない。または、その情報がない、あっても複雑で把握できない。訓練した傾向が役に立たない場合がある。
  • 従来のソフトウェアとは別の品質標準が必要
    品質を保証するために想定を尽くすことは何なのか?従来のソフトウェアの品質標準を変えなければいけない。例えば、画像認識の場合、(規則がブラックボックス化された)認識するという機能が一つあるだけになる。これらに対して品質が何であるかを決めないといけない。また、どれだけテストすると良いかわからない。テスト観点の話が大事になってくる。
  • お客さんと事前に約束ができない、合意ができない
    作ってみるまで何ができるかわからない。工数の見積もりができない。

結局、こういう課題は避けて通れないにもかかわらず、「完全」を求める人、理解できない人は多い。根本的な思想や意識改革が必要で、その筆頭は"顧客との意思決定"になる。具体的には、完璧を目指しても無理ってことをわかってもらう、そして利用される世界を想定する、環境のスコープを定める、それを顧客と合意する。と語られていた。

IoT/AIの世界

要求R、仕様S、環境Eの関係が変わってくる。R、Eの範囲は広がり、徐々に境界が消える。仕様を箇条書きにしたら終わらない。想定を尽くすことは難しい。結局はやってみて確認するしかないと考えている、と話されていた。
また、AIは"known unknown"と"unknown unknown"の存在であり、自分たちが作ったモノが何をやっているのかが正確に分からない世界。とも話されていた。

AIの品質へのアプローチ例

正解率は何を基準とする?不完全なものをどう受け入れ役立てる?どちらも発注者・利用者との協働が必要となる。
指針の例として、「テスト」できているかを評価スコア化する。featureの入力範囲や分布が予想とあうか確認する。直接的なメトリクス(制度など)と実影響のあるメトリクス。という話をされていた。

AIに対するテスト技術

いままでは、原則的に正解がある。AIはそもそも「テスト不可能」。正解があったとしても、10回に1回ははずれる。
次の技術を適用して機械学習モデルの「あら探し」テスティングを行う。

  • メタモルフィックテスティング:入力を変えると出力はこう変わるというのを試す。
  • サーチベースドテスティング:欲しいテストケースのスコアを出すようにテストケースを生成する。
AIによるテスト

ほぼサーチベースドテスティングがそれにあたると、次の事例を基に話されていた。

例:テストをランダムに作ってスコアが作られる

テストスコアを使ってあたらしいテストをつくる
進化計算を使ってテストする

例:「自動バグ修正」

テストが沢山あってコードを適当にいじってテストをパスする、それは効果があると言える
適当にランダムに修正はやはりよくない、Gitなどのコミットログから、適切な修正方法を導く
完ぺきではないが、ある程度できると割り切る

おわりに

実は何にも新しいことは言っていない。
AIになるとそこからは逃げられない、やらないと話にならない。本気のパラダイムシフトが必要。
楽しんで切り拓いていきましょう。と、締めくくった。

筆者感想

AIは一つの大きな機能を作りこむようなことで、全てがブラックボックス化されたモノ。という話より、一つの修正で全てのテストを行わないといけなくなる。テストの自動化、そして、継続的に行う仕組みは必須になるだろうと思った。
ただ、世の中に出ているソフトも完璧な品質ではないが使われていることを考えると、慣れてしまえば、多少のリスクは気にならなくなるのだとも思った。
開発にあたっては、動かしてみるまではわからないことが多いため、アジャイル的な開発がマッチしてくるだろう。何をもって「完成」とするかが決めづらいため、顧客との協働が必要になってくるということも語られていたので、組織のありかたにも影響してくると感じた。

招待講演
「ソフトウェアレビューの本質から考える品質保証ー レビューの原理、原則と事例から読み解く」
森崎 修司 氏(名古屋大学)

概要

「レビュー」における実態調査、レビューの効果と問題、レビューの効率を良くするためのアプローチについて語られていた。
「レビュー」の目的は「不具合の修正コストの低減」「状況把握」「保守性向上」であり、インプットは「各種ドキュメント(ソースコードを含む)」になる。レビューでの指摘は、バグではないけども、このままほったらかしておくとバグになる事が見つかる。ただし、いろいろケチをつけようと思えばできてしまう。また、知見者をレビューに入れることでレビュー対象の欠陥を見つけるというやりかたもあるが、実は知見者に見てもらいたい範囲と他のレビューアとの見ている範囲があまり変わらず、それほど効果が上がっていないこともある。
そこで、レビューの着眼点を決めて、レビュー範囲を分散させると良い。その方法として、見つけるべき欠陥をタイプ化し、「何を確認する」と「どうやって確認する」という「検出シナリオ」を用意すると良い。
バグレポートのデータを分析して傾向を把握することも効果があると語られていた。
バグレポートに関しては、会場では次のQ&Aがあった。

Q:
レポートデータが溜まる前は分析が難しいと思うのですが、その場合はどうすると良いでしょうか?
A:
データを溜めるしかない。それまでは類似プロジェクトのデータを利用すると良いでしょう。
筆者感想

「レビューに知見者を入れるというアプローチは、知見者と他のレビューアのレビュー範囲が重なっていることがあるため、実は効果が薄い場合がある。」という話は、実際に身に覚えがあるため、レビューのやりかたを考え直すきっかけとなった。
レビュー観点を用意していたとしても、その観点からどのような指摘をすると良いのかイメージできないことがあるが、レビュー観点をシナリオにすることでどのようなことを指摘すると良いのかがイメージしやすくなると感じた。
講演直後の質疑では手がなかなか上がりづらく質問が出ない事が多々あるが、講演のスタイルとしてオンラインで常に質問を投稿できるようになっていたため、今回はそのようなことがなく、ざっくばらんに質問がでており質疑時間でも盛り上がっていたのは良かった。
森崎先生がところどころはさむユニークなトークで場を和ませながらも進めるスタイルが相まっていたと思われる。
余談ではあるが、レビューもお笑いも他者の視線を気にしない胆力が必要なのだと思った。

招待講演2
「継続的テストに向けたテスト自動化」
都築 浩平 氏(三菱電機)

概要

テスト自動化の事例紹介とその後に続く継続的なテストと組織展開に向けた考察を話されていた。テスト自動化の取り組みは、JaSST'18北海道で発表した事例が元となっており、リグレッションテストと受け入れテストのそれぞれの自動化について、細かく内容を説明していた。
テストを自動化したあとの継続的テストへの課題は、一から考えず、まず世の中の状況を調べつつ、整理するアプローチをとっている。課題に対する施策検討について、都築氏は、「『今後何をすべきか考えてみた』という状態で、課題と施策が整理しきれていないため、『参加者の方に一緒にモヤモヤしていただければ…』」と話されていたが、DevOpsのプラクティスや戦略をもとに課題の関連を整理したモデルの構築など、組織全体に自動化を浸透させる課題について都築氏なりに考察した内容がとても盛りだくさんに語られていた。最後は「トップダウンはやはり必要だが、とはいえまずはボトムアップで成功体験を増やして積み上げていくことが大事である」と結んだ。

筆者感想

自動化の取り組み、仕組みを丁寧に解説されていたため、類似の開発スタイルの現場では適用できるような内容と感じた。
テストを自動化したら終わりなのではなく、その後、継続的にテストを行う仕組みが必要で、それを構築するためには工夫が必要であることが伝わってきた。また、自動テストにしろ、手動テストにしろ、テストケース管理の問題は付きまとうため、この取り組みの先の結果が気になった。さらなる事例発表を期待する。
また、余談ではあるが、小さくはじめた社内の事例を社外に発表したことで、業務として継続的に進めることになり、今回の発表につながった、という話も聞けた。発表の内容もさる事ながら、社外への事例発表をきっかけにその事例を発展させた良い事例とも思った。

全体の感想

会場は空き座席を探すのが大変なほどの盛況ぶりだった。熱気がすごく、熱心にメモを取っている方々が多かった。午後からの開催であったが一日やってほしい、と思える会だった。
今回は、講演だけではなく、チャレンジとしてチュートリアルも並列でおこなったと実行委員から伺った。筆者は、チュートリアルには参加していないが、参加していた方と話す機会があったので感想を聞くと、「いままで用語は知っていても、そこまで考えていないことを痛感した」「持ち帰って活かしたい」など、参加者にとって学びが多かったようである。
今回シンポジウムは盛会のうちに終わったが、立山連峰をリアルに眺めることができなかったことが心残りとなった。その点は来年に期待したい。

記:中岫 信(TEF道)

[ページトップへ]