Yazılım test mühendisliği

Uçtan uca test mühendisliğini öğrenmek ister misin?

Ben Selenay

Yazılım test mühendisliğini sizlerle birlikte öğreniyorum ve öğrendiklerimi burada ve youtube hesabımda paylaşıyorum. Takipte kalın...

Yazılım testi: Bir yazılımın kendisinden beklenen özellikleri karşılayıp karşılamadığını incelemek amacıyla yapılan işlemlerdir. Eğer varsa yazılımdaki hatalar bulunup düzeltilebilir ve gereksinimlere uygun hale gelebilir.

Yazılım testi neden önemlidir: İnsanın olduğu yerde hata kaçınılmazdır. Geliştirme aşamalarında yapılan hataları belirtmek için gereklidir. Ürün performansı için gerekli. Müşterinin kuruluşu güvenilir bulmasını ve uygulamadaki memnuniyetini koruması açısından önemlidir. İleride ürün arızalanmaması için gereklidir.

Yazılım test otomasyonu: Önceden tahmin edilmiş sonuçlarla gerçek sonuçların karşılaştırılması ve testlerin çalıştırılmasını kontrol etmek için belirli yazılımın kullanılmasıdır. Test otomasyonu tekrar eden testler, test süreçlerinde sık kullanılan gerekli testlerin otomatikleştirebilir ve manuel yapılması zor olacağı testleri içerebilir. Test otomasyon arayüzü birden çok test etme araçlarının ve test altındaki uygulamanın Sistem/entegrasyon testi için sağlanan yapının(framework) birlikte çalışabilirliği için tek bir çalışma arayüzü sağlayan platformlardır. Test otomasyon arayüzü aşağıdaki ana modülleri içerir: • Arayüz motoru • Arayüz ortamı • Nesne havuzu

Test aracı: Test yönetimi, test tasarımı, testin yürütülmesi ve sonuçlarının değerlendirilmesi gibi test aktivitelerine yardımcı olmak için kullanılan yazılım. Genel olarak yaygın kullanılan araçlar Selenium otomasyon aracı, Jmeter performans test aracı, Testlink test yönetim aracıdır. Tabii farklı testler için birçok farklı test aracı da vardır.

Test mühendisi kimdir ne yapar: Geliştirilen yazılım üzerinde test yapan kişidir. Tüm dokümanları okumak ve neyin test edilmesi gerektiğini anlamak ve nasıl olacağına karar vermek. Test senaryolarını geliştirmek ve test faaliyetlerine öncelik vermek. Tüm test senaryolarını yürütmek ve hataları bildirmek, hata önceliği ve ciddiyeti tanımlamak. Her hata sonrası regresyon testi yapmak. Kullanıcıların taleplerini karşılamak ve memnuniyetini sağlamaya çalışırlar.

Test tipleri: Manuel ve Otomasyon
Manuel: Yazılımın el ile test edilmesidir. Yazılımdaki beklenilmeyen hata -davranış bulmak için yapılır. Küçük projelere uygun. Az maliyetli, yavaş, güvenilir değil, kullanıcı arayüzü testlerinde verimli.
Otomasyon: test yapan kişilerin script yazdığı ve test için başka yazılımlar kullandığı test türüdür. Yük, performans, stres gibi çok kullanıcı gerektiren testlerde ve sık sık değişiklik yapan regresyon testlerinde kolaylık sağlar. Maliyetli, güvenilir, karmaşık projeler için uygundur.

Test metodları: WhiteBox, BlackBox
Whitebox: yazılımın iç çalışma yapısını dikkate alarak yapılan test yöntemi. Kodun yapısını ve iç mantık yapılarını detaylı inceler. Test uzmanı kodu iyi bilmelidir.
Blackbox: yazılımın iç çalışma mantığı dikkate alınmadan sadece yazılımın girdi ve çıktı kombinasyonları göz önüne alınarak yapılan test etme yöntemi. Doğru olmayan ya da kayıp fonksiyonlar, ara yüz hataları, veri yapılarındaki hatalar, davranış ya da performans hataları, başlatma sonlandırma hataları bulunur.

Yazılım test seviyeleri:
Birim test(kodda) -> Entegrasyon testi(dizayn) -> Sistem testi(gereksinimleri tanımlama) -> Kabul testi(kullanıcı ihtiyacı)

