先日、会社のテスターの1人に、キュウリで書いたテストをいくつか見せていました(2つの機能、5つのシナリオ)。それから彼は私に答えられないという質問をしました:
これは、セレンやその他の機能テスト記録ツールよりも優れていますか?
キュウリは別のテクノロジーであり、テストのレベルも異なることは理解していますが、キュウリ/カピバラのテストを作成して維持する必要がある理由がわかりません。
セレンだけでなく、キュウリ/カピバラを使用するための合理的な説明を誰かに教えてもらえますか?
この質問は、意見を求める境界線です。あなたの質問は実際に私に「どのツールが私に適しているか」と読んでいます。キュウリとカピバラを選んだ理由がわからないので、これを言います。私はそのテスターの質問に答えると信じています。最初にさらにいくつかの質問に答える必要があります。
1.)これらのテストを作成するプロセスのどの段階になりますか?
使用している言語によっては、キュウリが単体テストに適しているとは限りません。ただし、ユニットから統合、エンドユーザーまで、あらゆるレベルのテストに使用できます。
2.)誰があなたのテストを維持するつもりですか?君?他の開発者?テスター?ビジネスアナリスト?プロジェクトマネージャー?
自動テストを維持する必要があります。誰がそれを行うかを知ることは、ツールを決定するのに役立ちます。特定のユーザーにとっては技術的すぎるものもあるためです。
3.)誰が新しいテストを定義するのですか?
キュウリは、開発、QA、および事業主の間で共同で使用されることを目的としています。これは、すべての人の知識を自動テストプロセスに活用するための完璧なツールです。ただし、効果を発揮するには、ユビキタス言語の開発が必要です。これについては、JamesShoreのArtofAgileページで読むことができます。
これらの質問に答えたら、テスターの質問に答える準備ができています。
ただし、記録ツール(Selenium IDE、HP Quick Test Pro、IBM Rational Functional Testerなど)と開発ツール(nUnit、jUnit、RSpec、Selenium webdriver、Capybaraなど)を比較する際に留意すべき点がいくつかあります。それらは異なるオーディエンスを対象としています。また、プラスとマイナスも異なります。
記録ツールは誰にとっても使いやすいですが、それらが作成するスクリプトは壊れやすいものです。それらは簡単に壊れ、より多くのメンテナンスが必要です。これらは、1回限りの自動テストに最適です。この場合、テストを迅速に実行し、技術者以外の人員を配置する必要があります。
開発ツールは学習曲線が大きく、プログラミング(または少なくともスクリプト)の経験が必要です。スクリプトは一般的に堅牢ですが、維持するにはより技術的な知識が必要です。これらは、再現性が必要で、テストを長期間使用することを計画している場合に適したソリューションです。
キュウリの本を読むことを強くお勧めします。それはあなたがキュウリがあなたにとって正しい選択であるかどうかを決めるのに本当に役立ちます。
きゅうりはテストツールだけではありません。Cucumber機能のテストに加えて、ドキュメント、利害関係者とコラボレーションするメカニズム、および要件ストレージ(宣言型で記述した場合)の役割も果たします。
カピバラと一緒にキュウリを使う必要はありません。セレンを直接使用できます。ただし、Capybaraには、サポートするすべてのドライバーに対して同じ高レベルAPIがあります。これはSeleniumよりも高レベルであり、テストを少し速く作成できます。あるドライバーから別のドライバーに切り替えるときに、コードを変更する必要はありません。
テスト記録ツールを使用して作成されたテストは、一般的にはるかに悪いです。Selenium IDEは有効なプログラミングコードを生成する可能性がありますが、見栄えがよくないため、保守が非常に困難です。
Cucumberは、テストをビジネスユーザーが読めるようにするために使用されるツールです。これは、正規表現を使用してカピバラのステップに一致する平易な英語の文で構成されています。
記録ツールを使用しても、長期的には何の役にも立ちません。これらは初心者向けであり、それほど強力ではないため、コーディングに直接進むことをお勧めします。
テストにはSeleniumを単独で使用できますが、Cucumberが便利で操作しやすい場合は、ドキュメント化の目的で引き続きCucumberを使用することをお勧めします。結局のところ、CucumberはCapybaraまたはSeleniumWebドライバーを使用できます。
Selenium ideは、主に視覚的な要素(リンク、テキストなど)を持つ機能のテストに適しています。ただし、多くの場合、Webアプリには、メールの送信、ジョブのキューイング、サードパーティサービスとの通信など、視覚的な要素として表されない機能があります。たとえば、「メールが送信されました」というメッセージが後に表示されるかどうかをテストできます。フォームを送信する。ただし、実際に電子メールが送信されているかどうかはわかりません。したがって、ここで機能全体を実際にテストしているわけではありません。