ステージング環境とは?その意味やテスト環境や本番環境との違い・目的や構築時のポイントまとめ
システム開発において欠かせないのが、製品のテスト工程です。
テスト工程にはいくつかの段階に分けられており、テストを行う環境の1つとして
「ステージング環境」
というものがあります。
本番と同等の環境においてテストをすることで、それまでに発見できなかった不具合を見つけ、製品の使用感・安定感を高める重要なプロセスです。
テスト工程には他にも、検証環境や実行環境といったものがありますが、それらにも重要な役割があり、ステージング環境との違いを把握しておくことが大切です。
この記事では、ステージング環境が何か、そのほかの工程とどう違うのか、テストを実施する目的、採用される手法について解説します。
合わせて、ステージング環境を構築する際に気をつけたいポイントについても紹介します。
ステージング環境とは
システム開発のプロセスでいう「ステージング環境」とは、何を指すのでしょうか。
ここでは、ステージング環境の意味と、このプロセスが重要な理由、そしてシステム開発におけるステージング環境の位置づけを解説します。
システム開発におけるテスト工程のひとつ
ステージング環境とは、実行環境と同等のテスト環境、および、そこで実施されるテスト工程を指します。
この工程で用いられるサーバーを「ステージングサーバー」、またWebシステムにおいては「ステージングサイト」と呼ぶこともあります。
ステージング環境では、システムが運用される環境によく似たシチュエーションを用意したうえで、システムの動作テストをおこないます。
通常のテスト工程では、単体テストや結合テストなどによって、コードを逐一テストしますが、ステージング環境では、製品のリリースを想定して、システムの動作を確認することが目的です。
ステージング環境が重要な理由
システム開発において、それまでのテスト工程では問題は発見されなくとも、ステージング環境でシステムを実行したら正常に動作しなかったということが少なくありません。
本番に近い環境でテストをすることには、これまでの工程では気づかなかった問題を発見できるメリットがあります。
例えば、ステージング環境で本番と同じ環境を作ることで
・データベースの容量や設定/権限が開発環境と違っていたためにエラー
・他のアプリケーションとの競合によるエラー
・環境変数の違いによるエラー
・データの違いによるエラー
・キャッシュの設定の違いによるエラー
・ログレベルの違いによるエラー
などが考えられます。
開発環境は、開発の速さやデータそのものの検証を優先し、本番環境とは違った内容を利用するのが一般的です。
本番で何十億というデータが入ったテーブルがあっても、開発段階ではただテストが遅くなるため、数十件程度に絞るなど、目的が異なるため、ステージング環境でのテストも重要になります。
またステージング環境は、製品のリリース後にも重要な働きをします。
特にWebシステムの場合は、メンテナンス・改修をおこなうためにもステージング環境が必要です。
定期的な保守・改修が求められるシステムにおいて、システムの安定性を高めるために、ステージング環境が十分に整備されていることが大切です。
ステージング環境の位置づけ
システム開発は、いくつかの段階を踏んで進行されます。
コードを記述する開発環境、機能テストを実施する検証環境、動作確認をおこなうステージング環境、そして製品をリリースする実行環境へと進みます。
この流れから分かるとおり、ステージング環境は製品リリース前の、最終段階のテストという位置づけです。
もしこの段階で問題が発見されたら、検証環境か、場合によっては開発環境まで戻って解決していきます。
ステージング環境で十分なテストをおこなうことで、システム開発のゴールである実行環境へと円滑に進めます。
ステージング環境の目的
テストの最終段階であるステージング環境は、それ以前のテストとは違う視点が求められます。
ここでは、ステージング環境の具体的な目的を解説します。
製品リリースのシミュレーション
ステージング環境の大きな目的は、システムの個々のコードを検証するのではなく、実際に製品がリリースされた状態を想定したシミュレーションです。
ステージング環境は、実行環境とかぎりなく近い動作環境を用意して、想定される用途に合った操作が問題なくおこなえるかを検証します。
検証漏れの確認
開発・検証環境と実行環境には、さまざまな相違点があります。
特に、システムの仕様変更や機能の追加、リリース後の修正などが重なるほど、両者の違いは大きくなってしまいます。
ステージング環境には、こうした環境やデータの違いによって生まれた検証漏れを発見する目的もあります。
本番環境での使用感をチェック
ステージング環境を用意することで、ユーザー視点でのチェックが可能になります。
実行環境に近い場所で実際の操作感を確かめられるため、UIやデザインの改善につながります。
とくにWeb開発においては、この段階までデザイン案がひとつに絞られていないことも少なくないため、ステージング環境での確認が大いに役立ちます。
ステージング環境はリリース後も必要
ステージング環境は、開発中のテスト工程だけでなく、製品リリース後にも必要です。
リリース後に発見された不具合の修正や、新たな機能の追加を実行環境に反映させる前には、ステージング環境でテストすることになります。
特にWebサービスの分野においては、ブラウザやOSのヴァージョン変更の影響を受けやすいため、サービス公開後のステージング環境は非常に大切です。
最近では多様なサイバー攻撃にすばやく対応しなければならない機会も多いため、定期メンテナンス含め、工程を実施するための環境構築の重要性が増しています。
ステージング環境のテスト手法
ステージング環境は製品リリース前の最終段階であるため、それまでのプロセスよりも実際的な観点からテストがおこなわれます。
そこでは主に「サニティテスト」と「ユーザー受け入れテスト」が実施されます。このふたつの手法について解説します。
サニティテスト(健全性テスト)
サニティテストとは、ツールを用いながら、そのシステムの必要最小限の動作を確かめるものです。
これは、基本的な機能が正常に動作するのならば、より複雑な動作も可能であるという見立てによって成り立ちます。
そのためサニティテストをおこなうためには、それ以前のプロセスにおいて統合テストが十分になされている必要があります。
こうしたテスト手法は「スモークテスト」とも呼ばれ、厳密には異なるものですが、網羅的な手法と比べて、テスト工程にかかるコストを削減する目的があります。
ユーザー受け入れテスト(UAT)
ユーザー受け入れテスト、あるいは検収テストは上記の手法とは異なり、システムがユーザーの期待を満たせるかをチェックするものです。
このテストにおいては、技術的な事柄よりも、ビジネス的な視点が重要になります。
UIは適切か、満足のいく視覚的デザインがなされているか、システムの使用感は許容範囲内かといったポイントを確認していきます。
ユーザー受け入れテストはまた、開発したシステムを外部に納品する際に、受注側がそれを受け入れるかどうかを判断する手法とも言えます。
この工程をクリアすることで、システムの開発工程を終了し、納品が完了します。
ステージング環境構築時のポイント
ステージング環境は、製品リリース前の、最後のテスト工程です。
たとえ問題が発見されたとしても、この段階であれば、前のステップに戻って修正できるため、十分なテストが必要となります。
ここでは、ステージング環境の構築からテスト実行までに気をつけたいポイントを解説します。
可能な限り実行環境に近づける
ステージング環境でもっとも重要なのは、実行環境にかぎりなく近い動作環境を用意することです。
ステージング環境でのテストをおこなうためには、ソフトウェアであればハードウェアやOS、Webサービスならディレクトリ構成などを、実行環境と同じものにする必要があります。
これらの要素が異なっていると、いくら検証をしても、実行環境での不具合は発見できません。
とはいえ、状況によっては実行環境と同等のものを用意するのが困難な場合もあるため、検証したいポイントを明確にしたうえで、「可能な限り近づける」ことが大切です。
絶対パス・相対パスを使い分ける
ステージング環境でWebサービスのテストを実施するときは、絶対パスと相対パスの使い分けに注意が必要です。
絶対パスは全体を把握しやすいですが、ローカルでは使えません。
対して相対パスは記述が短くローカルでも使えますが、リンク切れを起こしやすいという問題があります。
そのため、ステージング環境では相対パスを使用してテストをおこない、実行環境へ移す直前で絶対パスに切り替えなければなりません。
絶対パスと相対パス、双方を使用できる状態を用意しておくことが重要です。
検索エンジンのインデックスに注意
Webサービスにおいてステージング環境を構築する際には、セキュリティとSEOの観点から、検索エンジンにインデックスされないように気をつけましょう。
ここでは、ステージング環境がインデックスされることで発生する問題について説明します。
まずセキュリティの面では、第三者がステージング環境にアクセスすることで、情報漏洩のリスクが発生します。
次にSEOの面からは、公開したWebサービスが検索エンジンによって「重複コンテンツ」と認識されてしまいます。
こうしたリスクを避けるために、検索エンジンのインデックスには注意が必要です。
これを回避するために、一般的にはbasic認証という簡易的なパスワード認証機能を導入したり、サイトのコンテンツ自体には、
「no-index」
の設定をして、Googleなどの検索エンジンが検索結果に載せないようにするなどを行います。
構築・実行に大きなコストがかかる
ステージング環境の構築とテストの実施には、大きなコストがかかることに注意しましょう。
ステージング環境は実行環境と同等のものを構築するため、サーバー代やクラウドの利用費がかかります。
そして、システムの規模が大きくなるほど、チェックすべき項目が増加するため、必要な期間・人手も膨らみます。
ステージング環境に多大なコストをかけないためには、テストの効率化やチェック項目の厳選など、事前準備を怠らないことが大切です。
安全なシステム開発はAMELAに
今回は、ステージング環境でのテストについてお話してきました。
テストをしっかりと行うことで、運用開始後のトラブルが避けられるなど、多くのメリットがあります。
しかし、近年はシステム開発に関する予算を縮小している企業も多く、しっかりとしたシステム開発を断念している企業様も見受けられます。
AMELAでは、人件費の安い海外のエンジニアを参画させるオフショア開発を得意としており、日本で開発を行う企業に比べて
「費用は安く、品質は高い」
システム開発が可能となっています。
また、日本において多業種での開発実績があるため、御社の業態に合わせた最善な提案をさせていただくことも可能です。
是非、一度ご検討いただければと思います。