システム開発や運用では、さまざまな局面でテストが実施されます。システムエンジニアなどIT関係者であれば何らかの形でテストに関与することになるでしょう。
そこで今回はいくつかのテストについて取り上げてみます。
Penetration test – 侵入テスト
個人情報などの機密情報はますます厳格な管理が求められており、セキュリティ対策が重要になってきています。
暗号化通信、ファイヤーウォール設定など、具体的な対策は色々ありますが、セキュリティテストを実施することでその安全性を確保する企業が多いと思います。
そこで代表的なセキュリティテストの一つが「penetration test」です。外部と接続するシステムに対して実際に外部から侵入を試みて、セキュリティ上の欠陥がないかをチェックするテストです。
私の会社では、基本的に外部に公開している全システムで、年一回このテストを受けることが義務付けられており、外部ベンダーに依頼して実施しています。
「penetration test」は、略して「pen test」と呼ぶことも多いですね。
Regression test – 回帰テスト
プログラム修正を行った場合に、本来想定する箇所以外に影響が出ていないか確認するためのテストです。
つまり、想定外の影響が出ていないかをチェックするテストとなります。
全てを目視や操作のテスト対象とすることは工数がかかりすぎて難しいことが多いので、
- 重要なコンテンツ(ページ)のみに絞る
- テストツールを使う
といった方法をとることもあります。
当社では、ウェブサイト用に本番と環境とテスト環境の各ページの見た目を比較して、差異を自動検知するテストツールを導入しています。
あくまでも静的部分だけですが、リリース前にこのツールによるテストを実施して結果を確認することで、想定外の変更(画面の崩れなど)が発生していないか、バージョン違いの資源が反映していないかをチェックすることができるのです。
User acceptance test – ユーザー受け入れテスト
略してUATで、ユーザー受入テストのことです。
Vモデルでは要件定義と対になるもので、要件が満たされているかを確認するためのテストとなります。
ソフトウェア開発に慣れていない企業では、このUATのフェイズが定義されていないことさえありますが、本来はあり得ません。
全要件に対してテストを行うのが理想ですが、どこまでテストを行うかはリソースやスケジュールに左右されることも多く、優先順位をつけて取り組むことも多くあります。
ユーザーが要望したものがその通り対応されているか、検収の位置づけとなります。
当社では、UAT前に(プロジェクトによっては要件定義が完了するとすぐに)、ユーザーによるテストケースの作成が半ば義務付けられています。
要件と紐づけてケース作成をすることで、テスト漏れが発生しにくくなりますし、場当たり的ではない、効率的なテスト実施が可能となります。あと、ユーザー側のUATに向けた意識が高まるという効果も期待できます。
このUATテストケースは作成後に開発側へ共有し、必要なテストデータを準備してもらう流れが当社では一般的です。
Performance test – 性能テスト
期待する性能が出るかを確認するためのテストです。
処理能力、処理スピード、リソース利用状況等が想定するレベルに達しているかをチェックすることになります。
その前提として、ユーザー数やアクセス数を適切に見積もり、合格の基準を決めておくことが必要です。
また、テストにあたっては実際の状況(またはそれに近い状況)を作り出す必要もあります。
performance test用のテストツールを利用したり、外部業者にテストを依頼する場合も多いでしょう。
環境としては、疑似本番環境ともいえるstaging environment(ステージング環境)を使うのが適切ですが、無い場合にはtest environment(テスト環境)を使うことも多いと思います。
新規に開発したシステムの場合には、本番環境がまだ実際のサービスに利用されていないために、そのまま本番環境でperformance testを実施するケースもあります。
*環境については以下の記事もぜひチェックしてみてください。
システム(ソフトウェア)開発では、さまざまな目的で環境を使い分ける必要があります。本番環境は当然として、それ以外にどのような環境が必要になるでしょうか。テスト環境、開発環境など、今回はITでよく話題になる、環境についての英語[…]
その他、こんなテストも – monkey test
つい最近、ネイティブの同僚が「monkey test」という表現を使っていました。
「I just did monkey testing.」
と言ったのを聞いて、気になって調べたところ、体系立てて準備はせず、その場の思いつきで行うテストのことを「monkey test」と呼んでいたのでした。
「まさに何も知らないサルが行うテスト」という訳ですね。
開発者が思いもつかない操作をしたりすることで、意外なバグを見つけることにもつながったりします。
取り合えず、どんな状況がざっと確認するためにテストしてみる時などに使えます。