ブログ

Threat Stack が使用する 10 個の自動テスト ツールとその理由

F5 サムネイル
F5
2020年8月10日更新

Threat Stack は現在、 F5 Distributed Cloud App Infrastructure Protection (AIP) です。 今すぐチームで Distributed Cloud AIP を使い始めましょう。

規模の大小を問わず、すべてのソフトウェア開発プロジェクトは、適切に計画され適切に実行されたテストから恩恵を受けることができます。 これは、開発中のソフトウェアが期待どおりに動作し、顧客に価値を提供することを保証する方法です。 さらに重要なのは、現在のサイバー環境の性質を考えると、適切に実行されたテストは、ソフトウェアの整合性を損なう可能性のあるエラーや脆弱性がソフトウェアに含まれないようにするための手段であるということです。 つまり、適切なテストを行うことで、パフォーマンスの価値を顧客に伝えると同時に、基盤となるセキュリティも提供できるようになります。

Threat Stack には、プラットフォームのすべての機能領域が効果的かつ効率的にテストされていることを確認するために、テスト エンジニアリング チーム内での多大な計画と意思決定を必要とする複雑なフルスタック開発環境があります。 これには、使用するテスト ツールに関する決定も含まれます。適切なツールを使用することで、自動化だけでなく、速度、再現性、一貫性、結果の正確性も導入できるためです。

この記事では、私たちが使用している 10 個の自動テスト ツールについて説明します。その目的は、皆さんのテスト活動に役立つような洞察を共有することです。

ただし、ツールを見る前に、テスト エンジニアがプラットフォームとそのインフラストラクチャをテストする際に考慮する主要な領域を調べて、コンテキストを作成しましょう。 

  • Threat Stack エージェントは、Linux ディストリビューション (Ubuntu、Amazon Linux、Red Hat Enterprise Linux、CentOS、CoreOS など) や Windows ディストリビューション (Windows Server 2012 R2、2016、2019 など) に関係なく、顧客の Amazon Web Services 仮想マシン群内に組み込まれ、仮想マシンを追跡および監視します。 
  • お客様は、セキュリティ インシデントの兆候を監視する必要があるコンテナまたは Kubernetes を使用している可能性があります。 
  • 各エージェントはデータを安全に Threat Stack Cloud Security Platform® に送信し、そのデータは当社の多数のマイクロサービスのうちの 1 つを通じて分析および処理されます。 
  • イベント データは、ホスト、ファイル、CloudTrail、脅威インテリジェンス、カスタム ルールによって処理され、重大度別に分類されたアラートをスローします。これにより、お客様の DevOps チームとセキュリティ チームは、システム内で何が起こっているかを分析できるようになります。 
  • すべてのイベント、ルール、アラート データは、ブラウザベースのapplicationだけでなく、 Threat Stack APIからもアクセスできる必要があります。
  • お客様は、このデータを取得して独自の外部ストレージにエクスポートし、独自の分析を実行することができます。 
  • Threat Stack Cloud Security Platform のコンポーネントである Threat Stack Application Security Monitoring は、マイクロエージェントとして実行され、applicationのペイロードを監視し、Threat Stack プラットフォームに情報を送信し、セキュア コーディングの間違いが見つかった場合に開発者に警告します。 また、クロスサイト スクリプティング攻撃などの悪意のある動作がないかapplicationペイロードを監視します。 

ご覧のとおり、当社のソフトウェアは広範囲をカバーしており、それを高速、安全、正確、かつ大規模に実行する必要があります。 それを念頭に置いて、私たちが使用しているテストツールのいくつかを見てみましょう。

Threat Stack で使用するテスト ツール

テスト担当ソフトウェア エンジニアは、独自の機能チームに組み込まれ、継続的に開発されている新しい機能のテストだけでなく、製品の残りの部分が期待どおりに動作することを確認するための自動化の追加も担当します。 

当社がこれらの人材を重視していることの証として、各テスト エンジニアには、適切と思われる自動化の方法、ツール、言語を推奨する責任も与えられています。 以下は、自動テストの取り組みを支援するために使用するツールの一部です。 全体的に、より広範なツールセットを使用していることに注意してください。ここでの目標は、ツールの選択について説明し、作業している特定のプロジェクトに最適なツールを選択するように促すことです。 

免責事項: この投稿で言及されているリソースは、認識された価値に基づいてランク付けされていません。 また、当社のコメントはいかなる種類の支持を意味するものでもありません。 私たちの目的は、テスト ツールに関する知識を増やすのに役立つと思われる情報を提供することだけです。

1. カピバラ

ウェブサイト: https://teamcapybara.github.io/capybara/

タイプ: 無料、オープンソース

