WatiN veya Selenyum? [kapalı]


148

Yakında sunumumuzun bazı otomatik testlerini kodlamaya başlayacağım. Herkes WatiN ve Selenyum'u tavsiye ediyor gibi görünüyor . ASP.NET web formlarının otomatik testi için hangisini tercih edersiniz? Bu ürünlerden hangisi sizin için daha iyi çalışıyor?

Bir yan not olarak, WatiN 2.0'ın Mart 2008'den bu yana CTP'de olduğunu fark ettim, bu endişe edilecek bir şey mi?


30
Bu sorunun kapatılması gerektiğini düşünmüyorum. Benim için ve diğer geliştiriciler için yararlıdır (yukarı oylara bakın). Böyle bir soru, Stackoverflow'a neden ihtiyacımın nedenlerinden biridir. Keşke yöneticinin kararlarını küçümseyebilseydim.
Maxim Eliseev

7
Bu sorunun neden kapatıldığını merak ediyorum. Çok yapıcı.
İkisini de okuyorum ve farklılıklarını

14
Yapıcı değil ??? ... bu site çok fazla kontrole sahip salaklar tarafından istila ediliyor.
Ronald McDonald

Yanıtlar:


108

Şu anda 2009'un ilk çeyreğinde WatiN 2.0'ın beta sürümünde çok çalıştığımı söylemek istiyorum. Mevcut CTP 2.0 sürümlerine büyük bir yükseltme olacak ve temel olarak FireFox ve IE'yi otomatikleştirmek için aynı işlevselliği verecek sürüm 1.3.0 IE otomatikleştirmek için sunuyor.

Yani endişe yok.

Umarım bu seçiminizi yaparken yardımcı olur Jeroen van Menen Lead dev WatiN


23
@jcollum Üzgünüm, ama -1 vermek için katılmıyorum. Jeroen sadece ikinci soruya "Yan not olarak ..." yanıtını verdi. Ürünün Baş Geliştiricisi olmasa da, buna yanıt vermek için daha nitelikli kim olabilir. Bu yanıtı yalnızca en iyi yanıt olarak işaretlemek şüpheli olabilir.
Henry99

1
@ Henry99, soru veya ayrı bir soru altında yorum olarak daha uygun olurdu. Buradaki temel soru "A veya B" dir. A veya B'nin yazarı bu tür sorulara cevap vermemelidir, çünkü önyargılı olacakları açıktır.
jcollum

3
@jcollum Jeroen, ürününün Selenyum'a karşı kalitesinden bahsetmedi veya bir yönde ya da diğerinde taraflı olduğu düşünülebilecek herhangi bir şey söyledi. Belki de sorunun ikinci bölümünü okumadınız, ancak projenin baş geliştiricisi şüphesiz bu soruyu cevaplayacak en nitelikli kişidir.
Grinn

2
@Grinn: Yukarıdaki yorumumda sizinkine değindim, okudunuz mu? Ana soruyu cevaplamıyor (Watin veya Selenium) tamamen ayrı bir soruda olması gereken bir şeyi ele alıyor.
jcollum

Güzel Cevap ...
Mohsin Awan

58

Topluluk tarafından geliştirilmeye ve desteklenmeye devam edecek bir çerçeveye uzun vadeli ciddi bir yatırım yapmak istiyorsanız, Selenium muhtemelen en iyi seçenektir. Örneğin, Matt Raible'ın blogunda şu bilgilere rastladım:

Cuma günü itibariyle Google'ın dahili Selenyum Çiftliği'nde günde 51.000'den fazla test yapan 50'den fazla ekibi var. Bu testlerin% 96'sı Selenium RC ve Tarım makineleri tarafından doğru şekilde yapılmaktadır. Diğer% 4'ü kısmen RC hatalarından, kısmen test hatalarından kaynaklanmaktadır, ancak sebebi izole etmek zor olabilir. Selenyum, Google'daki web uygulamalarının işlevsel testi için birincil teknoloji olarak benimsenmiştir. İyi haber bu.

