Fonksiyonel testi uygulamak için sistemin kendisini uygulamaktan daha fazla zaman harcıyoruz, bu normal mi?


12

Temelde, üç ana projemiz var, ikisi web hizmetleri, diğeri ise web uygulaması. Web hizmetlerimizi olabildiğince işlevsel testlerle (her üç projenin de uygun birim testleri vardır) kapsamaktan memnun kalsam da, web uygulaması için fonksiyonel testlerin uygulanması geliştiricinin çok fazla zaman alıyor. Çokça kastediyorum, iki kez, hatta bazen daha fazla, birim test ile test edilen işlevselliği uygulamak için geçen süreyi kastediyorum.

Yönetici politikası, iş açısından kritik olmasa bile (yani yeni bir CRUD) eklediğimiz her işlevselliği test etmektir.

Tüm web hizmetleri işlevlerini test etmeyi kabul ediyorum, çünkü bunları manuel olarak test etmek zordur ve ayrıca bu testler hızlı çalışır ve uygulanması çok fazla zaman almaz.

Peki, sistem kodu, birim testi ve QA tiketlerini yazmaktan ziyade fonksiyonel test yazmaya daha fazla zaman ayırmanın değeri nedir? Bu normal mi? Sadece kritik işlevsellik için fonksiyonel testler yazmamalı ve KG'nin kritik işlevsellik üzerinde regresyon testleri yapmasına izin vermemeli miyiz?

Not: Tıbbi yazılım veya NASA yazılımı geliştirmiyoruz veya kritik bir şey geliştirmiyoruz.


14
Testlerimiz yok. Aslında olayları düzeltmek için çok fazla zaman harcıyoruz. "Bana şimdi ödeme yapabilirsin, ya da daha sonra ödeme yapabilirsin." Daha sonra ve hoş değil.
MetalMikester

3
Evet - resmin bir kısmı, bakımlı bir test paketinin gerçek uygulama için gereken zamanı azaltmasıdır.
Michael Borgwardt


Yanıtlar:


16

Fonksiyonel testler çok önemlidir. Evet, yazmak zaman alıyor, ancak doğru fonksiyonel testleri yazıyorsanız, buna değecektir.

Bir uygulamada otomatik fonksiyonel testler yapmak için birkaç iyi neden vardır.

  • Web sitenize yeni bir özellik eklendiğinde, söz konusu yeni özellik için yapılan değişikliklerin sitenizdeki diğer işlevleri bozup bozmadığını hemen bildirirsiniz.
  • İş gereksinimlerini karşılamak için uygulamanın nasıl çalıştığına ve birlikte çalıştığına dair belgelenmiş bilgi.
  • Bir üçüncü taraf kütüphanesini güncelleme zamanı geldiğinde, güncelleyebilir ve herhangi bir şeyin kopup kopmadığını görmek için fonksiyonel test takımınızı çalıştırabilirsiniz. Her sayfayı kendiniz gözden geçirmek yerine, bir bilgisayarın sizin için yapmasını ve kırılan tüm testlerin bir listesini vermesini sağlayabilirsiniz.
  • Yük testi! Sitenize aynı anda isabet eden binlerce eşzamanlı kullanıcıyı simüle edebilir ve sitenizin nerede yavaşladığını ve baskı altında tokalaştığını görebilirsiniz. Bir gece geç saatlerde sitenin çöktüğünü görmeden önce web sitenizin nasıl davrandığını görebilirsiniz.
  • Fonksiyonel testlerin manuel olarak yapılması zaman alır. Evet, vakaları yazmak uzun sürüyor, ancak ürünü göndermeden önce tamamlamanız gereken 500 sayfa testli bir ciltleyici ile oturmak zorunda kalsaydınız, otomatik testlerin yapılmasını dilersiniz!
  • Test dokümanları güncelliğini yitirir. Yeni bir özellik eklendiğinde, ana test belgesini güncellediğinizden emin olmalısınız. Birisi bazı testleri atlarsa hepiniz aniden "yapılan ve test edilen" sayfalara sürünen hatalar alın. Şu anda böyle bir ortamda çalışıyorum ve sizi temin ederim ki bu bir kabus.

