E-Bülten’e kayıt olun

E-Posta:



Bir Ayın Ardından…

Bir Ayın Ardından…

Merhabalar, bugün Artistanbul’da stajyer olarak geçirdiğim bir ay ve üzerinde uğraştığım Unittest işinden bahsedeceğim.

İlk yazımda da değindiğim üzere ilk günümden itibaren daha önceden geliştirilmiş olan bir proje üzerinde incelemeler yaparak Python programlama dili ile yazılmış Django tabanlı bir web projesinin test kodlarının yazılmasına yardım etmek için kollarımı sıvamıştım. Stajıma başladığım dönemde, kaynak kodun test edilmesi amacıyla ilk adım olarak, birim testler ile yazılımın temel bileşenlerinin istenildiği gibi çalıştığının doğrulanması düşünülmüş ve senaryoların belirlenmesine başlanmıştı.

Ben de öncelikle yazılan bu test kodlarına genel bir göz gezdirip, kullanılan teknolojileri daha yakından inceledim. Birim test veya literatürdeki ismi ile unit test için Python birden fazla popüler pakete sahip. Biz yazdığımız testlerde, Django’nun kendi test paketini kullanıyoruz. Bu paketten Python programlama dilinin standart kütüphanelerinden biri olan unittest’in alt sınıfı olarak bahsedebiliriz.

Birim testler, yazılımın atomik olarak test edilmesini amaçlar ve bu her atomik nokta için olabilecek test durumlarının planlanıp sonuçlarının sınanmasını gerektirir. Örnek olması açısından bir karekök fonksiyonu düşünürsek, gerçekleşebilecek senaryolar işlem yapılacak değerin negatif, sıfır ve pozitif olmasıdır. Dolayısıyla bu fonksiyonun birim testleri tamamlanmıştır demek için bu durumları ve verilen değerin bir sayı olması gibi ihtimalleri kontrol etmeliyiz.

Unittest kütüphanesinin bize sunduğu genel bir taslak bulunuyor ve bu taslak bizim gerekli sınıflar içerisinde bütün test durumları için ayrı ayrı fonksiyonlar yazmamızı gerektiriyor. Django için konuşmak gerekirse, uygulamamız veritabanı modelleri ve bu modellerin kullanıldığı görünümler olmak üzere belirli sınıfları kapsıyor. Bu sınıflara ek olarak, formları ve verilerin görsel olarak manipüle edilebildiği admin sayfaları temsil eden çeşitli sınıflar da bulunmaktadır. Biz de bu yüksek sayıdaki her sınıf için ayrı bir test sınıfı oluşturup, o test durumunda beklenen kilit noktaları assert deyimleriyle kontrol ediyoruz. Unittest kodlarını yazmaya çalıştığımız projeler bir framework üzerine kurulmuş olduğundan, her dosya içerisinde çok fazla kütüphane kullanılması normal bir hale geliyor. Bu aşamada bir fonksiyondan istediğimiz sonucu alabilmemiz için kendi yazdığımız parçaların işlevlerini yerine getirmesini yeterli sayıyoruz.

 

Testi ölçmek

Geçtiğimiz beş haftalık sürede geliştirdiğimiz testlerde dikkat ettiğimiz bir diğer nokta ise yazılan testlerin proje genelinde ne kadarlık bir yüzdeye dokunmuş olduğuydu. Bu ölçümü yapabilmek için coverage isimli Python paketini kullanmak en mantıklı çözüm olarak gözüktü. Bu paket bir yapılandırma dosyasıyla hangi dosyaların hesaba katılıp katılmayacağı gibi çalışmasını etkileyen seçenekleri alıp, kaynak kodun hangi satırlarının test kodu içerisinde kullanıldığına dair çeşitli raporlar sunuyor. Bu anlattıklarıma ek olarak, vaktimizin bir kısmını ise diğer yazılım test metotları hakkında araştırma yapıp sohbetler ederek testlerin daha etkili ve düzenli olabilmesi için ayırdık.

Evet, sanırım şimdiye kadar okuduklarınızdan Artistanbul’da stajyer olmanın çalışıp ortaya bir şeyler çıkarmak gerektirdiğini anlamışsınızdır. Vaktini çalışarak geçirmek, aklına takılan soruları sorabilmenin yanı sıra sorularına beyaz tahta üzerinde ders gibi cevaplar alabilmek de kesinlikle bu süreci daha keyifli kılıyor. Bunlara ek olarak Akın Bey’in her gün düzenli olarak gelerek hedefimize kalan iş günü sayımızı güncellemesiyse işi daha da ciddiye bindirip, kendi adıma konuşmak gerekirse, yaptıklarımı daha fazla önemsememi sağladı diyebilirim. Kısacası, güzel güzel kahvemizi yudumlarken işi zevke dönüştüren muhabbetlerin geçtiği bir staj dönemini bitiriyorum ve bu konuda Artistanbul’a ne kadar teşekkür etsem az.

 

İhsan Burak Çağlar

2017 yılının Mart-Nisan ayları arasında Artistanbul ofisinde iki ay staj yapan Burak'ı güzel izlenimlerle uğurladık. Burak hakkında referans isteyeceklere buradan ilan edelim: Kısa bir süre içinde Burak iyi bir geliştirici olacak...

2 Yorumlar
  • Gönderim13:16, 19 Nisan 2017

    Son paragrafı okurken beyaz tahta önündeki anılarım canlandı gözümde. Yaşasın İTÜ’lü dayanışması! Geçtiğimiz bir ay içerisinde bize çok şey kattın, umarım biz de eşit ölçüde senin için faydalı olabilmişizdir.

  • Ali Işıngör
    Yanıtla
    Gönderim00:12, 20 Nisan 2017

    Sevgili Burak,

    Bu bir ay içinde müthiş bir iş çıkardın. Artistanbul ofisinin artık klasikleşmiş şakalarına beyefendice tahammül etmekle kalmadın, 3 önemli projenin test kodunu yazmayı başardın :).

    Buradan da söyleyeyim; Okulundan mezun olduğunda iş görüşmelerine başlayacağın gün, kapısını ilk çalacağın yerin Artistanbul olmasını umut ediyorum.

Yorum Yaz

Yorum
İsim
E-Posta
Website