0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

QA学園・放課後再現部「これ、MBTってことですよね?」ライトウェイトMBTの話

Posted at

古典テスト技法 × モデリング × LLM

QA学園・放課後再現部「これ、MBTってことですよね?」

※このエントリは、創作世界「QA学園」を舞台にした
テスト設計/LLM活用のストーリー仕立て解説です。
内容はかなり実務寄りですが、登場人物はフィクションです。


0. 今日のテーマ:「これMBTってことで合ってますか?」

放課後、QA学園の「再現部」の教室。

  • ユウタ:現場寄りQA、テスト設計担当見習い
  • テラ:モデル厨。因子水準表/状態遷移が大好物
  • アヤ:ユーザ体験と感情の波形(Ew)に敏感な人
  • 言坂先生(ことさか):品質アーキテクトな担任
  • QA-Lite:教室に置かれたLLM端末

今日も、フォームのテストをどうやって設計するか、という話をしていた。


1. 仕様だけ食べさせたAIのテストが「惜しい」

まずはユウタの一言から、議論が始まる。

ユウタ「先生、LLM(QA-Lite)に
『この画面のテストケース出して』って頼むと、
それっぽいんですけど 抜けとダブりが多い んですよね。」

テラも頷く。

テラ「仕様書の文章だけ渡してるから、
QA-Lite の中で暗黙にモデルを組み立ててるはずなんですけど、
どんなモデルで考えてるかが見えない のがネックですね。」

アヤの違和感は、もう少し感情寄りだ。

アヤ「なんか、“ここ刺してほしい”ってところじゃない観点を
ひたすら攻めてくる時あるんだよね。
ユーザー Ew 的には “そこじゃない” っていう。」

ここで、言坂先生が口を開く。

言坂先生「じゃあ今日は、
古典的なテスト技法を“モデル”としてAIに教えたらどう変わるか
それと、
『それっていわゆる MBT(Model-Based Testing)なのか?』
を一緒に確かめてみようか。」


2. 各自の役割:古典技法を「モデル」として言語化する

言坂先生はホワイトボードに3つの箱を書く。

  1. 同値分割・境界値
  2. 状態遷移・決定表
  3. シナリオ/探索的テスト

そして3人に、それぞれ担当を振った。

  • ユウタ:同値分割・境界値
  • テラ:状態遷移・決定表
  • アヤ:シナリオ/探索的テスト

2.1 ユウタ:同値分割・境界値 → 因子・水準表への落とし込み

題材はログイン画面。

  • メールアドレス
  • パスワード
  • 「利用規約に同意」チェックボックス

ユウタは、同値分割・境界値を 因子・水準表(FL表) に落とし込んでいく。

因子A: メールアドレス形式
  - A1: 正形式
  - A2: 不正形式

因子B: パスワード長
  - B1: 最小未満
  - B2: 最小ちょうど
  - B3: 最大ちょうど
  - B4: その他

因子C: 規約チェック
  - C1: ON
  - C2: OFF

2.2 テラ:状態遷移・決定表 → フローのモデル

まず、ユウタの一言から。

ユウタ「同値分割って、
要は 入力空間を“意味のあるクラス”にまとめる操作 ですよね。
これをそのまま QA-Lite に渡して、
『この因子と水準を前提に、代表テストを出して』って頼んでみたい。」

テラは、対象として「パスワード再設定フロー」を選びます。

フローの代表的なステップはこんな感じです。

  • メールアドレス入力
  • メール送信
  • トークン検証
  • 新パスワード設定
  • 完了画面

各ステップには、例えば次のような分岐があります。

  • 成功/失敗の遷移
  • トークン期限切れ
  • 再送要求

テラはこれを 状態遷移図 + 簡易決定表 に落とします。

テラ「状態遷移図は、
“どの順番で世界が動くか” のモデル で、
決定表は、
その場ごとの条件と結果の対応 です。
これを QA-Lite に渡して、
『各遷移を少なくとも1回は通るテストフローを列挙して』
ってお願いしてみます。」


2.3 アヤ:シナリオ/探索的テスト → ユーザーストーリー+Ew

アヤは Kノートを開き、ユーザーストーリーを書き出します。

たとえば、こんなシナリオです。

  • 「深夜2時、眠くてイライラしながらパスワード再設定をする」
  • 「電波が不安定な電車内で、再設定リンクを踏む」

それぞれの場面で、

  • どこで不安・怒り・不信感(Ew)が上がりやすいか

をメモしていきます。

アヤ「探索的テストって、
ユーザーの感情の波形(Ew)に沿ってシナリオを歩く技法 だと思ってて。
QA-Lite には
『このシナリオで Ew を悪化させないためのテスト出して』
って頼みたい。」


