Tuesday, March 21, 2017

Test Ortamının Kurulumunu Kim Yapmalı ve Nelere Dikkat Edilmeli




Eğer şirket bünyesinde test ortamı kurulumlarını yapmak için bağımsız bir ekip yoksa, ortam kurulumlarını kimin yapması gerektiği ile ilgili tartışmalar yaşanmaktadır.

Benim görüşüm, bu işi kesinlikle test mühendislerinin yapması. Çünkü, nasıl ki geliştirilen uygulama bağımsız bir test mühendisi tarafından doğrulanmaktadır, geliştirilen doküman da bağımsız bir kişi tarafından doğrulanmalıdır. Nihayetinde, ortam kurulumu da bir doküman kullanılarak yapıldığına göre, dokümanda yazılanlar uygulandığında test ortamına kurulan ürünün teste hazır olduğunu doğrulamak gerekmektedir.
(Doküman ile kastedilen sadece Word belgesi değildir; bir veritabanı betiği, kurulum sihirbazı uygulaması, işletim sistemi betikleri, ... de birer dokümandır.)

Kurulum öncesinde ve esnasında dikkat edilmesi gerekenler;
  • Kurulum yapılacak ortamın "temiz" olması; ilgili donanımlar üzerinde önceki kurulumlardan kalan herhangi bir ürün olmaması. Bunu gerçekleştirmenin en kolay yolu, donanımlara işletim sistemi kurulduktan sonra sabit disklerin birer imajını alarak her kurulum öncesinde bu imajın sabit disklere geri yüklenmesidir.
  • Kurulum ortamında kullanılacak doküman ve yazılımların konfigürasyon yönetim aracı üzerinden alınması. 
  • Kurulumu yapılacak ürünlerin doğru versiyonlarının kurulduğundan emin olunması.
  • Kurulum dokümanında yazılan kurulum adımları uygulanırken her bir adımın anlaşılır (diğer kişiler tarafından da anlaşılır) bir şekilde yazıldığının doğrulanması.
  • Kurulum adımı gerçekleştirilirken İşlem'in tam olarak yapılabildiği ve Beklenen Sonuç'un gözlemlenebildiği görülmeli, aksi durumlar anlaşılır bir şekilde (doküman üzerine) not edilmelidir.
  • Kesinlikle herhangi bir adımın atlanmaması.
  • Kurulum sonrasında "duman testi" uygulayarak kurulumu yapılan uygulamaların çalışır olduğunun görülmesi.

Test Verisi Havuzu Oluşturmanın Faydaları ve Nelere Dikkat Edilmeli



Test verisi havuzu oluşturmak en az iki açıdan faydalıdır:
  • Testleri hazırlarken farklı test sınıflarına yönelik test durumları oluşturmak,
  • Testleri gerçekleştirirken uygun test verisi bulma zamanından tasarruf etmek.
Aşağıda farklı test sınıflarına yönelik olarak test verisi türlerini listeledim. Test altındaki uygulamanın arayüzlerindeki veri ihtiyacına göre bu liste genişletilebilir.
  • Normal Girdi
    • Metin, resim, ses, video ve diğer tür dosyaların çalışır durumdaki kopyaları.
    • Dosyaların bozuk olmadığından emin olunmalı, böylece, test altındaki uygulamaya bu dosyalar yüklendikten sonra uygulama üzerinden tekrar erişildiğinde dosyanın halen çalışır durumda olduğu görülebilmeli. 
  • Hatalı Girdi
    • Dosya uzantıları bilinçli olarak değiştirilerek test altındaki uygulamaya yüklenir.
    • Dosya uzantısına karşı hassas olan uygulamalara sadece doğru uzantılı dosyaların yüklenebildiği doğrulanabilir.
  • Bozuk Dosyalar
    • Dosya içeriği bilinçli olarak bozulur.
    • Dosya içeriğine karşı hassas olan uygulamalara sadece çalışır durumdaki dosyaların yüklenebildiği doğrulanabilir.
  • Sıfır Boyutlu Dosyalar
    • Uzantısı geçerli ama içeriği olmayan sıfır boyutlu dosyalar oluşturularak test altındaki uygulamaya yüklenir.
    • Uygulamanın böyle bir dosya yüklendiğinde herhangi bir hataya neden olmadığı doğrulanabilir.
  • Büyük Boyutlu Dosyalar
    • Uygulamanın dosya yükleme sınırları içinde olmak üzere, (uygulamanın ihtiyacına göre) 10, 50, 100, 500 MB'lık dosyalar hazırlanır.
    • Farklı dosya formatları için birkaç adet dosya hazırlamak iyi olacaktır.
    • Uygulamaya bu dosyaların sorunsuz olarak yüklenebildiği doğrulanabilir.
  • Çok Büyük Boyutlu Dosyalar
    • Bu tür dosyaları kullanmanın amacı, uygulamanın tasarım sınırlarının üzerinde büyük boyutlu dosyalar yüklendiğinde, uygulamanın nasıl davrandığını test etmektir.
    • Herhangi bir dosya boyut sınırı olmayan (sadece depolama ortamının boyutu ile sınırlı olan) uygulamalarda da, dosya yükleme sürelerini ölçmek, çok büyük boyutlu bir dosya yüklenirken sistemin nasıl davrandığını gözlemlemek, birkaç farklı kullanıcı eşanlı olarak bu dosyaları yüklediğinde ne olduğunu gözlemlemek, dosyalar yüklenirken uygulamanın diğer yeteneklerinin kullanılıp kullanılamadığını gözlemlemek gibi pek çok test yapılabilir.
  • Dile Özel Karakterli Dosyalar
    • Geliştirilen uygulamanın hedef kullanıcılarının yerel dilleri ne(karakter setlerine) uygun dosyalar hazırlanır.
    • Örneğin, Arapça karakterler içeren bir metin dosyası uygulamaya yüklenip, uygulamadan geri çağrıldığında dosya içeriğindeki karakterlerin bozulup bozulmadığı doğrulanabilir.
  • Şifreli Dosyalar
    • Yukarıda belirtilen dosya türleri şifreleme yeteneği olan bir araç (7-Zip gibi) kullanılarak şifrelenir.
    • Uygulamaya yüklenen bu dosyalar, uygulamadan geri çağrılıp ilgili şifre girilerek açıldığında şifrenin herhangi bir sebeple bozulmadığı doğrulanabilir.