Ayrıca son zamanlarda Selenium buluşmalarından birine gittim ve Google'ın Selenyum'u iyileştirmeye ve Simon Stewart tarafından geliştirilen otomatik bir test aracı olan WebDriver ile entegre etmeye ciddi kaynaklar koyduğunu öğrendim. WebDriver'ın en büyük avantajlarından biri, bir Javascript uygulaması olarak tarayıcının içinde çalışmak yerine tarayıcının kendisini kontrol etmesidir, bu da "aynı köken" sorunu gibi büyük tökezleyen blokların artık sorun olmayacağı anlamına gelir.


1
Selenyum şu anda daha olgun bir proje gibi görünüyor ve artı Google'ın kullanıyor olması oldukça sağlam bir öneri (
Watin'i

37

İkisini de test ettik ve WaTiN ile çalışmaya karar verdik. Diğerlerinin de belirttiği gibi, Selenium'un WaTiN'de bulunmayan bazı güzel özellikleri var, ancak Selenyum'u çalıştırmakla ilgili sorunlarla karşılaştık ve bir kez yaptığımızda, testleri çalıştırırken WaTiN'den kesinlikle daha yavaştı. Doğru hatırlıyorsam, karşılaştığımız kurulum sorunları, Selenium'un WaTiN'in işlenen her şeyi yaptığı gerçek tarayıcıyı kontrol etmek için ayrı bir uygulaması olduğu gerçeğinden kaynaklandı.


4
Performans notları ve gerçek dünya kullanımı için +1.
Jeremy McGee

Aynı sorunları fark ettim: # 1 Performans o kadar iyi değil ve # 1 testler bir Java sunucusunda ([TestSetup] 'da ayarlanması gerekiyor) çalışıyor.
Peter Gfader

18
Bu artık bir sorun değil - Selenium 2.0, sadece bir Java sunucusu üzerinden değil, tarayıcının doğrudan kontrolünü sağlayan WebDriver kütüphanesiyle birlikte gelir.
Igor Brejc

2
Selenyum'u denemedim, ancak Watin ile ilgili sorunlar yaşadım. Aniden hiçbir sebepten dolayı test aniden durdu artı COM hataları rastgele atılmış (en azından herhangi bir desen bulamadık).
Piotr Owsiak

30

İkisini de deniyorum ve işte ilk düşüncelerim ...


watin

İyi

  • Hızlı uygulama.
  • Komut dosyası oluşturma araçları bağımsız projelerdir; Bildiğim 2 tane var: Balmumu (Excel tabanlı, CodePlex'te barındırılıyor) ve WatiN Test Kaydı (SourceForge'da barındırılıyor). Her ikisi de Selenyum IDE kadar sağlam değildir.
  • Çok iyi IE desteği. Çalışan örneklere ekleme ve ayırma yapabilir. Yerel pencere tutamaçlarına vb. Erişebilir (Aşağıdaki komut dosyası örneğine bakın).
  • NuGet paketlenmiş, .NET, Visual Studio tarzı ortamlarda çalışmaya başlamak ve güncel tutmak kolaydır.

Kötü

  • Google'ı Çalışmak (watin xyz) çoğu zaman Google'ın bunun yerine "watir xyz" önermesine neden olur. Orada o kadar fazla belge yok.
  • Ne az (belge) var, kafa karıştırıcı; örneğin: ilk bakışta CSS seçicileri için yerel bir destek olmadığı anlaşılıyor. Özellikle 'WatiNCssSelectorExtensions' gibi uzantı kütüphaneleri ve alternatif tekniklerle ilgili birçok blog makalesi olduğundan (sayfaya jQuery / cızırtı enjekte etmek gibi). Stack Overflow'da, Jeroen van Menen tarafından yerel destek olduğunu belirten bir yorum buldum . En azından potansiyel geliştirici Stack Overflow'da zaman harcıyor :)
  • Yerel XPath desteği yok.
  • Kullanıma hazır uzaktan yürütme / ızgara tabanlı yürütme yok.

Senaryo Örneği (C #). Bunu Selenyum ile yapamazsınız (en azından bildiğimden değil):

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;
    }
}

