1. B-Testing.fm
  2. #38 ソフトウェアテストで使え..
#38 ソフトウェアテストで使える「直交表」の基本と使い方 ☕️コーヒーショップの例でテスト作成を解説!
2026-06-22 16:13

#38 ソフトウェアテストで使える「直交表」の基本と使い方 ☕️コーヒーショップの例でテスト作成を解説!

今回は、テスト技法の中でも数学的な裏付けを持つ「直交表」について解説します!直交表の定義や歴史(タグチメソッド)から、コーヒーショップのカスタマイズを例にした具体的なテストケースの作り方までを分かりやすく紹介。Pair-wise(2因子間網羅)との違いや、直交表を使う際の注意点など、テスト設計に役立つ実践的な知識が詰まったエピソードです。


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

  • 直交表とは何か: すでに定義されている数学的に裏付けられた表であり、変数をテスト対象となるアイテムに置き換えることで、カバレッジ度合いを達成する組み合わせを生成できます。
  • 直交表の具体的な使い方: コーヒーのカスタマイズ(量、処理、シロップ、トッピング)を例に、因子と水準の整理からテストケースへの割り当てまでをステップバイステップで解説します。
  • Pair-wiseとの違いと注意点: 直交表は2種類の因子の組み合わせが必ず「同じ回数」登場するためPair-wiseよりケース数が多くなる特徴があります。また、禁則がない「無則」の条件でのみ適用すべきという注意点も紹介します。



📕 参考文献



🕒 チャプター

  • () オープニング
  • () 直交表とは何か・JSTQBシラバスでの扱い
  • () 主な直交表の種類(因子と水準)
  • () 【具体例】コーヒーショップのカスタマイズで直交表を使ってみる
  • () 直交表の特徴とPair-wise(2因子間網羅)との違い
  • () 注意点:直交表は無則の時にのみ適用する
  • () 感想コーナー(ネガティヴ・ケイパビリティについて)
  • () お知らせ・エンディング


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

直交表を使ったテスト設計について、皆さんの現場での活用例や「ここが難しい!」といったお悩みがあればぜひ教えてください!感想コーナーへのコメントも大歓迎です。

感想

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

サマリー

今回のエピソードでは、ソフトウェアテスト技法の一つである「直交表」について、その基本と具体的な使い方を解説します。直交表は数学的に裏付けられた表であり、テスト対象の項目を割り当てることで効率的にテストケースを生成できます。コーヒーショップのカスタマイズを例に、因子と水準の整理からテストケースへの割り当てまでをステップバイステップで紹介。また、Pair-wise(2因子間網羅)との違いや、直交表を適用する際の注意点についても触れています。