3. 仕様だけ vs モデル込み:AIの出力はこう変わる

3.1 仕様だけ渡したとき(Before)

まずは対照実験として、仕様テキストだけを QA-Lite に渡し、

「テストケースを10件提案して」

と依頼した結果はこんな感じでした。

  • 典型的な「空値」「形式不正」「長すぎる」テストは出る
  • しかし…
    • クラス代表値のダブりが多い
    • 実際には辿れない画面遷移を前提としたテストが混ざる
    • ログイン → 再設定 → 再ログイン…といった“流れ”が薄い

ユウタ「すごく雑ではないけど、
“このままテスト設計に採用するには足りない” 感じですね。」


3.2 モデル込みで渡したとき(After)

次に、さっき 3 人が作ったモデルを前提として QA-Lite に渡します。

  • 同値分割・境界値 → 因子・水準表
  • 状態遷移・決定表 → フローモデル
  • シナリオ+Ew → ユーザー状況の定義

このうえで、QA-Lite には例えば次のように指示します。

  • 「この因子・水準を使って、重複しない同値クラス代表テストを列挙して」
  • 「この状態遷移図の 各遷移をすべて通るテストフロー を出して」
  • 「このシナリオの Ew が悪化しないか確認するテスト も追加して」

その結果──

同値分割/境界値

  • 各水準から代表値が1つずつ取り出され、ダブりが減る
  • 境界値も明示的にカバーされる

状態遷移

  • 与えたフロー内で、現実的な 正常系+異常系パス が揃う

シナリオ/探索的

  • 「深夜で眠い」「電波不安定」といった状況に紐づいた
    具体的なテストが出てくる

テラ「モデルを先に人間が握ってから AI に仕事を振ると、
ここまで出力の質が変わる
んですね。」


4. これって結局 MBT なの?(先生パート)

ここでテラが、前から気になっていたことを聞きます。

テラ「これって、
欧米でやってるっていう MBT(Model-Based Testing) なんですか?」

言坂先生は、少し考えてから頷きます。

言坂先生「考え方としては ほぼMBT だね。
画面やフローを“モデル”として明示して、
そこからテストケースを導く。
ただし──」

と指を一本立てて続けます。

言坂先生「クラシックな MBT はね、

  • UML ステートマシンや形式的なモデルをきっちり書いて
  • 専用ツールでテストを自動生成する
    というスタイルが多い。
    今日やったのはそこまでガチガチじゃなくて、
    “軽量MBT+LLM” くらいの位置づけ だね。」

ユウタがまとめます。

ユウタ「つまり、
古典技法でモデルを作って、
ジェネレータ部分を LLM にやらせてる

って理解でいいですか?」

言坂先生「その通り。
“技法そのもの” を AI にやらせるんじゃなくて、
人間が作ったモデルの上で、
列挙・組合せ・補完をさせる。

それが今日のやり方だね。」

アヤは Kノートに、一行だけメモします。

アヤ「“MBT的な考え方+AI=
ちゃんとモデル作った人が強い世界”
って感じ。」


5. 実務に持ち帰るチェックポイント

最後に、先生がホワイトボードに 4 つのポイントを書きます。

  1. LLM に丸投げしない
    • 人間側で最初のモデル(FL表/状態遷移/シナリオ)を作る
  2. モデルは古典テスト技法を “圧縮表現” として使う
    • 同値分割・境界値・状態遷移・決定表・探索的テスト
  3. LLM には、
    • どのモデルを前提に、何を列挙してほしいか」を明示して伝える
  4. 出てきたテストは人間がレビューする
    • 抜け・ダブり
    • 現実に辿れるフローか
    • ユーザー Ew 的に “そこじゃない感” がないか

言坂先生「MBTというラベルを使うかどうかは、正直どっちでもいい。
大事なのは、
“モデルを握った人間の頭の中” を、
AIにどうやって安全に共有するか
なんだ。」

3人はそれぞれ、今日の Kノートに
自分なりの Fth(しきい値)を書き込んで、教室を後にしました。


おわりに

この放課後再現部エピソードでやっていたことを一言でまとめると、こんな感じです。

「古典テスト技法で作ったモデルを、
LLM に食べさせるライトウェイト MBT」

仕様だけ食べさせたときの “惜しい AI テスト” から一歩進んで、

  • 人間側のモデリング力 × LLM の列挙力

を組み合わせるスタイルが、今後もう少し広がっていくのではないか、
という仮説も込めています。

あなたの現場では、
MBT 的なやり方と LLM をどう組み合わせていますか?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?