Selenyum

  • WatiN'den daha yavaş (özellikle yeni bir süreç oluşturulması gerektiğinden).
  • Dahili CSS seçicileri / XPath desteği.
  • Selenyum IDE iyidir (harika diyemeyiz, ancak sınıfının en iyisi!).
  • .NET-ish'den daha fazla Java-ish hissediyor ... ama gerçekten, agnostik programlama dili; tüm komutlar işlem dışı 'Sürücü'ye gönderilir. Sürücü, tarayıcı örneği için gerçekten bir 'ana bilgisayar' işlemidir. Tüm iletişim, WatiN ile ilgili hız sorunlarını açıklayabilecek süreç sınırları boyunca serileştirilmelidir.
  • Ayrıştırılmış işlemler - "Sürücü" ve "Kontrol" daha fazla sağlamlık, daha karmaşıklık vb. Anlamına gelir, ancak ızgaralar / dağıtılmış test ortamları oluşturmak için de daha kolaydır. "Dağıtım" mekanizması (yani Sürücü ve Kontrol arasındaki iletişim) WebSphere veya diğer mevcut, sağlam, mesaj kuyruğu yöneticisi arasında olsaydı gerçekten çok isterdim.
  • Kutudan çıktığı gibi krom ve diğer tarayıcıları destekleyin.

Her şeye rağmen sonunda WatiN ile gittim; Esas olarak küçük ekran kazıma uygulamaları yazmak istiyorum ve geliştirme için LINQPad kullanmak istiyorum. Uzak bir IE örneğine eklemek (kendimi üretmediğim) büyük bir artı. Ben mevcut bir örnek etrafında keman olabilir ... sonra biraz senaryo çalıştırmak ... sonra tekrar keman vb Bu Selenium ile yapmak daha zor, ama ben "duraklamalar" ne zaman ben komut dosyası gömülü olabilir varsayalım doğrudan tarayıcı ile keman.


2
Detaylı karşılaştırma için teşekkürler.
Sam

18

En büyük fark, Selenium'un farklı tarayıcıları desteklemesi (sadece IE veya FF değil, bkz. Http://seleniumhq.org/about/platforms.html#browsers) .

Ayrıca, Selenium bir uzaktan kumanda sunucusuna ( http://seleniumhq.org/projects/remote-control/ ) sahiptir, yani tarayıcıyı test kodunun çalıştığı makinede çalıştırmanız gerekmez. Bu nedenle Web uygulamanızı test edebilirsiniz. farklı işletim sistemi platformlarında.

Genel olarak Selenyum kullanmanızı tavsiye ederim. WatiN'i birkaç yıl önce kullandım, ancak istikrarından memnun kalmadım (muhtemelen şimdiye kadar iyileşti). Benim için Selenyum için en büyük artı, Web uygulamasını test edebilmenizdir. farklı tarayıcılarda.


3
Selenium'un farklı tarayıcılar için desteği var - Ekstra önemli verilen şu anda Chrome, Safari, FF ve IE 6, 7 ve 8'i desteklemeliyiz.
Tony Ennis

17

Ne. Coypu kullanın. Selenyum'u sarar. Çok daha dayanıklı. https://github.com/featurist/coypu

Güncelle Ye Oliver haklısın. Tamam neden daha iyi? Şahsen IE için Selenium sürücüsünü özellikle çok kırılgan buldum - ajax ağır web sitelerinde Birim Testleri için Selenyum kullanırken tekrar bulduğum bir dizi 'standart' sürücü istisnası var.

Komut dosyalarımı bir test projesi olarak c # 'da yazmak istediğimi söylemiş miydim? Evet Kabul Sürekli bir kurulum içinde testler.

Coypu yukarıdaki ile ilgilenir. Selenium için test fikstürlerine izin veren bir sarıcıdır,

browser.Visit("file:///C:/users/adiel/localstuff.htm")
browser.Select("toyota").From("make");
browser.ClickButton("Search");

... tarayıcıyı (yapılandırılabilir bir marka) döndürecek ve komut dosyasını çalıştıracaktır. Kapsamlı bölgelerle harika çalışır ve ÇOK uzatılabilir.

GitHub'da daha fazla örnek var ve aşağıda belirtildiği gibi, Adrian'ın videosu mükemmel. Bence .net dünyasında tarayıcı tabanlı testler yapmanın en iyi yolu ve Ruby'nin adını izlemeye çalışıyorcapybara


Bu yanıt ÇOK DAHA FAZLA DİKKAT: Coypu SİZ ve otomatik tarayıcı testi arasındaki eksik bağlantıdır! İnanılmaz! Git bak şimdi! Eğer Selenium (ya da belki WatiN) ile mücadele ettiyseniz, AJAX'ı ya da doğru bulma elemanını bulmaya çalışıyorsanız - Coypu dualarınızın cevabıdır ;-)
Oliver

Daha fazla ayrıntı eklemek için teşekkürler, @penderi :-)
Oliver