Sonunda, evet bu vakaları yazmak zaman alır, ancak bunları yazmaktan gurur duymalısınız. Bu, kodunuzun çalıştığından ve orada diğer tüm özelliklerle çalıştığından şüphe duyulan bir gölgenin ötesinde kanıtlamanın yoludur. KG size geldiğinde ve bir hata olduğunu söylediğinde, sorunu düzeltir ve ardından sabit olduğunu göstermek ve bir daha asla gerçekleşmediğinden emin olmak için test paketinize eklersiniz.

Bu sizin güvenlik ağınızdır. Birisi içeri girdiğinde ve depolanmış bir proc'u ele geçirdiğinde ve küçük bir değişiklik yaptığında, kodlarıyla çalışacağından, işlemdeki diğer 3 özelliği kırdığını yakalarsınız. Son geceden önceki gece değil, o gece yakalayacaksınız!

Sadece sistem açısından kritik fonksiyonlar için fonksiyonel testler yazmak içindir. Bu size tüm resmi vermez ve hataların gizlenmesine izin verir. Tek yapmanız gereken, sistem açısından kritik olmayan ancak sistem açısından kritik bir işlevle dolaylı olarak etkileşime giren küçük bir özellik eklenmesidir ve bir hata getirme potansiyeline sahipsiniz.


Cevabınız için teşekkürler. İşlevsel testlerin öneminin ve yararlarının farkındayım, endişelerim TÜMÜ test etmenin maliyet-yararı ile ilgili. Son üç yıldır fonksiyonel test geliştiriyorduk, ama şimdi bu projede, ALL testini uygulama maliyetinin üretimde bir hata bulmak, bir bilet yükseltmek ve düzeltmekten çok daha fazlası olduğunu hissediyorum ... merak ediyorum fonksiyonel bir test yapmamanın (maliyet-fayda açısından) bunu yapmamaktan daha iyi olduğu bazı durumlar vardır ve merak ediyorum, ne tür bir test yapacağımızı akıllıca seçmemiz daha iyi olur.
Pablo Lascano

@donsenior ~ test etmenin çok uzun sürdüğünü düşünüyorsanız, kullandığınız araçlara bakın. Onları doğru kullanıyor musunuz? Zaman kazandıran araçları kullanıyor musunuz? Yazma testleri yazmak için daha fazla kodunuz var b / c kodunu yazmaktan daha uzun sürer. Testin doğası budur. Ne için testler yazacağınızı seçmeye başlarsanız, o zaman hiç kimsenin test yazmayacağı veya bu testlerin özensiz olacağı noktasına gelecektir.
Tyanna

neyi test edeceğimi seçmek benim fikrim rastgele bir seçim değil, ama en kritik iş işlevselliğini seçmek (ve bu geliştiricilerin kararı değil, yöneticinin kararı). Ve tam tersini düşünüyorum, geliştiriciler şimdi özensiz test yazma eğilimindedir, çünkü QA'nın test etmesi beş dakika ve geliştiricinin otomatikleştirmesi için iki gün süren işlevsellik bile, hepsini test etmek zorundalar. Belki kullandığımız araçların web uygulamamızı (fitnesse ve java) test etmek için en iyisi olmadığını kabul ediyorum. Korkarım ki, fonksiyonel testi sistemden daha fazla yazma ve sürdürme noktasına yaklaşıyoruz
Pablo Lascano

@donsenior ~ Tabii ki, bir vakayı test etmek için QA 5 dakika sürer, ancak bir bilgisayarı test etmek bir saniyeden az sürer. "El ile test edilmesi 5 dakika süren bir şeyin yazılması neden 2 gün sürer" sorusunu sormalısınız. Yine, araçlarınıza bakın. Belki de KG bazı test senaryoları yazmalı? Sorun sisteminiz için test senaryoları yazmak değil, bu test senaryoları nasıl yazılıyor.
Tyanna

Bu testlerin yapılması bir saniyeden fazla sürüyor (bunun birim testler değil fonksiyonel testler olduğunu unutmayın). Ama bu bir sorun değil, geceleri koşuyorlar. Bence QA'nın bazı test senaryoları da yazması gerektiği konusunda haklısınız, ama ne yazık ki bu verebileceğim bir karar değil. Cevaplarınız için çok teşekkürler, bunu kabul edilmiş olarak işaretledim!
Pablo Lascano

7

2 kereden fazla ... bana biraz fazla geliyor. Bunun nedenlerini analiz etmek isteyebilirsiniz, bunlar şunları içerebilir:

  • testlerin oluşturulması ve bakımı için kötü araç desteği

  • web hizmetlerinin sözleşmeleri tasarımda yeterince açıklanmamıştır. Geliştiricilerin, genellikle zaman alan bir hizalama süreci olan testler sırasında sözleşmeleri çözmeleri gerekir.

