25
Şub
64 bit için ilk testi yaptığımızdan bu yana aklımızda daha detaylı bir karşılaştırma yapmak vardı. Bu sefer karşılaştırma için Pardus katkı deposundaki pbzip2 paketini kullandık. Testlerde kullandığımız bilgisayarın özellikleri şöyle:

* 4 X Intel Processor (2.4GHz)
* 4 GB RAM

Sıkıştırdığımız dosya ise 903 MB'lık bir düz metin dosyası. Sıkıştırma, açma ve dosya boyu karşılaştırmaları Pardus C2 x86-64 üzerinde yapıldı ama diğer sürümlerde de farklı sonuçlar olmayacaktır.

Sıkıştırma süresi:

Dört işlemcili bir bilgisayarda bzip2'nin 200sn'de yaptığı işi pbzip2 62sn'de yapıyor. Peki oluşan sıkışmış dosyaların boyları nasıl? Sıkıştırma yapan bir program için sıkıştırılmış dosyanın boyutunun büyük olması istenilen bir şey değil elbette.

Sıkıştırılmış dosya boyutu:

Oluşan iki dosya arasında sadece 0.12MB'lık bir fark var. Başka bir değişle; bzip2 dosyayı 12.78'de birine sıkıştırırken pbzip2 12.80'de birine sıkıştırmış. Aradaki farkın oransal ifadesi (0.12/903) 0.00013, yani yüzbinde onüç. Oldukça kabul edilebilir bir fark. Sıkıştırılmış dosyaların açılma hızları arasında da ciddi farklar var:

Açma süresi:

pbzip2 ile sıkıştırılan dosyalar istenirse bzip2 ile de açılabiliyor. Bu testte 74.04MB'lık sıkıştırılmış dosya kullanılmıştır.

bzip2 ile 27sn'de açılan dosya pbzip2 ile 10sn'de açılıyor. Eğer dosya boyutundaki ufak artış problem olmayacaksa iyi bir tercih gibi görünüyor pbzip2.
28
Kas
İki aydır aşkla çalıştığımız 64bit Pardus projesinin işletim sisteminin performansında nasıl bir fark oluşturacağını herkes gibi biz de merak ediyoruz. Daha önce başka işletim sistemleri için yapılmış olan testlerden çok farklı bir sonuç beklemesek bile madem elimizde bu imkan var değerlendirelim diyerek bu bayram gününü test için ayırdık. Neleri test edebileceğimiz konusunda fazla tercihimiz yoktu doğrusu, bu yüzden diğerleri neleri test etmişse biz de yaklaşık onları test ettik.

Önce elimizdeki olanakları sıralayayım ki "neden şunları denemediniz" diyecekler için bir açıklama olsun (yine de öneriniz olursa duymaktan mutlu oluruz):

* System.base ve system.devel'i 64bit paketlenmiş oldukça minimum (üzerinde çok uğraşıldığı için böyle demeye de dilim varmıyor ama neyse:)) bir Pardus'umuz var. Temel alınan sistem corporate2, yani kurumsal 2. Henüz bir grafik ortamımız yok. Testteki araçlardan lame ve gnupg'yi teste yetiştirmek için paketledik.

* Hızın bir işletim sistemi için herşey olmadığını biliyoruz.

* Denemelerde kullanığımız yazılımların tamamı çalışırken tek işlemci kullanabildiğinden ve RAM'i çok az kullandığından işlemci sayısını değiştirmek (evet, yaptık bunu) veya hafızayı arttırmak (bunu da denedik) farkedilebilir bir değişikliğe neden olmadı.

Testleri birbiriyle özdeş şu donanımlar ile yaptık:
* 4 X AMD Opteron(tm) Processor (2.3GHz)
* 4GB RAM

Kullandığımız yazılımlar ise şöyle:
* bc-1.06.95-5
* gnupg-2.0.11-26
* lame-3.98.2-11
* bzip2-1.0.5-10

İlk test faktöryel hesabı için bc ile yapıldı. 20000, 40000 ve 60000 faktöryeller hesaplandı.

$time bc factorial20k.bc > /dev/null

Yaklaşık %14 bir kazanç var.

İkinci test gnupg
ile Pardus-2009.iso (687MB) şifrelenerek yapıldı:

$time gpg --encrypt --recipient 'metin' Pardus-2009.iso

Yaklaşık %24 bir kazanç var.

Üçüncü test lame ile wav dosyasını (647MB) mp3 dosyasına çevrilerek yapıldı:

$time lame 32vs64.wav 32vs64.mp3

Yaklaşık %14 bir kazanç var.

Dördüncü ve son test bzip2 ile 687MB'lık bir dosyanın sıkıştırılmasıyla yapıldı:

$time bzip2 test_file.tar

Bu test sonucunda da yaklaşık %14 bir kazanç var. Bu sonuçlar değerlendirildiğinde 32bit ve 64bit Pardus arasında bir uçurum olmadığı ama kayda değer bir fark da olacağını söyleyebiliriz sanırım.

Her ne kadar sonuçlar olumlu çıkmış olsa da testleri yaparken sistemdeki işlemcilerden sadece birinin tam kapasite kullanıldığını kalanların ise hiç kullanılmadığını gördük. Bu elbette yazılımların çoklu işlemci kullanabilir olmamasından kaynaklanıyordu. "Eğer yazılımlar sistemdeki tüm işlemcileri verimli bir şekilde kullanabilseydi nasıl olurdu" diye düşünürken Metin bunu deneyebileceğimiz bir araç buldu. Biz sistemimize kurduğumuz bzip2 ile test yapmıştık ve birileri bzip2'yi paralel çalışacak hale getirmişti. İlk denemede gördük ki işlemcileri paralel kullanmak süreyi dramatik şekilde düşürüyor.

Paralel bzip2'yi kullanarak yine 687MB'lık bir dosyayı sıkıştırma testleri yaptık. Bu sefer işlemci sayısının da önemi olduğundan aynı makine üzerindeki işlemcileri de değiştirerek aşağıdaki grafiği elde ettik:

Sistemde tek işlemci varken kazanç %5 seviyesinde iken işlemci sayısı 8'e çıktığında kazanç da %15'e çıkıyor. Bu noktada tabi daha dikkat çekici olan programın paralel çalıştırılmasıyla elde edilen müthiş kazanım. Bu grafik iki veya dört çekirdekli, birden çok işlemcili bilgisayarlar alıp bunların aynı anda sadece birini kullanabilmek yerine tamamının verimli olarak kullanılabilmesi durumunda ortaya nasıl bir tablo çıkacağıyla ilgili bir ipucu veriyor.

Bir başka ekip de çıkıp "biz de paralel-pardus'u hazırlayalım" dese harika olur bence.
12
Haz

Bir yılı aşkın süredir test süreçleri sorumlusu olarak görev yapan sevgili Serbülent Ünsal Haziran 2009 itibarı ile TÜBİTAK UEKAE’den ayrıldı. Serbülent’e yeni işi ve hayatında başarılar diliyoruz.

Test süreçleri sorumluluğunu artık sevgili Semen Cirit yürütecek, diğer görevlerine ek olarak. Semen’e yeni sorumluluğu için başarılar diliyoruz…

20
Oca
Bir süredir Pardus'un test işlerinden mesul-üm. Bu zaman zarfında, zaman zaman başka projelerin test işlerini nasıl yürüttüğüne göz atmış olsam da bütün projeleri kapsayan detaylı bir inceleme yapmak vardı aklımda. Test dünyasında işler nasıl yürüyor ? Başkalarından daha iyi olduğumuz yönler neler , nerelerde eksiklerimiz var ? Daha kaliteli bir dağıtım için neleri değiştirebiliriz ? gibi sorulara yanıt arayacağım. Derlediğim bilgilerde gözden kaçan, yanlış anladığım noktalar varsa düzeltmenizden memnun olurum.

Pardus

Daha önce biraz bahsetmiştim test süreçlerimizden. Bu vesile ile güncel değişiklikleri de katarak kısaca özetleyeyim.

Pardus'da Test süreçlerimiz 2 ana kategoriye ayrılıyor; Sürüm öncesi testler ve Sürüm içi testler. Bunlara dair detaylı bilgi wiki sayfamızda mevcut. Bir önceki yazının yazıldığı zamandan bu yana yapılan önemli bir değişiklik ise sürüm içi testleri artık gönüllülerimizle beraber yapıyor olmamız.

Bir sonraki adım da ise hata raporlarına bir onay mekanizması getirerek bu konudaki sorumluluğu da gönüllülerimizle paylaşmayı planlamaktayız.

OpenSuse

Görebildiğim kadarıyla yalnızca bir sonraki sürüme ilişkin test süreçleri mevcut. Kararlı sürüme girecek paketleri/yamaları ne şekilde test ediyorlar buna dair bir bilgiye rastlayamadım.

