Genel olarak
Sürekli entegrasyon hattınıza güvenecek kadar otomatik testiniz ne zaman var?
Ne hakkında emin olmak istediğinizi düşünürseniz, cevap muhtemelen netleşir. Nihayetinde 1-1; her test sizi test ettiği tek şeyden emin yapar:
- Birim testi, bir sınıfın (veya modülün) test edildiğini yaptığına dair güven verir.
- Entegrasyon testi, birkaç birimin test edilen şekilde birlikte çalıştığına dair güven verir.
- Uçtan uca testler, tüm uygulamanın testte açıklandığı gibi belirli bir şey yaptığına dair güven verir.
Sorunuzu formüle ettiğiniz yoldan, büyük olasılıkla şu anda büyük resimli bir iş anlayışıyla düşünüyorsunuz, örneğin:
Uygulamamın X yapabileceğinden emin olmak istiyorum .
Böylece X yapmaya çalışan ve bunu doğru yapıp yapmadığını kontrol eden bir uçtan uca test yazıyorsunuz.
Daha somut
Hepsi çok referanslıdır, ama bunun nedeni de budur. Orada sadece değil kendisine daha.
Örneğin, yemek tarifleri oluşturmak için bir uygulama yazdığınızı düşünün. Bir özellik, farklı miktarlarda birkaç çeşit peynir eklerseniz, size doğru sıcaklık ve zamanı verir, böylece hepsi erir.
Böylece CheeseMeltCalculator
100g Gouda ve 200g Emmental peyniri için bir birim testi yazabilirsiniz ve daha sonra sıcaklık ve zamanın doğru olduğunu kontrol edin. Bu CheeseMeltCalculator
, 100g Gouda ve 200g peynir için çalıştığından emin olabileceğiniz anlamına gelir . Yerine 200g Gouda 300g ile bu testi tekrar Şimdi, eğer sen olabilir oldukça emin farklı değerleri için doğru çalıştığından emin. Sen testleri ekleyebilir 0
, -1
ve int.MaxValue
Gouda gr kodu çelme vermediğinden emin olmak için (veya amaçlandığı gibi düzgün gezileri) garip girişi için.
CheeseMeltCalculator
Tüm gıda sıcaklığı ve zaman hesaplama sürecine doğru bir şekilde dahil edildiğini kontrol etmek için bir entegrasyon testi yazabilirsiniz . Bu yanlış giderse, ancak CheeseMeltCalculator
yukarıdaki testler iyi ise, hatanın diğer hesap makinelerinde veya farklı hesap makinelerindeki verilerin birleştirilme biçiminde olduğundan emin olabilirsiniz.
Son olarak, tüm bir tarif oluşturmak için uçtan uca bir test yazabilirsiniz ve kontrol ettiğiniz şeylerden biri sonuç sıcaklığı ve süresidir. Önceki 2 test seviyesi iyiyse, ancak bunun için yanlış giderse, o parçaların doğru olduğundan emin olabilirsiniz ve hata, sıcaklık hesaplamasının uygulamaya nasıl entegre edildiği hakkında bir şeydir. Örneğin, kullanıcı girişi doğru şekilde aktarılmamış olabilir.
Ve son olarak , eğer bu testlerin hepsi iyi ise, o zaman " birkaç farklı türde peynir eklerseniz, size doğru sıcaklık ve zamanı verir, böylece hepsi erir "
Uzun lafın kısası
Mesele şu ki, "doğru çalışıyor" testine sahip olamazsınız. Sadece "X yaparsam Y olur" testini yapabilirsiniz.
Ancak, bu tam olarak proje için teknik özelliklerde olması gereken şeylerdir. " Birkaç farklı türde peynir eklerseniz, size doğru sıcaklık ve zamanı verir, böylece hepsinin erimesini sağlar " gibi bir ifade, müşteriye sadece bitmiş ürünün ne yapacağına dair net beklentiler vermekle kalmaz, aynı zamanda döndürülebilir otomatik testlere
ilave bilgi
Kullanıcı Richard bu bilgileri bir düzenlemeye ekledi:
Martin Fowler, web sitesinde en yaygın stratejiler hakkında çok güzel bir özete sahiptir: https://martinfowler.com/articles/microservice-testing/
Bunu kaldırmak istemiyorum, ama şunu söylemek istiyorum: Bu cevaba kıyasla, bu bir "özet" değil, hoş grafikler ve her şeyle daha derinlemesine bir açıklama.
Benim tavsiyem şöyle olacaktır: Cevabımı okuduktan sonra her şey size mantıklı geliyorsa, işiniz bitmiştir. İşler hala belirsiz görünüyorsa, biraz zaman ayırın ve bağlantılı makaleyi okuyun.