Geliştiricilerinizle konuşun.

Sprintlerde geliştiğinizi varsayarsak, sprint'in bir parçasıysa bu fonksiyonel testleri yaparsınız. Bu testler olmadan yapılmaz. Eğer sahip değilseniz, geliştirme aşamasından sonra entegrasyon testi için gereken süre iki katına çıkabilir.


Katılıyorum, belki web uygulamasını test etmek için doğru aracı kullanmıyoruz. Web hizmetlerimizi test etmede sorun yok. Her neyse, testleri nasıl uyguladığımızın doğru ya da yanlış olmasının yanı sıra, maliyetlerden de endişeliyim. Bu noktada, QA departmanı için bazı testler yapmak ve üretimde bulunsalar bile hataları düzeltmek için (maliyet / fayda açısından) daha iyi olduğunu düşünüyorum.
Pablo Lascano

Test etmek için çok uzun zaman almanın olası nedeni olarak kötü tasarlanmış sınıfları hariç tuttunuz. Bu, insanların kodlarını sonsuza dek test ettiklerinde gördüğüm en yaygın nedendir.
Dunk

4

İşlevsel testi uygulamak için zaman harcamak sistemin kendisini uygulamaktan daha mı fazla zaman harcıyor?

Kesinlikle. Gerçekten iyi testler yazmak, çoğu (iyi) mağazada zamanın çoğunu alacaktır.
Yani 2-1 oranı gayet iyi. Daha az deneyimli geliştiricilerin kendileri genellikle testler için her zaman zaman ayırmazlar.


2

Azalan getiriler yasası var. Önce en riskli kod için testler yazdığınızı varsayarsak, sonraki testlerin ürettiği değer zamanla azalır.

Birim testleri koddur, bu nedenle hatalar içerecektir (diğer tüm kodlar gibi). Bu hataları düzeltmek zaman alır.

Deneyimlerime göre birim testleri, test ettikleri sistemden çok daha fazla hata içerir ve bunları düzeltmek sürekli bir yüktür.


1

Bu kalite ile ilgili.

Pazarı almanız gerekiyorsa - uygulamanızı mümkün olan en kısa sürede geliştireceksiniz. Hiç otomatik testler bile yapamazsınız =) ancak uygulamanızı rakiplerinizden önce işitmenize vereceksiniz.

Ama işitmenizin gitmeyeceğini biliyorsanız, onları hayal kırıklığına uğratmayacağınız bir şey yapacaksınız. Her böcek bileti itibarınızı düşürecektir. Bir hatanın itibarınızın yüzde 50'sini, diğerinin ise yüzde 25'ini kaldıracağını hayal edin. Peki çok fazla test olabilir mi?


Bu noktada biletleri gerçekten düşürüyor muyuz gerçekten emin değilim. Belki QA biletlerini azalttık (ancak çok fazla değil), ancak bu testte bulunan hataların oranı (benim görüşüme göre), yazılım testlerinin 2 / 3'üne sahip olmanın maliyetini fonksiyonel testler geliştirmenin maliyetini haklı gösterecek kadar büyük değil.
Pablo Lascano

0

Eğer "normal mi?" Diyerek, yaygın olup olmadığını soruyorsunuz, hayır, kesinlikle değil. Birçok geliştirme ekibinin zayıf test uygulamaları var (birine aitim) ve hatta kaliteli kitaplar testlerden daha fazla işlevselliği kodlamak için zaman harcamak için tavsiye okudum. Normalde sağlıklı olup olmadığını sorarsanız, bağlıdır, ancak gerekenden iki kat daha fazla test, hiçbir testten daha iyidir.

Kritik olmak zorunda değil . Bir işlevselliği test ettiğinizde , son kullanıcılar için yararlı bir şeyi test edersiniz ve her zaman doğru çalıştığını bilmek (ve tahmin etmek değil) sizin sorumluluğunuzdadır. Bu amaç için iki kat daha fazlasına ihtiyacınız varsa, o zaman bu şekilde yapılmalıdır - mümkünse.

Politikanızın otomatik testler konusunda çok katı olması da mümkündür, ancak hedefledikleri kaliteyi, kaynaklarını ve başka nelere atabildiklerini bilmeden söylemek zordur.

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.