状態遷移テストの例

⚡ スマートサマリー

状態遷移テストは、入力条件の変化に応じてアプリケーションがどのように状態間を遷移するかを検証するブラックボックス手法です。このチュートリアルでは、図の4つの構成要素、状態図と状態表の違い、そしてテスター向けのATMとログインの具体的な例について説明します。

  • 🔄 コアアイデア: この手法は、同じ入力に対して過去の事象に基づいて異なる出力が生成される場合(有限状態システム)のシステム動作を検証する。
  • 🧩 4つの構成要素: すべてのモデルは、状態、遷移、イベント、およびアクションから構築されます。
  • おいおいおいそ️ 図と表の比較: 図は有効な遷移を示し、表は無効な遷移を明らかにする。
  • 🏧 実際の例: ATMの暗証番号ロックアウトや航空券予約のログイン機能は、実際の保護範囲を示しています。
  • 🤖 AIの有効化: AIツールは要件から状態モデルを自動生成し、欠落または無効な遷移を警告する。

州移行テスト — 各州

状態遷移テストとは何ですか?

状態遷移テスト これはブラックボックステスト手法の一つで、入力条件の変化によってテスト対象アプリケーション(AUT)の状態変化や出力変化が生じる仕組みです。様々な入力条件におけるアプリケーションの動作を分析するのに役立ち、テスターはシステムの動作を記録しながら、正負両方の入力値を与えることができます。

これは、システムとテストが構築されているモデルに基づいています。入力が同じでも、その前の出来事に応じて出力が異なるシステムはすべて有限状態システムです。状態遷移テスト手法は、次のような場合に役立ちます。 さまざまなシステム遷移をテストする.

状態遷移テストを使用するタイミング

  • テスターが限られた入力値のセットに対してアプリケーションをテストする場合。
  • テスターがテスト対象アプリケーション(AUT)内で発生する一連のイベントをテストする場合、一連の入力値に対するアプリケーションの動作を確認できます。
  • テスト対象システムが過去のイベントや値に依存している場合。

状態遷移テストに頼るべきでない場合

  • 連続した入力の組み合わせに対してテストが行​​われていない場合。
  • テストが探索的テストなど、異なる機能を対象とする場合。

状態遷移図の4つの構成要素

状態遷移モデルは、以下に説明する4つの主要な構成要素から成り立っています。

1) 州 ソフトウェアが到達する可能性のある範囲。

州移行テスト — 各州

2) 移行 ある州から別の州へ。

状態遷移テスト — 遷移

3)イベント ファイルを閉じたり、お金を引き出したりするなど、何らかの遷移を引き起こすもの。

状態遷移テスト — イベント

4) アクション エラーメッセージや現金を受け取るなど、何らかの遷移の結果として生じるもの。

状態遷移テスト — アクション

状態遷移図と状態遷移表

状態遷移を表現または設計する方法には、主に2つの方法があります。状態遷移図と状態遷移表です。

側面 状態遷移図 状態遷移表
とも呼ばれている 州別チャート/グラフ 状態テーブル
表現 Box状態を表す記号(es)、遷移を表す矢印(arrows) 状態(行)とイベント(列)のグリッド
識別に最適 有効な遷移 無効な遷移
各セルには - 出来事が発生した後に到達する状態

状態遷移を行う方法(例)

例1:ATMの暗証番号ロックアウト

ATMシステムの機能として、ユーザーが無効なパスワードを3回入力すると、アカウントがロックされるという機能を考えてみましょう。

このシステムでは、ユーザーが最初の3回の試行で有効なパスワードを入力すれば、ログインに成功します。1回目または2回目の試行で無効なパスワードを入力した場合、パスワードの再入力を求められます。そして、3回目の試行でも誤ったパスワードを入力すると、アカウントがブロックされます。

状態遷移図(例1)

ATM PIN状態遷移図

図に示すように、ユーザーが正しいPINを入力すると、「アクセス許可」状態に移行します。間違ったパスワードを入力すると、次の試行に進み、3回目に同じ間違いをすると、「アカウントブロック」状態になります。

状態遷移表(例1)

