[Gelistirici] [RFC] Test Süreçleri

Ekin Meroğlu ekin at pardus.org.tr
22 Eki 2008 Çar 15:07:10 EEST


Merhaba;

Çarşamba 22 Ekim 2008 tarihinde, Doruk Fisek şunları yazmıştı: 
> Wed, 22 Oct 2008 11:57:41 +0300, Ekin Meroğlu <ekin at pardus.org.tr> :
> > edelim, birikince birlikte alırız kararlı depoya demek istiyorsan, o
> > zaman da 15 gün önceki depo ile test edilmiş x paketini, depoya n
> > tane paket daha girdikten sonra test edilmiş ve OK'lenmiş say(a)
> > mayacağımı peşinen söyleyeyim.  
>
> Kafama takilan bir soru var.

Öncelikle, test sisteminin bu halinden son derece rahatsızım, ama daha iyisi 
nasıl olur hakkında fazla fikrim yok - aklımdakilerin çoğu en az bu hali 
kadar kötü, en çok bu hali kadar da iyi.

Şimdi : yukarıda alıntıladığın paragraftan önceki paragrafa "bu testleri depo 
bütünlüğünü de test etmek için yapıyoruz" mealinde bir giriş yapmıştım, 
kesince tekil paket testleri için söylüyor gibi olmuşum..
 
> Bu mantik kullanici illa tum sistemini guncellemeli demeye getiriyor.
> Kullanici aradan paket secip guncellerse, ya da bir paket kurmaya
> kalktigi icin sadece system.base guncellenirse sistemi patlayabilir
> anlamina geliyor.
>
> Diger yandan da dusun ki, kararli depoya x paketi girdi bir guncelleme
> serisi ile. Daha sonraki guncelleme serisi ile girenler x paketini
> bozmus olabilir diye x paketinin testini yok mu sayacagiz?
> Saymayacaksak, tekil paket guncellemelerinde niye yok sayiyorsun?

Hayır, o paketin kendi içinde sorunsuz olabileceğini - hatta olduğunu kabul 
ediyorum, ama o güncellemelerden bir gün önce sistemi güncel olan bir 
kullanıcının paket yöneticisinden "getir şu güncellemeleri" dediğinde de bu 
işlemi sorunsuz yapabiliyor olduğundan da emin olmalıyız diyorum : 2007'de 
yaşadık, tek başlarına sorunsuz olan bir sürü paket bir araya gelince 
güncellemelerin sonuçlandırılamadığı bir depo oluşturdu (detayını sorma, 
hatırlamıyorum :-()

> Sayacaksak, oyleyse depoya her guncelleme girmeden once tum deponun
> bastan asagi test edilmesi mi gerekiyor sence?

Deponun herhangi bir anında depo bütünlüğünün en azından
 
- (revdep rebuild gibi otomatik bir araçla) güncellemelerdeki eksik kitaplık 
sorunları,
- temiz bir en son sürüm kurulumunun deponun o anki haline güncellenmesinin 
mümkün olup olmadığı,
- deponun bir önceki halinden bu haline sorunsuz güncellemenin mümkün olup 
olmadığı

açılarından sorunsuz olduğundan emin olmak gerekiyor demek istiyorum. Tabii ki 
bu senaryolar olası durumların çok küçük bir bölümünü kapsıyor, ama en sık 
karşılaştığımız sorunları test etmek için işimize yarıyor.  
Tüm paket testlerini deponun belli bir state'i ile yapmak ek olarak paketlerin 
birbirlerini bozma ihtimallerini de test etmemizi sağlıyor, ama bahsettiğim 
bu değildi.

> Bastan beri soyledigim gibi, test sureci ile kurunun yaninda cok fazla
> yas yakmaya calisiliyor gibime geliyor. Sorun cikarip ortaligin
> karismasina yol acan belli paketler var. Onlari belirleyip, onlarin
> guncellenmesinde testlere ekstra ilgi gosterip, kalanlara sadece temel
> testleri (paket menuye yerlesiyor mu, aciliyor mu) uygulamak daha
> fizibl olur.

Kişisel fikrim böyle bir listenin kolay maintain edilemeyeceği yönünde, ama 
yapılmaz da değil. 

> Daha da fizibl oldugunu dusundugum soyle bir radikal onerim var :
>
> 1) Sadece guvenlik guncellemelerinin yapildigi bir 2008 deposu olsun.
> Bu depoya giren her guncellemede tirnagina kadar tum yazilimlar testten
> gecsin. Bu depoya "kararli" olacak densin. Bir paket patlarsa test
> takimini dovelim :)