12

İkisini de kullandım, ikisi de iyi görünüyor. Daha iyi Ajax desteğine sahip olduğu için başım Selenium için. WaTiN'in son kullandığımdan beri aynı olgunluğa sahip olmasına rağmen olgunlaştığına inanıyorum.

En büyük şey hangi geliştirme ortamında olmak isterdiniz? Selenyum ve Watin'in kayıt cihazları var, ancak Selenium tarayıcıda ve watin görsel stüdyoda. + ve - her ikisine de.


6

Şimdiye kadar, şirkete çözümler sunmak için WatiN ile birlikte saf bir Microsoft Mağazasıyız. Bu gelecekte değişebilir.

Daha yeni bir kaynak olarak:

Microsoft, MSDN Magazine 12 /2010'da SpecFlow ile WatiN (havalı BDD-Davranış Odaklı Geliştirme) kombinasyonu içeren bir BDD-Primer yazdırdı. Yazarı Brandon Satrom (msft Developer Evangelist) Aralık 2010'da yukarıdaki bulgularını 1: 1 detaylı olarak öğreten bir Video Web Yayını yayınladı .

Bir yoktur Tanıtım Belgesi SpecLog, SpecFlow ve Team Foundation Server (Geliştirme Driven Kabul Test Driven Development / Davranışı) ile ATDD / BDD Desteklenmesi 04/2011 den Christian Hassa ekibi SpecFlow inşa.


5

Watin kullanıyorum ama Selenyum kullanmadım. Watin üzerinde hızlı bir şekilde çalışıp çalıştığımı ve çok az sorun yaşadığımı söyleyebilirim. Yapmak istediğim hiçbir şeyi düşünemiyorum, onunla çözemedim. HTH


4

Genellikle Selenium kullanıyorum, çünkü testlerim için başlangıç ​​noktalarını kaydetmek için FireFox için Selenium IDE eklentisini seviyorum.


hangi FF sürümünün desteklendiğini biliyor musunuz? IDE'yi FF6 ve FF5 ile sevgisiz denedim. 6 için destek beklemiyordum, ama 5 için şaşırdım.
MikeJ

4

WebAii'yi öneriyorum, çünkü bu benim herhangi bir başarıya sahip olduğum şeydi ve kullandığımda kollarım çok azdı. Selenium'u hiç denemedim ve WaTiN'i çok fazla hatırlamıyorum, en azından başarılı bir şekilde çalışabileceğim noktaya kadar değil. WebAii'nin kendi diyalog işleyicilerinizi uygulamak için bir arayüzü olmasına rağmen, Windows diyaloglarıyla ilgilenen bir çerçeve bilmiyorum.


Ben bir 3 alternatif getirmek için bir +1 vermek istiyorum ama sonra ürün ve nasıl diğer iki ile karşılaştırır herhangi bir deneyim sağlamak için -1 diyorum.
Jeff Martin

Windows iletişim kutuları = js uyarı kutuları? Eğer öyleyse, selenyum buna destek verir. Bu uyarı kutularını iğrenç bulduğum için hiç test etmedim.
jcollum

4

Her ikisini de kullanmayı düşündüm. Kayıt cihazını Selenyum için FF'de bazı testler yapmak için kullandım. Aynı şeyi Watin'de yapmaya çalıştım ve Watin Recorder'ın (2.0.9.1228) sitelerimiz için tamamen değersiz olduğunu gördüm . IE6'da siteyi oluşturuyor gibi görünüyor - sitemizi kayıt için etkili bir şekilde kullanılamaz hale getiriyor. IE6'yı desteklemiyoruz. Kullandığı tarayıcıyı değiştirmenin bir yolunu bulamadım. Orada sadece bir Watin Kaydedici buldum. Birden fazla veya güncel tutulan bir tane varsa, lütfen yorum yapın.

