Ingin atau Selenium? [Tutup]

148

Saya akan segera mulai mengkode beberapa tes otomatis presentasi kami. Tampaknya semua orang merekomendasikan WatiN dan Selenium . Mana yang Anda sukai untuk pengujian otomatis formulir web ASP.NET? Manakah dari produk ini yang bekerja lebih baik untuk Anda?

Sebagai catatan, saya perhatikan bahwa WatiN 2.0 telah ada di CTP sejak Maret 2008, apakah itu sesuatu yang perlu dikhawatirkan?

DavGarcia
sumber
30
Saya tidak berpikir pertanyaan ini harus ditutup. Ini berguna untuk saya dan pengembang lainnya (lihat upvotes). Pertanyaan seperti itu adalah salah satu alasan mengapa saya perlu Stackoverflow. Saya berharap saya bisa menurunkan keputusan admin.
Maxim Eliseev
7
Saya bertanya-tanya mengapa pertanyaan ini ditutup. Ini sangat konstruktif. Saya sedang mempelajari keduanya, dan ingin tahu perbedaannya
marcelo-ferraz
14
Tidak konstruktif ??? ... situs ini dibanjiri oleh para idiot dengan terlalu banyak kendali.
Ronald McDonald

Jawaban:

108

Hanya ingin mengatakan bahwa saya saat ini sedang bekerja keras pada rilis beta WatiN 2.0 di suatu tempat di Q1 tahun 2009. Ini akan menjadi peningkatan besar untuk versi CTP 2.0 saat ini dan pada dasarnya akan memberi Anda fungsi yang sama untuk mengotomatiskan FireFox dan IE sebagai versi 1.3.0 menawarkan untuk mengotomatisasi IE.

Jadi tidak ada masalah di sana.

Semoga ini bisa membantu dalam menentukan pilihan Anda Jeroen van Menen Lead dev WatiN

Jeroen van Menen
sumber
23
@ jcollum Maaf, tapi saya tidak setuju untuk memberi -1. Jeroen hanya menjawab pertanyaan kedua "Sebagai catatan tambahan ...". Dan siapa yang akan lebih memenuhi syarat untuk menanggapi itu, jika bukan Pengembang Utama produk. Hanya menandai respons ini sebagai jawaban terbaik yang dapat dipertanyakan.
Henry99
1
@ Henry99 akan lebih cocok sebagai komentar di bawah pertanyaan atau pertanyaan terpisah. Pertanyaan inti di sini adalah "A atau B". Penulis A atau B seharusnya tidak menanggapi pertanyaan seperti itu karena sudah cukup jelas mereka akan bias.
jcollum
3
@ jcollum Jeroen tidak menyebutkan kualitas produknya vs Selenium, atau mengatakan apa pun yang dapat dianggap bias satu arah atau yang lain. Mungkin Anda tidak membaca bagian kedua dari pertanyaan, tetapi pengembang utama pada proyek ini tanpa pertanyaan adalah orang yang paling memenuhi syarat untuk menjawab pertanyaan itu.
Grinn
2
@ Grinn: Saya menjawab bahwa dalam komentar saya di atas Anda, apakah Anda membacanya? Dia tidak menjawab pertanyaan utama (Watin atau Selenium) dia membahas sesuatu yang seharusnya berada dalam pertanyaan yang terpisah sepenuhnya.
jcollum
Jawaban Bagus ...
Mohsin Awan
58

Jika Anda ingin melakukan investasi jangka panjang yang serius dalam kerangka kerja yang akan terus ditingkatkan dan didukung oleh komunitas, Selenium mungkin merupakan taruhan terbaik Anda. Sebagai contoh, saya baru saja menemukan info ini di blog Matt Raible:

Hingga Jumat, Google memiliki lebih dari 50 tim yang menjalankan lebih dari 51 ribu tes per hari di Selenium Farm internal. 96% dari tes ini ditangani oleh Selenium RC dan mesin Farm dengan benar. 4% lainnya sebagian karena bug RC, sebagian untuk menguji kesalahan, tetapi mengisolasi penyebabnya bisa sulit. Selenium telah diadopsi sebagai teknologi utama untuk pengujian fungsional aplikasi web dalam Google. Itu kabar baiknya.

