1. B-Testing.fm
  2. #39 水準数が異なる直交表の応..
#39 水準数が異なる直交表の応用的な使い方 & テストスキルと生成AI(LLM)の相性
2026-06-29 17:26

#39 水準数が異なる直交表の応用的な使い方 & テストスキルと生成AI(LLM)の相性

ソフトウェアテストの設計手法の一つである「直交表」について、因子間で水準数が異なる場合の応用的な使い方を深掘りします。よくある2水準の直交表に、3水準の因子をどうやって組み込むのか、身近なコーヒーショップのカスタマイズを例に具体的手順を解説します。また、後半の質問コーナーでは「テストスキルと生成AI(LLM)の相性」について議論します。LLMに直交表の作成を任せた際の具体的な失敗例を交え、AIが苦手とする「交互作用」の概念や、テスト設計における人間の専門性の重要性に迫る必聴のエピソードです。


📌 今回のエピソードのポイント

  • 水準数が異なる直交表の作り方: 2水準の直交表(L8)を拡張し、3水準の因子を組み込む具体的なテクニックを解説します。
  • 直交表の性質とペアワイズ(2因子間網羅): 拡張した直交表における出現回数の偏りと、それでもペアワイズが満たされる理由について紐解きます。
  • テストスキルと生成AIの意外な相性: 生成AIに直交表のテストケース作成を依頼するとどうなるか?AIが「交互作用」を理解できずに失敗するメカニズムを鋭く分析します。



📕 参考文献



🕒 チャプター

  • () オープニング
  • () 水準数が異なる直交表の使い方
  • () 説明に使うお題(コーヒーショップのカスタマイズ)
  • () 直交表の拡張と具体的な当てはめ方
  • () 実際に利用する際の注意点(出現回数とペアワイズ)
  • () L9直交表を用いた別のアプローチ
  • () 質問コーナー:QAスキルとLLM活用の相性はよかったりしますか?
  • () なぜLLMは直交表の作成に失敗するのか?(交互作用の理解)
  • () エンディング・お知らせ


📢 あなたのご意見をお聞かせください

生成AI(LLM)をソフトウェアテストの設計に使ってみて、期待通りにいかなかった経験はありますか?また、直交表のような高度なテスト技法を実務でどのように工夫して活用しているか、ぜひ皆さんの知見やエピソードをシェアしてください!

感想

まだ感想はありません。最初の1件を書きましょう!

サマリー

このエピソードでは、水準数が異なる直交表の応用的な使い方について、コーヒーショップのカスタマイズを例に具体的に解説します。特に、2水準の直交表(L8)を拡張して3水準の因子を組み込む方法や、その際の注意点について説明します。後半の質問コーナーでは、テストスキルと生成AI(LLM)の相性について、AIが交互作用を理解できずに直交表作成で失敗する例を挙げながら、テスト設計における人間の専門性の重要性を考察します。

