Entegrasyon testi sürekli entegrasyona (CI) dahil edilmeli midir?


11

Bir web uygulaması geliştirdiğimizi ve Hudson'ın derleme, birim testi ve statik kod analizi gibi tipik işler yaptığını varsayalım.

Ancak zor olan kısım: Hudson , önceki işler tamamlandıktan sonra entegrasyon testleri yapmak için uygulama sunucusunu dağıtır ve başlatır .

Bu, veritabanı bağlantısı, 3. bölüm uygulama bağlantısı, soket bağlantı noktası dinleme, ortam değişkenleri, sunucu başlatma hatası iletme, vb. Gibi bazı zor şeyler anlamına gelir. Daha da kötüsü, entegrasyon testleri entegrasyon testini kolayca kırabilir.

Entegrasyon testinin sürekli entegrasyona (CI) dahil edilmesi gerekip gerekmediğini düşünüyor musunuz? Manuel olabilir mi? Veya entegrasyon testini basitleştirmek mi?


2
Sorununuz, CI bölümünde değil, testlerin kalitesinde. Entegrasyon testinde, bağımlılıkları ortadan kaldırmak hala iyi bir uygulamadır.
Luc Franken

Yanıtlar:


8

Sürekli Entegrasyon adı çok şey söylüyor. Entegrasyon testi yapmak için zaten entegre olduğunuz yerden daha iyi bir yer var mı?
Tabii ki, bu testlerin yapıldığı tek yer olmamalı, gelişirken, sadece değişikliklerinizin tek başına çalışmasını değil, her şeyden sonra kırılmamanızı sağlamaya çalışmalısınız.
Sonunda, her takım üyesinin, işlerin kırılmaması, suçlanmaya ve testlerin kısıtlandığı aşamaları veya katı aşamaları tanımlamaya çalışmak, karşı üretken olmaktan sorumludur.


4
Ama Sürekli de orada. Entegrasyon testleri dakikalar veya saatler sürüyorsa, sürekli değildir.
U2EF1 10:13

@ U2EF1 ayrı bir entegrasyon sunucusu kurdu.
Kayaman

1
@Kayaman Yorumunuz internette "ayrık entegrasyon sunucusu" için tek sonuçtur. Ne demek istediğini açıklığa kavuşturabilir misin?
Stijn

3

Entegrasyon testinin sürekli entegrasyona (CI) dahil edilmesi gerekip gerekmediğini düşünüyor musunuz?

Geçen entegrasyon testleriniz varsa ve birinin orada durmasını ve düğmelere basmasını gerektirmezseniz, evet - bunları CI sistemine eklemeniz gerekir.

Ancak, entegrasyon testlerinin yürütülmesi çok uzun sürebileceğinden, ne sıklıkta yürütüleceklerini sınırlamanız gerekir. CI sunucusunun boşta olduğu bir gece boyunca yürütülebilirler.


3

Sorunuzu ilk önce cevaplamak için: Evet, bana sorarsanız kesinlikle Sürekli Entegrasyonun bir parçasıdırlar. Ancak entegrasyon testlerinin ne olduğunu netleştirmemiz gerektiğini düşünüyorum.

Martin Fowler, hızlı dağıtım için tüm oluşturma sürecini otomatikleştirmenin bir yolu olarak sürekli teslimattan bahsediyordu. Bu, geliştiricilerin Sürekli Entegrasyon süreci tarafından sağlanan hızlı geri bildirimleri almasını gerektirir. Bu yüzden yapının geçmesi gereken aşamaları tanımlar :

  1. taahhüt edilmiş bir yapı
  2. kapsamlı test
  3. yayılma

Taahhüt oluşturma, geliştiriciler için hızlı geri bildirim nedeniyle belirttiği 10 dakikadan fazla sürmemelidir.

İşleri şu şekilde görüyorum: İlk adımda, en son taahhüdü getirin ve oluşturun. Bu başarılı olursa, sınıflarınızın / sınıf gruplarınızın tanımlandığı ve beklendiği gibi çalışıp çalışmadığını öğrenmek için birim testlerinizi gerçekleştirirsiniz.

Bu başarılı olduğunda entegrasyon test kısmına geçersiniz. Burada, sadece başarıyla test edilmiş birimlerin etkileşimini test edersiniz. Bu, birimlerin girdi ile beslenmesini ve durum / etkileşim / çıktılarının izlenmesini içerir. Hala taahhüt yapısında olduğumuzu unutmayın, bu yüzden bunun da hızlı olmasını istiyoruz. Bu nedenle, dosya sistemi, bir veritabanı, ağ eşleri ve benzerleri ile olan etkileşimlerin hızlı bir şekilde yürütülmesi için saplanması gerekir. Martin Fowler ayrıca, gerektiğinde bellek içi veritabanlarının kullanımını, yalnızca CI sunucusunda hızlı bir şekilde işlemeyi sürdürmek için kullanmanızı önerir.

Ünitelerin gerektiği gibi çalıştığından ve etkileşime girdiğinden emin olduktan sonra, genellikle test kapsamı hakkında bilgi edinmek istersiniz (sadece küçük bir alt sistemi test etmek genellikle yeterli değildir) ve test edilen yapay nesneleri işlevsel test / KG / dağıtım için kullanılabilir hale getirmek istersiniz ( okuyun: kapsamlı testler) testlerinizin programınızı yeterince kapsamadığını düşünüyorsanız. Tam o zaman, hedeflediğiniz üretim ortamını yansıtan bir test ortamı sağlayın ve gerçek bir veritabanı, gerçek dosyalar, gerçek ağ eşleri vb. İçeren testleri çalıştırın.

Sonunda, entegrasyon testleri kod değişiklikleri ile ilgilidir. Yaptığınız değişikliklerin mevcut sistemi bozmadığından emin olmak istiyorsunuz, yani iyi entegre oluyorlar. Öyle olup olmadıklarını öğrenmek için, kendi başlarına doğru davrandıklarından, sonra bağımlılıklarıyla doğru bir şekilde etkileşip etkileşmediklerinden ve hiç test edilip edilmediklerinden emin olmanız gerekir. Tüm bu testleri geçtikten sonra sisteminizden emin olabilirsiniz.

Daha sonraki aşamalar programınızla ilgili herhangi bir sorun bulursa (veritabanınız belirli bir değer döndürdüğünde, ağ bağlantınız durduğunda olduğu gibi) bu testleri entegrasyon testlerinde saptırmaya çalışmalısınız. Taahhüt oluşturma büyük olasılıkla KG'den daha hızlıdır;)

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.