Sparrow-Perl Webアプリケーションのテストおよび監視フレームワーク

創造の歴史



スズメは非常に若いプロジェクトです。 これはswatのアドオンとして登場しました-さまざまなWebアプリケーションのテストスクリプトを開発するためのperlで書かれたDSLツールです。 swatの説明は別のトピックですが、これについてはおそらく次の出版物で説明しますが、簡単に言えば、swatはcurlユーティリティの使用に基づいてWebテストを自動化するツールであり、任意のhttp要求を作成して返されたコンテンツを検証できます。



スズメのインストール



通常のcpanモジュールとして配置します。



$ sudo cpanm Sparrow
      
      





現在のPATHにインストールした後、フレームワークの機能セット全体を提供する実際のコンソールクライアントであるsparrowユーティリティが使用可能になります。



イデオロギースズメ



Sparrowは、さまざまなWebアプリケーションのテストを迅速に構成および実行できるシンプルなコンソールクライアントとして設計されています。 このツールのフレームワーク内では、テスト構造の作成と、雀プラグインのインストールと起動という2種類の基本操作を区別できます。



プロジェクトすずめ構造



現時点では、スズメが動作する3つの主要なエンティティ(プロジェクト、サイト、プラグイン)があります。



プロジェクトは、テストされたアプリケーションのグループを記述するための抽象化です。 プロジェクトには、識別子、プラグインのセット、テスト済みのサイトのセットがあります。 以下は、sparrowユーティリティを使用した場合のコンソール出力での表示です。 すずめプロジェクトの構造を導き出します。



 $ sparrow project foo # sparrow environment initialzed at /home/vagrant/sparrow project foo info: [plugins] swat-mongodb-http swat-pintod swat-app-docsisious metacpan swat-lighttpd swat-yars swat-nginx [sites] mongodb-http-server [127.0.0.1:28017] pintod-server [127.0.0.1:3111] metacpan [http://metacpan.org] lighttpd [127.0.0.1:8080] thorsen [http://home.thorsen.pm/docsisious] yars_server [localhost:9001] localhost [127.0.0.1]
      
      





上記の結論から、このプロジェクトには、対応するアプリケーションとサイトのセットをテストするためのプラグイン(mongodb-http-server、pintod-server、...)のセットが含まれていることがわかります。これについては後で説明します。



スズメのサイト



スズメのサイトは、テスト可能な任意のWebアプリケーションを記述しています。 識別子に加えて、サイトにはベースURLが必要です。これは、テスト実行中に送信されるhttp要求の「ルート」URLです。 ほとんどの場合、ベースURLはテスト対象のアプリケーションのサーバーのfqdnまたはIPアドレスと一致し、オプションのスキームとポートが指定されます。 正確には、ベースURLはcurl url形式と互換性がある必要があります。 また、curlは他のプロトコル(ftpなど)との相互作用を許可するという事実にもかかわらず、 swatと組み合わせたsparrowは、httpプロトコルを使用するアプリケーションのテストにのみ使用されることも注目に値します。



nginxサーバーのようなアプリケーションの場合、スズメのプロジェクトでサイトを作成する例を次に示します。



 $ sparrow project foo add_site nginx-server 127.0.0.1
      
      





スズメのプラグイン



プラグインは、雀の最も興味深い有望な機能であり、Webアプリケーションをテストおよび監視するための強力なツールです。 おそらく検索は不十分でしたが、perlエコシステムだけでなく、他のプログラミング言語でも、他のテスト自動化ツールに類似したものは見つかりませんでした。



一言で言えば、sparrowプラグインは、インストールして実行できるポータブルなテストスイートです。 centosのyumやdebianのapt-getなど、さまざまなバッチマネージャーの例に非常に明確な類似性を構築できます。 さまざまなタイプのアプリケーションの場合、このアプリケーションで実行できる特定のテストスイートをカプセル化するプラグインを選択してインストールできる必要があります。



現時点ではスズメのプラグインのリストは非常に限られていますが、perlコミュニティのメンバーがプロジェクトに気付き、すぐに多くの新しいプラグインを見ることができるようになることを期待しています。 さらに、新しいプラグインを作成するプロセスはほとんどの場合些細なことであり、perl自体の知識さえ必要としませんが、このトピックの開示は私の投稿の範囲を超えており、おそらく将来実装されるでしょう。



