Threat Stackは現在、F5 Distributed Cloud App Infrastructure Protection(AIP)として提供されています。チームでDistributed Cloud AIPの利用を今すぐ開始しましょう。
規模の大小を問わず、あらゆるソフトウェア開発プロジェクトにおいて、綿密に計画され、適切に実施されるテストは有益です。テストにより、開発中のソフトウェアが期待どおりに動作し、お客さまに価値を提供できることを確認できます。さらに重要なのは、現在のサイバー環境を踏まえ、ソフトウェアの完全性を損なうおそれのあるエラーや脆弱性を残したままリリースされることを防ぐうえで、適切なテストが役立つという点です。つまり、優れたテストによって、パフォーマンス面の価値をお客さまに提供すると同時に、その基盤となるセキュリティも確保できます。
Threat Stackには複雑なフルスタック開発環境があり、プラットフォームのすべての機能領域を効果的かつ効率的にテストするには、テストエンジニアリングチームによる綿密な計画と多くの意思決定が必要です。適切なテストツールを選択すれば、自動化を導入できるだけでなく、テストの迅速化、再現性と一貫性の確保、結果の精度向上も可能になるため、使用するツールの選定も重要な意思決定の1つです。
本記事では、当社が使用している自動テストツールのうち10種類を取り上げ、皆さまのテスト業務に役立つ知見をご紹介します。
ただし、ツールを見る前に、テストエンジニアが当社のプラットフォームとそのインフラストラクチャをテストする際に考慮する主な領域を確認し、背景を整理しておきましょう。
- Threat Stackエージェントは、お客さまが運用するAmazon Web Services仮想マシン群に組み込まれ、各仮想マシンを追跡および監視します。対象には、Ubuntu、Amazon Linux、Red Hat Enterprise Linux、CentOS、CoreOSなどのLinuxディストリビューションと、Windows Server 2012 R2、2016、2019などのWindows環境が含まれます。
- お客さまが使用しているコンテナやKubernetesについて、セキュリティインシデントの兆候を監視する必要がある場合があります。
- 各エージェントはThreat Stack Cloud Security Platform®にデータを安全に送信します。送信されたデータは、多数のマイクロサービスのいずれかを通じて分析および処理されます。
- イベントデータは、ホスト、ファイル、CloudTrail、脅威インテリジェンスおよびカスタムルールによって処理され、重大度別にアラートが生成されます。これにより、お客さまのDevOpsチームとセキュリティチームは、システム内で発生している事象を分析できます。
- すべてのイベント、ルール、アラートのデータは、ブラウザベースのアプリケーションだけでなく、Threat Stack APIsからもアクセスできる必要があります。
- お客さまは、このデータを自身の外部ストレージにエクスポートし、独自に分析できます。
- Threat Stack Cloud Security PlatformのコンポーネントであるThreat Stack Application Security Monitoringは、マイクロエージェントとして動作し、アプリケーションのペイロードを監視してThreat Stackプラットフォームに情報を送信し、セキュアコーディング上の誤りを検出した場合は開発者に警告します。また、クロスサイトスクリプティング攻撃などの悪意ある動作がないか、アプリケーションのペイロードを監視します。
ご覧のとおり、F5のソフトウェアは幅広い領域をカバーしており、高速かつセキュアで正確に、そして大規模環境でも機能する必要があります。これを踏まえ、F5が使用しているテストツールをいくつかご紹介します。
Threat Stackで使用しているテストツール
各機能チームに所属するテスト担当ソフトウェアエンジニアは、継続的に開発される新機能をテストするだけでなく、製品のその他の部分が引き続き期待どおりに動作することを確認するため、自動化を追加する役割も担っています。
当社がこうした人材を重視していることの表れとして、各テストエンジニアには、適切と判断した自動化の手法、ツール、言語を提案する責任も与えられています。以下に、自動テストの取り組みで使用しているツールの一部を示します。実際には、さらに幅広いツールセットを使用しています。ここでは、その中からいくつかを取り上げるとともに、担当するプロジェクトに最適なツールを選択することの重要性をお伝えします。
免責事項: 本記事で紹介するリソースは、評価に基づいて順位付けしたものではありません。また、F5のコメントはいかなる推奨も意味するものではありません。テストツールに関する知識を深めるうえで役立つと思われる情報を提供することのみを目的としています。
1. Capybara
Webサイト:https://teamcapybara.github.io/capybara/
種類:無料、オープンソース
サポート:Ruby-Capybara Google Group
最新バージョン:3.29.0(2019年9月2日)
Capybaraは、エンドツーエンドのユーザーインターフェーステストを実行する際に、ブラウザベースのUI自動化テストを操作するため、Seleniumと併用しているRuby gemです。Capybaraには、ユーザーによる次の操作をエミュレートする組み込みメソッドがあります。visit:ページにアクセスする、fill_in:テキストボックスに入力する、click_button:ボタンをクリックする、select_dropdown:ドロップダウンから選択する。
ソフトウェアテスターを悩ませるのが、ページ上のWeb要素の読み込みに異常なほど時間がかかり、原因不明のテスト失敗が発生することです。Capybaraが提供する各メソッドには、待機処理が自動的に組み込まれています。
Capybaraは、お客さまとほぼ同じように製品を操作し、アプリケーションへのログイン、サイト内の移動、テストシステムによってトリガーされたイベントの表示、アラートをトリガーするイベントを定める新しいルールの作成、ダッシュボードに表示されたアラート情報の詳細確認、各種設定の更新を行うことで、ユーザーエクスペリエンス上の問題をテストします。
2. ThoughtWorksのGauge
Webサイト:http://gauge.org
種類:無料、オープンソース
サポート:GetGauge Google Group、Gitterチャット
最新バージョン:1.0.7(2019 年 8 月 29 日)
GaugeはThoughtWorks Studio Indiaが開発したテスト自動化フレームワークで、UIおよびAPIの受け入れテストのセットアップに使用しています。GaugeはRubyと組み合わせて使用していますが、Java、C#、JavaScript、Pythonにも対応しています。GaugeはBDDフレームワークのCucumberとよく似ていますが、若干の違いがあります。
- テスト計画は、Cucumberのフィーチャーファイルではなく、Markdownで記述された仕様ファイルに格納されるため、テストの作成と保守が容易になります。
- CucumberのGiven / Then / When形式ではなく、テストステップは箇条書きで記載されます。
ビヘイビア駆動開発(BDD)ツールであるCucumberは、テストが複雑になるほど記述が冗長になりがちです。Gaugeでは、各ステップが明確かつ簡潔で読みやすい箇条書きで示されます。また、Gaugeには複数の形式(XML、JSON、HTML)に対応したレポート機能が組み込まれています。コマンドラインだけでなく、Visual Studio CodeなどのIDE内でも使用できます。さらに、インストール、仕様の記述、チュートリアルの例など、幅広いトピックを網羅した充実したドキュメントが用意されています。
3. Gatlingによる負荷テスト
Webサイト:https://gatling.io/
タイプ:Enterprise版とオープンソース版の両方
サポート:Gatling Google Group
最新バージョン:3.2.1(2019 年 8 月 27 日)
Threat Stackでは、Gatlingを使用して継続的な負荷テストを実施しています。Scalaで記述されており、スタンドアロンツールとして動作するほか、Mavenを使用して製品の依存関係として組み込むこともできます。
その速度と処理能力を実証するため、テスト環境で10分以内に300万件のリクエストを生成したところ、すべてのリクエストが800ミリ秒未満で結果を返したことを確認できました。
BlazeMeterはブログ記事「負荷テストにGatlingを使用すべき8つの理由」で、次のように述べています。「Gatlingでは、追加のプラグインを導入しなくても、テスト実行後に確認できる詳細なメトリクスダッシュボードが生成されます。レポートはHTMLファイルとして保存されるため、後で分析したりメトリクスを比較したりする際に簡単に利用できます。また、レポートはインタラクティブで、全体像を把握できるだけでなく、特定のリクエストに焦点を当てた、より詳細な分析も可能です。」
4. Chef.ioのTest Kitchen
Webサイト:https://kitchen.ci/
種類:オープンソース
サポート:Chef.ioコミュニティ
最新バージョン:2.2.0(2019 年 4 月 26 日)
Test Kitchenは、テスト作業で使用するさまざまなAmazon Web Services環境の起動と破棄を自動化するために使用しているChef.io製品です。Test Kitchenは、構成済みのコードを1つ以上のプラットフォーム上で分離して実行できるテストハーネスツールです。Kitchenは、Chef InSpecをはじめ、多くのテストフレームワークを標準でサポートしています。Kitchenは、すべてのChefが管理するコミュニティクックブックで使用されており、クックブックの統合テストに推奨されるツールです。
Learn.Chef.ioには、よく練られた一連のトレーニングモジュールとデモが用意されており、その中には優れたモジュール「Test Kitchen入門」も含まれています。
5. ScalaTest
Webサイト:http://www.scalatest.org
種類:無料、オープンソース
最新バージョン:3.0.8(2019 年 6 月 10 日)
Threat Stackのテストエンジニアは、ScalaTestを使用してScalaコードのサービステストを作成するため、ソフトウェア開発者との連携を開始しました。
統合テストでは、ScalaTestのスタイルトレイトであるFeatureSpecを使用し、テスト駆動開発(TDD)スタイルの単体テストをGiven / When / Then形式で記述しています。ScalaTestドキュメントによると、FeatureSpecは「各テストが機能の1つのシナリオを表すテストスイートです。FeatureSpecは、単体テストよりも『高レベル』なテスト(統合テスト、機能テスト、受け入れテストなど)を記述するためのものです」。
ScalaTestのサイトでは、詳細なクイックスタート、インストール手順、ユーザーガイドなど、豊富な役立つドキュメントが提供されています。
6. Chef InSpec
Webサイト:https://kitchen.ci/docs/verifiers/inspec/
種類:無料、オープンソース
サポート:Chef.ioコミュニティ
最新バージョン:(2019年8月11日)
Threat Stackでは、Chef InSpecを使用してRubyベースのテストを作成し、テスト環境をオンデマンドで構築した後、すべてが想定どおりに動作していることを確認しています。InSpecのテストは、人が読んで理解できるように設計されています。RSpecなどのテストフレームワークに慣れていれば、InSpecのコードにもなじみやすいでしょう。InSpecは不一致を検出し、その差異をレポートとして記録します。その後、システムを目的の状態にするために必要な変更をChefで加えることができます。
まずは、Learn Chef Rallyにある便利なセクションをご覧ください。DockerおよびDocker Compose環境のセットアップ、サンプル環境のダウンロード、InSpecを使用した環境の確認について、手順に沿って学べます。
7. Mocha
Webサイト:https://mochajs.org/
種類:無料、オープンソース
サポート:Mocha Gitter Group、Mocha Google Group
最新バージョン:3.2.1(2019年8月27日)
Mochaは、Node.jsおよびブラウザー上で動作し、非同期テストを実行できるJavaScriptテストフレームワークです。Mochaのテストは順次実行されるため、より柔軟かつ正確なレポートを作成できるほか、捕捉されなかった例外を該当するテストケースに関連付けることができます。
Node.js環境でMochaを使用する場合、組み込みのassertモジュールをアサーションライブラリとして使用できます。Threat Stackでは、MochaとChaiを組み合わせて、Threat Stack Application Security Monitoring機能のテストフレームワークを構築しています。
Mochaサイトでは、機能の詳細な概要、インストール、使用開始の手順から、特定の機能やタスクに関する情報まで、幅広いトピックを扱う各種ドキュメントを提供しています。
8. Cypress.io
Webサイト:https://www.cypress.io/
タイプ:
- 無料のオープンソーステストランナー
- 商用Dashboardサービス(3ユーザーまで無料)
サポート: Gitterチャット、有料ユーザー向けメールサポート
最新バージョン:3.4.1(2019 年 7 月 29 日)
Cypress.ioは、Chromeでのみ成果物をテストする必要があるJavaScriptフロントエンド開発者向けに構築されています。Cypressはアプリケーションと同じ実行ループ内で実行されるため、Threat Stackアプリケーションがアクセスできるすべての関数、ウィンドウ、Web要素、タイマー、サービスに、テストコードからもアクセスできます。また、ネットワークトラフィックをリアルタイムで読み取って変更できるため、バックエンドサーバーにアクセスできない場合の動作を検証するなど、有用なネガティブテストケースを追加できます。
Cypress.ioでは、概要、導入方法、テストの作成や整理に関する情報を含む基本概念を分かりやすくまとめたドキュメントを提供しています。Cypressで何ができるか知りたい方は、TestAutomationUが公開したばかりの新しいコース「Cypress入門」をご覧ください。
9. Jest
Webサイト:https://jestjs.io
種類:無料、オープンソース
サポート: React Discord Chat、 JestJs Google Group
最新バージョン:24.9(2019年8月)
当社のフルスタックソフトウェア開発者は、Threat Stack Cloud Security PlatformのReactJSベースのフロントエンドのテストをMocha / ChaiからJestに切り替えました。Jestには、当社が使用するReactJSコンポーネントのテストを支援する機能が標準でより充実しています。このJavaScriptテストフレームワークにより、単体テストと統合テストをより適切に作成できます。ReactJsとJestの両ツールセットは、Facebookが提供しています。
この記事で紹介している他の多くのツールと同様に、JestのWebサイトでは、導入方法や設定、幅広いユースケースを豊富な例とともに解説するドキュメントを提供しています。
10. Apache JMeter
Webサイト:https://jmeter.apache.org/
種類:無料、オープンソース
サポート:JMeter Google Group
最新バージョン:5.1.1(2019年3月13日)
Apache JMeterは、機能の動作を負荷テストし、パフォーマンスを測定するために設計されたオープンソースソフトウェアです。同サイトによると、JMeterは「静的リソースと動的リソース、および動的Webアプリケーションのパフォーマンスをテストするために使用できます。サーバー、サーバー群、ネットワーク、またはオブジェクトに高い負荷をかける状況をシミュレートし、その耐久性をテストしたり、さまざまな負荷条件下で全体的なパフォーマンスを分析したりできます。」
JMeterを使用して、アプリケーションとサービスのパフォーマンスを分析・測定しています。これにより、複数ユーザーからの同時アクセスによる高負荷をアプリケーションにかけてテストし、スケーラビリティをどのように向上できるかを検証できます。
JMeterでは、Getting Started、User Manual、Best Practicesなどの有用なドキュメントに加え、手順を追って学べる各種チュートリアルも提供されています。
テストを楽しみましょう……
Threat Stackのテストエンジニアがいかに優秀でも、強力なツールに支えられた体系的なプロセスがなければ、十分な成果を上げることはできません。プラットフォームの進化に合わせて、チームは専門性を磨き続けています。スキルと知識を継続的に高め、新しいツールを導入して活用するとともに、新たな手法を開発することで、Threat StackのSDLCに引き続き価値をもたらせるよう取り組んでいます。本記事を通じて、テストチームがさまざまな自動テストツールを活用し、Cloud Security Platformの多岐にわたる機能に対応している方法をご理解いただければ幸いです。
Threat Stackは現在、F5 Distributed Cloud App Infrastructure Protection(AIP)となりました。チームでDistributed Cloud AIPの利用を今すぐ開始しましょう。
著者について
関連するブログ記事