Burada karşımıza yine işgücü sorunu geliyor - herhangi bir yazılım bir 
güvenlik güncellemesini / kritik hata düzeltmesini yeni (ve bizim dağıtım ile 
uyumsuz, ya da en iyi ihtimalle depoda test edilmesi gerekecek kadar fazla 
değişiklik gerektiren) bir sürüm ile yayınladığında karşımıza çıkan 
seçenekler belli : 

- güvenlik güncellemesi depo / bağımlılık ağacında değişiklik gerektirmeyecek 
şekilde eski sürüme backport edilir,
- Güvenlik güncellemesini mutlaka almalıyız denilip o paket ve arkasında 
taşıyabileceği tüm güncellemeler depoya alınır, "kararlılık yerine güvenlik" 
denir, olası regressionlar sineye çekilir.

Şimdiye kadar backport için işgücümüz yeterli gelmediği durumlarda (burayı 
genellikle diye okuyun) ikinci seçeneği seçtik - yani gelişmelerden geri 
kalmayayım kararı çoğu zaman da güvenlik güncellemelerinin zorlaması ile 
alındı. Temel sorunum yukarıda bahsettiğin kararlı depoya backport 
_edemediğimiz_ bir güncelleme almak durumunda kaldığımızda ne yapacağımız. 
Bugüne kadar üçüncü seçenek olan "kararlı kalalım, ne yapalım güvenli 
değilse" kimsenin içine sinmediğinden pek seçilmedi, ama yukarıdaki gibi çok 
daha sıkı bir kararlı depo yapısına geçersek, "ya backport ya güvensiz paket" 
durumunda kalacağız. 
  
> 2) Normal depoda test sureci islemesin ya da sadece kritik paketlerde
> islesin. x hafta test deposunda durup hata raporu almayan paketler
> normal depoya sorgusuz sualsiz girsin. Kullanicilar "sistemim bozuldu,
> guncellemeler test edilmiyor mu" dediginde de, "test deposunda x hafta
> hata belirtilmemis. eger surecin daha iyi olmasini istiyorsaniz, siz de
> testlere daha cok katilin. Ben sistemim kararli kalsin istiyorum
> diyorsaniz, sadece guvenlik guncellemeleri yapilan depoyu kullanin."
> densin.

Buna hiçbir itirazım yok, sadece sürecin - paketlerin depoda kalış süresi, 
bildirilmiş hatalarının takibi, vs - iyi tanımlanıp son derece düzenli takip 
edilmesi gerekiyor.

> Boylece hedef belirlenmis olur, dagitim depolarinin bir kimligi olur.
> Su anda bence herkes farkli beklentiler icinde dagitimdan ve kimse
> mutlu olamiyor. Hem ultra kararli olayim, hem gelismelerden geri
> kalmayayim, hem o da olsun, hem bu da olsun diye hareket edince hicbiri
> elde edilemiyor.

Haklısın, ama yukarıda da söylediğim gibi karar verilmesi gereken durumların 
yarısında biz "aman eskimeyelim" diyorsak, yarısında da hata düzeltme ve 
güvenlik güncellemelerini backport edecek geliştirici olmaması nedeniyle 
oyumuzu güvenlik ve hata düzeltmesinden yana kullanıyoruz. 

--
İyi Çalışmalar;
Ekin Meroglu <ekin_at_pardus.org.tr>

... did i listen to pop music because i was miserable, or was i miserable
because i listened to pop music?... - rob [nick hornby / hi fi]



Gelistirici mesaj listesiyle ilgili daha fazla bilgi