サポート: Ruby-Capybara Google グループ

最新バージョン: 3.29.0 (2019年9月2日)

Capybara は、エンドツーエンドのユーザー インターフェイス テストを実行するときに、ブラウザーベースの UI 自動化テストと対話するために Selenium で使用する Ruby gem です。 Capybara には、ユーザーがページにアクセスしたり、テキストボックスに入力したりボタンをクリックしたりドロップダウンを選択したりする方法などをエミュレートする組み込みメソッドが含まれています。 

ソフトウェア テスターにとって悩みの種となるのは、Web 要素がページに読み込まれるまでに途方もない時間がかかり、説明のつかないテストの失敗が発生することです。 Capybara が提供する各メソッドには、待機が自動的に組み込まれます。 

Capybara は、ユーザー エクスペリエンスの問題をテストし、顧客と同じように製品を操作し、applicationにログインし、サイト内を移動し、テスト システムによってトリガーされたイベントを表示し、どのイベントがアラートをトリガーするかを制御する新しいルールを作成し、ダッシュボードにあるアラート情報をドリルダウンし、さまざまな設定を更新します。

2. ThoughtWorks のゲージ

ウェブサイト: http://gauge.org

タイプ: 無料、オープンソース

サポート: GetGauge Google グループ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. ガトリング荷重試験

ウェブサイト: https://gatling.io/

タイプ: エンタープライズ版とオープンソース版の両方

サポート: ガトリング Google グループ

最新バージョン: 3.2.1 (2019年8月27日)

Gatling は、Threat Stack で継続的な負荷テストを提供します。 Scala で記述されており、スタンドアロン ツールとして機能するほか、 Mavenを使用して製品への依存関係として使用することもできます。 

そのスピードとパワーのデモンストレーションとして、10 分以内にテスト環境で 300 万件のリクエストを生成し、すべてのリクエストが 800 ミリ秒以内に結果を返すことを確認できました。

BlazeMeter がブログ「負荷テストに Gatling を使用すべき 8 つの理由」で述べているように、「Gatling は、追加のプラグインを追加しなくてもテスト実行後に確認できる詳細なメトリック ダッシュボードを作成しました。 レポートは HTML ファイルとして保存され、将来の分析やメトリックの比較のために簡単に保存できます。 さらに、レポートはインタラクティブなので、全体像に加えて、より詳細な分析を実行し、特定の要求に集中することができます。」

4. Chef.io によるテストキッチン 

ウェブサイト: https://kitchen.ci/

タイプ: オープンソース

サポート: Chef.io コミュニティ

最新バージョン: 2.2.0 (2019年4月26日)

Test Kitchen は、テスト作業中に使用するさまざまな Amazon Web Services 環境の起動と終了を自動化するために使用するChef.io製品です。 Test Kitchen は、構成されたコードを 1 つ以上のプラットフォーム上で個別に実行するために使用できるテスト ハーネス ツールです。 Chef InSpecを含む多くのテスト フレームワークが Kitchen ですぐにサポートされます。 Kitchen は、Chef が管理するすべてのコミュニティ クックブックで使用されており、クックブックに最適な統合テスト ツールです。

Learn.Chef.io には、Test Kitchen を使い始めるという優れたモジュールを含む、よく考えられた一連のトレーニング モジュールとデモがあります。 

5. スカラテスト

ウェブサイト: http://www.scalatest.org

タイプ: 無料、オープンソース

サポート: ScalaTest Google グループ

最新バージョン: 3.0.8 (2019年6月10日)

Threat Stack のテスト エンジニアは、ScalaTest を使用して Scala コードのサービス テストを作成するために、ソフトウェア開発者と提携し始めました。 

私たちの統合テストでは、ScalaTest スタイルの特性である FeatureSpec を使用して、Given / When / Then 形式でテスト駆動開発 (TDD) スタイルの単体テストを記述します。 ScalaTest Docに記載されているように、FeatureSpec は「各テストが機能の 1 つのシナリオを表すテスト スイート」です。 FeatureSpec は、統合テスト、機能テスト、受け入れテストなど、単体テストよりも「高レベル」のテストを作成することを目的としています。

ScalaTest は、詳細なクイック スタート、インストール手順、ユーザー ガイドなど、役立つドキュメントをWeb サイトで多数提供しています。

6. シェフインスペック 

ウェブサイト: 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. モカ 

ウェブサイト: https://mochajs.org/

タイプ: 無料、オープンソース

サポート: Mocha Gitter グループMocha Google グループ

最新バージョン: 3.2.1 (2019年8月27日)

