JarvisJS:Webアプリケーションの機能テスト

こんにちは、Habr! この投稿では、こんにちはと言い、私たちのプロジェクトJarvisJS.com -Webアプリケーションの機能テストのためのサービスを世界に初めて見せたいと思います。 このプロジェクトはまだ非常に若く、過去7か月間、3人のチームによって愛をもって開発されています。







カットの下で、私たちのサービスとそれを作成するようになった理由について話します。



開発者として小規模または大規模に開発するアプリケーションのサイズに関係なく、作業におけるテストの重要性を常に理解しています。 さらに、経験を積むほど、これをより明確に確信できます。 常にコードをテストしていますか? 私たちの最強の人でさえ、心を合わせて答えると思う-いいえ。



テストは常に2つのタスクに関連付けられています。テスト用のインフラストラクチャのセットアップと、実際にはテストの開発です。 最初は小規模なプロジェクトでは、テストに時間を費やすことは価値がないように思われます。できるだけ早く前進し、新しい機能を構築したいと思います。 しかし、その後、人生は非常に予想通りになり、プロジェクトは巨大な反ヒドラに変質します-私たちが破壊する機能の1つと他の2つを切り落とします。









コードのテストの種類によって、コードの準備にかかる費用は異なります。 通常、ユニットテストを整理するために超自然的なことをする必要がない場合、たとえば、Seleniumを使用したフロントエンド機能テストの場合、特にすべてのテストをリモートで実行する場合は、インフラストラクチャ全体を展開する必要があります。



この機能テストは、長い間休息を与えませんでした。 アイデアはシンプルで明確です-生きている人がブラウザで操作する方法でアプリケーションをテストしています。 同時に、テストプロセス全体の組織化は簡単なタスクではなく、チームドライバーの競合者が必要とするか、まったく関心がない場合があります(たとえば、unixとそのコマンドライン、Seleniumテストを記述するためのJavaのような新しい言語、WebdriverJSが最近登場しました) 。



私たちの主観的な意見では、テストの開発が避けられない悪として扱われる平均的なチームにとって、この開発は使い慣れたネイティブツールの助けを借りて最も快適な環境で行われることが重要です。



フロントエンド開発者にとって、Javascriptは確かにネイティブツールであり、Javascriptに基づいた機能テストの最も「正しい」実装は、おそらくすべてのPhanotmJSですでによく知られています。 PhantomJSは、Javascript言語を使用してブラウザを制御できると同時に、リモートサーバーでのテストの起動を自動化できる素晴らしいツールです。 確かに、この場合、テストはブラウザーの1つのブランチ(Webkit)でのみ実行されますが、レンダリングエンジンではなくロジックの機能テストだけに関心がある場合、これはネイティブ環境にいるという感覚に比べてそれほど重大な欠点ではありません。



同時に、PhantomJSの上にすでに多くのさまざまなツールが形成されており、PhantomJSとの連携がさらに容易になっています。CasperJS、Zombie.JS、DalekJS、...個人的には、CasperJSを選択しました。



CasperJSは、PhantomJSおよびSlimerJSを操作するためのシンプルなインターフェイスを提供するオープンソースプロジェクトであり、webkit(Chrome、Safariなど)およびgecko(Firefox)エンジンを使用してブラウザーの機能テストを開発できます。



ただし、このようなツールのJavascriptランプのような性質にもかかわらず、テストは何らかの形で保存し、どこかで実行し、誰かに書き込む必要があります。



これらの問題を解決するという私たちのビジョンは、JarvisJSに紹介したいプロジェクトで表現されました。









JarvisJSは、CasperJSフレームワークに基づく機能テストの開発を簡素化し、クラウドで実行できるサービスです。



テストの開発を支援するために、Jarvisはアクションのシーケンスを記録できるブラウザー拡張機能を提供します。 この拡張機能は現在、Chromeブラウザでのみ使用できます。



JarvisJSの使用例は、このビデオで見ることができます。







テストを記録したら、すぐにサービスに保存して、リモートサーバーで実行できます。 テストはプロジェクトごとにグループ化し、プロジェクト全体を一度に実行できます。 テスト結果は、検証結果とともに定義された一連のアサーションで構成されます。 そのようなチェックごとに、スクリーンショットが自動的に作成されます。



ブラウザー拡張機能の柔軟性がテストを記述するのに十分でない場合、テストをCasperJSコードに変換し、JavaScript用のテストの開発を続けることができます。



Jarvis-eの通常のテストフレームワークと同様に、「before」や「after」などのテストアノテーションを使用できます。 これらの注釈のおかげで、たとえば、beforeEach注釈を使用して承認テストを別のテストに取り込むなど、機能を簡単に配布できます。



現在、発売前の段階です。 そして、実際のユーザーの「戦闘」条件ですべてのシステムの機能をテストしますが、それらの数を制御します。 =)



これに関連して、ベータ版のプロジェクトに関心のあるすべての人に会えることを非常に嬉しく思います。 jarvisjs.comにメールを残してください。近い将来、準備ができ次第、サービスをご覧ください。



今後の投稿では、プロジェクトの内部キッチン、PhantomJSとCasperJSをどのように飼いならしたか、使用される技術、およびパートタイムの条件でのプロジェクト計画についてお話したいと思います。



ご意見やご提案をお待ちしております! ご清聴ありがとうございました!



また、この記事を投稿したおかげで、スタートアップサポートプログラムのThematic Mediaの管理にも感謝したいと思います。



All Articles