Bir ev ödevi sorusu gibi kokuyor.
Yazılım alanında test yapmak gerekli mi?
Evet. Kesinlikle. Bütün seviyelerde. Birkaç uzmanlık alanı dışında, kodumuzu belirli hatalara karşı (en azından makul bir zaman diliminde değil) doğru olarak matematiksel olarak ispatlayabileceğimiz bir aşamada değiliz; kırıldığı yer.
Dikkatli bir yazılım oluşturursak, neden test etmeliyiz?
Test sadece kodlama hatalarını bulmakla ilgili değildir. Ayrıca tüm gereksinimlerinizi yerine getirdiğinizden ve genel sistemin beklendiği gibi çalıştığından emin olmakla da ilgilidir. Başarısız bir işlemin belirli bir hata kodu döndürmesi gerekliliği varsa, hem işlevselliğin var olduğunu hem de doğru çalıştığını doğrulamak için bir test yazmam gerekir.
Tüm bunlar, şartnamenin ve tasarımın eksiksiz, doğru ve dahili olarak tutarlı olduğunu varsayar; bu genellikle böyle değildir. Eğer mektuba ilişkin şartnameye uysanız ve tasarımı son noktaya ve noktalı virgül sonuna kadar takip etseniz bile, teknik özellik veya tasarım kötüyse, entegrasyon zamanında problemler olacaktır. Genelde, sistem veya entegrasyon testi, şartnamenin kendisinin bir sorunlu olduğunu ve gözden geçirilmesi gerektiğini öğrendiğinizdedir (aşağıdaki savaş hikayesine bakın).
Testten sonra, bu amacı gerçekleştirdiğimizden (ürün / yazılım amaçlandığı gibi çalıştığından) emin olabileceğimizden emin olabilir miyiz? Mümkün mü?
Hayır,% 100’e değil. Akla gelebilecek her giriş veya uygulama yolu kombinasyonunu, en basit kod dışında test edemiyoruz. Tüm çevresel faktörleri hesaba katamayız. Tüm olası arıza modlarını hayal edemiyoruz.
Biz konum bir noktaya test edebilirsiniz makul herhangi bir büyük sorunlar olmadığından emin. Yine, bu yüzden her seviyede test etmemiz gerekiyor. Kodunuzun kenar koşullarını doğru şekilde işlediğinden emin olmak için bir testler takımı yazın (hatalı girdi, beklenmeyen sonuçlar, istisnalar vb.). Kodunuzun gereksinimlerini karşıladığını doğrulamak için birim testi. Uçtan uca işleme doğrulamak için sistem testi. Bütün bileşenlerin birbirleriyle doğru konuştuğunu doğrulamak için entegrasyon testi. Her şeyin müşterilerin sizi vurmak istemeyeceği şekilde çalıştığından emin olmak için kullanılabilirlik testi yapın.
Gerçek dünya senaryosu - Bazen bir GUI servisine güncellemeleri ekrana gelen bir tabloda görüntülemek üzere gönderen bir arka uç sistemi üzerinde çalışıyordum. Proje sırasında, ekrana filtreleme eklemek için bir gereksinim eklendi (örneğin, operatör tablodaki girişlerin bir alt kümesini görüntülemeyi seçebilir). Tasarım hata # 1 - filtreleme gerektiğini GUI hizmeti onlar haline gelmeden sorunları tanımak, fakat siyasete ve benim yetersizlik (Bu, ekran yönetimi fonksiyonları ekran yönetim yazılımı sorumluluğunda olması gerektiğini antikacı kavramı Mükemmel konumu var) tarafından yapılmıştır sorunlar , bu gereksinim arka uç hizmete verildi. Tamam, sorun değil, bunu yapabilirim. Durum değişikliklerini süzün, bir ileti alıyorum ve ardından için bir oluştur veya sil mesajı gönderiyorumtablodaki her satır , çünkü arayüz böyle çalışır (tasarım hatası # 2 - tek bir mesajda birden çok satıra güncelleme göndermenin yolu yoktur; tek bir "temizle" veya "sil" mesajı gönderemedik bile. tüm masa).
Eh, her şey gelişim sırasında iyi çalışır; ünite, sistem ve entegrasyon testleri doğru bilgileri gönderdiğimi ve filtre değişikliklerini doğru yaptığımı gösteriyor. Sonra kullanılabilirlik testine giriyoruz ve her şey çok düşüyor , çünkü veri hacmi çok zordu . Arka uç servisim ile GUI arasındaki ağ gecikmesi .15 ile .25 saniye arasındaydı. Sadece bir düzine satır için güncelleme göndermek zorundaysanız fena değil. Ölümcül birkaç yüz için güncellemeler göndermek zorunda kaldığınızda. Filtre durumunu değiştirdikten sonra GUI'nin donmakta olduğuna dair hata raporları almaya başladık; peki, hayır, olan şey, birkaç dakika beklemekti. Ekranı güncellemek için, çünkü her seferinde bir satır üst üste güncelleme protokolü gerçek bir senaryoyu idare edemedi.
Bunların hepsinin , en temel analizleri önceden yapmak için uğraşmamış olsaydık, ana müteahhitten herkes tarafından benim için küçük yaştan aşağıya kadar beklediğine ve olması gerektiğine dikkat edin. Teklif edeceğim tek savunma, altı ay süren bir projenin ikinci yılını teslimattan hemen sonra hurdaya çıkacak olmamızdı ve hepimiz bunun arkasını görmek için çaresiz kaldık.
Bu bizi test etmek için son nedene getiriyor - CYA. Gerçek dünya projeleri birçok nedenden dolayı başarısız olur, çoğu politiktir ve işler ters gittiğinde herkes iyi niyetle davranmaz. Parmaklar suçlamalar yapılmış olsun, sivri olsun ve günün sonunda size en azından gösteren bir kayda noktaya gerekiyor senin olması gerektiği kadar malzeme çalıştı.
If we create a software with care in during its development period then why should we go for Test?
- çünkü ne olursa olsun, en yetenekli programcı bile hata yapar.