オープニングと直交表の紹介
皆さん、こんにちは。B-Testing のブロッコリーです。この B-Testing.fm は、QAエンジニアである私、ブロッコリーが、テストや品質に対する私内の考えを約10分間で語っていくポッドキャスト番組です。
ということで、今言っていたオープニングの決まり工場というか、テンプレの中で、約10分間で語っていくポッドキャスト番組です。
最近公開しているエピソードを見ると、どれも10分超えて20分ぐらいになっちゃっているなっていうのが、最近思っているところで、
このテンプレストも約10分間で語っていくっていうのを、15分とか20分というふうに変えたほうがいいかなとは思っているんですけれども、
どれも伝えたい内容ではあるので、これからも引き続きやっていきたいなと思っています。
ということで、今回からは直行表という、今までこのbtesting.fmでは紹介したことのないテスト技法を紹介していきたいなと思います。
ということで、今回もbtesting.fmスタートです。
ということで、オープニングでも話した通り、直行表について今日は話していきます。
その初回として、直行表を当てはめてテストを作成するという、そういう話をしていきたいなと思っています。
直交表の定義と歴史
初めて直行表という名前を聞いた方もいるかもしれないので、まずは直行表とは何かっていうところの定義というか用語について、
これはJSTQBのシラバスのところから持ってきました。直行表は既に定義されている数学的に裏付けられた表であると。
テストアナリストはこの表を使用して、表内の変数をテスト対象となるアイテムに置き換えることで、
テスト時のカバリッジ度合いを達成する組み合わせのセットを生成できるというふうに書かれています。
ちなみになんですけれども、このJSTQBのファンダメーションレベルには記載がもともとなくて、
アドバンスドレベルのテストアナリストのところに記載がありました。
ありましたという言い方になっているのは、2012年バージョンのものにはこのような記載がありました。
一方で2019年に公開されたバージョン3.0以降は直行表の記載がなくなっています。
なんでそんなテスト技法を紹介するかという話なんですけれども、
特に日本では直行表を用いたテストというのは結構多く使われているなという印象があります。
どうしてそんなに多くあるのかというお話なんですけれども、
これは実は数学の分野で昔からあった考え方でして、
それを田口源一さんが品質工学の中で活用したのが、
ソフトウェアテストとか品質の中で使われている直行表の始まりかなと思われます。
なのでこの直行表だけではないんですけれども、
それを始めとしたら田口さんの手法というのはタグチメソッドと呼ばれて国内外で知られていますし、
直行表を用いるというのが日本からの発祥というか、
そういう形もあって結構日本ではよく使われているかなと思っています。
これは既に作成されている表に値を割り当てることで、
それだけでテストケースを作成できるという、そういうお手軽感のあるものですね。
この表自体は実は直行表というものを自作することも可能なんですけれども、
大抵は世の中にある表を流用することが多いかなと思っています。
この流用するだけでテストケースを作れるということで、
結構よく使われているかなという印象があります。
主な直交表の種類
その流用を元となる主な直行表の種類なんですけれども、これは一例です。
こういうものがあります。
例えば直行表L4ですね。
これは列が3つありますね。
1、2、3という3つの列に対して行が4行あって、
その中が1と2の組み合わせが書かれています。
これを3因子2水準の直行表L4と呼んだりします。
3つの因子があって、それぞれ水準が2つまでだったら、
この直行表を使えばテストケースが4つだけで済みますよというものになります。
同様に真ん中にあるのが直行表L8でして、
これの場合は7因子の2水準までこれで対応できる。
因子が7個あってもたった8ケースで済むよというものになります。
2水準じゃなくて水準が3つある場合のもの、
4因子水準でよく使われるのが直行表L9となります。
この直行表をどうやって使うのかという話に次入っていくんですけれども、
コーヒーショップの例で直交表を使う
これも実際に具体的なお題を使って説明したほうがいいかなと思っているので、
これを持ってきました。
クラシッケーションツリーのときにも使ったお題に似たようなものを持ってきています。
とあるコーヒーショップではコーヒー500円のカスタマイズとして、
量がMサイズもしくはLサイズ。
Lサイズの場合はプラス100円。
処理として通常もしくはデカフェ。
デカフェの場合はプラス20円。
シロップも選べて普通にするのか多めなのか。
多めだったらプラス40円。
あとはトッピングとして無しなのかチョコチップ追加なのか。
チョコチップ追加の場合はプラス50円みたいなものがあったときの
このコーヒーの価格に関するテストをしたいというものがあったとします。
それに対してどう直行評に割り当てるかというと、
まずはお題に出てきた要素から運質と水準を抜き出します。
今回の場合は量に関するもの、処理、通常かデカフェかというもの。
シロップの量をどうするか。
普通なのか多めなのか。
トッピングをどうするかなしなのかチョコチップなのか。
という量について、処理について、シロップの量について、
トッピングについてという種類のことをこれを因子と呼びます。
具体的に量だったらMサイズかLサイズかみたいな
具体的に選ぶ選択肢の値、これを水準と呼びます。
今回のお題の場合は水準が2水準のものが4つある。
2水準の因子が4つなので、
これの場合は7因子2水準の直行表L8を用います。
何でかというと、先ほど示した直行表の種類として
L4の場合は3因子の中で収めることができないので
次の7因子2水準だったら因子を7つまでだったらこれで使えるので
そのうちの4つを使うという感じになります。
具体的にどうやって使うかという説明に入っていきます。
直行表で7因子2水準の直行表をまず持ち出します。
まず1列目のところを見ると、上から順番に
1、1、1、1、2、2、2、2というふうに並んでいます。
このうちの1の部分に量のMサイズMを入れて
2のところにLサイズLを入れる。
そうするとこんな感じになります。
量に関してはMM、MM、LL、LLというケースになります。
同様に次、2番目のところに処理。
通常なのかデカフェなのかというところに関しては
2列目のところが順番に1、1、2、2、1、1、2、2と書いているので
そのうちの1の部分に通常を入れて、2の部分にデカフェを入れる。
そうするとこういう感じになります。
通常、通常、デカフェ、デカフェ、通常、通常、デカフェ、デカフェというふうになります。
続いて同じように3番目。今度はシロップの量ですね。
1、1、2、2、2、2、1、1というふうに並んでいるところの
1の部分に普通を入れて、2の部分に多めを入れる。
つまりこういう感じで普通、普通、多め、多め、多め、多め、普通、普通というふうになります。
最後4つ目ですね、トッピング。
順番1、2、1、2、1、2、1、2というふうに書かれているので
1の部分にナシを入れて、2の部分にチョコチップを入れる。
そうするとナシ、チョコチップ、ナシ、チョコチップ、ナシ、チョコチップ、ナシ、チョコチップというふうになります。
5番目、6番目、7番目は今回使わないので、それを無くして直行表。
今回の場合の直行表が完成します。
直交表の特徴とPair-wiseとの違い
この直行表の特徴としては、2種類の因子の組み合わせが必ず存在します。
これは以前にも話したPairwiseを満たしています。
かつ、これは同じ回数登場するというのが直行表の特徴になります。
1つ例を持ってきますと、例えばシロップの量が普通で
トッピングがチョコチップのものというのを探すと
今回の場合は2番目のところMサイズの通常の普通のチョコチップと
8番目のところLサイズのデカフェの普通のチョコチップで2回登場します。
じゃあ別の取り方をして、例えばシロップが多めでトッピングチョコチップは?って言ったら
4番、4つ目のケース、Mサイズデカフェ多めチョコチップ、Lサイズ通常多めチョコチップっていうふうに
やっぱりこれも2回登場します。
今回はこのシロップとトッピングのところを選びましたけど、
同じように量でも処理でも、どれか2種類の因子を見ていったときに
必ず組み合わせ存在して、同じ回数、今回の場合だったら必ず2回登場します。
別のもので言えば、例えば量がLサイズで処理が通常だったら
それは5番目のケースと6番目のケースでやっぱり2回登場する。
みたいにこういうふうになっています。
これが直行票の特徴になります。
なので、2因子間網羅、Pairwiseと直行票の関係性としては、
まず2因子間網羅っていうのが、2種類の因子の組み合わせが必ず存在する
っていうものになります。
それに対して直行票は、このPairwiseの特徴、2種類の因子の組み合わせが必ず存在する
は満たした上で、かつ同じ回数、各水準が同じ回数登場するのというのが
直行票の特徴になります。
なので、2因子間網羅の条件にさらに同じ回数っていうもう一つ条件の縛りがある
というのが直行票の特徴になっています。
そのため直行票っていうのは、基本的に2因子間網羅よりも
Pairwiseよりもケース数が同じか、それよりも多くなります。
今回の場合ですと、単純なPairwiseでいくと、これは6パターンになるかなと思っています。
一方で直行票になると、先ほど言ったように今回の場合はL8を用いますので、
8パターンになるわけですね。
なので、ケース数が多くなる。
直交表適用の注意点
ただし、例えばここで言うと、先ほど示したようなPairwiseの場合の
シロップが普通で、トッピングがチョコチップっていうのが
4番目と5番目の2パターン存在するのに対して、
シロップが多めでチョコチップ、トッピングがチョコチップっていうのが
2番目のところでっていうふうに、登場回数が同じではないっていうのが
ここから見てもわかります。
もう一つ注意点としては、直行票は基本的には無則の時のみに
適用したほうがいいかなと思っています。
これは以前Classification Treeのときにも注意点として話しましたが、
基本的に無則な関係のときに使ったほうがよくて、
有則な関係、因子と因子の間に依存関係であったりとか、
何かしら関係性があるときには使わないほうがいいかなと思っています。
ということで、今回は直行票の作り方からの使い方っていうのを
感想コーナー:ネガティブ・ケイパビリティ
紹介していきました。
これは次回っていうか今後も直行票を何回かに分けて
紹介、使い方をお伝えしたいなと思っています。
ここからは感想のコーナーになります。
今回はQuo5 PEさんからいただいた感想ですね。
17回目の言語化しない状態の大切さという話をしたときの感想ですね。
これは新たなIQOのマネジメントラジオの内容から、
自分がQAエンジニアとしてこういうところを大切にしているよっていうところで、
分からないって表明するみたいなこと大切だよと、
自分自身が明確な答えを持っていなくても分からないって発言して、
そこからみんなで考えることが大事だよっていう話をした覚えがあります。
それの感想として、おー面白いと。
ネガティブケーパビリティってやつですかねっていう話で感想いただいています。
実際そうかなと思います。
自分もネガティブケーパビリティっていう言葉自体聞いたことはあるけれども、
ちゃんと定義というかっていうのは知らなかったところではあるんですけれども、
軽く調べたところによるとネガティブケーパビリティっていうのが、
答えが出ていないとか、対処しようのない事態に耐える能力みたいに、
そういうふうに書いていたりとか、不確実性を受け入れる的な、
そういう意味合いですかね、で書かれているかなとは思うんですけれども、
自分としてもネガティブケーパビリティだよっていうのを意識して、
この回では発言したわけではないですけれども、
言われてみれば確かにそうだったのかなと思います。
すいません、そういう言葉と紐付けていただいて本当にありがとうございました。
ではエンディングです。
エンディングと今後の展望
btesting.fmではリスナーさんからのお便りを募集しています。
エピソードの感想や私に聞いてみたい質問やテストのお悩みなど、
どんなことでも構いません。投稿フォームは番組概要欄にあります。
またエピソードの感想は、
ハッシュタグbtestingでXのポストをお願いいたします。
今回の話では直行表というものを紹介していきました。
結構直行表っていうのは使われているかなと思うんですけれども、
中身を考えてみると意外と自分自身でそうやって当てはめるとかではなくて、
ツールを使って自動的に入れたりとかっていうのがある場合が多いかなとは思うんですけれども、
こういうふうに使うんだっていうのを今まで知らなかったとか、
まあそうだよね、そういうふうに使うよねとか、
そんなどんな感想でも構いませんので、
ぜひハッシュタグbtestingつけてポストをお願いします。
もしくは質問とかあれば投稿フォームからお願いします。
もしもこれからも聞きたいという方は、
お手持ちのPodcastアプリで番組のフォローもお願いします。
最新回が上がったときにすぐに気づけます。
今回の直行表はですね、
次回以降、次回になるかどうかわからないですけれども、
続きものでして、
今後もこの応用的な使い方についても発信していきたいと思いますので、
ぜひフォローをしていただいて、
公開されたときにすぐに気づけるようにしてもらえると嬉しいなと思っています。
ということで今回はここまでです。
それではまた次回。バイバイ。
16:13

コメント

スクロール