16水準列番号表を基に16水準・8水準・4水準が混在した多水準のL256直交表を作成する
2水準の直交表を多水準に変形する方法については「直交表の多水準化 2水準の直交表を4水準・8水準・16水準に変形する」で説明しました。今回は、2水準の直交表を多水準に変形する際に使用する列番号表を使って16水準・8水準・4水準が混在した多水準のL256直交表の作成に挑戦してみます。ここで使用する列番号表は16水準の列番号表です。
このL256直交表を作成することは、16水準が6個、8水準が13個、4水準が21個、2水準が11個の列番号表を作成することを意味します。これさえできればこれから多水準のL256直交表を作成することは機械的作業です。とはいえ非常に煩雑な機械的作業であることは間違いありません。
6個の16水準は、16水準列番号表のはじめの6行をそのまま使用します。8水準13個と4水準21個はこれまで説明した2つの原因子とそれらの交互作用因子を求める方法で決定します。
手作業で作成した列番号表を次に示します。
今回までに説明した方法を用いれば、最適とはいえないまでも、2水準の直交表を任意の多水準の直交表に手作業で変形できることがお分かりいただけたと思います。とはいえ、非常に煩雑な作業であることは間違いありません。
直交表ベースの組み合わせテストにこだわるのであれば、制約の問題も含めてツールを使用しない手作業では実用性に疑問符がつくと言わざるを得ません。さればといって、制約もサポートした直交表ベースのツールは某メーカから販売されていますが、1ライセンスが百万円もします。
直交表ベースの組み合わせテストにこだわる限り、悩みは尽きないようです。
このL256直交表を作成することは、16水準が6個、8水準が13個、4水準が21個、2水準が11個の列番号表を作成することを意味します。これさえできればこれから多水準のL256直交表を作成することは機械的作業です。とはいえ非常に煩雑な機械的作業であることは間違いありません。
6個の16水準は、16水準列番号表のはじめの6行をそのまま使用します。8水準13個と4水準21個はこれまで説明した2つの原因子とそれらの交互作用因子を求める方法で決定します。
手作業で作成した列番号表を次に示します。
今回までに説明した方法を用いれば、最適とはいえないまでも、2水準の直交表を任意の多水準の直交表に手作業で変形できることがお分かりいただけたと思います。とはいえ、非常に煩雑な作業であることは間違いありません。
直交表ベースの組み合わせテストにこだわるのであれば、制約の問題も含めてツールを使用しない手作業では実用性に疑問符がつくと言わざるを得ません。さればといって、制約もサポートした直交表ベースのツールは某メーカから販売されていますが、1ライセンスが百万円もします。
直交表ベースの組み合わせテストにこだわる限り、悩みは尽きないようです。
ソフトウェアテストの目的を一言で言い表すとすれば ?
テストの目的を一言で言い表すならば何かと聞かれて人によって様々な答えがありそうです。最もよくありそうなのは「欠陥を検出する」ことだと言えそうです。その他に「品質を保証する」、「ユーザを満足させる」などがあるでしょう。
JSTQBのシラバスでは、テストの目的として次の4つが挙げられています。
1. 欠陥の検出
2. 対象ソフトウェアの品質レベルが充分であることの確認
3. 意思決定のための情報の提示
4. 欠陥の作りこみの防止
このうち、4は実際にソフトウェアを動作させるのではなく、レビューや静的解析のことを指しています。どれもそれなりに説得力がありますが、ソフトウェアテストの目的を「一言で言い表す」ということを考えるとどれもあてはまりません。
私がソフトウェアテストの目的を一言で言い表すならばと聞かれたなら「ソフトウェアの品質を測定する」ことだと答えるでしょう。これは上の2に近いですが同じことではありません。
IEEE 標準規格 610.12-1990 ではソフトウェアテストを次のように定義しています。
「ある特定の条件下でシステムまたはコンポーネントを操作するプロセスであり、その結果を観察または記録して、システムまたはコンポーネントのある側面を評価すること」
ここではソフトウエアのある側面を評価することが目的とされています。「側面」を「品質」と言い換えても大きな違いにはならないと思われます。
Rick Craig と Stefan Jaskiel は、著書の "Systematic Software Testing" (邦訳「体系的ソフトウェアテスト入門」)の中で、ソフトウェアテストを次のように定義しています。
「テストとは、テストされるソフトウェアの品質を測定して改善するために、テストウェアをエンジニアリングし、利用し、保守しながら、同時並行的に進めるライフサイクルプロセスである」
ここでもソフトウエアの品質を測定することが品質の改善とともに目的とされています。
私のいう「ソフトウェアの品質を測定する」は、JSTQBのシラバスの2でいう「対象ソフトウェアの品質レベルが充分であることの確認」とはかなり意味が異なります。「ソフトウェアの品質を測定する」には「品質レベルが充分であることの確認」は含まれません。
ソフトウェアの品質を測定することができていれば、品質レベルが充分であるかどうかの確認はそれ以上テストすることなく自明となります。ソフトウェアの品質を測定することができていれば、意思決定のための情報(ソフトウェア信頼度成長曲線等のデータ)の提示に必要なテストはそれ以上必要ありません。ソフトウェアの品質を測定した結果として、欠陥を検出したり、欠陥の作りこみ防止となります。
シラバスで挙げられている4つのテストの目的はいずれも、「ソフトウェアの品質を測定する」という目的を達成したことの結果として実現されるものです。
それでは「ソフトウェアの品質」とは何でしょうか。SQuBOK策定部会・編集の「ソフトウェア品質知識体系ガイド -SQuBOK Guide-」ではソフトウェア品質の定義について何人もの著名人や諸組織による10通りの定義が時系列で解説されています。これらによるとソフトウェアの品質とは単に要求仕様を満たすだけではなく、顧客やユーザのニーズを満たしている度合いも含まれていると見なされているようです。機能要件のみならず非機能要件も満足して初めて品質が高いと言えることになるのでしょう。
ソフトウェアテストの目的を一言で言い表すとすれば 、「ソフトウェアの品質を測定する」という表現が私には一番しっくりきます。
JSTQBのシラバスでは、テストの目的として次の4つが挙げられています。
1. 欠陥の検出
2. 対象ソフトウェアの品質レベルが充分であることの確認
3. 意思決定のための情報の提示
4. 欠陥の作りこみの防止
このうち、4は実際にソフトウェアを動作させるのではなく、レビューや静的解析のことを指しています。どれもそれなりに説得力がありますが、ソフトウェアテストの目的を「一言で言い表す」ということを考えるとどれもあてはまりません。
私がソフトウェアテストの目的を一言で言い表すならばと聞かれたなら「ソフトウェアの品質を測定する」ことだと答えるでしょう。これは上の2に近いですが同じことではありません。
IEEE 標準規格 610.12-1990 ではソフトウェアテストを次のように定義しています。
「ある特定の条件下でシステムまたはコンポーネントを操作するプロセスであり、その結果を観察または記録して、システムまたはコンポーネントのある側面を評価すること」
ここではソフトウエアのある側面を評価することが目的とされています。「側面」を「品質」と言い換えても大きな違いにはならないと思われます。
Rick Craig と Stefan Jaskiel は、著書の "Systematic Software Testing" (邦訳「体系的ソフトウェアテスト入門」)の中で、ソフトウェアテストを次のように定義しています。
「テストとは、テストされるソフトウェアの品質を測定して改善するために、テストウェアをエンジニアリングし、利用し、保守しながら、同時並行的に進めるライフサイクルプロセスである」
ここでもソフトウエアの品質を測定することが品質の改善とともに目的とされています。
私のいう「ソフトウェアの品質を測定する」は、JSTQBのシラバスの2でいう「対象ソフトウェアの品質レベルが充分であることの確認」とはかなり意味が異なります。「ソフトウェアの品質を測定する」には「品質レベルが充分であることの確認」は含まれません。
ソフトウェアの品質を測定することができていれば、品質レベルが充分であるかどうかの確認はそれ以上テストすることなく自明となります。ソフトウェアの品質を測定することができていれば、意思決定のための情報(ソフトウェア信頼度成長曲線等のデータ)の提示に必要なテストはそれ以上必要ありません。ソフトウェアの品質を測定した結果として、欠陥を検出したり、欠陥の作りこみ防止となります。
シラバスで挙げられている4つのテストの目的はいずれも、「ソフトウェアの品質を測定する」という目的を達成したことの結果として実現されるものです。
それでは「ソフトウェアの品質」とは何でしょうか。SQuBOK策定部会・編集の「ソフトウェア品質知識体系ガイド -SQuBOK Guide-」ではソフトウェア品質の定義について何人もの著名人や諸組織による10通りの定義が時系列で解説されています。これらによるとソフトウェアの品質とは単に要求仕様を満たすだけではなく、顧客やユーザのニーズを満たしている度合いも含まれていると見なされているようです。機能要件のみならず非機能要件も満足して初めて品質が高いと言えることになるのでしょう。
ソフトウェアテストの目的を一言で言い表すとすれば 、「ソフトウェアの品質を測定する」という表現が私には一番しっくりきます。
16水準線点図を4水準5個に解体 2水準255因子のL256直交表を4水準85因子の直交表に変形
前回は5つの8水準線点図を4水準10個に解体してみました。今回は17個の16水準線点図を4水準85個に解体してみましょう。
16水準線点図の1つを次に示します。
上の16水準線点図を見ると、2つの原因子と1つの交互作用因子からなる4水準線点図の直線が相互に接触しないで取り出せるのは2つまでのようです。
ですがこの16水準線点図には2つの原因子と1つの交互作用因子からなる4水準のごく一部しか表現されていません。存在する4水準をできるだけ多く表現した16水準線点図を次に示します。これでもまだ表現できていない4水準がいくつもあります。
解体のしかたは「直交表の多水準化 2水準の直交表を4水準・8水準・16水準に変形する」で説明した方法と基本的に同じです。2つの原因子と1つの交互作用因子からなる5つの組み合わせを網羅することです。この方法で見つけた16水準を4水準5個に解体した「16水準列番号表」を次に示します。これは一例であり、別の組み合わせも可能です。4水準5個に解体することにこだわらなければ可能な4水準の組み合わせは膨大な数になります。
例えば、16水準が8因子で4水準が16因子などといった組み合わせが可能です。この場合でも4水準はまだ29因子余っています。この4水準はもちろん2水準に解体することもできます。
16水準線点図の1つを次に示します。
上の16水準線点図を見ると、2つの原因子と1つの交互作用因子からなる4水準線点図の直線が相互に接触しないで取り出せるのは2つまでのようです。
ですがこの16水準線点図には2つの原因子と1つの交互作用因子からなる4水準のごく一部しか表現されていません。存在する4水準をできるだけ多く表現した16水準線点図を次に示します。これでもまだ表現できていない4水準がいくつもあります。
解体のしかたは「直交表の多水準化 2水準の直交表を4水準・8水準・16水準に変形する」で説明した方法と基本的に同じです。2つの原因子と1つの交互作用因子からなる5つの組み合わせを網羅することです。この方法で見つけた16水準を4水準5個に解体した「16水準列番号表」を次に示します。これは一例であり、別の組み合わせも可能です。4水準5個に解体することにこだわらなければ可能な4水準の組み合わせは膨大な数になります。
例えば、16水準が8因子で4水準が16因子などといった組み合わせが可能です。この場合でも4水準はまだ29因子余っています。この4水準はもちろん2水準に解体することもできます。
効率のよい線点図の解体 原因子と交互作用因子をもとに5つの8水準線点図を4水準10個に解体する
直交表をテストに使いたいと思っている人の多くは、「線点図の解体」という言葉を知っていることでしょう。例えば、次の図に示すように1つの8水準線点図は1つの4水準と4つの2水準に解体することができます。
8水準線点図に表現されている4つの直線(要素)は、それぞれが4水準に解体できますが、4水準に解体できる要素はこれだけではありません。4水準に解体できるすべての要素を表現した8水準線点図を次に示します。
ここまでは1つの8水準線点図のみに着目してきましたが、効率のよい線点図の解体では異なる線点図にまたがって解体を行ないます。例えばL64直交表で8水準9個の線点図を8水準4個、4水準10個、2水準5個に解体するには次のように行ないます。
9個の8水準線点図のうち、4個はそのまま8水準として使用します。残った5個の8水準線点図の列番号をいったんバラバラに解体し、その列番号の集まりから2つの原因子とその排他的論理和となる交互作用因子の列番号の組み合わせ10個を抽出します。列番号の組み合わせ抽出のしかたは「直交表の多水準化 2水準の直交表を4水準・8水準・16水準に変形する」で説明した方法と基本的に同じです。
この方法で作成した8水準4個、4水準10個、2水準5個の列番号の組み合わせを次に示します。
この方法で4水準に解体した列番号を8水準線点図上に表した図を次に示します。○で囲まれた列番号が4水準に解体した列番号です。
この方法は16水準線点図にも適用することができますが、8水準に解体する際に選択する列番号が最適でないと4水準に解体できる数が少なくなります。16水準線点図の解体は8水準線点図の解体よりも難易度が高いです。
※ 線点図の画像はJaSST 2005での富士ゼロックス 秋山浩一氏の発表資料から引用しています。
8水準線点図に表現されている4つの直線(要素)は、それぞれが4水準に解体できますが、4水準に解体できる要素はこれだけではありません。4水準に解体できるすべての要素を表現した8水準線点図を次に示します。
ここまでは1つの8水準線点図のみに着目してきましたが、効率のよい線点図の解体では異なる線点図にまたがって解体を行ないます。例えばL64直交表で8水準9個の線点図を8水準4個、4水準10個、2水準5個に解体するには次のように行ないます。
9個の8水準線点図のうち、4個はそのまま8水準として使用します。残った5個の8水準線点図の列番号をいったんバラバラに解体し、その列番号の集まりから2つの原因子とその排他的論理和となる交互作用因子の列番号の組み合わせ10個を抽出します。列番号の組み合わせ抽出のしかたは「直交表の多水準化 2水準の直交表を4水準・8水準・16水準に変形する」で説明した方法と基本的に同じです。
この方法で作成した8水準4個、4水準10個、2水準5個の列番号の組み合わせを次に示します。
この方法で4水準に解体した列番号を8水準線点図上に表した図を次に示します。○で囲まれた列番号が4水準に解体した列番号です。
この方法は16水準線点図にも適用することができますが、8水準に解体する際に選択する列番号が最適でないと4水準に解体できる数が少なくなります。16水準線点図の解体は8水準線点図の解体よりも難易度が高いです。
※ 線点図の画像はJaSST 2005での富士ゼロックス 秋山浩一氏の発表資料から引用しています。







