Skip to content
Latchkey

smoke test とは何か?

smoke test とは、より深いテストやリリースの前に、アプリケーションの最も重要な機能が動作することを確認する、素早く浅いチェックです。

この用語はハードウェアに由来します。新しいデバイスの電源を入れ、煙が出るかどうかを見るのです。ソフトウェアでは、smoke test は「そもそも起動して基本ができるか?」という最初の素早いチェックであり、フルスイートを実行する価値があるか、あるいは deploy を進めてよいかを判断します。

何であるか

smoke test は、すべてを深くテストするのではなく、いくつかの重要な経路を実行します。アプリは起動するか、ホームページは読み込まれるか、ユーザーはログインできるか、といった具合です。設計上、広く浅いものです。壊滅的で明白な失敗を素早く捉える、必ず動作すべき小さなチェックの集合です。

どう機能するか

smoke test は早期に、build の直後または deploy の直後に実行されます。smoke test が失敗すれば、pipeline はそこで止まります。基本が壊れているときに、数千の詳細なテストを実行したり、deploy にトラフィックを送ったりする意味はありません。smoke test が合格すれば、より深いテストやフルロールアウトが進みます。

web アプリを staging に deploy した後、smoke test は health エンドポイントを叩き、landing page を読み込み、1 回のログインを実行します。数秒で終わります。いずれかが失敗すれば、遅く詳細なテストスイートが始まる前に deploy は停止され rollback されます。

なぜ時間を節約するか

根本的に壊れた build に対してフルテストスイートを実行したりロールアウトを完了したりすると、数分を浪費するか障害を引き起こします。smoke test は明白な問題で fail fast し、素早いフィードバックを与え、pipeline の時間と production の両方を守ります。完全に壊れたものを deploy することに対する安価な保険です。

smoke test vs regression test

smoke test は「基本的に動いているか?」を問い、regression test は「以前動いていたものを壊していないか?」を問います。smoke test は小さく速いサブセットで、regression スイートは包括的で遅いものです。両者は pipeline の異なる地点で補完し合います。

重要なポイント

  • smoke test は重要な機能の素早く浅いチェックである。
  • 早期に実行され、基本が壊れていれば pipeline を止める。
  • より深いテストやロールアウトの前に fail fast することで時間を節約する。

関連ガイド