Mocha は、Node.js とブラウザで実行され、非同期テストを実行できる JavaScript テスト フレームワークです。 Mocha テストはシリアルで実行されるため、より柔軟で正確なレポートが可能になり、キャッチされていない例外を正しいテスト ケースにマッピングできるようになります。

Node.js 環境で Mocha を使用すると、組み込みの assert モジュールをアサーション ライブラリとして使用できます。 Threat Stack では、Mocha とChaiを組み合わせて、 Threat Stackapplicationセキュリティ監視機能のテスト フレームワークを作成しています。 

Mocha サイトでは、詳細な機能の概要、インストール、開始方法から、特定の機能やタスクに関する情報まで、あらゆるテーマに関するさまざまなドキュメントを利用できます。 

8. サイプレス

ウェブサイト: https://www.cypress.io/

タイプ: 

  • 商用ダッシュボードサービス、最大3ユーザーまで無料

サポート: Gitterチャット; 有料ユーザー向けのメールサポート

最新バージョン: 3.4.1 (2019年7月29日)

Cypress.io は、Chrome で作業をテストするだけでよい JavaScript フロントエンド開発者向けに構築されています。 Cypress はapplicationと同じ実行ループで実行されるため、Threat Stackapplicationがアクセスできるすべての関数、ウィンドウ、Web 要素、タイマー、サービスに、テスト コードもアクセスできます。 また、ネットワーク トラフィックをオンザフライで読み取って変更することもできるため、バックエンド サーバーにアクセスできない場合に何が起こるかをテストするなど、興味深いネガティブ テスト ケースを追加できます。 

Cypress.io は、しっかりとした概要、開始情報、テストの作成と整理に関する情報を含むコアコンセプトを提供する、整理されたドキュメントを提供します。 Cypress で何ができるのか知りたいですか? TestAutomationU は、新しいコース「Cypress 入門」をリリースしました。

9. 冗談

ウェブサイト: https://jestjs.io

タイプ: 無料、オープンソース

サポート: React Discord チャットJestJs Google グループ

最新バージョン: 24.9 (2019年8月)

当社のフルスタック ソフトウェア開発者は、Threat Stack Cloud Security Platform ReactJS ベースのフロントエンドのテストを Mocha / Chai から Jest に切り替えました。Jest には、使用する ReactJS コンポーネントのテストに対するより優れた組み込みサポートが備わっています。 この JavaScript テスト フレームワークを使用すると、より優れた単体テストと統合テストを作成できます。 ReactJs と Jest の両方のツールセットは Facebook によって提供されています。 

この記事で紹介した他のほとんどのツールと同様に、Jest の Web サイトでは、開始方法、構成、および包括的なユースケース シナリオを網羅した例が豊富なドキュメントが提供されています。

10. Apache JMeter 

ウェブサイト: https://jmeter.apache.org/

タイプ: 無料、オープンソース

サポート: JMeter Google グループ

最新バージョン: 5.1.1 (2019年3月13日)

Apache JMeter は、機能動作の負荷テストとパフォーマンスの測定を目的として設計されたオープン ソース ソフトウェアです。 同社のサイトによると、JMeter は「静的リソースと動的リソース、Web 動的applicationsの両方のパフォーマンスをテストするために使用できます。」 これを使用すると、サーバー、サーバー グループ、ネットワーク、またはオブジェクトに対する高負荷をシミュレートして、その強度をテストしたり、さまざまな負荷タイプでの全体的なパフォーマンスを分析したりすることができます。」

当社では、JMeter を使用してapplicationとサービスのパフォーマンスを分析および測定しています。 これにより、複数の同時ユーザー トラフィックによる高負荷に対してapplicationをテストし、スケーリング能力をどのように向上できるかを確認できます。

JMeter では、さまざまな便利なドキュメント (入門、ユーザー マニュアル、ベスト プラクティスなど) と、多数のステップバイステップのチュートリアルが提供されています。

楽しいテストを。

当社のテスト エンジニアは Threat Stack で非常に優秀ですが、強力なツールに裏打ちされた体系的なプロセスがなければ、それほど成果を上げることはできません。 当社のプラットフォームが進化するにつれ、当社のチームは専門知識を磨き続け、スキルと知識を継続的にアップグレードし、新しいツールを採用して組み込み、脅威スタック SDLC に価値を付加し続けるための新しい方法を開発し続けています。この投稿が、当社のテスト チームがさまざまな自動テスト ツールを使用してクラウド セキュリティ プラットフォーム内の複数の機能に対処する方法について、少しでも理解を深める助けになれば幸いです。  

 

 

Threat Stack は現在、 F5 Distributed Cloud App Infrastructure Protection (AIP) です。 今すぐチームで Distributed Cloud AIP を使い始めましょう。