プレゼンテーションの自動テストのコーディングをすぐに開始します。誰もがWatiNとSeleniumを推奨しているようです。ASP.NET Webフォームの自動テストでどちらを好みますか?これらの製品のどれがあなたのためによりよく働きますか?
補足として、WatiN 2.0が2008年3月からCTPに参加していることに気付きましたが、それは懸念事項ですか?
プレゼンテーションの自動テストのコーディングをすぐに開始します。誰もがWatiNとSeleniumを推奨しているようです。ASP.NET Webフォームの自動テストでどちらを好みますか?これらの製品のどれがあなたのためによりよく働きますか?
補足として、WatiN 2.0が2008年3月からCTPに参加していることに気付きましたが、それは懸念事項ですか?
回答:
2009年の第1四半期のどこかで、WatiN 2.0のベータリリースに取り組んでいると言いたいだけです。これは、現在のCTP 2.0バージョンへのメジャーアップグレードであり、基本的に、FireFoxとIEを自動化するための同じ機能を提供します。バージョン1.3.0はIEの自動化を提供します。
そこで心配はありません。
これがあなたの選択に役立つことを願っていますJeroen van Menen Lead dev WatiN
コミュニティによって継続的に改善され、サポートされるフレームワークに深刻な長期的な投資をする場合は、おそらくSeleniumが最善の策です。たとえば、Matt Raibleのブログでこの情報を見つけました。
金曜日の時点で、Googleには50を超えるチームがあり、内部のSelenium Farmで1日に5万回以上のテストを実行しています。これらのテストの96%は、Selenium RCおよびFarmマシンによって正しく処理されます。残りの4%は、一部はRCのバグによるもので、一部はエラーのテストによるものですが、原因の特定は困難な場合があります。Seleniumは、Google内のWebアプリケーションの機能テストのための主要なテクノロジーとして採用されています。それは朗報です。
私は最近Seleniumのミートアップの1つに行ったところ、GoogleがSeleniumを改善し、Simon Stewartが開発した自動テストツールであるWebDriverと統合するために真剣なリソースを投入していることを知りました。WebDriverの主な利点の1つは、ブラウザ内でJavascriptアプリケーションとして実行するのではなく、ブラウザ自体を制御することです。つまり、「同じオリジン」問題のような大きな障害は問題ではなくなります。
私たちは両方をテストし、WaTiNを使用することにしました。他の人が指摘したように、SeleniumにはWaTiNにはない優れた機能がいくつかありますが、Seleniumを機能させるのに問題が発生しました。私の記憶が正しければ、SeleniumがWaTiNが処理中のすべてを実行する実際のブラウザーを制御する別のアプリを持っているという事実から生じたセットアップの問題が発生しました。
私はそれらを両方試してきました、そしてここに私の最初の考えがあります...
WatiN
いいもの
悪い人
スクリプトの例(C#)。あなたはSeleniumではこれを行うことはできません(少なくとも私が知っていることではありません):
class IEManager
{
IE _ie = null;
object _lock = new object();
IE GetInstance(string UrlFragment)
{
lock (_lock)
{
if (_ie == null)
{
var instances = new IECollection(true); //Find all existing IE instances
var match = instances.FirstOrDefault(ie=>ie.Url.Contains(UrlFragment));
_ie = match ?? new IE();
if (match==null) //we created a new instance, so we should clean it up when done!
_ie.AutoClose = true;
}
}
return _ie;
}
}
セレン
すべてにもかかわらず、私は結局WatiNに行きました。主に小さな画面スクレイピングアプリケーションを書くつもりで、開発にLINQPadを使用したいと思っています。リモートのIEインスタンス(私が自分でスポーンしなかったもの)に接続することは、大きなプラスです。既存のインスタンスをいじくりまわすことができます。次に、スクリプトを少し実行してから、もう一度いじくります。これは、Seleniumで行うのが難しいですが、その間にスクリプトに「一時停止」を埋め込むことができると思います。ブラウザで直接いじる。
最大の違いは、Seleniumがさまざまなブラウザーをサポートしていることです(IEまたはFFだけでなく、http: //seleniumhq.org/about/platforms.html#browsersを参照してください)。
また、Seleniumにはリモートコントロールサーバー(http://seleniumhq.org/projects/remote-control/)があります。つまり、テストコードが実行されているのと同じマシンでブラウザーを実行する必要はありません。したがって、Webアプリをテストできます。異なるOSプラットフォーム。
一般的に、Seleniumの使用をお勧めします。私は数年前にWatiNを使用しましたが、その安定性に満足していませんでした(おそらく、現在までに改善されています)。私にとってSeleniumの最大の利点は、Webアプリをテストできることです。別のブラウザで。
どちらでもない。Coypuを使用します。Seleniumをラップします。はるかに耐久性。https://github.com/featurist/coypu
あなたが正しいイェオリバーを更新します。なんでそれがいいの?個人的には、特にIEのSeleniumドライバーは非常に壊れやすいことに気づきました。ajaxの重いWebサイトで単体テスト用のSeleniumを駆動するときに、何度も見つかった「標準」ドライバー例外があります。
スクリプトをテストプロジェクトとしてc#で記述したいと言ったことはありますか?はい継続的なビルド展開内の受け入れテスト。
さて、ヌートリアは上記を扱います。これは、次のようなテストフィクスチャを可能にするSeleniumのラッパーです。
browser.Visit("file:///C:/users/adiel/localstuff.htm")
browser.Select("toyota").From("make");
browser.ClickButton("Search");
...(構成可能なブランドの)ブラウザーを起動し、スクリプトを実行します。範囲指定されたリージョンでうまく機能し、非常に拡張可能です。
GitHubには他にも例があり、以下のOlvierが言及しているように、Adrianのビデオは素晴らしいものです。私はそれが.Netの世界でブラウザベースのテストを推進する最良の方法だと思い、それをRubyの名前に倣うようにしていますcapybara
これまで、私たちはエンタープライズ向けのソリューションを提供する純粋なマイクロソフトショップであり、WatiNを採用していました。これは将来変更される可能性があります。
より最近の情報源として:
Microsoftは、MSDNマガジン 12/2010で、SpecFlowとWatiN(クールなBDD-Behavior Driven Development)を組み合わせたBDD-Primerを印刷しました。その作者であるブランドンサトロム(msft開発者エバンジェリスト)は、2010年12月に、上記の調査結果を1対1でビデオビデオキャストで詳しく教えています。
SpecFlowを構築したChristian Hassaの SpecLog、SpecFlow、およびTeam Foundation Server(Acceptance Test Driven Development / Behavior Driven Development)を使用したATDD / BDDのサポートに関する2011年4月のホワイトペーパーがあります。
私は通常、テストの開始点を記録するためにFireFoxのSelenium IDEプラグインが好きなため、Seleniumを使用します。
WebAiiをお勧めします。それが私が成功した理由であり、それを使用するときに私の不満はほとんどありませんでした。私はSeleniumを試したことがなく、WaTiNをあまり使ったことを覚えていません。少なくとも、うまく機能するようになるまでは。WebAiiには独自のダイアログハンドラーを実装するためのインターフェイスがありますが、Windowsダイアログを適切に処理するフレームワークについては知りません。
両方の使用を検討しました。Seleniumのレコーダーを使用して、FFでいくつかのテストを作成しました。私はWatinでも同じことをしようとしましたが、Watin Recorder(2.0.9.1228)は私たちのサイトにはまったく役に立たないことがわかりました。それはIE6でサイトをレンダリングしているようでした-私たちのサイトを事実上記録に使用できなくしています。IE6はサポートしていません。使用しているブラウザを変更する方法が見つかりませんでした。私はそこにWatin Recorderを1つだけ見つけました。複数ある場合、または最新の状態になっている場合は、コメントしてください。
Selenium Recorder IDE for Firefoxは使いやすく、テストをC#に移植します。これは得意ではありません。回避策のあるブログ投稿を1つまたは2つ読んだにもかかわらず、移植したテストスイートを機能させることができませんでした。そのため、生成されたコードを少し操作します。それでも、90%は機能し、他の方法よりも優れています。
私のお金/時間については、セレンは新しいテストを簡単に構築できる点で優れています。IEには、Firebugに近い優れた開発者ツールバーはありません。そのため、私は最初にFirefoxで開発を行っているので、Firefoxで優れたレコーダーを使用できることは大きなボーナスです。
ここでの私の結論は、Churchillによる民主主義の引用によく似ています。セレンは、自動UIテストの最悪の形式です。他のすべてのものを除いて。
接線で行くリスクがあるので、Axe / WatiNをお勧めします。Axeを使用すると、基になるテストの「言語」を知らなくても、「手動」テスターがExcelでテストを記述できます。オーダーメイドのアクションを作成するには「技術者」が必要です(IE。今日は少し複雑なテーブルのルックアップと相互参照を行う必要がありました)。
英国政府ゲートウェイプロジェクト(6K +テストの自動テストがあると思われます)は最近、すべてのテストをAxe / WinrunnerからAxe / Watinに1週間以内に移植したと聞いています。そして、テストの多くはかなり複雑です-数年前にテストしたので知っています...
現在、Seleniumを検討しています。潜在的なクライアントが使用しているためです。しかし、私はAxを「作業馬」ツールの上のレイヤーとして少し見直すことをお勧めします。
IEとFFのテストを実行する必要がある場合は、両方を実行する必要がありますが、プレゼンテーションテストの場合にのみうまく機能します。それらは、1つの要素がわずかに外れているかどうかを検出できません。要素が存在するだけです。UI /プレゼンテーションテストの人間の目を置き換えることができるものは知りませんが、それを支援するためにいくつかのことを行うことができます(ユーザーが確認するために、各ステップでページのスクリーンショットを撮ります)。