Evrelemenin anlamı nedir?


18

Bunu hallettiğimi düşündüm, ama Sürekli Teslimat (mükemmel kitap) okuduktan sonra biraz kafam karıştı. Aşağıdakiler için sunucu sahibi olmaktan bahsediyorlar:

  • gelişme
  • çeşitli otomatik test formları
  • kullanıcı kabul testi (UAT) - yani müşteri ile birlikte oturmak ve onlara göstermek ve keşif testi yapmalarına izin vermek. Şirket içi test uzmanları bu kurulumu keşif testi için de kullanabilir.
  • sahneleme
  • üretim.

Sahnelemeyi her zaman UAT işlevini sağlamak olarak düşünürdüm, ama sahnelenmeyi ayrı bir düzey olarak görüyorlar. Peki bu şemada, hazırlama sunucuları hangi işlevi sağlar?


10
Bu metodolojiye katıldığımı söyleyemem. UAT daima canlı sisteme mümkün olduğunca yakın özellikler üzerinden yapılmalıdır (örn. Evreleme). UAT'yi kaç kez yaptığımızı ve herkesin "canlı sistem daha hızlı olacak" olduğunu binlerce kez açıklamamız gereken hız sorunlarından şikayet etmesini sayamıyorum. Ve sonra canlı sistem daha hızlı olmadığında, koddaki bir hata veya bir SQL sorgusu nedeniyle, kendi kelimelerinizi yemelisiniz.
Mark Henderson

UAT = Kullanıcı kabul testi değil mi?
Martin Thoma

Yanıtlar:


13

Evreleme, tüm ürün sistemlerini devreye sokuyor, ancak aslında henüz kullanmıyor. Kullanıma girdiklerinde "üretim" olurlar. Kullanılacağı gibi her şeyi yerine koymalı, test etmeli, sonra anahtarı çevirmelisiniz.

UAT genellikle üretimde kullanılacak donanım / yazılım / yapılandırmadan önemli ölçüde farklı "test" ortamını kullanır.

Örneğin, çalıştığım yerde müşterilerimiz sunucularımızda çalışan bir VM ortamında her şeyi test ediyorlar. Sistemleri yayına girdiğinde, muhtemelen mevcut sistemlerine entegre olacak şekilde, donanımlarında, tesislerinde çalışacaktır; sunucularımızla veya test ortamımızla hiçbir ilgisi olmayacaktır (kodun ve bazı yapılandırmaların oradan kopyalanması hariç ...)


Genellikle UAT'de değil, aynı zamanda üretime başlamadan önce hazırlama sunucusunda da daha fazla test yapılır.
jftuga

3
@jftuga, ilk paragrafın son cümlesine bakınız ...
Chris S

@Chris S: Sizi doğru anlarsam, "evreleme sunucusu" diye bir şey yoktur, sadece havuz dışında olan ve şu anda son kullanıcılara sunulmayan bir üretim sunucusu. Bu mantıklı ve takip ettiğim bir metodolojidir, ancak bu sunuculara "hazırlama sunucuları" demiyorum, sadece üretim sunucuları (havuzda olmayan). Hazırlama sunucuları kullanan çalıştığım her yerde ayrı sunucular olarak bulunduğundan, bir hazırlama sunucusu açıklamanızın bu terimin standart kullanımı olduğunu düşünmüyorum. İyi bir fikir, ama normalde "evreleme sunucusu" (ne olursa olsun, benim deneyimim) ile kastedilen değil.
iconoclast

1
@Brandon Deneyiminizde bir "Evreleme Sunucusu" nedir? Bu, bir sunucuyu "zıplatmak" gibi bölgesel bir fark olabilir.
Chris S

Bana göre organizasyona göre değişiyor. Bir UAT sunucusu olarak, geliştiricilerin uygulamayı sözde üretime özdeş bir ortama ve muhtemelen başka şeylere koymaları için bir sunucu olarak kullanıldığını gördüm. (Şahsen tek iyi stratejinin sahneleme için gerçek bir üretim sunucusu kullanmak olduğunu düşünüyorum.) Farklı kuruluşlar kendi kültürlerini geliştirdikçe, kendi sözlüklerini de geliştirdiklerini ve bu nedenle endüstri genelinde standart bir anlamı olması gereken kelimeleri sık sık düşünüyorum. maalesef yapma.
iconoclast

