HOME > 活動報告 > イベント報告 > JaSST'22 Shikoku

イベント報告
 ソフトウェアテストシンポジウム 2022 四国

2022年10月14日(金) 於 オンライン開催

ソフトウェアテストシンポジウム 2022 四国

オープニング

今年のJaSST Shikokuはオンラインで開催された。
JaSST Shikokuは例年、香川大学及び情報メディアセンターと共催し、学生も課外活動の一環として参加している。
またテストエンジニアの育成として、初心者向けのコンテンツを設けているのが特徴となっている。

基調講演
「テストを学び成長する 2022年度版 ~テストの全体観を持ち、テストに強みを持った技術者になるための学びと成長について~」
 山﨑 崇 氏(ベリサーブ)

この講演のゴールは下記とした。

  • ソフトウェアテストの本質を知ってもらう
  • ソフトウェア全体像を俯瞰して整理できる軸を識別できるようになる
  • ソフトウェアテストの事例から面白さを知ってもらう

講演の概要は以下の通りである。

テストについて改めて考えてみる
ソフトウェアテストはなぜ必要なのか?

ソフトウェアの特徴を知るためハードウェアとの違いで捉えると、ソフトウェアは論理的集合体であるため、ハードウェアと違い見ることも触ることもできない。
且つ、何でもできてしまう自由度の高さがありコントロールが困難である。
そうしたものを基本的には人が作るが、人は様々な要因・誘因にて間違える生物である。
また、作ろうとしているものや、使おうとしている技術が難しくなっている。
さらにITの技術は日進月歩であり、常に習熟した状態で仕事できるわけではない。

欠陥(バグ)の混入による修正コストは検出工程でドラスティックに変わる。後工程になるほどコストは高くなる。
経済合理性の観点からもテストは必要。

またソフトウェアの欠陥に起因して死亡事故や会社の信用問題に発展することもあり、リスクマネジメント、リスクコントロールの意味でもテストは必要である。

テストは人や成熟度により千差万別である。例として、ボーリス・バイザーの書籍によるテスト担当者の精神面による区分を説明する。

  • フェーズ0:テストを明確に識別していない
  • フェーズ1:テストは動くことを示す
  • フェーズ2:想定外のところにバグが潜んでいることも多いため、積極的にバグを見つけにいく
  • フェーズ3:欠陥を見つけられないテストにも意味(ソフトウェアに対しての確信)がある、リスクマネジメントの文脈で捉えることができる
  • フェーズ4:そもそもテストを頑張らなくてもいいソフトウェアを作ろうとする
テストの目的

テストの目的は一義的ではなく、多面的である(一言では言い表しがたい)。

結局、テストとは何なのか?

統一見解はないが、この講義においての定義としては「品質に関わる新たな情報を得るための様々な活動」をテストと呼ぶ。
品質に寄与しないと意味がなく、既存の情報でも意味がない。

本質的なテストの価値は情報の提供

タイミングは早ければ早いほど価値が高くなる。
コストは安ければ嬉しい。
プログラマやプロダクトオーナーなどニーズに合致し、正確でわかりやすいほど価値が高い。

テストをやってもプロダクトコードは増えない。
テストで得られる情報(品質に対する確信度合い)の活用がポイントとなる。
究極的にはテストはクリティカルパスでしかない。可能であれば誰もしたくないが、テストをしない限り安心してモノを世に送り出せない。

テストは本質的に完全ではない(テストの7原則から)

テストはどこまでいっても"部分"である。
テストはコンテキスト(状況、制約、状態など多面的な意味を持つ)次第:ミッションクリティカルな領域で使われる場合と他では品質が異なる。
大丈夫だという一意的なテストはありえない。合意形成にしかならない。
納得感のあるものに持っていかなくてはならない=テストの本質的な難しさである。

テストの価値は情報であるため、テストの閉じた世界だけで存在しえるものではない。
テストは"使う人"、"作る人"など合わせて考えないと意味がない。
テストは、テスト以外についても様々な本質を考え抜いていく行為である。
テストを通じて、テスト以外の学びもある。

テストを学ぶこと・育成について

ソフトウェア業界において"銀の弾丸"はなく、それは学びや育成においても同様である。
そして、興味のない人には何を言っても聞いてくれるものではない。
関心を持った際に近づいてもらえるよう、普段からテストに関する匂い(楽しさ、面白さ)を醸し出しておく。

社内での学びにブーストを掛ける意味でも、社外に飛び出す機会を提供してほしい。
当たり前だと思っていたことがそうではなかった、など飛び出ないとわからないことがある。
楽しいと思うと転がり始めて成長してくれる。

自分の関心事の要素技術にモチベーションを持ち、好きになり、学びを継続してほしい。

<筆者感想>

自分の職種についての存在意義を考える機会は、その職種をスタートさせた時期くらいしかないのではないだろうか。
本講演は主に聴講を学生向けと想定し、丁寧でわかりやすい説明に終始していたが、ベテランと呼ばれる経験の長さになった筆者にとっても、テストという職業を改めて考える良い機会になった。

招待講演
「今までのテストとAIを含んだプロダクトのテストの違い」
松谷 峰生 氏(rinna)