Monday, March 20, 2017

Sözleşme Aşamasında Test İhtiyaçlarının Belirlenmesi

Yazılım projelerine teklif veren şirketlerin, ihalenin kazanılması durumunda, ne tür test (doğrulama) faaliyetlerini gerçekleştireceklerini bilmeleri, bu faaliyetlerin iş gücü ihtiyaçlarını ve maliyetlerini tahmin edebilmeleri açısından önemli olmaktadır. Bu faaliyetleri bilmek, geliştirme ve kabul aşamalarında ortaya çıkabilecek risklerin de önceden görülebilmesi açısından ayrıca önemlidir. (Bakınız: Test Mühendisliğinde Olası Riskler )




Verilecek teklifin doğru maliyetlendirilebilmesi ve ileride yaşanabilecek sorunları öngörmek amacıyla teklife verilecek cevabın deneyimli bir ekip tarafından hazırlanması gerekmektedir. Bu ekipte test mühendislerinin de olması, aşağıda verilen başlıklardaki konularda test mühendislerinin girdilerini almak açısından gereklidir.


  • Ne Tür Doğrulama İhtiyaçları Bulunmaktadır,
    • Burada temel olarak hangi türde testlerin yapılmasının beklendiği belirlenir. Fonksiyonel, (Dış Sistemlerle) Entegrasyon, Performans (Yük / Stres), Güvenlik, Güvenilirlik, Uygunluk, Platform Bağımsızlık, Uyumluluk, Erişebilirlik, gibi. 
    • Ne tür testlere ihtiyaç duyulacağının bilinmesi personel, uzmanlık, araç / gereç, süre gibi ihtiyaçların tahminine temel teşkil edecektir.
  • Hangi Sahalarda Doğrulama İhtiyacı Vardır,
    • Sadece yüklenici ortamında yapılan bir doğrulama çoğunlukla yeterli olmaz. 
    • Yüklenici ortamında dahili ve fabrika kabul testlerinden sonra, müşterinin ortamında da en az bir seviye doğrulama faaliyetinin olması beklenir.
    • Buna ek olarak müşterinin ön kabul, ara kabul, nihai kabul gibi farklı kabul aşamaları da olacak mı, kaç farklı sahada / ortamda / platformda (hava, kara, deniz araçları) doğrulama faaliyeti olacak, sorularına yanıt bulunması gerekmektedir.
  • Ne Tür Donanımlar / Yazılımlar Üzerinde Doğrulama Yapılması Gerekmektedir,
    • Nihai kullanıcı ortamına en yakın test ortamının kurulabilmesi, ilerde yaşanacak donanım / yazılım uyumsuzluklarını asgariye indirecektir.
    • Bu amaçla (belirlenebildiği kadar) ne tür ve kaç adet sunucu, istemci, ağ donanımları (yük dengeliyici, router / switch, ...) ve mobil cihazlara ihtiyaç duyulacağı belirlenmeli. Ayrıca, bu donanımları müşterinin mi sağlayacağı yoksa şirketin kendisinin mi sağlayacağı belirlenmeli.
    • Hangi tür işletim sistemleri, internet gezginleri, ofis araçları ve diğer 3.taraf yazılımlarına ihtiyaç duyulacağı belirlenmeli.
    • Belirlenen donanım ve yazılımların satın alma mı yoksa kiralama yoluyla mı kullanılacağının belirlenmesi de faydalıdır.
  • Ne Tür Uzmanlık Alanlarına İhtiyaç Vardır,
    • Doğrulaması yapılacak ürün / sistem için ne tür uzmanlık alanlarına ihtiyaç vardır?
    • Bir ürünü / sistemi doğrulayabilmek için o konuyu iyi bilmek gerekmektedir. Doğrulamayı yapacak personelin bu yetkinliği var mıdır, yoksa bu yetkinliği ne kadar sürede kazanabilirler?
  • Ne Tür Test Araçlarına İhtiyaç Duyulması Beklenmektedir,
    • Yapılması beklenen doğrulama faaliyetleri belirlendikten sonra, bu faaliyetlerde kullanılması muhtemel test araçlarının da belirlenmesi faydalı olacaktır.
    • Fonksiyonel test araçları (Ranorex, Selenium, SoapUI, QTP, gibi), performans test araçları (LoadRunner, Jmeter, ....), güvenlik test araçları (OWASP, ...) gibi araçların kullanılma ihtiyacı varsa, bu araçları kullanmayı bilen deneyimli personel var mı, yoksa yetiştirmek ne kadar zaman alır? Dış kaynak kullanımı mümkün mü?
    • Araçların tahmini maliyeti ne kadar olur?
  • Kaç Kişilik Doğrulama Ekibine İhtiyaç Duyulması Beklenmekte,
    • Kaç türde ve seviyede, kaç sahada, ne tür araçlar kullanılarak doğrulama faaliyetlerinin yapılacağı belirlendikten sonra hangi yetkinlikte ve deneyim seviyesinde personele ihtiyaç duyulacağı da belirlenmelidir.