Geliştirme sürümlerini "Factory" namı ile anıyorlar. Bu sürüme dair yaklaşık 6 aylık yol haritaları belli. Ayrıca ara sürümler arasındaki önemli değişiklikleri de özet halinde yayımlıyorlar [1] Test sonuçlarını bugzilla üzerinden hata girerek raporluyorlar.

Hata takip sistemine nasıl hata girileceğine ilişkin oldukça detaylı dökümantasyona [2] [3] sahipler.

Bu noktaya kadar genel olarak bizden iyi durumdalar. Ama bu konular direkt olarak ilgilendirmiyor test süreçlerini.

Çok basit düzeyde temel test yönergeleri bulunuyor benim baktığım an itibariyle [4] . Bu konuda çok başarılı olduklarını söyleyemeyeceğim. Dağıtımı test etmeye yönelik temel süreçlerde bizim kadar detaylı bir planları yok. Ancak çok detaylı bir yol haritaları olduğu için değişen ve yeni gelen özellikleri test etmek konusunda oldukça detaylı bir çalışma yapmışlar.

İlginç gelen bir diğer nokta da mobil cihazlar ile olan senronizasyona ayrı bir bölüm ayırmışlar.

Son olarak da otomatik test araçları ile ilgili bir takım planları olduğu anlaşılıyor ki, bu araçları inceleyeceğim ayrı bir girdi yazmak niyetindeyim.

Edit: OpenSuse test süreçleri ile ilgili yeni bulduğum bir takım bilgileri eklemek istedim; Öncelikle Depo ve test politikalarını tanımlayan açık bir belge bulunmuyor. Uzun aramaların ardından kalite takımından Holger böyle bir belgeleri bulunmadığını yazdı.

Kalite takımı
demişken, 43 kişiden oluşan ( Novel çalışanı ) bir test takımları var. Açık olarak yazmıyor ama benim tahminim bu ekip sadece OpenSuse için değil Aynı zamanda SLES içinde çalışıyor.

Oldukça geniş bir araçseti kullanıyorlar testler için, liste aşağıda mevcut

• Bonnie.............................• Module Loading
• Buildcrunch...................• Newburn
• DBench...........................• Netperf
• FTPload..........................• NIC Bonding
• File System Stress.........• Process Stress
• LMbench .......................• Sched Stress
• LTP.................................• Reaim
• Memeater......................• Tiobench
• Memtester

Test otomasyonu için HAMSTA adlı bir araçları var ki aslında bu yerel test araçları için bir çeşit framework. Bunun yanı sıra test planlaması içinde Testopia'dan faydalanıyorlar. Ancak bu araç gereğinden fazla karmaşık göründü bana.


6
Oca
Serinin bu bölümünde dünyadaki en yaygın son kullanıcı dağıtımlarından birisi olan Mandriva'nın test ve bununla bağlantılı olarak kararlı depoya paket giriş süreçlerini inceleyeceğiz. Serinin bir önceki yazısını burada bulabilirsiniz.

Sanırım en doğrusu bir paketin kararlı depoya giriş sürecini [1] anlatarak başlamak olacak. Bir paket kararlı olduğuna emin olunan main/updates deposuna alınmak isteniyorsa, paketçi öncelikle bununla ilgili bugzilla raporu açar.

Bu rapor paketin neleri değiştirdiğini ve düzelttiğini anlatan advisory ile nasıl test edilmesi gerektiğini içerir ( örneğin: paketin kapattığı hatayı tekrar eden bir betik ve bunun dışındaki temel işlevleri nasıl test edileceğine dair bilgiler gibi). Hata kaydı kalite güvence takımına atanır( qateam ) ve güvenlik takımı da CC ye alınır ( secteam ). Bu işlemin ardından paket main/testing deposuna alınır.

Kalite-Güvence takımı pakete onay vermemişse ( daha iyi bir test-case yazılması veya uygulamanın kullanımına dair daha detaylı bilgi verilmesi bile olabilir bu ) paketin bakıcısı bu sorunları gidermek zorundadır.

Paketler ile ilgili hatalar tek bir e-posta adresinden giriliyor anladığım kadarıyla bunun amacı mesajlardan bütün takımın haberdar olması ve katkıda bulunabilmesi.

