Opera 12.01 Final yayınlandı ! Yaz dönemine girdik, tatiller başladı ve yavaşlamaları mazur görün lüten :)

Tarayıcı Çekirdeğinde Otomatik Hata Bulma Sistemi

Yazan: greench | 16 Kasım 2009 | Çekirdek hata bulma

Opera Çekirdek Takımı, Opera çekirdeğinin farklı platformlardaki hatalarını saptamak için SPARTAN isimli otomatik hata bulma sistemi geliştirdiler. Sistem, Opera Çekirdek Takımı’nın yazdığı 120000 testi otomatik çalıştırarak istenen çekirdek derlemesini test eden 50 test makinesi ve merkezi bir sunucu içeriyor. Bu sistemin amacı mümkün olan en kısa sürede yeni hataları keşfetmek ve kullanıcılara dert olmadan önce bunları çözümlemek.

spartan

Adım bir: Derleme Hazırlama

Testi yapabilmesi için SPARTAN’nın bir derlemeye ihtiyacı var. Opera’nın derleme sistemi her akşam kendiliğinden derlemeler oluşturur ve derleme işlemi bittiğinde SPARTAN’a bilgi verilir. Bu arada geliştiriciler ve testçiler (tester) üzerinde çalıştıkları bölümleri görmek için özel derleme numarasına sahip derlemeleri, derleme sistemlerinden alabilirler.

Diğer tarayıcıların aksine Opera çeşitli farklı platformlarda da sunulduğu için çekirdek tek bir ikilik (binary) yerine, her genel ürün grubu için bir ikilik (binary) içeriyor.  Bunların her biri aynı özelliklere sahip profillerdir ancak her profilin bellek kullanımı kullanıldığı platforma göre uyarlanmıştır. Testlerin tamamı her bir profil için çalıştırılır.

Adım iki: Test

SPARTAN’a yeni bir derlemenin var olduğu bilgisi ulaşırsa yeni derleme test kuyruğuna alınacak ve sırası geldiğinde bu derleme için binlerce test farklı test makinelerinde çalışmaya başlayacak. Her test makinesi birbirinden bağımsız olarak çalışır ve SPARTAN’dan bilgi gelirse testte kullanılacak ikilik (binary) dosyası indirilir ve testlere başlanır. Test dizisi biterse sonuçlar SPARTAN sunucusunda gönderilir ve sıradaki teste başlanır.

Yeni derlemenin testlerini bitirdiği zaman, SPARTAN geçmişe bakacak ve yeni eklenen testleri de çalıştıracak. Böylelikle her test için geniş bir geçmiş elde edilir.

Çeşitli test tipleri bulunmakta:

  • Birim testleri
    Bu testler çalışan kodu yazan geliştirici tarafından yazılır, fonksiyonları ve API’leri test etmede kullanılır.
  • JavaScript testleri
    JavaScript testleri geniş bir alanda kullanılır. Selector API‘leri, yaygın JavaScript frameworkleri ve JavaScript’le ilgili istenilen diğer şeyler test edilir.
  • Watir testleri
    Bazı şeyleri test etmek kullanıcı etkileşimi gerektirir. Örneğin formları test etmek için düğmelere tıklamak, yazı düzenleme alanlarını kullanmak vs… Bundan kaçınmak için bu testler kullanılmaktadır.
  • Görsel testler
    Stil şablonu ve grafik kodlarını test etmek için görsel test bölümündeki testler kullanılıyor. Görsel testlerin bazıları iki sayfanın ya da iki elementin aynı olup olmadıklarını otomatik karşılaştırıyor. Diğer testlerde, test makinesi üretilen sayfanın ekran görüntüsünü SPARTAN sunucusuna gönderiyor ve SPARTAN bu ekran görüntülerini önceden görüp görmediğine bakarak testin geçilip geçilmediğine belirliyor. Eğer SPARTAN ekran görüntüsünü daha önce görmediyse insan tarafından geçti/kaldı olarak işaretliyor.
  • Performans testleri
    Çağdaş bir tarayıcı sadece farklı özelliklerdeki testleri geçmemelidir. Ayrıca hızlı da olmalı. SPARTAN Opera tarafından geliştirilen ve dışarıdan geliştirilen bir çok farklı performans testi çalıştırır. Eğer Opera testin herhangi bir bölümünde daha yavaş olursa bu gerileme olarak işaretlenir.
  • Çökme testleri
    Her hata için test hazırlanıyor ve analiz edilip düzeltiliyor. SPARTAN bunları sıklıkla çalıştırıyor. Hata temelli testler çökme testleri grubundadır. Eğer Opera bu testleri çökmeden yükleyebilirse testi geçmiştir. Eğer çökerse bu hata mutlaka düzeltilir.

Her derlemede her profil için 120000 test yapıldığını söylemiştik, fakat bu sayı günden güne artmaktadır. Eski/yeni özellikler için, hata bulmak için yeni testler yazılmakta. Hatta yararlı bulunan testler genel kullanıma açılacak. Hafıza testleri dahil önceden elle yapılan testler şu sıralar otomatikleştiriliyor.

Adım üç: İnsan müdahalesi

SPARTAN sonuçta bir sistem ve iki farklı derlemede yapılan testler arasındaki değişimleri geliştiricilere GEÇTİ-GEÇMEDİ şeklinde bir rapor ile bildiriyor. Yapılan her değişiklik bir sorunu kaldırırken aynı zamanda başka bir soruna sebep olabiliyor bazen. Bu gerilemenin olduğu testler yine incelenip değişim sayısına göre, bir derlemede yüzlerce test geriye düşmüşse bu işlem yapılmıyor, yeni bir hata olarak bildirilip bir geliştiriciye atanıyor.

  • http://www.operaturkiye.net zahek

    Çok güzel bir yazı olmuş.Eline sağlık.

G+ OT