Test Uzmanı Olmak

İlgili yazımız sadece part time testing ile ilgilenen arkadaşların yanı sıra bu işi profesyonel olarak yapmak ve meslek edinmek isteyen okuyucularımız ile ilgili. Elimizden geldiği kadar testing hakkında teknik bilgimizi sizinle paylaşmaya çalışacağız.

 

Teknoloji her geçen gün hayatımızda daha çok yer alıyor. Firmalar çalışanlarının yaptıkları işleri makinelere ve bilgisayarlara yaptırmaya çalışıyorlar. Daha hızlı ve daha hatasız çalışan makineler ve bilgisayarlar global dünya ile rekabet edebilmemiz için bir şart. Hayatımızda bu gün daha çok yazılım var. Hayatımızda yarın çok daha fazla yazılım olacak. Yazılım dünyasının bu şekilde artarak büyümesi yazılımın bir parçası olan testin de yine artarak büyümesi anlamına geliyor. Test ile ilgili en büyük firmalar Amerika, Ingiltere ,Hindistan ve Çin de. Türkiye bu sektörde biraz geri kalmış durumda fakat firmalar testin gerekliliğinin farkındalar. Yazılım firmaları kendi içlerinde test müdürlükleri oluşturuyorlar. Hatta bünyesinde çok sayıda testçi barındırıp dışarıya outsorce olarak test hizmeti veren firmalar da var.

 

Test sektörü iş dünyasına başlamak için güzel sektörlerden biri. Yazılımı baştan sona tüm detayları ve ayrıntıları ile test ettiğiniz için çok güzel süreç bilginiz oluyor. Hatta testçilerin ürün hakkında bildikleri bazen ürünü yazan yazılımcılardan daha fazla olabiliyor. Testcilik den ayrılıp süreç danışmanlığı yapan yada analistcilik yapan bir çok insan var. Günümüz dünyasında özellikle yazılımın çok kolaylaştığı bu günlerde süreç bilen danışmanlar kendilerine söyleneni yapan developer lardan daha değerli oluyor.

 

Test konusunda işe girmek için önce bazı teorik kavramları bilmeniz gerek. İş görüşmelerinde test ile ilgili temel bilgim var diyebiliyorsanız bu sizi üst sıralara taşıyacaktır.

 

Test nedir

Bu soruyu genel kültürünüz ile cevaplayabilir siziz. Yazılımın istenilen gereksinimleri karşılayıp karşılamadığını veya istenildiği gibi çalıştığı nın kontrolüdür.

 

Farklı test türleri

Testleri 3 ana başlıkta inceleyebilirsiniz. Fonksiyonel testler, güvenlik testleri ve performans testleri. Güvenlik ve performans testleri ayrı birer uzmanlık alanıdır. Sizden genelde istenilenler fonksiyonel testlerdir

 

Fonksiyonel testler.

Yazılım istenildiği gibi çalışıyor mu? İstenilen fonksiyonalite yi karşılıyor mu fonksiyonel testler ile kontrol edilir.

 

  • Birim testi(Unit Test) : Yazılımın test edilebilir en küçük parçasının testidir. Developer bir fonksiyon yazar(örneğin TL olarak girilen fiyatın dolar karşılığını yazan bir fonksiyon). Developer uygulamayı yazarken bunun gibi belki binlerce küçük kod yazmıştır. Fakat birim testinde tüm yazılım dikkate alınmaz sadece o küçük kod parçası istenildiği gibi çalılıyor mu TL yi dolara çeviriyor mu test edilir.
  • Entegrasyon testi :Yazılım kendi içine modüller den oluşur ve bu modüller birbiri ile entegredir. Ayrıca yazılım dış birimler ile de entegredir. Kredi kartı ödemesi için banka ile entegredir. TC kimlik sorgulamak için devlet ile entegredir. Döviz sorgulamak için Merkez Bankası ile entegredir. Entegrasyon testlerinde dış bağlantıların kullanıldığı süreçler test edilir. Örneğin kullanıcı siteden bir ürün beğenir bunu alır ve kredi kartı ile öder. Ödemenin gerçekleşmesi entegrasyon testi dir.
  • Pre Entegrasyon testi : Entegrasyon testinden önce yapılan bir ara test dir. Örneğin kullanıcı ürün seçer alır kredi kartı ile ödeme yapma adımına kadar gelir . Bu adımlara kadar başarı ile geliyorsa pre entegrasyon testleri başarılıdır entegrasyon tesine başlanabilir.
  • End to End testler : Yazılım ın baştan sona senaryolar oluşturularak fonksiyonalitelerin kontrol edildiği testlerdir. Örneğin yeni bir kullanıcı gelir kullanıcı kendini sisteme kayıt eder site içinde ürünler arar, sipariş verir sonra siparişini iptal eder. Başka bir sipariş verir. İndirim kuponu satın alır. Tüm siparişlerini onaylar kredi kartı ile ödeme yapar e sistemden çıkar. Baştan sona senaryoların test edilmesine end to end test denir
  • Regresyon testleri : Teknik olarak end to end testlere benzerler. Yazılımcılar uygulama üzerinde bir değişiklik yaptıklarında başka bir yerleri bozmuş olabilirler. Regresyon testleri sadece değişiklik yapılan yerin değil sistemin diğer kısımlarının da test edilmesidir.
  • Sistem testi : Yazılım istenilen gerekli donanım üzerinde mi çalışıyor kontrolü. Bu işlemi genelde teknik ekip yapar
  • Kullanıcı kabul testleri : Proje bitmiş ve yazılımın müşteriye devir zamanı gelmiştir. Bu test müşteri ile beraber yapılır. Belirlenen end to end test senaryoları koşturulur. Bu testlerin ardından müşeri bu yazılım benim için uygundur kararı verir ve yazılım devreye alınır.