Yazılım test türleri: genel olarak 3 kategoriye ayrılır; fonksiyonel, fonksiyonel olmayan(performans) ve bakım.
Fonksiyonel test: birim, entegrasyon, smoke, kullanıcı kabul, yerelleştirme, küreselleştirme, işlerlik.
Fonksiyonel olmayan test: performans, yük, kullanılabilirlik, dayanıklılık, ses, ölçeklenebilirlik.
Bakım testi: regresyon ve bakım

Test Seviyeleri:
*Birim Testi
*Entegrasyon Testi
*Sistem Testi
*Kabul Testi

birim testi

entegrasyon testi

sistem testi

kabul testi

Birim testi: Yazılımı oluşturan bileşenlerin tek başına test edilmesi testidir. Örneğin bunlar: prosedür, obje, fonksiyon. Whitebox metodolojisi ile iç işlemler üzerinde çalışır.

Entegrasyon testi: Her bir birimin bir bütün içinde çalışıp çalışmadığının kontrolü için yapılan testtir. Yukarıdan aşağı, aşağıdan yukarı ve sandviç test yöntemlerini barındırır.

Regresyon Testi: Uygulama ortamındaki yapılan tüm değişikliklerin yeni bir hata üretip üretmediğinin, mevcut özellikleri olumsuz yönde etkilemediğinin kontrolü için yapılan test.

Sistem Testi: Eksiksiz ve tamamen entegre bir yazılım ürününün testidir. Sistem testinin tek amacı bilgisayar tabanlı sistemi kullanmak olan bir dizi farklı testtir ve blackBox test kategorisine girer.

Performans Testi: Sistemin belli durumlarda, belirlenen beklentileri verip vermediğini kontrol etmek, performansını belirlemek için yürütülen fonksiyonel olmayan test çeşididir. Sistemdeki darboğazları ortaya çıkarır. Amaç sistemin açığını bulmak değildir, asıl amaç sisteme yapılan girdilerden alınan çıktılarla olması gereken sonuçların uygunluğunu tespit etmektir. Tüm test aşamalarında yapılabilir. İşlem, cevap süresi, verim oranı performans testinin ilgilendiği konulardır.

Load(Yük) Testi: Sistemin sınırlarını zorlayarak en fazla ne kadar veri işleme kapasitesi olduğunu belirlemek, bu yükte davranışlarını kontrol etmek amacıyla yapılan testtir. Hatta bazı durumlarda isterlerde belirtilen değerlerinde üzerine çıkılarak kaldırabilecek en fazla yükün ne olduğunu araştırır. Veri hacmi testi, veri debisi testi kapasite testi örnek olarak sayılabillir. ISTQB: bir bileşen veya sistemin artan yük karşısındaki (eşzamanlı kullanıcıların sayısı veya işlem sayısı) davranışlarını değerlendirmek için yapılan bir çeşit performans testidir. Bileşen veya sistemin yükü ne kadar tölere edeceği tespit edilir.

Stress Testi: Normal olmayan koşullarda hem yazılım hem de donanımın ne şekilde davranacağını görmek için yapılan testtir. Sistemin kaldırabileceği yük durumunda, ani etkilere verilecek tepki süresini ölçmek üzere yapılır. ISTQB: Bir sistem yada bileşeni öngörülen veya belirlenmiş çalışma yükünün sınırlarında yada ötesinde yada bellek veya sunucuya erişimi gibi kaynakların azalması durumundaki çalışma kapasitesini değerlendirmek için yürütülen bir çeşit performans testidir. Not: Yük testinden farkı zamandır, belli periyodlarda yapılır.

Kullanabilirlik Testi: Tasarımın kullanılabilirliğini ölçmek amacıyla yapılan testtir. 5 niteliği ölçer; öğrenilebilirlik, verimlilik, memnuniyet, hatırlanabilirlik, hatalar.

Recovery Testi
Taşınabilirlik Testi
Güvenlik Testi

Smoke Test: Bir yazılımın en önemli fonksiyonlarının çalışıp çalışmadığını anlamak amacıyla detaya girmeden yapılan testtir. Amaç kapsamlı testler yapmaktan ziyade sistemin kritik işlevselliklerinin iyi çalıştığını doğrulamaktır.

