HOME > 活動報告 > イベント報告 > JaSST'22 Shikoku
2022年10月14日(金) 於 オンライン開催
今年のJaSST Shikokuはオンラインで開催された。
JaSST Shikokuは例年、香川大学及び情報メディアセンターと共催し、学生も課外活動の一環として参加している。
またテストエンジニアの育成として、初心者向けのコンテンツを設けているのが特徴となっている。
この講演のゴールは下記とした。
講演の概要は以下の通りである。
ソフトウェアの特徴を知るためハードウェアとの違いで捉えると、ソフトウェアは論理的集合体であるため、ハードウェアと違い見ることも触ることもできない。
且つ、何でもできてしまう自由度の高さがありコントロールが困難である。
そうしたものを基本的には人が作るが、人は様々な要因・誘因にて間違える生物である。
また、作ろうとしているものや、使おうとしている技術が難しくなっている。
さらにITの技術は日進月歩であり、常に習熟した状態で仕事できるわけではない。
欠陥(バグ)の混入による修正コストは検出工程でドラスティックに変わる。後工程になるほどコストは高くなる。
経済合理性の観点からもテストは必要。
またソフトウェアの欠陥に起因して死亡事故や会社の信用問題に発展することもあり、リスクマネジメント、リスクコントロールの意味でもテストは必要である。
テストは人や成熟度により千差万別である。例として、ボーリス・バイザーの書籍によるテスト担当者の精神面による区分を説明する。
テストの目的は一義的ではなく、多面的である(一言では言い表しがたい)。
統一見解はないが、この講義においての定義としては「品質に関わる新たな情報を得るための様々な活動」をテストと呼ぶ。
品質に寄与しないと意味がなく、既存の情報でも意味がない。
タイミングは早ければ早いほど価値が高くなる。
コストは安ければ嬉しい。
プログラマやプロダクトオーナーなどニーズに合致し、正確でわかりやすいほど価値が高い。
テストをやってもプロダクトコードは増えない。
テストで得られる情報(品質に対する確信度合い)の活用がポイントとなる。
究極的にはテストはクリティカルパスでしかない。可能であれば誰もしたくないが、テストをしない限り安心してモノを世に送り出せない。
テストはどこまでいっても"部分"である。
テストはコンテキスト(状況、制約、状態など多面的な意味を持つ)次第:ミッションクリティカルな領域で使われる場合と他では品質が異なる。
大丈夫だという一意的なテストはありえない。合意形成にしかならない。
納得感のあるものに持っていかなくてはならない=テストの本質的な難しさである。
テストの価値は情報であるため、テストの閉じた世界だけで存在しえるものではない。
テストは"使う人"、"作る人"など合わせて考えないと意味がない。
テストは、テスト以外についても様々な本質を考え抜いていく行為である。
テストを通じて、テスト以外の学びもある。
ソフトウェア業界において"銀の弾丸"はなく、それは学びや育成においても同様である。
そして、興味のない人には何を言っても聞いてくれるものではない。
関心を持った際に近づいてもらえるよう、普段からテストに関する匂い(楽しさ、面白さ)を醸し出しておく。
社内での学びにブーストを掛ける意味でも、社外に飛び出す機会を提供してほしい。
当たり前だと思っていたことがそうではなかった、など飛び出ないとわからないことがある。
楽しいと思うと転がり始めて成長してくれる。
自分の関心事の要素技術にモチベーションを持ち、好きになり、学びを継続してほしい。
自分の職種についての存在意義を考える機会は、その職種をスタートさせた時期くらいしかないのではないだろうか。
本講演は主に聴講を学生向けと想定し、丁寧でわかりやすい説明に終始していたが、ベテランと呼ばれる経験の長さになった筆者にとっても、テストという職業を改めて考える良い機会になった。
ニューラルネットワークでブレイクスルーを起こした技術がディープラーニングである。
機械学習(ML)は、データをもとにコンピュータが自ら学習する。
主流はニューラルネットワーク:神経細胞(ニューロン)を真似ようとした試み。
2000年代に入り、ディープラーニングによるブレイクスルーが起きた。
ディープラーニングでは大量のデータから、AI自ら特徴を見出す。
人間では捉えられない特徴で捉えられるようになり、現在に至っている。
従来のソフトウェアでは猫と犬を仕分ける場合、"猫とは"、"犬とは"といったルール・定義をする必要があった。
一方、現在のAIでは大量の学習データから自ら特徴を抽出することができる(汎化)。
ニューラルネットワークは神経細胞の働きを真似たものである。
神経細胞はシナプスを通じて他の神経細胞から信号を受け取るが、それぞれの神経細胞には好き嫌い(えこひいき)があり、それらの意見をまとめた信号を飛ばす仕組みになっている。
入力に近い部分では単純なパターンにのみ反応するニューロンが、出力に近くなると複雑な形に反応できるようになる。
学習済みモデルの良し悪しには評価指標を用いる。
以下の3つは代表的な評価指標である。
AIではテストしようにも、何が出力されたら正解なのかがわからない。これをテストオラクル問題と呼んでいる。
また、機械学習では個別のルールから大きなルールを作り上げる(帰納的な開発)が、これは手前で決めたことを具体化する従来のソフトウェア開発の演繹的手法と大きく異なる。
機械学習の計算においては、経路が複雑で同じ処理になることがほぼないため、同値分割が成立しない。
常に成立する、という従来のソフトウェアテストの前提が通用しない。
再学習の結果、狙った部分が良くなる反面、それ以外でおかしくなることがある。
何かをちょっと変えたら、こう変わるのではないか?という関係性を確認する手法。
関係性が崩れた時、何か問題がある、と捉える。
期待結果ではなく関係性に着目しているため、本来確認したいことを確認できるわけではない点に注意する。
メタモルフィックテスティング一つでAIのテストの全てを完結できるわけではない。
知識があるとそれをきっかけに調べることができる。
AIのテストは発展途上であり、この講演を足掛かりに試してみて、皆で道を切り拓いていければ、と熱い想いを語ってくれた。
AIのテスト/品質保証についての意識はまだまだ低く、初心者を対象にしても技術や開発手法にフォーカスされがちである。
本講演を通じて、今後必要となるテスト/品質保証の視点からAI開発に興味を持つ若手が増えることを筆者も期待したい。
JaSST四国特有と言える、講義に近い形での2つのセッションは、時間以上のボリュームがあり、レポートを書く際にも改めて考えさせられることが多かった。
次年度も、自分の周囲の若手や経験の浅い技術者に声を掛け参加したいと思う。
記:堀川 透陽(ASTER)