2015-04-05 15 views
8

Sorularım çoğunlukla test metodolojisi ile ilgilidir. TDD (Test Driven Development) uygulayan bir kuruluş için çalışıyorum. AngularJS'yi ve dolayısıyla tam test yığınını kullanıyoruz - Jasmine, birim testleri ve e2e testi için İletki için. Son 2 uç testi yeterli mi?

bizim süreç ilk özelliği bizim kullanarak TDD yazmanın başarısız e2e testleri yazma ve başlar bir özellik geliştirirken. Testler sadece kamu yöntemleri için yazılmıştır (kontrolör/direktifler/hizmetler için olsun). Ürün kendi kendine karmaşık bir mantık içermez (istisnaların birkaçı hariç). Geçtiğimiz günlerde, kontrolörler için birim testlerinde herhangi bir nokta bulunmadığı gerçeğini tartışmaya başladık, işlevsellik açığa çıktıklarından,% 100'ü görüşe maruz kalıyor ve yine de e2e testleri kullanılarak test ediliyor. Temel olarak - birim testleri ve e2e testleri üst üste gelir. İlk başta hepimiz kabul ettik, ama sonra bu karar bir Pandora kutusu açtı. Sonuçta, direktifler hakkında aynı şey söylenebilirdi. Öyleyse neden onları test edelim? Ardından servis sorusu ortaya çıktı. Çoğu (% 98) sadece arkadan bir çağrı yapar ve cevabı geri verir. Öyleyse neden httpBackend ile alay etmiyor ve e2e ile test edilen kontrolörleri test ederken hizmetleri test etmiyoruz. Sen drift olsun

....

pratikte örtüşen onları rağmen ben, birim testleri ve e2e testleri hem yaparken fayda görüyorum. Temel olarak - anında geri bildirim ve "yürütülebilir dokümantasyon". Ne yapıyorsun? Diğer faydaları görüyor musunuz ve "sıkmak için meyve suyu" - yukarıdaki iki avantajı elde etmek için en basit uygulamalar için üst üste binen testler yazmaya değer mi?

+0

İyi bir kod yazmak bir fikirdir, böylece silebilirsiniz, ancak tasarım kalıpları ve çok daha fazla Üst düzey soru – Shvilam

+0

Merhaba çocuklar hakkında da soru yazabilirsiniz. Endişenizi anladığım kadarıyla, sorum şu: metodoloji ile ilgili ve bu sorular asla tek başına cevaplara sahip değil. Metodoloji iyi tanımlansa bile, herkes bunu farklı şekilde uygular ve benim sorumun konusu, diğerlerinin test metodolojileri ile ilgili uygulamalarını ve deneyimlerini paylaşmalarıdır. Bunu yapmak için tartışma tetiklenmelidir. Bir kez, sonuç, aradığınız bir cevap için yakınsama olabilir. –

cevap

3

Bu gerçekten yetkili bir cevap olabilir büyük bir konu ve bir şey değil, ama birkaç noktayı kapsayacak şekilde elimden geleni yapacağım.

İlk olarak, testlerin amacını düşünmelisiniz. Agile Testing Quadrants'a göre, birim testi öncelikle ekibi desteklemek için var. Genellikle ürüne yakın olarak yazılırlar (örneğin, geliştiricilerin kendileri tarafından TDD kullanılarak) ve geliştiricinin bu son değişiklikle herhangi bir şey yapmadıklarına dair güvenlerini arttırmaya hizmet ederler. Bu güvenle, geliştiriciler verimli bir şekilde çalışabilir ve pervasız abadon - TDD rüyası ile yeniden düzenlenebilir. Birim testleri, "Bu, müşterimizin amacına uygun mu?" Sorusunu cevaplamıyor, ama bu yüzden orada olmaları mümkün değil. (Ben senin açıklamasına anlarsanız e2e,)

Fonksiyonel test hala test sonuçlarının etrafında hızlı bir dönüş ile takımını destekliyor ama aslında soruyu cevaplamak için başlıyor "Bir kullanıcı şey yapabilir misin?". Kullanıcının gördüğü şeyi test ediyor ve gerçek ürününüzü kullanıcılara anlamlı bir şekilde test etmeye başlıyorsunuz. Çeyrekçiler 3 ve 4, ürünün kuyu nolu iş yapıp yapmadığını (yani, yalnızca işlevsel değil, amaca uygun olduğunu) belirlemeye başlar, ancak bu başka bir konudur.

Bu test anlayışına dayanarak, yanıtın bir kısmı ekip yapınıza bağlıdır. Ayrı bir dev ve test ekibiniz var mı? Eğer öyleyse, devircilerin birim testleri yazmaları (her şeyden önce faydası için) ve test ekibinin diğer çeyrekleri bağımsız olarak ele almaları mantıklı olabilir (e2e'yi uygun gördükleri gibi). Test ve dev ekibiniz aynıysa? Benzer bir geri dönüş süresi (test yazılan -> yararlı sonuç), birim testlerinden mümkün olduğunca işlevsel/e2e testlerinizden çıkabiliyorsa, bunlara odaklanmanız ve her iki yöntem için ödüllerin üst üste binmeden ödüllendirilmesi mantıklı olabilir. Ben verirdim

Kısa cevap basitçe sormaktır "Biz bu testin çıkıyorum Ne faydası var?".Yanıtlarınızı çakışan testler için bulursanız, artıklığın kaldırılması mantıklı olabilir.

Yukarıdaki noktalardan bazıları ve birkaç tane daha görüşülüyor here, bu yüzden şimdilik boğulmayı durduracağım.

+0

Merhaba Steve. Düşünceleriniz ve ayrıntılı cevabınız çok takdir edilmektedir. Daha sonra başvurmak için yazdığınız makalelerin üzerine gideceğim, çünkü bu noktada doğru görünüyorlar. Sonuç olarak takip sorularım olacak. "Turnaround time" konusundaki tanımlarınızı netleştirmek istiyorum. Bir şeylerin kırılması durumunda geliştiricinin geribildirim alması için gereken süreyi mi kastediyorsunuz? Eğer öyleyse, fark önemli (çoğunlukla gerçekte yer alan tarayıcılar nedeniyle). Gördüğüm gibi, e2e ile örtüşmeyen birim testlerinin faydaları a) anlık geri bildirim b) çeşitli uygulama bileşenleri için yürütülebilir belgelerdir. –

+0

Geri dönüş süresi hakkında haklısınız; ünite testleri, 'geçme' veya 'başarısızlık' sonucunu geri almak için genellikle 'kaç' tuşuna basmaktan birkaç saniye veya daha kısa süreye sahip olmalıdır. Karşılaştırma yapmak gerekirse, yükleme testleri gibi bir şey çalıştırmak için günlerce veya haftalarca sürebilir. Durumunuzda, ünite testlerinizin değişiklikler konusunda hızlı bir geri bildirim sağlayarak dev ekibine iyi bir şekilde fayda sağladığına ve e2e testlerinin her birinin ayrı bir amaca hizmet ettiğini ima ederek belirli bir amaca hizmet etmediğine benziyor. –

İlgili konular