17

Çok büyük bir internet şirketinde sürüm yönetimi ekibinde çalışıyorum. Esasen yukarıda özetlediğiniz süreci kullanıyoruz ve bu işlemi bilerek seçtik. Metodolojimizde, evreleme, üretimde son bir test seviyesi için bir dallanma mekanizması işlevi görür.

Üretime gitmeden önce tüm testleri yapmak istersiniz, ancak çok sayıda kullanıcıyla geniş, karmaşık bir ortamda, bu ulaşılması çok zor bir hedeftir. Özellikle, test yazılımını KG'ye yeterli şekilde yüklemek neredeyse imkansızdır. Fonksiyonel testi otomatikleştirmek yük testinden çok daha kolaydır. Sunucularınıza isabet eden binlerce kullanıcı olduğunda, işler garip ve tahmin edilmesi zor bir şekilde başarısız olur.

İşte yaptığımız şey:

  • gelişme
    • sürekli entegrasyon ve otomatik test içerir
  • sürüm testi
    • grubum sürümün kendisini analiz ediyor
    • yükleme günlüklerini gözden geçirme
    • test geri alma
  • QA
    • kullanıcı Kabul Testi

Evreleme ve üretim arasında daldığımız nokta budur. Birkaç haftada bir başlayan yeni bir trenle, sürümler için bir tren modeli kullanıyoruz. Numaralı trenler bile (üretimde olan) evreleme sunucularına gider. Tek numaralı trenler bunu yapmaz.

Eşit trenler arasında, geliştiriciler hazırlama sunucularına bireysel değişiklikler gönderme yeteneğine sahiptir ( bu değişiklikler elbette KG tarafından test edildikten sonra ). Bu, yazılımlarının gerçek bir üretim ortamında beklendiği gibi çalıştığını doğrulamalarını sağlar. Bu genellikle daha yüksek riskli olduğu düşünülen bileşenler için ayrılmıştır, her küçük parçayı sahnelemeye itmiyoruz.

Daha sonra, herkes bir sonraki tren başladığında, hazırlama sunucularında ne olduğunu sileceğini ve onları tekrar tren taban çizgisine ayarlayacağını anlar. Geliştiriciler, değişikliklerinin trene bindiğinden emin olurlar veya henüz genel kullanıma hazır olmadıklarına karar verirler, bu durumda bu değişiklikler hazırlama sunucularında silinir.

Özetle, kısa cevap (en azından bizim için) KG'deki karmaşık sistemleri tamamen test etmenin imkansız olmasıdır. Evreleme, sınırlı üretim testi yapmak için güvenli bir yol sağlar.

İlgili bir notta, yayınlama sürecimizin nasıl çalıştığına dair verdiğim bir sunumdaki slaytlarım .


5

Evreleme için en basit açıklama, dağıtım sürecinizi ve gerçek veri kaynağını kullanarak test etmektir. Bazı sistemler evrelemeyi test ortamlarıyla birleştirir, ancak büyük ölçekli sistemler için dağıtım işlemi çok karmaşık olabilir veya canlı / prodüksiyon veri kaynağına bağlandığınızda ekstra test adımları gerekebilir. Bu durumda bir hazırlama ortamı, dağıtım işleminizi test etmenizi ve canlı verileri kullanarak son dakika hatalarını kontrol etmenizi sağlar ve ardından işler çalıştığı doğrulandıktan sonra sahne ortamını hızlı bir şekilde üretim ortamına geçirebilirsiniz.

Bunun bir örneği, yeni bir sürümü dağıtmak için 5-25 dakika gerektiren Windows Azure olabilir, ancak bir hazırlama ortamına dağıtabilir, sınama yapabilir ve ardından üretim ve hazırlama ortamlarını anında değiştirebilirsiniz .


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.