Saya juga pergi ke salah satu pertemuan Selenium baru-baru ini dan mengetahui bahwa Google menempatkan sumber daya serius untuk meningkatkan Selenium dan mengintegrasikannya dengan WebDriver, yang merupakan alat pengujian otomatis yang dikembangkan oleh Simon Stewart. Salah satu keuntungan utama dari WebDriver adalah ia mengontrol peramban itu sendiri daripada berjalan di dalam peramban sebagai aplikasi Javascript, yang berarti bahwa batu sandungan utama seperti masalah "asal yang sama" tidak akan lagi menjadi masalah.

Mark Erdmann
sumber
1
Selenium tampaknya seperti proyek yang lebih matang saat ini ditambah fakta bahwa Google menggunakannya adalah rekomendasi yang cukup solid (juga saya sudah mencoba Watin dan punya masalah - tidak pernah mencoba Selenium)
Piotr Owsiak
37

Kami telah menguji keduanya dan memutuskan untuk menggunakan WaTiN. Seperti yang orang lain tunjukkan, Selenium memang memiliki beberapa fitur bagus yang tidak ditemukan di WaTiN, tetapi kami mengalami masalah dalam membuat Selenium berfungsi dan setelah kami melakukannya, itu pasti lebih lambat saat menjalankan tes daripada WaTiN. Jika saya ingat dengan benar, masalah pengaturan yang kami hadapi berakar dari fakta bahwa Selenium memiliki aplikasi terpisah untuk mengontrol peramban aktual tempat WaTiN melakukan semuanya dalam proses.

Cole
sumber
4
+1 untuk catatan kinerja, dan penggunaan dunia nyata.
Jeremy McGee
Saya menyadari masalah yang sama: # 1 Kinerja tidak begitu baik dan # 1 tes berjalan pada server Java (yang perlu diatur di [TestSetup]).
Peter Gfader
18
Ini bukan masalah lagi - Selenium 2.0 dilengkapi dengan pustaka WebDriver, yang memungkinkan kontrol langsung browser, tidak hanya melalui server Java.
Igor Brejc
2
Saya belum mencoba Selenium, tapi saya punya masalah dengan Watin. Saya memiliki tes yang tiba-tiba berhenti tanpa alasan yang jelas ditambah kesalahan COM yang dilemparkan secara acak (setidaknya saya tidak dapat menemukan pola).
Piotr Owsiak
30

Saya sudah mencoba keduanya dan di sini adalah pemikiran awal saya ...


Ingin

Yang baik

  • Eksekusi cepat.
  • Alat pembuatan skrip adalah proyek independen; ada 2 yang saya tahu: Wax (berbasis Excel, di-host di CodePlex) dan WatiN Test Record (di-host di SourceForge). Tidak ada yang sekuat IDE Selenium.
  • Dukungan IE yang sangat baik. Dapat melampirkan dan melepaskan ke / dari menjalankan instance. Dapat mengakses handle jendela asli dll. (Lihat contoh skrip di bawah).
  • NuGet dikemas, mudah dijalankan di .NET, lingkungan gaya Visual Studio dan terus diperbarui.

Keburukan

  • Googling WatiN (watin xyz) sering menyebabkan Google merekomendasikan "watir xyz". Tidak banyak dokumentasi di luar sana.
  • Betapa sedikit yang ada (dokumentasi), itu membingungkan; misalnya: pada blush on pertama akan tampak bahwa tidak ada dukungan asli untuk pemilih CSS. Terutama karena ada ekstensi perpustakaan seperti 'WatiNCssSelectorExtensions' dan banyak artikel blog tentang teknik alternatif (seperti menyuntikkan jQuery / mendesis ke halaman). Di Stack Overflow, saya menemukan komentar oleh Jeroen van Menen yang menunjukkan bahwa ada dukungan asli. Setidaknya pemimpin-pengembang menghabiskan waktu di Stack Overflow :)
  • Tidak ada dukungan XPath asli.
  • Tidak ada eksekusi jauh out-of-the-box / eksekusi berbasis grid.