講演のゴール
  • AIの基本知識を仕入れ、今後の業務のためのベースを固める
  • 用語、仕組みがわかる
  • AIのテストと従来のテストとの違い
  • メタモルフィックテスティングの概要を理解する
AIの全体像

ニューラルネットワークでブレイクスルーを起こした技術がディープラーニングである。
機械学習(ML)は、データをもとにコンピュータが自ら学習する。
主流はニューラルネットワーク:神経細胞(ニューロン)を真似ようとした試み。
2000年代に入り、ディープラーニングによるブレイクスルーが起きた。
ディープラーニングでは大量のデータから、AI自ら特徴を見出す。
人間では捉えられない特徴で捉えられるようになり、現在に至っている。

学習の種類
  • 教師あり:データと正解をセットで学習する
    難点:学習データとセットで正解を必要とするため人手がいる、タグ(ラベル)付けの職業も出始めている
  • 教師なし:正解なしで学習する
    思ってもいない特徴でグルーピングされることがある
    どこにも属さない外れ値が出ることがある
    → 異常検知に活用される
  • 強化学習:繰り返し試行錯誤していく
     主にゲームの分野(囲碁、将棋など)や、ロボットの姿勢制御に用いられている。
AIのメリット

従来のソフトウェアでは猫と犬を仕分ける場合、"猫とは"、"犬とは"といったルール・定義をする必要があった。
一方、現在のAIでは大量の学習データから自ら特徴を抽出することができる(汎化)。

AIの学習の仕組み

ニューラルネットワークは神経細胞の働きを真似たものである。
神経細胞はシナプスを通じて他の神経細胞から信号を受け取るが、それぞれの神経細胞には好き嫌い(えこひいき)があり、それらの意見をまとめた信号を飛ばす仕組みになっている。

ニューラルネットワークの考え方
  • 複数のニューロンから入力を受け取り、集まったところで計算して出力する
  • 計算には、ReLU関数やシグモイド関数、ステップ関数を用いる
  • 入力に掛かる重みの繋がりの強さを変えることが、AIの学習である
ディープラーニングの特徴の抽出

入力に近い部分では単純なパターンにのみ反応するニューロンが、出力に近くなると複雑な形に反応できるようになる。

機械学習の評価指標

学習済みモデルの良し悪しには評価指標を用いる。
以下の3つは代表的な評価指標である。

  • Accuracy (正解率):直感的にわかりやすい。推論結果の全体
  • Recall (再現率):見逃しを少なくしたい場合、この指標を高くする
  • Precision (適合率):誤検知を抑えたい時、この指標を高くする
今までのテストとAIを含んだプロダクトのテストの違い

AIではテストしようにも、何が出力されたら正解なのかがわからない。これをテストオラクル問題と呼んでいる。
また、機械学習では個別のルールから大きなルールを作り上げる(帰納的な開発)が、これは手前で決めたことを具体化する従来のソフトウェア開発の演繹的手法と大きく異なる。

従来のソフトウェアとのテストの違い

機械学習の計算においては、経路が複雑で同じ処理になることがほぼないため、同値分割が成立しない。
常に成立する、という従来のソフトウェアテストの前提が通用しない。

AIの困ったこと

再学習の結果、狙った部分が良くなる反面、それ以外でおかしくなることがある。

  • 変更が全体に影響を及ぼす性質(CACE性)がある。
  • 人にはわからないノイズでも推論を誤るといった頑健性(ロバスト性)の担保を考える必要がある
  • 倫理的問題が発生する可能性がある
  • 権利の問題が発生する可能性がある
    → 仕様や規約周りで抑えるのか、品質保証として考える問題である
テスト手法の紹介
メタモルフィックテスティング:テストオラクル問題に対応する手法

何かをちょっと変えたら、こう変わるのではないか?という関係性を確認する手法。
関係性が崩れた時、何か問題がある、と捉える。

  • メリット:関係性を定義できれば自動化できる
  • デメリット:関係性を見つけることが難しい
    → QAだけでは困難であるため、開発チームやリサーチャーと一緒に行う。

期待結果ではなく関係性に着目しているため、本来確認したいことを確認できるわけではない点に注意する。
メタモルフィックテスティング一つでAIのテストの全てを完結できるわけではない。

さいごに

知識があるとそれをきっかけに調べることができる。
AIのテストは発展途上であり、この講演を足掛かりに試してみて、皆で道を切り拓いていければ、と熱い想いを語ってくれた。

<筆者感想>

AIのテスト/品質保証についての意識はまだまだ低く、初心者を対象にしても技術や開発手法にフォーカスされがちである。
本講演を通じて、今後必要となるテスト/品質保証の視点からAI開発に興味を持つ若手が増えることを筆者も期待したい。

<筆者感想(全体)>

JaSST四国特有と言える、講義に近い形での2つのセッションは、時間以上のボリュームがあり、レポートを書く際にも改めて考えさせられることが多かった。
次年度も、自分の周囲の若手や経験の浅い技術者に声を掛け参加したいと思う。

記:堀川 透陽(ASTER)

[ページトップへ]