モデルオプション
PICTでは、モデルオプションとしてさまざまな機能を提供しています。今回と次回に分けて詳しく解説していきます。
制約条件
パラメータの組み合わせを行う場合、組み合わせることのできない値の組み合わせが現れることがあります。たとえば、最大2台のハードディスク(HD)が収容可能な、あるパソコンの構成モデルを表すリスト1の場合、HD1とHD2の両方が「なし」という構成はできません。少なくとも一方のHDは「なし」以外でなければなりません。この組み合わせることのできない条件を制約条件といいます。組み合わせテストでは、制約条件のある場合が少なくありません。
制約条件表
制約条件は、表1の制約条件表でモデル化することができます。制約条件を表の形式で表すことができるので理解しやすくなります。また他の人に制約条件を説明するのにも便利です。
表1 パソコンの構成モデルの制約条件表
パラメータ | 値セット1 | 値セット2 |
HD1 | 250GB, 500GB, 750GB | なし, 250GB, 500GB, 750GB |
HD2 | なし, 250GB, 500GB, 750GB | 250GB, 500GB, 750GB |
表1は、値セット1と値セット2の可能な2つの値の組み合わせに分かれるという制約条件を表しています。この場合のメモリのように、表に明記されていないパラメータが存在する場合、そのパラメータには制約条件がないことを意味します。
表1は2パラメータ間の制約条件ですが、現実には3パラメータ間以上にわたる制約条件もありえます。たとえばリスト2のモデルがあるとき、その制約条件表が表2であるとします。
表2 リスト2の制約条件(1)
パラメータ | 値セット1 | 値セット2 | 値セット3 |
A | a1 | a2 | a3 |
B | b1 | b2 | b3 |
C | c1 | c2, c3, c4, c5 | c2, c3, c4, c5 |
パラメータ | 値セット4 | 値セット5 | |
A | a4 | a5 | |
B | b4 | b5 | |
C | c2, c3, c4, c5 | c2, c3, c4, c5 | |
表2は、3パラメータ間にわたる可能な組み合わせが5つに分かれることを示しています。PICTでは3パラメータ間以上にわたる制約条件も容易に取り扱うことができます。
以上は制約条件の結果、複数の可能な組み合わせに分かれる場合でしたが、制約条件によっては可能な組み合わせが1つの場合もありえます。リスト2のモデルで組み合わせが1つの場合の例を表3に示します。
表3 リスト2の制約条件(2)
パラメータ | 値セット1 |
A | a1, a2, a3, a4 |
B | b1, b2, b3, b4 |
表3は、パラメータAの値のうちa5はパラメータBのすべての値と組み合わせ可能ですが、a1, a2, a3, a4はパラメータBの値b5とは組み合わせできないことを示しています。
制約条件の指定ができなければテスト業務で実用的に使用することはできません。また、いかに容易に制約条件の指定ができるかも重要な点です。
モデルファイルを作成する際は、この制約条件をPICTに指示します。制約条件には、条件付き制約と無条件制約の2種類があります。PICTでは制約条件の記述に独自のスクリプト言語を用いており、それが制約条件の指定を極めて柔軟なものにしています。
制約条件の記述は、パラメータを [ ] で囲み、値が文字列の場合は、" " で囲み、ステートメントの末尾は ; で終わります。
条件付き制約
条件付き制約は、パラメータと値の関係を評価する関係式を用いて制約条件を宣言します。条件付き制約の構文は if 関係式 then 関係式 else関係式
の形式をとります。else以降は省略できる場合があります。if文の中にif文を入れ子にすることはできません。関係式はパラメータとその値、またはパラメータと他のパラメータの関係を表し、基本的にパラメータ 演算子 値 または パラメーラ 演算子 パラメータ で記述します。表4に演算子の一覧を示します。
表4 使用できる演算子
演算子 | 説明 |
=, <>, >, >=, <, <= | パラメータの値(または他のパラメータ)を比較します。 |
IN | パラメータに含まれる複数の値を指定します。 |
NOT, AND, OR | 関係式に対して論理演算を行います。 |
LIKE | ワイルドカード(*または?)で複数の値を指定します。 |
(1) =, <>, >, >=, <, <=
表1の制約条件を演算子(=, <>)で記述するとリスト3となります。
この条件で生成される組み合わせを表5に示します。
表5 生成された組み合わせ
No. | メモリ | HD1 | HD2 |
1 | 1GB | 250GB | 500GB |
2 | 1GB | 500GB | なし |
3 | 1GB | 750GB | 750GB |
4 | 1GB | なし | 250GB |
5 | 2GB | 250GB | 250GB |
6 | 2GB | 250GB | 750GB |
7 | 2GB | 250GB | なし |
8 | 2GB | 500GB | 500GB |
9 | 2GB | 750GB | 250GB |
10 | 2GB | なし | 500GB |
11 | 4GB | 250GB | なし |
12 | 4GB | 500GB | 250GB |
13 | 4GB | 500GB | 750GB |
14 | 4GB | 750GB | 500GB |
15 | 4GB | 750GB | なし |
16 | 4GB | なし | 750GB |
生成されたHD1、HD2の組み合わせに、“なし”どうしの組み合わせがないことがわかります。
(2) IN
演算子INは、複数の値を一度に指定したいときに便利な演算子です。たとえば表1の制約条件を、演算子INを用いて記述するとリスト4のとおりとなります。
この例では、IN演算子で指定する値が多いのでよい例とはいえませんが、多くの値の中から、複数の値を指定する場合にIN演算子は便利に使うことができます。
IN演算子では、あるパラメータのすべての値を指定することはできません。
(3) NOT、AND、OR
演算子NOT、AND、ORは論理演算子です。表1の制約条件を論理演算子で記述するとリスト5のとおりとなります。このように論理演算子で関係式を連結することにより、制約条件を記述することができます。なお論理演算子が混在する式の場合は、論演算子の優先順位が問題になることがあるので、各関係式を括弧( )で囲み優先順位を明確にしたほうがよいでしょう。
(4) LIKE
演算子LIKEは、複数の値をワイルドカード(*、?)で指定することができます。“*”はすべての任意桁数の文字と一致します。“?”はすべての半角1文字と一致します。表1の制約条件を演算子LIKEで記述するとリスト6のとおりとなります。
このようにLIKE演算子は適切なパラメータの名称、値の名称を用いることで便利に使える場合があります。
以上、説明した(1)から(4)までの4種類の演算子を用いた結果、生成される組み合わせは、いずれも表5と同じになります。
これまでの例では、いずれもif文にelseがない例でした。elseを使用する例を以下に示します。
表6 elseを必要とする制約条件表
パラメータ | 値セット1 | 値セット2 |
A | a1, a2 | a3 |
B | b1, b2, b3 | b4 |
この制約条件を記述する式の一例はリスト8のとおりとなります。
無条件制約
無条件制約は、かならず成立する制約条件を指定します。たとえば、パラメータとしてあるテーブル上の位置を示す3つのテーブル番号があり、それぞれ同じ番号、または異なる番号を組み合わせたい場合、無条件制約が役に立ちます。無条件制約で扱う各パラメータの値は同一の値のセットである必要はありません。
この条件式を適用するモデルをリスト9に示します。
条件式1~4と生成された組み合わせを表7~10に示します。
表7 3つのパラメータのうちすくなくとも1つは異なる値を組み合わせる
No. | テーブル番号a | テーブル番号b | テーブル番号c |
1 | 1 | 1 | 128 |
2 | 1 | 128 | 1 |
3 | 1 | 255 | 255 |
4 | 128 | 1 | 128 |
5 | 128 | 128 | 255 |
6 | 128 | 255 | 1 |
7 | 255 | 1 | 1 |
8 | 255 | 1 | 255 |
9 | 255 | 128 | 128 |
10 | 255 | 255 | 128 |
表8 3つのパラメータはすべて異なる値を組み合わせる
No. | テーブル番号a | テーブル番号b | テーブル番号c |
1 | 1 | 128 | 255 |
2 | 1 | 255 | 128 |
3 | 128 | 1 | 255 |
4 | 128 | 255 | 1 |
5 | 255 | 1 | 128 |
6 | 255 | 128 | 1 |
表9 3つのパラメータのうちすくなくとも2つは同じ値を組み合わせる
No. | テーブル番号a | テーブル番号b | テーブル番号c |
1 | 1 | 1 | 255 |
2 | 1 | 128 | 128 |
3 | 1 | 255 | 1 |
4 | 128 | 1 | 128 |
5 | 128 | 128 | 1 |
6 | 128 | 255 | 128 |
7 | 128 | 255 | 255 |
8 | 255 | 1 | 1 |
9 | 255 | 128 | 255 |
10 | 255 | 255 | 128 |
表10 3つのパラメータはすべて同じ値を組み合わせる
No. | テーブル番号a | テーブル番号b | テーブル番号c |
1 | 1 | 1 | 1 |
2 | 128 | 128 | 128 |
3 | 255 | 255 | 255 |
無条件制約は、使い方によってはこのように強い力を発揮することができます。表7と表9は意味的には同じですが、組み合わせ結果は若干異なります。
次回は、残りのモデルオプションについて解説します。いずれも強力な機能が控えています。