Bir web form sitesini nasıl test ederim? Bana öyle geliyor ki, bunun çoğu devlete ve kullanıcı girdisine bağlı olarak mümkün olmayacak.
Mümkün değilse, geçerli bir otomatik alternatif var mı?
Bir web form sitesini nasıl test ederim? Bana öyle geliyor ki, bunun çoğu devlete ve kullanıcı girdisine bağlı olarak mümkün olmayacak.
Mümkün değilse, geçerli bir otomatik alternatif var mı?
Yanıtlar:
Evet yapabilirsin. Sadece endişelerinizi iyi bir şekilde ayırmak için dikkatli olmalısınız. Kısacası, tüm mantığınızı kodların arkasından kaldırmanız ve diğer sınıflara koymanız gerekir.
Bunu yapmanın iki yaygın yolu vardır.
Basit bir yöntem, tüm etkinlik işleyicilerinizi "Sistem bana hangi bilgileri veriyor? Sayfada hangi bilgileri doldurmam gerekiyor?" Şeklinde yeniden düşünmektir. ve sonra bu dönüşümü yapan bir servis sınıfı sağlayın.
Bu durumda, servis katmanı sunum katmanınızın doğası hakkında çok az şey bilmelidir. Yine de hizmetten döndürülen verileri almanız ve WebForm'un doğru bileşenlerini kodunuzun arkasına yerleştirmeniz gerekir ve bu durum test edilmeden kalır (en azından birim sınamalarında hala tümleştirme sınamalarını kullanabilirsiniz). Fakat bu nadiren kodun yanlış gittiği yerlerde, mantıkta başarısızlığın olasılığı daha yüksektir.
Model View Presenter desenini kullanmak için daha karmaşık, ancak daha etkili bir yoldur . Bunu denediğimizde, Sunucular'ın hızla çerçeveye çok bağlı olduklarını ve MVP'yi ne kadar fazla geliştirirsek, MVP'nin MVC'nin gerçekten MVC olmak istediği ancak olamayacağının ne kadar net olduğunu gördük.
Bununla birlikte, diğerleri bunu çok başarılı bir şekilde yaptı - ağır yükü kaldırmak için bir webformsmvp çerçevesi bile var - bu nedenle kilometreniz değişebilir.
Açıkçası, tüm web formları sayfası bir birim değildir ve bu nedenle birim test edilemez. Ancak, otomatikleştirilmiş testler için yapabileceğiniz bazı şeyler var:
Sorunun "ünite" kısmını kaçırdığım için özür dilerim ...
SeleniumHQ , ön uçtaki testler için arkadaşınızdır. Kara kutu testi gibi bir birim testi değildir. Hala geçerli test durumlarını düşünmelisin ...
Tecrübeden konuşma: Sadece doğru yapıldıysa. "Doğru" derken, en az kod gerisi ve Web Formunu "aptal" yapmak için yukarıda belirtilen Model-View-Presenter gibi bir şey demek istiyorum. Bu, genellikle kahverengi alan uygulamalarında çok zor olduğunu kanıtlar çünkü akılda tutularak tasarlanmadılar ve sayfaları kullanmak için yeniden yazma / yeniden yazma çabası Herkül'e yakın bir çaba.
Birim web testlerinin, genel olarak bir regresyon hatası veya yeni projeler hakkında bir fikir vermek olsa bile, oldukça faydalı olduğunu düşünüyorum.
Durum söz konusu olduğunda, birim testlerinizi UI dışı testlerle yaptığınız gibi oluşturursunuz - testin başında veritabanını temizlerler ve başlangıç durumu dışında hiçbir şey içermek için veritabanını yeniden oluştururlar. Her birim testi daha sonra tek bir sayfayı veya genellikle bir sayfada farklı bir görevi içerir.
http://watin.org/ başka bir web test aracıdır ancak C # /. NET'tir. Testleri birim testleri olarak yazıyorsunuz:
[Test]
public void SearchForWatiNOnGoogle()
{
using (var browser = new IE("http://www.google.com"))
{
browser.TextField(Find.ByName("q")).TypeText("WatiN");
browser.Button(Find.ByName("btnG")).Click();
Assert.IsTrue(browser.ContainsText("WatiN"));
}
}
Şu anda IE tabanlı ancak Firefox ve Chrome için bazı deneysel destekleri var. Javascript etkileşimi dahil olmak üzere manuel testlerde yapabileceğiniz her şeyi hemen hemen otomatikleştirebilirsiniz.
Bir web sitesini gerçekten test edemezsiniz, çünkü web istekleri bir tel üzerinden (veya bir TCP yığını üzerinden) gerçekleşir. Bu nedenle, testler "birim testi" tanımına uymaz, muhtemelen uçtan uca testler olurlar.
Bu tür testler için, sahnelerin arkasında bir web tarayıcısı çalıştıran Selenyum gibi bir paketi kullanabilirsiniz. Yine de bir uyarı kelimesi: genellikle bu tür bir test çok zor ve tahmin edilemez, çünkü birçok hareketli parça var!
Daha da ilginç olanı, neden web formlarını test etmeniz gerektiğine dair biraz endişelendim . Sen arkasındaki koda çok fazla mantık koymuyorsun ve herhangi bir şansın olduğu anemik bir iş mantığın yok mu?
Geçtiğimiz 5 yılda, Jasmine ön uç ünite testleri için önemli bir araç olarak ortaya çıkmıştır. Genellikle, Düğüm ve npm ile otomatik yapı testine dahil edilir
Başına ) https://en.wikipedia.org/wiki/Jasmine_(JavaScript_testing_framework :
Jasmine, JavaScript için açık kaynaklı bir test çerçevesidir. [2] Herhangi bir JavaScript etkin platformda çalışmayı, uygulamayı veya IDE'yi etkilememeyi ve okunması kolay bir sözdizimine sahip olmayı hedeflemektedir. ScrewUnit, JSSpec, JSpec ve RSpec gibi diğer birim test çerçevelerinden büyük ölçüde etkilenir. [3]
Javascript'in tüm sözlerine rağmen, düz bir web formunun birim testi için de kullanılabilir.
Bir ASP.NET sitesi geliştirirken, birim sınamalarını çalıştırabildik:
Mimarinize bağlı olarak bunların hepsini TDD yapmak mümkündür. Test edemediğiniz tek şey işaretleme dosyasının düzenidir.