したがって、雀プラグインをインストールしてプロジェクトに追加できます。



 $ sparrow plg list # sparrow environment initialzed at /home/vagrant/sparrow [sparrow plugins list] swat-yars | https://github.com/melezhik/swat-yars.git metacpan | https://github.com/CPAN-API/metacpan-monitoring.git swat-app-docsisious | https://github.com/melezhik/swat-app-docsisious.git swat-nginx | https://github.com/melezhik/swat-nginx.git swat-lighttpd | https://github.com/melezhik/swat-lighttpd.git swat-pintod | https://github.com/melezhik/swat-pintod.git swat-mongodb-http | https://github.com/melezhik/swat-mongodb-http.git
      
      





現在、プラグインのインストールは、 リモート gitリポジトリからの通常のチェックアウトとして実装されています。おそらく、将来、この機能は、通常のcpanリポジトリと同様に、バージョン管理ディストリビューションおよびその他のアメニティを備えた独自のsparrowリポジトリを使用して書き換えられる可能性があります。



 vagrant@Debian-jessie-amd64-netboot:~/projects/sparrow$ sparrow plg install swat-nginx # sparrow environment initialzed at /home/vagrant/sparrow installing plugin swat-nginx ... Cloning into 'swat-nginx'... .... Installing modules using /home/vagrant/sparrow/plugins/swat-nginx/cpanfile Successfully installed Outthentic-DSL-0.0.4 Successfully installed swat-0.1.68 2 distributions installed Complete! Modules were installed into /home/vagrant/sparrow/plugins/swat-nginx/local
      
      





プラグインをインストールしたら、プロジェクトにプラグインを添付し、選択したサイト(Webアプリケーション)を入力パラメーターとして使用してテストスイートを実行する必要があります。



 $ sparrow project foo add_plg swat-nginx # sparrow environment initialzed at /home/vagrant/sparrow plugin swat-nginx is successfully added to project foo $ sparrow project foo check_site nginx-server swat-nginx # sparrow environment initialzed at /home/vagrant/sparrow /home/vagrant/.swat/.cache/3486/prove/00.GET.t .. ok 1 - GET 127.0.0.1/ succeeded # response saved to /home/vagrant/.swat/.cache/3486/prove/p3y5aUKFgj ok 2 - output match '200 OK' ok 3 - output match /Server: nginx\/(\S+)/ ok 4 - valid nginx version: 1.6.2 1..4 ok All tests successful. Files=1, Tests=4, 1 wallclock secs ( 0.01 usr 0.00 sys + 0.04 cusr 0.00 csys = 0.05 CPU) Result: PASS
      
      





おわりに



スズメとの知り合いが残念なことに終了する場所ですが、もちろん、まだ伝えたいことがあります。 既に述べたように、プロジェクトはまだ非常に若く、テストスクリプトを記述するための主要なコンポーネントはswatであるため、積極的に開発しています。 perlコミュニティ、およびテストおよび監視プロセスの自動化に近いすべての人々が、まだ小さいが軽快なスズメ(*)の生活史に貢献することを期待しています。



(*)-「スズメ」-英語から翻訳されたものはスズメを意味します。



PS



おそらく記事を読んだ後に生じるかもしれない問題のいくつかを予想して、私はいくつかのより重要な点を加えることを控えることができません。



  1. ウェブAPIを介したテストのリモート起動 -この可能性は、同じ領事nagiosなどの外部APIの呼び出しを介してウェブサービスの可用性を確認できる多数のシステムに留意して、近い将来実装する予定です。
  2. 継続的な統合とレポートの既存のシステムとの統合 -これは出口です。sparrowプラグインを起動した後、 TAPを取得し、結果を他の形式に変換するパーサーを簡単に作成できます。 さらに言います:sparrowはプラグインを起動するときにswatを呼び出し、 perlがテストを実行すること証明するため、TAPを異なる形式に変換するこのオプションは「そのまま」または最小限のコード記述で提供されるため、 ドキュメントページで詳細を確認できます「TAP」セクションのswat。
  3. 最後に、非常に合理的な質問- 「このソリューションはどこでテストされましたか(スズメ/スワット)?」 Swatは、devopsエンジニアとしての日々の作業中に、数十のWebアプリケーションの煙テストを短時間で迅速に開発するための非常に便利なツールとしての地位を確立しました。 Sparrowはまだテスト中ですが、このプロジェクトはswatの論理的な継続であると言えますが、sparrowプラグインを使用すると、Web開発者、devos、およびシステム管理者に人気が出る可能性があります。



All Articles