新型コロナウイルス感染症拡大により、経済活動がデジタルに大きくシフトしています。インターネット利用が増えたことにより、アクセスが集中してサービスが停止してしまったり、サイバー攻撃で被害を受けたりといったニュースも増えました。こうした状況の中で利用者に安全に快適に利用してもらうために非機能検証の重要性が高まっています。非機能検証はどのような観点で実施すればよいのかをご紹介します。
世界に大きな影響を与えたコロナ禍により、情報システムは品質強化を迫られています。外出を控える中で巣ごもり需要が増加し、インターネットの利用が増えました。企業でもテレワークが一気に普及したことにより、社外でも業務ができるようシステムをオンライン化する取り組みが増えています。そうした背景から、利用者が急増しアクセスが集中してサービスが停止するニュースを頻繁に耳にするようになりました。ある通信事業者では、IoTの位置情報を更新する際に送信されるデータが急増したためにアクセスが集中し、輻輳が発生して一般ユーザーの回線まで影響が及びました。
増えたのはシステム障害だけではありません。コロナ禍という大混乱につけこんだサイバー攻撃は企業に大きな影響を与えました。警視庁の発表によると、2020年にコロナ禍に便乗して仕掛けられた攻撃は、887件に及びます。ある大手ゲーム会社では、犯罪グループが社内ネットワークに侵入し、ランサムウェアに感染させて機器内のデータを暗号化しました。警視庁では、企業の信用にかかわるため公開に積極的ではない企業も多く、把握しているケースはごく一部だとみています。
このようにアプリケーションの機能とは異なる領域で発生する問題が多発しており、パフォーマンスやセキュリティなどの非機能テストの重要性が高まっています。
非機能検証は、ソフトウェアが提供する機能の性能や制限が要求に合っているかを検証します。例えば注目度の高い新商品の発売時は、アクセスが短時間に集中します。新商品の発売直後に1万人のサイト訪問者が訪れると想定される場合、サーバーやデータベースが負荷に耐えられるかを検証しなければなりません。このように非機能要求は、全体的な設計やアーキテクチャーに大きな影響を与えます。
こうした問題が運用開始後に発生したらどうなるでしょうか。修正するには大きな手戻りが必要となり、復旧に時間がかかってしまいます。それだけでなく、影響範囲が広いことからサービス全体が使用できなくなり、ユーザーへ十分なサービス提供ができなくなります。そのような状況になってしまうと、ユーザーからの信頼が低下しブランドに傷がつくことにもなりかねません。
こうしたことを防止するためには、非機能検証が非常に重要になります。非機能検証にはさまざまな種類があります。その中でもクローズアップされることの多い「パフォーマンス」「セキュリティ」について、次章から検証の観点を解説します。
一般的なパフォーマンス検証では、次のような観点が必要になります。
システムは一般的にWebサーバー、アプリケーションサーバー、データベースサーバーで構成されています。こうした各要素それぞれで性能目標を決め、達成できているかの確認を行います。
スマート端末向けアプリケーションの性能検証を行う場合、ツールでパフォーマンス検証を行うことが困難です。そのためAPI単位の性能検証と端末の手動操作により検証を組み合わせて、検証を行います。
対象サーバーのバッチ処理中に人が操作するシナリオを実行し、利用者端末側のレスポンス状況やサーバーの負荷をモニタリングします。
長時間人が操作するシナリオを実行し、利用者端末側のレスポンス状況やサーバーの負荷をモニタリングします。
対象サーバーについて、CPU、IO、MEMそれぞれのリソースについて負荷情報等を採取し、許容範囲内であるかの検証を行います。また利用者端末についても想定する負荷をかけた際の情報を採取し、許容範囲内であるかの検証を行います。
次にセキュリティ検証に必要な観点をご紹介します。ネットワークを含めたシステム構成でセキュリティシステムが稼働しているかという検証と、アプリケーションに重大な脆弱性が残っているかの検証が必要です。ここではWebアプリケーションの脆弱性検証について代表的な観点をご紹介します。OSやソフトウェアの脆弱性は開発元が提供するパッチを提供すればよいのですが、アプリケーションの脆弱性は個別に対応する必要があります。
ブラウザー上での検索・登録・送信のタイミングで入力フォームに不正な値が追加され、誤作動や公開していない情報の流出がないか等を検証します。
ブラウザーで任意のプログラムを実行させてパスワードを奪取し、不正にログインできないか等を検証します。
セッションIDの類推や盗用などにより他人になりすまして商品の購入やユーザー情報へのアクセスが可能でないか等を検証します。
Webサーバーの設定不備がないかを検証します。
Webブラウザー側で実行するプログラムを書き換えることにより、不正な値がサーバーに送信された結果、誤作動や公開していない情報の流出がないか等を確認します。
パスワードが類推しやすいエラーメッセージになっている、アプリケーションエラーの処理をサーバー構成に依存している、一時的に保存される機密情報が保護されていない、等がないかを検証します。
非機能検証は、範囲を適切に絞り込まないと検証項目が膨大になってしまいます。範囲をどのように絞ればよいのか、開発エンジニアでも知見を持っている人は多くはありません。そこでヴェスでは、システム性能やWebセキュリティ検証といった非機能検証に特化したサービスを展開しています。
「システム性能検証サービス」では、システム要件に応じて各サーバーのボトルネックを特定し、システムの問題点を明確にすることが可能です。また業務量を予想した性能評価により、潜在的な問題を発見することもできます。さらにアプリケーションの観点にとどまらず、サーバー基盤の視点で「データベース・OS・メモリ」といったインフラ層の原因特定と対策案についてレポートするのも大きな特徴です。
「Webセキュリティ検証サービス」では、診断ツールによる自動診断と、脆弱性診断に精通したセキュリティ・エンジニアによる手動診断を組み合わせたハイブリッド診断を提供しています。ツールによる診断のみでは検出困難な脆弱性までカバーできるのが特徴です。脆弱性に対する対応策だけでなく、経営層向けに脆弱性によるリスク分析をわかりやすくまとめて報告書として提出します。
非機能検証に不安を持つ方、専門家の知見を活用してみませんか。お気軽にご相談ください。