州/地域 正しいPIN 間違った暗証番号
S1) 開始 S5 S2
S2) 1回目の試み S5 S3
S3) 2回目の試み S5 S4
S4) 3回目の試み S5 S6
S5) アクセスが許可されました
S6) アカウントがブロックされました

表に示すように、ユーザーが正しいPINを入力すると、状態はS5(アクセス許可)に遷移します。ユーザーが間違ったパスワードを入力すると、次の状態に移行し、3回目の誤入力でアカウントがブロックされます。

例2:フライト予約ログイン

フライト予約のログイン画面では、正しいエージェント名とパスワードを入力してアクセスする必要があります。 航空券予約申し込み.

航空券予約状態遷移グラフ

状態遷移グラフ

このアプリケーションでは3回までパスワードの入力を試行できます。4回目の試行でユーザーが間違ったパスワードを入力すると、システムはアプリケーションを自動的に終了します。

ステートグラフは、テストする有効な遷移を決定するのに役立ちます。正しいパスワードと間違ったパスワードの両方でテストすることは必須であり、 テストシナリオ2回目、3回目、4回目のログイン試行をそれぞれテストできます。無効なシステム遷移を特定するには、状態テーブルを使用できます。

航空券予約状態遷移表

状態テーブルでは、有効な状態がすべて左側に一覧表示され、それらの状態を引き起こすイベントが上部に表示されます。各セルには、イベントが発生したときにシステムが遷移する状態が表示されます。たとえば、状態S1では、正しいパスワードを入力するとS6(アクセス許可)に遷移し、最初の試行で間違ったパスワードを入力するとS3(2回目の試行)に遷移します。同様に、他のすべての状態も特定できます。

この方法では、2つの無効な状態が強調表示されます。例えば、S6状態(既にログイン済み)で、別のフライト予約インスタンスを開き、同じエージェントのパスワードを入力した場合を考えてみましょう。このようなシナリオにおけるシステムの応答をテストする必要があります。

状態遷移技術の長所と短所

優位性 デメリット
システムの動作を図式または表形式で表現し、ヘルプを提供します。ping テスターはシステムを効果的に理解し、網羅する。 常に信頼できるとは限らない。例えば、有限でないシステムや逐次処理ではないシステムには適さない。
テスターがすべての条件が満たされていること、および結果が正しく取得されていることを確認できるようにする。 すべての可能な状態を定義する必要がある。これは小規模なシステムでは有効だが、状態数が指数関数的に増加するため、大規模なシステムでは破綻する。

よくあるご質問

状態遷移テストは、入力条件の変化に応じてシステムがどのように状態間を遷移するかを検証するブラックボックス手法です。これは、同じ入力でも過去の事象によって異なる出力が生成される有限状態システムに適しています。

4つの要素は、状態(ソフトウェアが取り得る状態)、遷移(状態間の移動)、イベント(遷移を引き起こすトリガー)、およびアクション(メッセージや出力など、遷移の結果)です。

状態遷移図は、ボックスと矢印を用いて表現され、有効な遷移を識別するのに最適です。状態表は、状態とイベントをグリッド状に一覧表示し、無効な遷移を見つけるのに最適です。

入力が連続的でない場合や、さまざまな機能の探索的テストを行う場合は、この方法は避けてください。また、状態数が指数関数的に増加するため、非常に大規模なシステムではこの方法は機能しなくなります。

0スイッチカバレッジは、有効な遷移をそれぞれ1回ずつテストします。1スイッチカバレッジは、連続する遷移のペアをそれぞれテストします。スイッチカバレッジが高いほど、シーケンス関連の欠陥が多く見つかりますが、テストケースの数も増えます。

これはブラックボックス手法です。テストケースは、アプリケーションの内部ソースコードを知る必要なく、状態と遷移の想定される外部動作から導き出されます。

AIツールは要件を読み取り、状態モデルを自動的に構築し、有効なパスとエッジ遷移を網羅するテストケースを生成します。これにより、手動によるモデリング作業が削減され、複雑なシーケンスの網羅率が向上します。

はい。AIは状態モデルを分析し、期待される動作パターンと比較することで、欠落、到達不能、または無効な遷移を検出できます。ping テスターは、手動による表のレビューでは見落とされがちな欠陥を発見する。