スモークテストとは? なぜスモークテストは必要なのでしょうか?

1.スモークテストの重要性とメリット

「スモークテスト」の前に、「ソフトウェアビルド」(以下、ビルドという)について紹介します。
「ビルド」とは、プログラミング言語で書かれたソースコードなどを元に実行可能なファイルや配布パッケージを作成する処理や操作のことです。

参照:ISTQB用語集
スモークテスト(smoke test)の定義

プログラムの必須機能が正常に動作することを確認するのが目的で、コンポーネントやシステムの主要機能を全体を網羅しますが、細かい部分は確認しません。

簡単に言えば、スモークテストは、実行ファイルをWebサーバー上に配備し、利用できる状態(デプロイといいます)にし、ビルドが安定しているかどうか(新しくデプロイされた環境でアプリケーションが適切に実行されているかどうか)を確認するプロセスです。新しいビルドが作成された直後にテストを実行できるかどうかを判断します。

2.スモークテストの重要性とメリット

スモークテストの重要性

· スモークテストは、初期段階でシステムの正確性を保証するため、ソフトウェア開発において重要な役割を果たします。
· 初期にスモークテストを実行しないと、後の工程でバグが発生し、コストに大きく影響する可能性があります。また、後の工程で発見されたバグは、製品のリリースに影響を与える可能性があります。
· スモークテストを行わずにテストを実行した場合、テストの初期段階でログインできなくなり、サーバーにすらアクセスできないなどの事象が発生することがあります。(このように開発やテストを進めることができなくなるバグのことを、ブロッキングバグと言います。)
· ビルドに現れる原因不明な問題は、スモークテストを実行することで特定できます。
· テスターは、新しいコードで直面する可能性のあるアプリケーション機能の欠陥を見つけることができます。

スモークテストは、システムを安定状態にし、スモークテストの終了後にし、機能テストを開始できます。

スモークテストのメリット

· 簡単に実施可能。
· 早期に不具合を発見可能。
· システムの品質を改善。
· 品質リスクを減少。

テスト実施のプロセスの時間コストを削減。
· クリティカルエラーを簡単に発見、改善可能。
· リスクを最小限に抑えることが可能。

3.スモークテストは誰が実施するのか?

スモーク テストは、ソフトウェアの新しい機能が追加され、QA /Staging環境に展開されている既存のビルドと統合されるたびに実行されます。重要な機能が正しく機能しているかどうかを確認します。
ビルドをQA環境にリリースした後、QAエンジニアまたはQAリーダーによってスモークテストが実行されます。新しいビルドがあるたびに、QAチームはアプリケーションの主な機能を特定してスモークテストを実行します。

4. スモークテストの周期

ビルドが QA チームにデプロイされ、スモーク テストで問題がないことが確認された後に、機能テストを実行します。 問題があった場合、問題が修正されるまでテストを実行します。

5. スモークテストの実施方法

a. マニュアルテスト

通常、スモーク テストは手動で行います。スモーク テストを行う前に、QA チームはビルド バージョンの正確性をチェックします。
テストに合格した後に、機能テストを実施します。テストが失敗した場合、ビルドは中止され、変更のために開発チームに送り返されます。
スモーク テストは新しいビルドで実行され、システムの正確性を維持するために古いビルドと統合されます。

b. 自動スモークテスト

自動化テスト ケースの設定を利用して、実行することもできます。
ソフトウェア ビルドがデプロイされるたびにテストを繰り返す代わりに、自動スモークテストで記録されたケースがビルドで再実行されます。主要機能がまだ正常に動作しているかどうかを判断します。テストが失敗した場合は、ビルドを編集してすぐにビルドを再度デプロイできます。このようにして、時間を節約し、QA 環境のビルドの品質を確保できます。
自動テスト ツールを使用して、テスターは QA 環境で実行されるすべての手動ステップを保存する必要があります。自動テスト ツールを使用して、テスターはソフトウェア ビルドで実行されたすべての手動ステップを記録する必要があります。

c. アドホックテスト

スモークテストはマニュアルテストと自動スモークテストに加えて、テストケースを作成せずにアドホックテストで実行することもあります。

6. まとめ

スモークテストはビルドごとに行われ、初期段階で不具合を発見することができます。テストフェーズに入るソフトウェアビルドで実行される必要があり、システムフェーズに入る前にバグを発見できるテストになります。スモックテストは、ソフトウェアの品質を向上させる重要なテストであると認識しましょう。