F5 Application Study Tool:OpenTelemetryによるF5 BIG-IP環境の監視
F5の新しいオープンソースツールは、BIG-IP環境を詳細に可視化し、データを追跡するとともに、強力でカスタマイズ可能なインサイトを得るための基盤を提供します。
F5 BIG-IPでAI防御を実現
F5 BIG-IP Advanced WAF、BIG-IP APM、BIG-IP SSL Orchestratorが、生成AIアプリ向けに包括的なセキュリティソリューションを提供する仕組みをご覧ください。
F5 Advanced WAFによるGraphQL APIの保護
ここ数年、多くの組織がデジタルトランスフォーメーションを進めており、COVID-19のパンデミックによってその動きは加速しています。
アプリケーションサービスの現状 通信業界版:リーダーとしての台頭
通信ネットワークが進化し、さまざまな業界の幅広いユースケースに対応するなか、通信業界の回答者がテクノロジーリーダーとしての存在感を高めていることがわかります。
デジタルトランスフォーメーションは、単なるペーパーレス化ではない
デジタルトランスフォーメーションは、単なるペーパーレス化ではありません。真のモダナイゼーションにアプリケーションアーキテクチャとセキュリティの再構築が必要な理由を、F5ブログでご覧ください。
やめましょう。もう本当にやめましょう。HTTPSはHTTPより高速ではありません。
もうやめましょう。HTTPSはHTTPより高速ではありません。プロトコルのパフォーマンスに関する微妙な違いと、暗号化トラフィックを適切に最適化する方法については、F5ブログをご覧ください。