オープニングと直交表の復習
皆さん、こんにちは。B-Testingのブロッコリーです。 このB-Testing.fmは、QAエンジニア
である私、ブロッコリーがテストや品質に対する私内の考えを約10分間
で語っていくポッドキャスト番組です。 この放送の公開の予定日が6月
の29日ですね。なので、ちょうど自分が 実行委員長をしている若手の開催
した次の日になると思います。6月27日、 28日に若手2026夏を開催して
いたはずです。おそらく。なので、 もし参加された方でこのポッドキャスト
を聞いているという方がいたらですね、 どうでしたかね。楽しめましたかね。
また若手参加したことがないという 方とか、今回参加してなかった
人はもしよければ半年に1回やって ますので、次は12月にあるはずです
ので、もしよろしければ参加して もらえればと思います。
今日は前に話した直行表の使い方 のちょっとした応用編になります。
ということで今回もB-Testing.fmスタート です。ということで今日は直行表
のちょっとした応用というか、話して いきたいなと思います。水準数が
異なる直行表の使い方について 話していきます。まずは前に話した
直行表復習になります。直行表 とは何かという話ですね。直行表
はすでに定義されている数学的に 裏付けられた表ですよと。この表
を使って組み合わせのセットを 生成できるということが書かれています。
主な直行表の種類、これも復習 にはなりますが、L4と呼ばれるような
3因子2水準の場合、L8と呼ばれる ような7因子2水準の場合、L9と呼ばれる
ような4因子3水準といったものが あります。この中でも例えばL4ですね
3因子2水準の場合っていうのは 通常に使おうと思えば2水準まで
しかできません。L8についてもそう ですね。7つの因子まで対応できる
だけれども、そのときの水準は2水準 までしか使えませんよというのが
基本的な直行表の形になっています。 このときの水準数が全部2水準とか
あとはL9の場合は全部3水準だったら そのまま適用できるんですけれども
一部の因子だけ水準の数が変わって いたらどうなるっていう、どういう
ふうに使うのかというのを話して いければなと思っています。説明
水準数が異なる直交表の応用:コーヒーショップのカスタマイズ
に使うお題は前回までに使って いたお題とほぼ一緒です。コーヒー
500円のカスタマイズができるっていう ので、量が前回まではMサイズか
Lサイズの2水準だったのに対して 今回はSサイズという3水準目を
付け加えました。あと処理は通常 かデカフェ、シロップも普通か多め
トッピングも無しかチップ追加 っていう他は2水準のものです。この
ときのコーヒーの価格に関する テストをしたいと。そうなったとき
にこれどうするかというと、まず 今の話したお題に出てきた要素
を考えると、先ほども言いました 量についての因子に関しては具体的
な値水準はS、M、Lの3つ。それ以外 は処理、シロップ、トッピングが
全部2水準ずつになります。これを どうやって使うかというと、先ほど
紹介した3つの直行表のうち7因子 2水準の直行表L8を拡張して使って
いきます。どうやって使うのかという 話ですが、こういうふうに見ます。
まず量がSかMかLかの3種類という お話をしました。量がMかLかの2種類
だった場合は直行表の1列目のところ 11、11、22、22の部分に1の部分にM、2
の部分にLを入れたというのが前回 お話したやつでしたが、この3種類
S、M、Lになったらどうするかという と直行表のうち1列目、2列目、3列目
までを使って表現します。そうすると 1番目のテストケースは111、2番目
も111、3番目は122、4番目は122、5番目 は212、6番目は212というふうになります
と、こういうふうに3つ合わせて 使うことで、111、122、212の3パターン
を作り出すことができるわけですね。 なので、ここにS、M、Lを当てがって
いきます。7番目のところと8番目の ところ、221と書かれていた部分は
ここは2位です。本当は4つ目の選択肢 もあったら、例えばLLとかあれば
それを入れればいいんですが、今回 は3つまでしか水準が存在していない
ので、4つ目は2位になります。適当な SかMかLどれかを入れればいい
というふうになります。残りは同じ ような形ですね。処理通常化デカフェ
は4列目のところ1212、1212、1の部分に 通常、2の部分にデカフェを入れて
いきます。そうすると通常デカフェ、 通常デカフェ、通常デカフェ、通常デカフェ
というふうになるわけですね。同じ ようにシロップも1のところに普通、
2のところに多めを入れて、普通多 め、普通多め、多め、普通多め、普通
というふうになります。最後6列目の ところにトッピング無しかチョコチップ
か、1211、1212、1にそれぞれ当てはめて 無しチョコチップ、チョコチップ無し、
無しチョコチップ、チョコチップ 無しというふうになります。これで
直行表が完成します。2と書かれている 部分どうするかというと、先ほど
言ったようにSかMかLをどれかを 1つ入れますと。今回の場合はSとM
を入れてSSMMLLSMというふうな 量のところの8つのテストケース
にしました。こういうふうにしても 2種類の意思の組み合わせは必ず
存在しています。ペアワイズになっています。 例えば1つ選ぶとして、量がLサイズ
でシロップが普通というのを見る と、それは6番目にあるなとか。あとは
量がSサイズでシロップが普通って 考えると1番目にあるなとか。そういう
ふうにできますと。必ず存在している ことになります。ペアワイズは満たして
います。ただし直行表を変則的に 使っている以上、出現回数は同じ
ではありません。例えばさっき言った 量がSでシロップが普通はテストケース
1番目の1つだけ存在しますが、量 がSサイズでシロップが多めのものは
2番目のテストケースもそうだし 7番目のテストケースもそうですね。
こういうふうに出現回数は同じではない っていうのは、もともとの直行表
の使い方とはちょっと違うんです けれども、少なくともペアワイズ
は満たしている状態を作ることができます。 ということで、水準数が異なる場合、
特に今回の場合のように他は2水準 なんだけれども、ある1つだけ3水準
のときっていうのは直行表のうち 1列だけを使って1に当てはめるわけ
ではなくて、複数列使ってその組み合わせ によって当てはめていく。そうする
ことによって2水準の直行表であっても 3水準以上のものを適用するっていうことが
できるというお話をしていきました。 なお、1つ補足としてお伝えすると、
今回の場合は7因子2水準の直行表 L8を使って、それの1番目2番目3番目の
列を使って3水準Sサイズ、Mサイズ、 Lサイズを適用しましたけれども、
別の方法として直行表L9を使うことも もちろん可能です。L9を使ったときは
L9の1列目のところにの1、1、1、2、2、 2、3、3、3のところにの1の部分Sサイズ
2のところにMサイズ、3のところに Lサイズを入れることでSSS、MMM、LLL
っていうふうに入れることができます。 また処理が通常デカフェっていう
ところは2列目のところの1、2、3、1、 2、3、1、2、3の1の部分に通常2の部分に
デカフェを入れますと。3の部分は 3つ目の選択肢はないので通常デカフェ
どちらでもいいので2を入れるという ふうにやります。そういうふうに
してすることによって、4因子まで だったら3水準ないものも2を入れる
ことで対応が可能ということで 今回は2つ目のやり方は今口頭のみ
での説明になりましたけれども 水準数が異なる場合でもうまく工夫
することで直行表を使えるという お話をしてきました。
質問コーナー:QAスキルとLLM活用の相性
それではここからは質問のコーナー ですね。以前いただいていた質問
から紹介していきます。QAスキル とLLM活用の相性は良かったり
どうしますかという質問をいただき ました。ありがとうございます。個人的な
考えとしてQAスキルというよりも QAっていうと品質保証のスキル
っていう話になりますがその中の 特にテストスキルですね。テスト
のスキルとLLMの活用の相性は意外 と良くないなという印象を持っています。
どうしてかというと今日ご紹介 したやり方ですね直行表の算水準
がある場合の直行表をこれを例えば 生成AIに指示して作成するとこういう
ふうになりますと左のような表ですね 医療がSSMLLSMで処理が通常通常
でカフェ通常通常シロップが普通 多め普通多め普通多め普通多め
トッピングがなしチョコチップ なしチョコチップチョコチップ
なしチョコチップなしっていう ふうに例えばこういうふうに作成
してくれます。一見するとこれ直行 表そのまま使ってうまくできてそう
に見えますよね。けれどもこれは 直行表というよりもペアワイズ
のことを考えると実はあんまり 良くない成果物になっています。
どうしてかというと例えばこの 量と処理の組み合わせがペアワイズ
にしかもらいになってないんですよ ね。何かというと量がSサイズで処理
が通常のものはテストケース1テストケース 2あとテストケース7もありますけれども
量がSサイズで処理がデカフェっていう のが1つもケースとして出てきてないんですね。
これは何でかっていうと量のところ を見るとSSMLLっていうふうになっている
ところに対して処理が通常通常デカフェ デカフェデカフェと処理の部分が
まばらになってないっていう状態 になっています。
何でこういうことが起こるのかって いうことを考えると実は直行表
っていうのはきちんと考えを知る とこの交互作用というものがあります。
交互作用っていうのは特定の組み合わせ で効果が上がるような作用のもの
を確認するときに使ったりするんです けれども今回の直行表L8の場合
1列目と2列目の交互作用が3列目 に来ます。なのでこれを今画面で
共有している中で左側のものを これがさっき前半にお話した自分
が解説したやり方ですね。1列目 2列目3列目を使ってSサイズMサイズ
Lサイズを使うよっていうお話を しました。そうすると1番目のテストケース
2番目のテストケースは1列目2列目 3列目は111111っていうふうになっている。
3番目4番目は12122ってなっている。 5番目6番目は212217番目8番目は221221
っていうふうになっている。これを 全部ひとまとめとして使ったほうが
いいですよ。なんでかっていうと 1列目の因子Aと2列目の因子Bの交互
作用として3列目が今回の場合は 設定できてしまうと。一方で先ほど
生成AIで作ってうまくいかなかった パターンってどういうことかっていう
と1列目と2列目のみを使ってSサイズ MサイズLサイズを割り当てていたんですね。
3列目や3列目で処理の部分 普通かデカフェカっていうのを
当てはめてしまっていたので 1列目2列目の交互作用のものである
はずの3列目の因子を用いている のでうまく散りばめられなくて
Pairwiseの認識感網羅も満たせない ものになってしまったっていうこと
になります。ということでちょっと 複雑 ちょっと専門的な部分の説明
にはなりましたが こういうふうな ちょっと専門的にちゃんと考えない
といけない部分っていうのが 他にもいろいろあります。もちろん
機械的にできる部分はあります。 例えばディシジョンテーブルでいえば
機械的に割り当てて◯トゥルーフォルス をつけていくはできます。一方で
そこから簡単化や金属のことを 考えて圧縮をするみたいなところ
は人間の判断がいったりとか そこに専門的な部分があるわけ
ですね。この専門性っていうのが まだまだLLMの活用にはちょっと
壁になっているかなと思っています。 なんでこれが壁になるかという
と 個人的にはなんですが 開発 においてはオープンソースとして
いろいろこういうふうなプログラミング をしてっていうのは公開されている
ものが多いですと。ですが このテスト に関してはこういうふうにうまく
工夫してやればいいよっていう のを公開している資料が本当に
少ないと思うんですね。このPodcast の中で話したものでいえば 直行
表の交互作用的な話も踏まえた 話であったりとか あとは以前の
話でいえばクラシフィケーション をどういうふうなステップで作
っていくのかみたいなのは少なく とも日本語の文献ではほぼ見た
ことはないですし 海外の文献でも ほぼないと思っています。なので
学習するリソースが本当に少ない ので まだまだAIとしては学習でき
てない なのでうまくいってない っていうのが現状としてあるかな
と思っています。ということで ちょっと専門的な話 長くなっちゃ
いましたけれども 私の考えとして は まだまだうまくいかない現状
かなというのが質問のお答えになります 質問ありがとうございました
エンディングとリスナーへの呼びかけ
ではエンディングです btesting.fm ではリスナーさんからのお便り
を募集しています エピソードの 感想や私に聞いてみたい質問や
テストのお悩みなど どんなことでも かまいません 投稿フォームは番組
概要欄にあります またエピソード の感想は ハッシュタグBtestingで
Xのポストをお願いいたします 例えば 今日の話で言えば 直行表
を扱ってきました 直行表 いつも 同じ数字しか使えないんじゃない
と思っていた方 こういう使い方 あるんだみたいな感想でもいい
ですし そもそもその使い方でいい のみたいな疑問点とか 何でもかまい
ません 聞いての感想を ぜひポスト お願いします もしもこれからも
聞きたいという方は お手持ちの Podcastアプリで番組のフォローをお願いします
最新回が上がったときにすぐに 気づくことができます 今日 オープニング
で話したとおり 若手を昨日まで やってきましたが もしかしたら
若手で多分自分 宣伝してるんだろう なと思っているので 若手で宣伝
見て聞いて じゃあちょっとPodcast を聞いてみようかなって思って
今回のエピソードを聞いた人もいる かもしれません こんな感じで毎回
テストの話していますので ぜひ 気になる方はフォローをお願いします
ということで 今回はここまでです それでは また次回
バイバイ
17:26

コメント

スクロール