状態遷移のNスイッチテストについてのお話

2021.04.15


ITソリューション事業部 第1開発部の塚本です

写真は近所の公園で撮った今年の桜です(ちょっと暗いけど)
赤ん坊が動き出すと嬉しいけど、家の中はカオスになりました

今日は状態遷移のNスイッチテストについてのお話をしようと思います

状態に対して遷移を一つだけ遷移させた状態遷移テストの0スイッチテストと言います

例えば、A、B、Cという三つの状態があり
それぞれの遷移パターンは
A→B
B→C
C→B
C→A
の場合、4パターンの遷移となりますので、この4パターンを実施すると一見良さそうに見えてしまいます。

遷移にはそれぞれトリガがあり、それぞれのトリガが起こせるのかどうかという観点も考えないといけません。
先程の例の遷移に必要なトリガにトリガ名をつけます
A→B(トリガ1)
B→C(トリガ2)
C→B(トリガ3)
C→A(トリガ4)

その上で、BからC状態へ遷移する(トリガ2)が、実はA状態でも発生可能な場合は
A状態でトリガ2を発生させても無視される(状態Cに遷移しない)ことを確認する必要があることになります。

基本的には状態とトリガを縦列、横列で記載した表を作成してパターンを作成することになります
上記の例で作ると以下のようになります
ただし、トリガ2がA状態で発生可能なことは判明しておりますが、それ以外は不明ですが、一旦発生不可能ということにします。

 (トリガ1)(トリガ2)(トリガ3)(トリガ4)
A Bに遷移  変化なし  ー      ー
B ー     Cに遷移  ー      ー
C ー     ー     Bに遷移   Aに遷移

本当は「ー」とした部分を確認して埋めると良い設計やテストができるのでは無いかな?と思います

さて、1スイッチテストは状態から状態への遷移間に1状態を追加したテストのことです
さっきの例だと
A→Bで終わっていたものが
A→B→Cまでやることになります。

これは組み合わせるのが大変なのですが
以下の表の行列の掛け算で算出することができます(トリガの文字は省略しました)
   A     B     C 
A (2)   (1)    ー 
B  ー     ー    (2)
C (4)   (3)    ー 

(2)(1) ー     (2)(1) ー   (2、2)、(2、1)、(1、2)
 ー  ー (2) ×   ー  ー (2) =(2、4)、(2、3)、 ー
(4)(3) ー     (4)(3) ー   (4、2)、(4、1)、(3、2)

上記の8通りで2状態遷移のテストが網羅できているかと思います。
行列の掛け算ってこういう時に使うんですね(数学も無駄ではない)

以上です

ダイヤモンドファンタジーでは
一緒に働いて頂けるメンバーを
募集しています。

ENTRY