「原因結果グラフ法」でAI活用を実践
それでは以下に実際の手順を示します。「原因結果グラフ技法」をやってみましょう。
原因結果グラフ技法は、ソフトウェアテストの国際規格ISO/IEC/IEEE 29119の中にも示され、テスト設計技法として知られているものです。規格に示されている技法の中でも、正しく使いこなすのが最も難しい手法のひとつと言えます。
「よりによって、なぜそんな厄介な技法を選ぶのか?」と、思われるかもしれません。しかし、AIとツールの登場によって、その扱いやすさが一変したことをぜひ知っていただきたいのです。テストだけではなく、コードの複雑さを縮減することにも役立ち、プログラマーの方にも興味を持っていただけるものと思います。
さて、この技法がなぜ難しいのかというと、グラフからデシジョンテーブルを導く手順や、そもそも原因結果グラフ(モデル図)を描くのが一番大変だという人が多いようです。
しかし、グラフからデシジョンテーブルを導く手順はツールがやってくれます。無料かつローカルで動くものが公開されているので、セキュリティ上の心配も不要です。ツールとしては、「CEGTest」がよく使われていましたが、今は「NeoCEG」が公開されていて、無料でお使いいただけます(実はこのツールの作者は本稿の著者です)。
また、原因結果グラフ(モデル図)を描くのも、今や自分で描く必要はありません。AIに描いてもらえばよいのです。簡単にできるので、以下に手順を示します。
まずは何か題材が必要なので、次の表に示すような遊園地の料金システムをグラフ化してみましょう。
※六歳でまだ小学生でない人はどうなるのかと、気になる方もいらっしゃるかもしれません。しかし、その条件範囲を特別扱いしたいわけではないと思います。意図を確認して、境界の表現を修正すればよいだけのことでしょう。「未就学児」という表現は一般の直感に反して解決にならないようですし、元の論文も本稿もそこに焦点はありませんので、そこには深入りしないことにします。
まず、2つのファイルを手元に用意します。ひとつは「NeoCEG_DSL_Grammar.txt」というファイルで、これは先のNeoCEGのページで右上の「?」をクリックすると、プルダウンメニューが出てきて、その中の「Download DSL Grammar」を選ぶとダウンロードできます。
もうひとつは、上記の題材です(画像をダウンロードすれば簡単でしょう。もちろん、お手元にある何らかのシステムのモデル化したい一部分の要求仕様でも構いません。画像よりも自然言語表現されているものが一般的でしょう)。
生成AIに用意した2つの情報を与え、次のプロンプトを入力します。
AIに与えるプロンプト例
添付の画像に示される仕様について、原因結果グラフ技法でテスト設計を行います。原因結果グラフ技法はあなたもご存知のはずのソフトウェアテストの国際規格ISO/IEC/IEEE 29119 Part4の中にも示されているものです。
PlantUMLやMermaidのように、言語で表現すれば原因結果グラフを描いてくれるNeoCEGと呼ばれるシステムがありますので、あなたは添付ファイルのNeoCEG_DSL_Grammar.txtに示されている文法に従って言語表現してください。
プロンプトを読めば何をしているかわかっていただけるものと思います。要求仕様を与えた文法に従った表現に書き換えてもらっているだけです。LLMは言語の変換が得意なので、その能力を活用します。
得られた出力をクリップボードにコピーして、NeoCEG画面下部の「NeoCEG Language」のタブを開き「Paste CEG Definition」ボタンを押すと上部にグラフが描画されるはずです。
もちろん、AIの出力が正しいとは限りません[注1]が、だいたい出来上がった状態からレビューで修正していく活動にすぐに入れます。「誰か描いてくれないかな、誰か」問題は解消されます。
[注1]筆者は、Claude Sonnet 4.6、Codex 5.5、Gemini Flash、Copilot smartなどで実際に試してみました。Codexはほぼ正解を出しました。ClaudeやGeminiはわずかな修正が必要でした。確率的な動作をするので、数回やり直してみるのも良いかもしれません。
グラフの表記方法やテストケースの減らし方については、本稿では説明しません。すでに以下の別稿や良書で詳しく解説されていますので、そちらを参照してください。