Contoh Skrip (C #). Anda tidak dapat melakukan ini dengan Selenium (setidaknya saya tidak mengetahuinya):

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

Selenium

  • Lebih lambat dari WatiN (terutama karena proses baru harus dibuat).
  • Selektor CSS terintegrasi / dukungan XPath.
  • Selenium IDE itu baik (tidak bisa dikatakan hebat, tapi itu yang terbaik di kelas!).
  • Terasa lebih banyak Java-ish daripada .NET-ish ... tapi sungguh, ini bahasa pemrograman agnostik; semua perintah dikirim ke 'Driver' yang tidak diproses. Driver sebenarnya adalah proses 'host' untuk instance browser. Semua komunikasi harus diserialkan masuk / keluar melintasi batas proses, yang mungkin menjelaskan masalah kecepatan relatif terhadap WatiN.
  • Proses yang dipisahkan - "Driver" dan "Control" berarti lebih kuat, lebih rumit, dll., Tetapi juga lebih mudah untuk membuat grid / lingkungan pengujian terdistribusi. Akan sangat menyukainya jika mekanisme "distribusi" (yaitu komunikasi antara Driver & Control) berada di WebSphere atau manajer antrian pesan yang ada dan kuat.
  • Mendukung chrome dan browser lain di luar kotak.

Terlepas dari segalanya, saya akhirnya pergi dengan WatiN; Saya terutama berniat untuk menulis aplikasi pengikis layar kecil dan ingin menggunakan LINQPad untuk pengembangan. Melampirkan ke contoh IE jarak jauh (yang saya tidak menelurkan diri) adalah nilai tambah yang besar. Saya dapat bermain-main dalam contoh yang ada ... kemudian menjalankan sedikit skrip ... kemudian bermain-main lagi dll. Ini lebih sulit untuk dilakukan dengan Selenium, meskipun saya kira "jeda" dapat tertanam dalam skrip selama waktu yang saya bisa biola langsung dengan browser.

Grynn
sumber
2
Terima kasih atas perbandingan terinci.
Sam
18

Perbedaan terbesar adalah bahwa Selenium memiliki dukungan untuk peramban yang berbeda (bukan hanya IE atau FF, lihat http://seleniumhq.org/about/platforms.html#browsers .

Selain itu, Selenium memiliki server remote control ( http://seleniumhq.org/projects/remote-control/ ), yang artinya Anda tidak perlu menjalankan browser di mesin yang sama dengan kode tes yang sedang dijalankan. Karena itu Anda dapat menguji aplikasi Web Anda. pada platform OS yang berbeda.

Secara umum saya akan merekomendasikan menggunakan Selenium. Saya telah menggunakan WatiN beberapa tahun yang lalu, tetapi saya tidak puas dengan stabilitasnya (mungkin sudah membaik sekarang). Nilai tambah terbesar untuk Selenium bagi saya adalah fakta bahwa Anda dapat menguji aplikasi Web. pada browser yang berbeda.

Igor Brejc
sumber
3
Selenium memiliki dukungan untuk peramban yang berbeda - Ekstra penting karena sekarang kami harus mendukung Chrome, Safari, FF, dan IE 6, 7, dan 8.
Tony Ennis
17

Tidak juga. Gunakan Coypu. Itu membungkus Selenium. Jauh lebih tahan lama. https://github.com/featurist/coypu

Perbarui Ye Oliver Anda benar. Ok kenapa lebih baik? Secara pribadi saya telah menemukan driver Selenium untuk IE khususnya sangat rapuh - ada beberapa pengecualian driver 'standar' yang saya temukan lagi ketika mengendarai Selenium untuk Tes Unit di situs web ajax.

Apakah saya menyebutkan saya ingin menulis skrip saya di c # sebagai Proyek Uji? Ya Tes Penerimaan dalam penerapan pembangunan berkelanjutan.

Nah penawaran Coypu dengan di atas. Ini adalah pembungkus untuk Selenium yang memungkinkan perlengkapan tes seperti,

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

... yang akan memunculkan browser (yang dapat dikonfigurasi) dan menjalankan skrip. Ini berfungsi dengan baik dengan wilayah cakupan dan SANGAT diperpanjang.

Ada lebih banyak contoh di GitHub dan seperti yang disebutkan Olvier di bawah ini, video Adrian sangat bagus. Saya pikir itu adalah cara terbaik untuk mendorong tes berbasis browser di dunia .Net dan mencoba untuk mengikuti namanya Rubycapybara

penderi
sumber
Jawaban ini membutuhkan PERHATIAN LEBIH BANYAK: Coypu adalah tautan yang hilang antara ANDA dan pengujian browser otomatis! Luar biasa! Lihatlah sekarang! Jika Anda pernah bergumul dengan Selenium (atau mungkin WatiN), mencoba untuk mendapatkan AJAX atau elemen dengan benar - Coypu adalah jawaban untuk doa-doa Anda ;-)
Oliver
Terima kasih, @penderi, untuk menambahkan lebih detail :-)
Oliver
12

Saya sudah menggunakan keduanya, mereka berdua sepertinya berfungsi ok. Anggukan saya untuk Selenium karena tampaknya memiliki dukungan Ajax yang lebih baik. Saya percaya WaTiN telah matang meskipun sejak terakhir saya menggunakannya jadi itu harus memiliki hal yang sama.

Hal terbesar adalah lingkungan pengembangan mana yang Anda sukai? Selenium dan Watin memiliki perekam tetapi Selenium ada di browser dan watin ada di visual studio. + dan - untuk keduanya.

rball
sumber
6

Hingga saat ini kami adalah Microsoft Shop murni untuk memberikan solusi untuk perusahaan dan mengikuti WatiN. Ini mungkin berubah di masa depan.

Sebagai sumber yang lebih baru:

Microsoft mencetak di MSDN Magazine 12/2010 sebuah BDD-Primer dengan kombinasi SpecFlow dengan WatiN (cool BDD-Behaviour Driven Development). Penulisnya, Brandon Satrom (msft Developer Evangelist) juga telah memposting video Webcast pada bulan Desember 2010 yang menguraikan secara rinci 1: 1 temuannya di atas.

Ada Whitepaper dari 04/2011 tentang Mendukung ATDD / BDD dengan SpecLog, SpecFlow dan Team Foundation Server (Pengembangan Penerimaan Berbasis Tes / Pengembangan Berbasis Perilaku) dari Christian Hassa , yang timnya membangun SpecFlow.

Henry99
sumber
5

Saya menggunakan Watin, tetapi belum menggunakan Selenium. Saya dapat mengatakan saya bangun dan berlari dengan cepat di Watin dan memiliki beberapa masalah. Saya tidak bisa memikirkan apa pun yang ingin saya lakukan yang tidak bisa saya pahami. HTH

JasonS
sumber
4

Saya biasanya menggunakan Selenium, terutama karena saya suka plugin Selenium IDE untuk FireFox untuk merekam titik awal untuk pengujian saya.

Steven Robbins
sumber
Anda tahu versi FF apa yang didukung? Saya mencoba IDE dengan FF6 dan FF5 tanpa cinta. Saya berharap tidak ada dukungan untuk 6, tetapi untuk 5 saya terkejut.
MikeJ
4

Saya merekomendasikan WebAii karena itulah keberhasilan saya dan ketika menggunakannya, sedikit keluhan saya. Saya tidak pernah mencoba Selenium dan saya tidak ingat banyak menggunakan WaTiN, paling tidak sampai pada titik di mana saya bisa membuatnya bekerja dengan sukses. Saya tidak tahu kerangka apa pun yang berhubungan dengan dialog Windows dengan anggun, meskipun WebAii memiliki antarmuka untuk mengimplementasikan penangan dialog Anda sendiri.

Mark Cidade
sumber
saya ingin memberikan +1 untuk memunculkan alternatif ke-3 tetapi kemudian saya katakan -1 karena tidak memberikan pengalaman dengan produk dan bagaimana membandingkannya dengan dua lainnya.
Jeff Martin
Dialog Windows = kotak peringatan js? Jika demikian, selenium memiliki dukungan untuk itu. Saya belum pernah mengujinya karena saya menemukan kotak peringatan itu menjengkelkan.
jcollum
4

Saya mempertimbangkan untuk menggunakan keduanya. Saya menggunakan perekam untuk Selenium untuk membuat beberapa tes dalam FF. Saya mencoba melakukan hal yang sama di Watin dan menemukan bahwa Watin Recorder (2.0.9.1228) benar-benar tidak berharga untuk situs kami . Tampaknya rendering situs di IE6 - membuat situs kami secara efektif tidak dapat digunakan untuk merekam. Kami tidak mendukung IE6. Saya tidak dapat menemukan cara untuk mengubah browser yang digunakannya. Saya hanya menemukan satu Watin Recorder di luar sana. Jika ada lebih dari satu, atau yang terus diperbarui, beri komentar.

IDE Perekam Selenium untuk Firefox mudah digunakan dan mengirimkan tes ke C #. Tidak hebat dalam hal ini. Saya tidak bisa mendapatkan suite tes porting untuk bekerja, meskipun membaca satu atau dua posting blog yang memiliki solusi. Jadi ada sedikit manipulasi kode yang dihasilkan. Namun, ia bekerja 90% dan itu lebih baik daripada alternatifnya.

Untuk uang / waktu saya, Selenium lebih unggul hanya untuk kemudahan membangun tes baru . IE tidak memiliki toolbar pengembang yang bagus yang hampir sama bagusnya dengan Firebug , jadi saya memulai pengembangan saya di Firefox, jadi memiliki perekam yang berfungsi baik di Firefox adalah bonus yang sangat besar.

Kesimpulan saya di sini sangat mirip dengan kutipan demokrasi oleh Churchill: Selenium adalah bentuk terburuk dari pengujian UI otomatis. Kecuali untuk yang lainnya.

jcollum
sumber
Mampu meminta tim QA membuat tes 'manual' dengan plugin FF dan meminta pengembang untuk membuat tes C # yang dihasilkan infrastruktur kami membuat kesimpulan untuk memilih Selenium cukup mudah. WaitIn terlihat cukup adil - tetapi proses 'melelahkan' dalam membangun tes (sesuai dengan video di halaman proyek WaitIn) bukan pilihan bagi pelanggan kami dalam hal ini.
sonstabo
@sonstabo: itulah tujuan yang saya harapkan. Suatu hari nanti ketika kita memiliki departemen QA: puppydogeyes:
jcollum
3

Dengan risiko pergi bersinggungan, saya akan merekomendasikan Ax / WatiN. Ax memungkinkan tes ditulis dalam Excel oleh Penguji 'Manual' tanpa pengetahuan tentang 'bahasa' tes yang mendasarinya. Memang perlu 'Teknisi' untuk menulis tindakan dipesan lebih dahulu (IE. Hari ini saya harus melakukan pencarian Tabel & referensi silang yang sedikit rumit) tetapi sekali ditulis tindakan dapat digunakan dalam tes oleh penguji non-techy.

Saya juga mendengar bahwa proyek UK Government Gateway (yang saya percaya memiliki 6K + tes tes otomatis) baru-baru ini mengangkut semua tes mereka dari Axe / Winrunner ke Axe / Watin dalam waktu seminggu !! Dan banyak dari tes yang cukup rumit - saya tahu ketika saya mengerjakannya beberapa tahun yang lalu ...

Saya sedang melihat Selenium saat ini, karena Klien potensial menggunakannya. Tapi saya sarankan melihat Ax sebagai lapisan di atas alat 'kuda kerja'.

Mat W
sumber
3

Jika Anda harus mengakses iframe, dialog modal, dan lintas domain iframe, WatiN adalah cara yang tepat. Selenium tidak bisa menangani iframe yang dilontarkannya dengan pengecualian commandtimeout. WatiN Anda bisa melakukan lebih banyak hal terutama jika situs web menggunakan hal-hal spesifik IE seperti ShowModalDialog dll. WatiN menangani semuanya dengan sangat baik. Saya bahkan bisa melakukan akses iframe lintas domain.

kesavkolla
sumber
-1

Anda harus melakukan keduanya jika Anda perlu melakukan pengujian IE dan FF, tetapi mereka hanya akan bekerja dengan baik untuk pengujian presentasi. Mereka tidak dapat mendeteksi jika satu elemen sedikit mati, hanya saja elemen-elemennya ada. Saya tidak tahu apa-apa yang bisa menggantikan mata manusia untuk pengujian UI / presentasi, meskipun Anda bisa melakukan beberapa hal untuk membantunya (ambil tangkapan layar dari halaman pada setiap langkah untuk ditinjau pengguna).

Pelit
sumber
"Anda harus melakukan keduanya jika Anda perlu melakukan pengujian IE dan FF" - tidak bisakah Selenium melakukan keduanya?
marcumka
1
selenium rc dapat dilakukan yaitu safari dan fs
redsquare
Anda dapat merekam hanya dalam FF tetapi Anda dapat menggunakan RC untuk mengontrol IE dan FF (dan mungkin yang lain)
Jeff Martin
Bukan "mungkin": seleniumhq.org/about/platforms.html#browsers .
Igor Brejc