Kalite-Güvence takımdan onay alan paket için ilgili rapor güvenlik takımına atanır. Güvenlik takımı kaynak rpm dosyasını temiz bir sistemde yeniden inşa eder, paket ile ilgili advisory bültenini yayımlar [2] ( bu nokta ilginç aslında, konu güvenlikle ilgili olmasa dahi bütün paketler güvenlik takımından geçiyor ve düzeltme ile ilgili bülten yayımlanıyor ). Bu işlemlerin ardından paket main/updates deposuna alınarak hata kapatılır.

Anladığım kadarıyla güvenlik güncellemeleri ve kritik güncellemeler yukarıdaki politikanın dışında tutuluyor.

Bunun yanı sıra test otomasyonu (buna yarı-otomatik diyelim :) ) için web tabanlı testzilla[3] adlı bir araçtan faydalanıyorlar. Bu aracın temel işlevi testçinin donanım setine uygun olarak test edebileceği paketleri göstermek [4] ve bu paketler ile ilgili raporları girmesini sağlamak.

Asıl otomatik testler yalnız Paris'deki merkez ofiste yapılabiliyormuş. Burada PXE üzerinden başlatılan bilgisayarlara bu iş için özelleştirilen bir sürüm yükleniyor ağ üzerinden ve bu bilgisayarlarda önceden yazılmış test betikleri [5] çalıştırılıyor ve otomatik raporlar üretiliyor bugzillaya girilen.

Bunların yanı sıra bu prosedürleri ve betikleri wikiye aktarıyorlar [6] [7] belirli bir template [8] yapısı içinde.

Son olarak çekirdek testleri için ayrı bir bölüm ayırmışlar [9] ve çekirdek güncellemelerine ayrı bir özenle yaklaşıyorlar. Bu konuda da otomatik test için bir takım araçlardan haberdarlar ancak bunların ne kadarını kullandıklarına dair bir ipucu içermiyor test belgesi.


[1] http://wiki.mandriva.com/en/Policies/Support
[2] http://wiki.mandriva.com/en/2009.0_Errata
[3] http://wiki.mandriva.com/en/Development/Howto/Testzilla
[4] http://cvs.mandriva.com/cgi-bin/viewvc.cgi/testzilla/procedures/NVIDIA/procedure.html?revision=1.5&view=markup
[5] http://cvs.mandriva.com/cgi-bin/viewvc.cgi/testzilla/tests/pamd/valid-pamd-modules.test?revision=1.2&view=markup
[6] http://wiki.mandriva.com/en/Testing
[7] http://wiki.mandriva.com/en/Testing:Bind
[8] http://wiki.mandriva.com/en/Testing:Template
[9] http://wiki.mandriva.com/en/Development/Howto/Test_Update_Candidate_Kernels


5
Nis
Pardus ekibine katıldığımdan beri pek fırsat bulamıyorum yazmaya. Oldukça yoğun ama bir o kadar da zevkli bir çalışma dönemi yaşıyoruz.

Sorumlusu olduğum Pardus test süreçlerinden bahsetmek istedim biraz. Hem süreçleri çekirdek ekip dışındakiler için biraz daha belirgin kılmak, hem de Pardus Test Takımına ve gelecekteki takım arkadaşlarımıza bir başlangıç noktası oluşturmak için.

Pardus ekibinin her üyesinde görebileceğiniz ortak bir özellik mükemmeliyet takıntısıdır. Bazen küçük bir düğmenin yeri ve işlevi için bile saatlerce tartışabiliyoruz. Ancak Pardus'la ilgili değerlendirmeleri okudukça harcadığımız bu zamanın karşılığını fazlası ile aldığımızı görüyoruz. Pardus Test Takımı da bu mükemmelleştirme sürecinin önemli bir parçası olmak üzere kuruldu.

Ne kadar yetenekli geliştiricilere sahip olursanız olun, tek başına sorunsuz çalışan parçalar bir araya gelince çalışmak konusunda sorun yaratabiliyorlar. Pardus Test Takımının görevi büyük yapbozu incelemek ve onu kusursuz hale getirmek.

Evvel zaman içinde, Pardus 1.0 sürümü öncesinde rootfs in çıkışı ile başlamış test takımı kurma fikri. O zamanki adıyla Resmi Pardus Test Sürecinin (RPTS) kordinasyonunu sevgili Erkan Tekman yürütüyormuş. Lakin zaman içinde iş yoğunluğunun arasında kaybolmuş gitmiş yeni sürümler çıkarken RPTS. Bu gün bu süreç daha geniş bir katılımla ve daha uzun soluklu olarak yeniden canlanıyor.

