3

私たちの QA チームでは、開発者がコミットするたびに一連の自動テストを実行しています。このようなコミットは毎日かなりの数あり、開発者はフィードバックを得るために数分以上待つことを望んでいないため、テストは 5 分間に制限されています。この 5 分間で、できるだけ多くのテストを実行したいと考えています。

Selenium テストが私たちのニーズに最適であることがわかりました。主な理由は、信頼性が高いからです。Selenium テストで JS エラーが報告された場合、それが本当のエラーであると 95% 確信しています。(HTMLUnit を使用した経験から学んだように、これは非常に重要なプロパティです)。ただし、セレン テストの実行は遅くて重いです。(私たちは小規模な CPU ファームを維持しているため、多くの Selenium サーバーと多くのスクリプトを非同期で実行できます)。

最近、私たちは新しいアプローチを提案しました - ポップアップ、ajax、一般的なJSなど、本当に必要な場所にのみセレンを使用してください..他の場所では「テキストブラウザ」を使用します. たとえば、次のリンクが「機能する」ことを確認したい場合:

<a href='/somewhere'> link </a>

セレンは本当に必要ありません。ページに対して GET リクエストを実行し、正規表現を使用してページを解析し、xpath/.. を使用できます。結論として、JS エンジンは必要ありません。明らかに、これははるかに軽量で高速なテストです。

このアプローチは多くの成功を収めており、次のリンクに遭遇しました。

<a href='/somewhere-1' onclick="foo()" > link 1 </a>
<a href='/somewhere-2' onclick="foo()" > link 2 </a>
... many more such links ...

したがって、この場合、すべてのリンクを押す Selenium スクリプトを実際に実行する必要はありません。Selenium を使用してそのうちの 1 つをクリックし (JS 関数の機能をテストしますfoo())、テキスト ブラウザを使用しhrefて他のリンクの s を確認します。

私の質問は、どこに線を引くべきだと思いますか? また、ご意見をお聞かせいただければ幸いです。「テキスト ブラウザ」ツールはありますか (WebDriver は使用していません)。

4

1 に答える 1

1

あなたがしていることと、あなたの開発者がしていることを私が期待することとの間の境界線が少しぼやけているように思えます。

私の考えでは、開発者は自分の機能の単体テストを行うべきfoo()です。Javascript の TDD は、ツールのサポートが少し低いですが、何かが起こるはずです。

関数が単体テストである場合、セレンは、コード単位レベルではなく、ユーザー要件に対してより多くのテストを行う場所になります。

とはいえ、QA チームと開発チームの間のやり取りは社会的にかなり複雑であり、このアプローチに従うことに同意を得るのは難しいかもしれません。

于 2011-03-22T20:31:08.730 に答える