Firefox için Selenyum Kaydedici IDE'sinin kullanımı kolaydır ve testleri C # 'a bağlar. Bu harika değil. Geçici çözüm olan bir ya da iki blog yazısı okumaya rağmen, test süitlerini çalıştıramadım. Yani üretilen kodun biraz manipülasyonu var. Yine de,% 90 çalışıyor ve bu alternatiften daha iyi.

Param / zamanım için, Selenium sadece yeni testler yapmanın kolaylığı için üstündür . IE, Firebug kadar iyi bir yere sahip iyi bir geliştirici araç çubuğuna sahip değil , bu yüzden Firefox'taki gelişimimi başlamak için yapıyorum, bu yüzden Firefox'ta iyi çalışan bir kayıt cihazına sahip olmak büyük bir bonus.

Buradaki sonuç, Churchill'in demokrasi teklifine çok benziyordu: Selenyum, otomatik UI testinin en kötü şeklidir. Diğerleri hariç.


KG ekibinin FF eklentisi ile 'manuel' testler yapabilmesini ve geliştiricilerin üretilen C # testlerini taşımasını sağlayabilmemiz, altyapımızın Selenyum için gitmesi kolay oldu. WaitIn yeterince adil görünüyor - ancak testlerin 'özenli' süreci (WaitIn proje sayfasındaki videoya göre) bu durumda müşterimiz için bir seçenek değildi.
sonstabo

@sonstabo: Gitmeyi umduğum yön bu. Bir gün bir QA departmanımız olduğunda: puppydogeyes:
jcollum

3

Bir teğete gitme riski altında Ax / WatiN'i tavsiye ederim. Axe, testlerin temel test 'dili' hakkında bilgisi olmayan 'Manuel' Test kullanıcıları tarafından Excel'de yazılmasına izin verir. Ismarlama eylemleri yazmak için bir 'Teknisyen' gerekir (IE. Bugün biraz karmaşık bir Tablo arama ve çapraz referans yapmak zorunda kaldım), ancak yazıldıktan sonra eylemler teknik olmayan testçiler tarafından testlerde kullanılabilir.

Ayrıca, Birleşik Krallık Hükümet Geçidi projesinin (6K + testlerin otomatik testlere sahip olduğuna inanıyorum) yakın zamanda tüm testlerini bir hafta içinde Ax / Winrunner'dan Ax / Watin'e taşıdığını duydum! Ve testlerin çoğu oldukça karmaşık - birkaç yıl önce üzerinde çalıştığımı biliyorum ...

Şu anda Selenyum'a bakıyorum, potansiyel bir Müşteri bunu kullanıyor. Ama Axe 'iş at' aracı üzerinde bir katman olarak bir çiş bakmak öneririz.


3

İframe'lere, kalıcı diyaloglara ve web alanları arası iframe'lere erişmeniz gerekiyorsa WatiN bir yoludur. Selenyum komut zaman aşımı istisnaları attığı iframe'leri kaldıramadı. WatiN özellikle web sitesi ShowModalDialog vb gibi IE özel şeyler kullanıyorsa çok daha fazla şey yapabilirdi. WatiN hepsini çok iyi işler. Etki alanları arası iframe erişimi bile yapabilirim.


-1

IE ve FF testi yapmanız gerekiyorsa her ikisini de yapmanız gerekir, ancak bunlar yalnızca sunum testi için çok iyi çalışır. Bir öğenin biraz kapalı olup olmadığını algılayamazlar, sadece elemanların mevcut olduğunu algılarlar. UI / sunum testi için insan gözünün yerini alabilecek hiçbir şey bilmiyorum, ancak yardımcı olmak için birkaç şey yapabilirsiniz (kullanıcıların incelemesi için her adımda sayfaların ekran görüntülerini alın).


"IE ve FF testi yapmanız gerekiyorsa her ikisini de yapmanız gerekecek" - Selenium her ikisini birden yapamaz mı?
marcumka

1
selenium rc yapabilir yani safari ve ff
redsquare

Yalnızca FF kaydedebilir ancak IE ve FF, hem (ve muhtemelen diğerleri) kontrol etmek için RC kullanabilirsiniz
Jeff Martin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.