En iyi uygulamaların her zaman bir amacı, bir nedeni vardır. Tasarımınızda bu nedenleri göz önünde bulundurmak her zaman iyi bir fikirdir - özellikle bu en iyi uygulamaları nasıl ve ne kadar zor uygulayacağınıza karar vermeye çalışırken.
Bu durumda, her test testini tek bir şey yapmanın arkasındaki temel sebep, ilk şey başarısız olursa, ikincisinin test edilmeyeceğidir. Çok fazla fikir üreticisi, her şeyi mümkün olan en küçük bitlere ayırmada ve her biti olabildiğince fazla şişkinlikte sarmada değer bulduğu için, bu, her testin tek bir iddia içermesi gerektiği fikrini doğurdu.
Bunu körü körüne takip etme. Her test bir şeyi test etse bile, yine de her "şeyin" ne kadar büyük veya küçük olması gerektiğine karar vermeniz gerekir ve bunu yapmak için her testin neden bir şeyi test etmesini istediğinizi aklınızda bulundurmalısınız - emin olmak için ilk şeydeki bir hata, ikinci şeyi denenmeden bırakmak değildir.
Yani, kendinize şunu sormalısınız - "burada gerçekten bu garantiye ihtiyacım var mı?"
Diyelim ki ilk test durumunda bir hata var - HTTP yanıt kodu değil 200
. Bu yüzden kodu hacklemeye başlıyorsunuz, neden yanıt kodunu alamadığınızı anlayın ve sorunu düzeltin. Şimdi ne olacak?
- Testi el ile tekrar çalıştırırsanız, düzeltmenizin sorunu çözdüğünü doğrulamak için, ilk hatanın gizlediği başka bir sorunla karşılaşmanız gerekir.
- Manuel olarak çalıştırmazsanız (belki de çok uzun sürdüğü için mi?) Ve otomatik test sunucusunun her şeyi çalıştırmasını beklerken düzeltmenizi itin, farklı testlere farklı eklemeler koymak isteyebilirsiniz. Bu durumda döngüler çok uzundur, bu nedenle her döngüde çok sayıda hata keşfetmeye çalışmak önemlidir.
Dikkate alınması gereken birkaç şey daha var:
İddia bağımlılıkları
Açıkladığınız testlerin sadece bir örnek olduğunu biliyorum ve gerçek testleriniz muhtemelen daha karmaşıktır - bu yüzden söyleyeceğim şey gerçek testlerde çok fazla güçle geçerli olmayabilir, ancak yine de biraz etkili olabilir. düşünmek isteyebilir.
Yanıtları JSON biçiminde döndüren bir REST hizmetiniz (veya başka bir HTTP protokolünüz) varsa, genellikle normal nesneleri döndüren normal yöntemler gibi REST yöntemlerini kullanmanızı sağlayan basit bir istemci sınıfı yazarsınız. Müşterinin çalıştığından emin olmak için ayrı testler olduğunu varsayarsak, ilk 3 önermeden vazgeçirdim ve sadece 4 tane tuttum!
Neden?
- İlk iddia gereksizdir - HTTP yanıt kodu 200 değilse istemci sınıfı bir istisna atmalıdır.
- İkinci iddia gereksizdir - yanıt boşsa, sonuç nesnesi boş olacaktır veya boş bir nesnenin başka bir temsili olacaktır ve X anahtarını koymak için hiçbir yere sahip olmayacaksınız.
- Üçüncü iddia gereksizdir - JSON geçersizse, ayrıştırmaya çalıştığınızda bir istisna alırsınız.
Bu nedenle, tüm bu testleri çalıştırmanıza gerek yoktur - sadece dördüncü testi çalıştırın ve hatalardan herhangi biri ilk üç deneme gerçekleşmeye çalışırsa, gerçek iddiayı bile almadan önce test uygun bir istisna ile başarısız olur.
Raporları nasıl almak istersiniz?
Diyelim ki bir test sunucusundan e-posta almıyorsunuz, bunun yerine KG departmanı testleri yürütüyor ve başarısız testler konusunda sizi bilgilendiriyor.
KG'den Jack kapıyı çalıyor. İlk test yönteminin başarısız olduğunu ve REST yönteminin hatalı bir yanıt kodu döndürdüğünü söylüyor. Ona teşekkür ediyorsun ve kök nedeni aramaya başlıyorsun.
Sonra QA'dan Jen geliyor ve üçüncü test yönteminin başarısız olduğunu söylüyor - REST yöntemi yanıt gövdesinde geçerli bir JSON döndürmedi. Ona zaten bu yönteme baktığınızı söylüyorsunuz ve kötü bir çıkış kodu döndürmesine neden olan şeyin aynı zamanda geçerli bir JSON olmayan ve daha çok istisna yığını izine benzeyen bir şey döndürmesine neden olduğuna inanıyorsunuz.
Çalışmaya geri dönüyorsunuz, ancak QA'dan Jim geliyor, dördüncü test yönteminin başarısız olduğunu ve yanıtta X anahtarı olmadığını söylüyor ...
Nedeni bile göremezsiniz çünkü bilgisayar ekranınız olmadığında koda bakmak zor. Jim yeterince hızlı olsaydı zaman içinde kaçabilirdi ...
Test sunucusundan gelen e-postaların işten çıkarılması daha kolaydır, ancak yine de - SADECE test yönteminde bir sorun olduğunu bildirmek ve ilgili test günlüklerine kendiniz bakmak istemez miydiniz ?