Yukarda yazdıklarımızdan farklı olarak başka fonksiyonel test çeşitleri de vardır. Smoke test gibi monkey test gibi.

 

Performans testleri

Uygulama istenilen fonksiyonalite ile çalışıyor OK. Peki sistem yük altında iken de bu başarıyı gösterebilecek mi. Aynı anda 1000 kişi sistemi kullanıyorsa sistem istenilen fonksiyonaliteleri başarabilecek mi bu testlere performans testleri denir.

 

  • Yük testi : Sisteminiz 400 kullanıcıyı kaldırabiliyor mu test edersiniz. Bu tarz testler için çeşitli ürünler var. Bu ürünler sanal kullanıcılar oluşturuyorlar. Sanal kullanıcılar sisteme bağlanıp işlem yapıyorlar mause ve klavye yi kullanır gibi sistemde hareket edebiliyorlar. Bu şekilde 400 kişi sistemde işlem yaparsa ne olur göre biliriniz. 400 kişide sistem çalışabilir yada sistem çökebilir.
  • Perfomans testi : Siteniz 400 kullanıcıyı kaldırıyor ok. Peki sayfalar yavaş mı. 400 kişi içerde iken bir kullanıcı bir ürün aradığında uygulama 90 saniyede cevap veriyorsa bu problemdir. Müşteri 90 saniye beklemez gider. Perfomans testinde hem 400 kişi de istem çalışıyor hem istenilen sürelerde sistem cevap veriyor kontrolü yapılır. (Not: teorik olarak yük testi ve performans testi arası farklar var fakat günlük kullanımda bu iki terim iç içe girmiş durumda. Biri sizden yük test yapmanızı isterse burada kastı performans testi olacaktır.)
  • Stress testi : Sistemi fiziksel olarak strese sokmaktır. Örneğin uygulama 2 database makinası ile çalışır ve database makinalarından biri çökerse sistem diğer database zerinden sorunsuzca devam edebilir. Bunun testini yaparsınız gidersiniz database makinalarından birini kaparsınız. Sistem de hata oluştu mu kontrol edersiniz. (Not: günlük kullanımda yine Stress testi yanlış bilinir. Sizden Stress testi yapmanızı isterlerse genelde kasıtları performans test dir )
  • Peak Testi : Sisteminiz en çok kaç kullanıcıya kadar destek verebiliyor kontrolünü yaparsınız. Sisteminiz 400 kişi ile istediğiniz sürelerde çalışıyor bunu test ettiniz. Kullanıcı sayısını arttırırsınız. 500 kişi gönderirsiniz, 600 kişi gönderirsiniz sistem patlayana kadar bu sayıyı arttırırsınız. Uygulamanın patladığı kullanıcı sayısı peak değeridir.
  • Soak Testi: Sisteminiz 400 kişi işe çalıştı güzel. Bu 400 kişilik testi 18 saat boyunca yaparsınız. Uygulamalarda bazen memory leak hataları olabiliyor. Uygulama normalde iyi çalışıyordur fakat memory de kapladığı alan çok yavaş bir şekilde artıyordur. Siz bu yavaşlığı normalde farketmez siniz fakat 10 saat sonra memory dolar ve sistem çöker. Soak testinde uzun süreli test yapılarak memory leak gibi problemler var ı kontrol edilir

Güvenlik testleri

Güvenlik testleri çok geniş ayrı bir dünya. Güvenlik testleri ile ilgili genel bilgileri başka bir yazımızda sizler ile paylaşacağız. Fakat konu başlıklarından kısaca bahsetmek gerekirse

  • Ağ Taramaları
  • Port Taramaları
  • Yol Taramaları
  • SNMP Taramaları
  • Sunucu Tanımlamaları
  • VPN Tanımlaması
  • SSL Sertifika İncelemeleri
  • Parola Kırma Testleri
  • HTML Kod Analizi
  • Erişim Kontrolleri
  • XSS Taramaları
  • Girdi Denetimleri
  • Parola Kırma Testleri
  • Oturum Güvenliği Denetimi
  • Yedek Dosya Testleri
  • Sosyal Mühendislik

Test konusunda uzmanlaşmak isteyen arkadaşlara ayrıca çeşitli sertifikalar almalarını tavsiye ederiz. ISTQB eğitimleri ve sertifikaları bu konuda oldukça işinize yarayacaktır

 

Teşekkürler

2 Comments

  1. Hocam Ellerine sağlık
    Bilgiler çok güzel olmuş

Halil için bir cevap yazın Cevabı iptal et

Your email address will not be published.

*