Sanity Test Yazılım derlemesini aldıktan sonra kodda veya işlevlerde küçük değişiklikler olan hataların giderildiğini ve bunlardan sonra başka sorun kalmadığını tespit etmek amacıyla yapılandır. Amaç yeni işlevselliği tamamen doğrulamak değil, geliştiricinin yazılıma rasyonellik uyguladığını tespit etmektir.

Fonksiyonel Test: Yazılımın işlevsel özelliklerinin analizine dayalı testtir. Birim, entegrasyon, smoke, kullanıcı kabul, yerelleştirme, küreselleştirme, işlerlik.

Foksiyonel Olmayan Test: Yazılımın fonksiyonalite dışındaki niteliklerinin testidir. Örneğin performans, yük, kullanılabilirlik, dayanıklılık, ses, ölçeklenebilirlik.

Kabul Testi: Çalıştırılmadan önce yazılımın son sınanmasıdır.

Alfa Testi: Geliştiricinin önünde müşterinin test etmesidir.

Beta Testi:Potansiyel kullanıcı tarafından geliştirici olmadan test edilmesidir. Bu değerlendirmelere dayanarak yeni sürümler geliştirilebilir.

Test Senaryoları ve Vakaları

STLC (Yazılım Test Yaşam Döngüsü): İhtiyaç analizi, test planlama, test durumları geliştirme, test ortamı kurulumu, test uygulaması( execution), test döngüsünün kapanması.

SDLC (Yazılım Geliştirme Yaşam Döngüsü): Geliştiriciler tarafından yüksek kaliteli yazılım tasarlama ve geliştirme faaliyetlerinin sırasıdır.

SDLC de TEST DURUMLARI OLUŞTURULUR, STLC de BU TEST DURUMLARI YÜRÜTÜLÜR.

Şelaleye göre SDLC adımları:


Gereksinim toplama -> Tasarım -> Kod -> Test -> Dağıtım -> Bakım
NOT:V modelde her aşamada test vardır bu sebepten daha uygundur. Sol taraf SDLC sağ taraf STLC.

BİR PROJE İÇİN SEÇİLEN GELİŞİM MODELİ O PROJENİN AMAÇLARINA VE HEDEFLERİNE BAĞLIDIR.

Test Senaryosu: Test edilebilen herhangi bir fonksiyonelliktir. Toplu test case ler setidir de denebilir.

Test Case( Vaka): Yazılım uygulamasına ait bir özelliği yada işlevselliğini doğrulamak için yürütülen eylemlerin bütünüdür.



Bir e ticaret sitesi için birkaç test senaryosu:

1.Arama işlevselliğini kontrol edin
2.Ödemelerin işlevselliğini kontrol edin.
3.Oturum açma işlevselliğini kontrol edin.

Oturum açma işlevselliğinin test vakaları ise şu şekilde olabilir:

1.Geçerli bir eposta kimliği ve şifre girildiğinde sistem davranışını kontrol edin.
2. Geçersiz eposta kimliği ve geçerli şifre girildiğindeki sistem davranışını kontrol edin
3. Geçerli eposta geçersiz şifre için sistem davranışı
4. Geçersiz eposta ve kimlik girildiğindeki davranışlar
5. Eposta ve kimlik boş bırakıldığındaki sistem davranışı
Vs vs.

Birim testi için örnek:

Kullanıcı adı ve şifre alanlarının uzunluğu. Giriş değerleri geçerli olmalı. Oturum açma düğmesi eposta ve şifre girildikten sonra aktif olmalı. Vs.

Entegrasyon testi:

Kullanıcı geçerli değerler girip ve oturum açma düğmesine bastıktan sonra karşısına profil sayfası yada anasayfa yahut karşılama mesajı geliyormu.

Fonksiyonel test için:

Geçerli veriler girildikten sonra oturum açılıyor mu. Açıldıktan sonra karşılama mesajı varmı. Geçersiz veri girildiğinde bir uyarı mesajı varmı. Şifresini unutan kullanıcılar için şifremi unuttum butonu varmı. Giriş alanında saklanan çerezler varmı.

Ben kimim?