Yeni test sürecini planlarken önce diğer dağıtımların test süreçlerini inceledik. Kendi çalışma metoçlarımızı gözden geçirdik. Geçmişteki deneyimlerimize dönüp baktık. Sonuçta test süreçlerinin 2 ana bölüme ayrılmasına karar verdik.

Test takımımız şimdilik birinci bölümde bizlere yardımcı olacak ancak süreç ilerledik takımın içinde çıkacak istekli ve tecrübeli arkadaşlarla ikinci bölümü de bir ekip halinde yürütmeyi planlıyoruz.

Birinci Bölüm "Sürüm Öncesi Test Süreci"

Sürüm Öncesi Test Süreci alfa sürümünün çıkması ile başlayan ve kararlı sürüm ile sona eren yaklaşık 30 - 60 günlük bir süreçtir. Bu süreç de Alfa , Beta ve RC sürümleri çıktıkça, test takımımız kendileri için hazırlanan test kılavuzunun yardımıyla dağıtımın temel işlevlerini test edecek ve sonuçları test_takımı listesi aracılığı ile bizimle paylaşacaklar. Liste içinde istenilen bilgilerin tamamlanması ile gerekiyorsa hata takip sistemine aktarılacak hata bilgileri ve burada çözümlendikten sonra hatayı bildiren ve tekrarlayan takım üyelerince çözüm onaylanacak.

İkinci Bölüm "Düzenli Testler"

Bu test süreci yeni kararlı sürümün çıkması ile başlar ve sürüm resmi olarak desteklendiği sürece devam eder. Bu süreçte kendi içinde ikiye ayrılır. "Güncelleme Testleri" ve "İşlev Testi".

Bu süreç için öncelikle, test edilen kararlı sürüm ( örneğin Pardus-2007 ) ve o ana kadar çıkmış ara sürümlerin her birinin ( örneğin 2007.1 , 2007.2 , 2007.3 ) yeni kurulmuş birer versiyonuna sahip olmamız gerekir. Her bir testin ardından tekrar bu temiz kurulumlara ihtiyaç duyacağımızdan bu sürümleri sanal görüntü olarak kurmak ( misal VirtualBox ile ;) ) sağlık ve de sıhhat açısından faydalıdır. Bu sanal görüntüleri güncelleme testlerinde kullanacağız.

Ayrıca her güncelleme sonrasında kararlı depodan güncellediğimiz düzenli güncellenen bir sanal imaja da ihtiyaç vardır.

Süreç genel hatları ile şöyle işler; Test sorumlusu test deposunda bekleyen paketler için bir onay süreci başlatır. Geliştiriciler tarafından onaylanan paketler o anki kararlı depo ve onay alan yeni paketlerden oluşan bir geçici depoya aktarılırlar. Temiz kurulmuş sürümlere bu deponun adresi verilerek sürümler güncellenir. Her güncellenmiş sürüm yeniden başlatılarak temel sistemlerin sağlıklı işleyip işlemediği kontrol edilir. Ardından revdep-rebuild komutu ile ters bağımlılıklardaki kırık paylaşımlı kütüphane dosyalarının varlığı denetlenir.

İşlev testi içinse, kararlı depo ile eş zamanlı güncellediğimiz imaj, test için geçici depodan güncellenir ve güncellenen her bir program tek tek test edilir.

Testçinin bütün program ve kütüphaneleri bütün özellikleri ile test etmesi bilgi, tecrübe ve zaman açısından mümkün görülmediği için test edilecek olan paketler 4 ana kategoriye ayrılmıştır. Kategorizasyon işlemi halen devam etmekte olup yeterince olgunlaşınca wikiye aktarılacak. Bu kategoriler; Detaylı biçimde test edilecek paketler ( ki bunların nasıl test edileceği ayrıntılı olarak belgelenmiştir ) , Standart biçimde test edilecek paketler ( kurulum ve temel çalışma denetimi yapılır ) , Yalnız kurulum testine tabi tutulacak paketler ve Multimedya paketleridir ( Multimedya paketlerininde nasıl test edileceği detaylı olarak belgelenmiştir ).

Bu süreçler Pardus'un dünyada ve Türkiye'de hak ettiği yere gelmesinde önemli rol oynarken bizlere de test takımımızın içinden yeni dostlar ve yeni geliştiriciler kazandıracak. Özgürlük İçin...