生成AIは完璧ではない! 押さえておくべき性質
森崎氏が生成AIの得意分野の1つとして例に挙げたのは、ソースコードのコメントを自動的に生成する作業だ。テストコードも追加で与えると、さらに良いコメントが生成されるという結果が出ている。この作業が上手くいっている要因はさまざまあるが、「少しずるいかもしれないが、少しおかしいコメントでも人間は頑張って読んでくれる。厳密な要件を求められないという点が大きいのではないか」と森崎氏は感想を語った。
さらに生成AIの得意分野として挙がったのが、自動バグ修正だ。「オートリペア(Auto Repair)」と呼ぶものだ。オープンソースソフトウェアのリポジトリのバグレポートを調査し、80%程度のバグレポートが20%程度の典型的なバグのパターンにあてはまったことが報告され、その傾向を活かしたものだという。バグのパターンの20%の直し方を一つずつ順番に当てはめて、テストを実行してバグが検出されなければ、その直し方は正しかったと判断する。これが良い結果が出て自動バグ修正分野として発展している。
森崎氏が次に挙げたのは、探索的テストのテストシナリオの生成。バグレポートを生成AIに入力すると、それと似たようなバグを検出できそうなテストシナリオを提示してくれるものだ。これは生成AIの得意分野だという。ただし、「そんなにすごいものではなく、理想的なシナリオだけを想定している」ものであり、「現実には100件のテストを生成させると、そのうちの80件は理解しがたいものが出てくることが多い。それでも、上手く機能するものを見つけると効率化に繋がる」とも指摘した。
そしてバグレポートの生成手法として、バグが起こった場面のスクリーンショットや動画をAIに渡して、再現手順を自然言語で記述させる研究も挙げた。森崎氏は「便利ではあるが、完璧ではない。スクリーンショットの撮影や、動画撮影を続けながら、バグの発生に気付いたときに再現手順を自動生成させる用途に向く。生成されたバグレポートの内容が正しいと思えばそのまま使えば良いし、間違っていれば必要に応じて修正できる」と述べた。ただし、この研究ではAIモデルに画像やテキストを学習させているので、生成AIにプロンプトを与える一般的な使い方とは少し違うという。
「今日紹介する例の中で、生成AIが最も得意だと思う」と前置きしながら、森崎氏が挙げたのは、テストデータの自動生成だ。例えば名前や住所の典型例からテストデータを生成し、自動的に入力させるといったことだ。例外や異常系、限界系、性能テストではまだあまり良い結果は出ていないが、正常系のテストに必要なランダムなデータが必要になったときは、生成AIが使えるという。何よりも「なぜこのテストデータを選んだのか」と問われたときに説明しやすい利点もあると指摘する。今回はモバイルアプリケーションを例に説明したが、他の種類のアプリケーションにも応用できる。
そして森崎氏は、生成AI全体の性質として、「全部教えてくれるように見えるが、いくつか残っていることがある」と、網羅性の問題を挙げた。このため、現状では残りがないかを人間が確認する必要がある。しかし「物事を始める取っかかりは楽になる」と利点も挙げた。