Anasayfa Bloglar Yazılım Testi Nedir?

Yazılım Testi Nedir?

Yazılım Geliştirme
11 Dakika Okuma Süresi · 14.10.2024
Blog Small Image

Bir şirketin iki yıldır bir ürün üzerinde sıkı bir şekilde çalıştığını hayal ederek başlayalım. Ürünün ilk sürümünün piyasaya sürülmesi hızla yaklaşıyor ve haliyle de herkes heyecanlı. 

Sonra büyük gün geliyor... Uygulama harika görünüyor ve birçok kullanışlı özelliğe sahip. Ancak uygulama birçok hatayla karşı karşıya. Kullanıcılar memnun kalmıyor ve olumsuz yorumlar yapıyor.

Bu durum nasıl önlenebilir? Yazılım testiyle!

Yazılım testi, şirketler için bu soruna yönelik temel bir çözümdür. Yazılım testi, bir yazılım sisteminin veya uygulamasının işleyişini doğrulama sürecidir. Sadece yazılımdaki hataları veya kusurları bulmaya odaklanmakla kalmaz, aynı zamanda kullanılabilirlik, doğruluk ve verimlilik açısından kalitesini artıracak önlemleri de dikkate alır.

 

Yazılım Testi Nedir?

Yazılım testi, bir yazılımın kalitesinin, işlevselliğinin ve performansının beklentileri karşılayıp karşılamadığını kontrol etme sürecidir. Ayrıca, gerçek sonuçların beklenen sonuçlarla uyuşup uyuşmadığını kontrol eder, hataların veya eksikliklerin belirlenmesine yardımcı olur.

Yazılım test uzmanları, bir dizi testi metodik bir şekilde uygulayarak yazılımın belirtilen gereksinimlerle uyumlu olduğunu doğrulayabilir ve ele alınması gereken herhangi bir sorunu ortaya çıkarabilir.

 

 

Yazılım Testi Neden Önemlidir?

Yazılım testi, yazılımın doğru çalışıp çalışmadığını kontrol etmek ve kalitesini artırmak için oldukça önemlidir. Yazılım testi etkili bir şekilde uygulandığında, nihai ürünün genel kalitesini ve kullanılabilirliğini artırabilir ve ekiplerin daha hızlı yenilik yapmasını sağlayabilir.

Yazılım geliştirmenin ilk aşamasında yazılım testi yapılmazsa, bu süreç daha sonra maliyetli hale gelebilir. Parasal kayba ve insan kaynaklarının yanlış kullanılmasına neden olabilir.

Yazılım testinin neden önemli olduğunu anlamak için geçmişte ciddi sorunlara yol açan örneklere bakalım 👇:

  • Facebook Kesintisi: 4 Ekim 2021'de Facebook, Instagram ve WhatsApp, Facebook'un veri merkezlerinde ağ trafiğini koordine eden hatalı yapılandırılmış yönlendiriciler nedeniyle büyük bir kesinti yaşadı.
  • Citibank'ın 900 Milyon Dolarlık Hatası: Citibank 2020'de, ödeme işleme yazılımının kullanıcı arayüzündeki (UI) bir hata nedeniyle yanlışlıkla 900 milyon doları başka bir hesaba transfer etti. Bu olay, kapsamlı UI testinin kritik önemini gözler önüne serdi.
  • Boeing 737 MAX: Boeing uçağın manevra karakteristikleri artırma sisteminde sorunlar vardı. Bu sorunlar 2018 ve 2019'da iki ölümcül kazaya neden oldu. İncelemeler sonucunda sistemin tasarımında kusurlar olduğu ve yazılımın yetersiz test edildiği ortaya çıkardı.
  • Yahoo Veri İhlali: Yahoo Eylül 2016'da 500 milyon kullanıcının kimlik bilgilerinin çalındığı büyük bir veri ihlali yaşadı.

Özetle, yazılım testi bu tür senaryoların ortaya çıkmasını önlemeye yardımcı olur. Yazılım testi ne işe yarar sorusunu şu şekilde özetleyebiliriz:

✅Kod içindeki hataların belirlenmesine yardımcı olur.

✅ Yazılımın kalitesini artırır.

✅ Müşteri güvenini kazanır.

✅ Büyük maliyetleri azaltır.

✅ Yazılımı optimize eder.

✅ Yazılım geliştirme yaşam döngüsünü hızlandırır.

 

Yazılım Test Uzmanı Ne Yapar?

Yazılım test uzmanının çok çeşitli sorumlulukları vardır. Ancak, şu şekilde özetleyebiliriz:

  1.  Hataları hızlı bir şekilde bulur.
  2.  Ürün kalitesinin genel bir değerlendirmesini sağlar.
  3.  Ürünün kalite standartlarına uygun olup olmadığını kontrol eder.
  4.  Zamanla ürün kalitesini iyileştirir.
  5. Çeşitli test uygulamalarını dener.
  6.  Test süreci oluşturur ve bunu sürekli olarak optimize eder.
  7.  Test etmede harcanan maliyeti, zamanı ve çabayı en aza indirmeye çalışır. 

 

Yazılım Testinde Neler Analiz Edilmelidir?

İyi bilgilere sahip olmak ve projenin ihtiyaçlarını anlamak, test uzmanının farkında olması gereken önemli bir husustur. Yazılımın yürütüleceği gerçek zamanlı ortam hakkında iyi bir fikir, test uzmanının yazılım testini verimli bir şekilde gerçekleştirmesini sağlar. Yazılım testinde gerekli olan unsurlar şöyle özetlenebilir:

  • Modülerlik
  • Yeterlik
  • Tasarım
  • Erişilebilirlik
  • Grafiksel kullanıcı arayüzü
  • Kod
  • Kullanıcı dostu
  • Güvenlik

 

Yazılım Testi ve Hata Ayıklama

Yazılım test alanına yeni başlayanlar genellikle yazılım testini ve hata ayıklamayı karıştırırlar. Her ikisi de hataları izlemeye yardımcı olduğu için benzer görünseler de, aslında farklı alanlardır.

  • 🔎 Yazılım Testi: Yazılımdaki hataları izlemenize ve belirlemenize yardımcı olur.
  • ⚙️ Hata Ayıklama: Yazılım test uzmanları tarafından belirlenen hataların çeşitli teknikler uygulanarak ve hata ayıklama araçları kullanılarak düzeltilmesine yardımcı olur.

Daha iyi anlamak için bazı temel farklılıklara bakalım;

Yazılım Testi

Hata Ayıklama

Yazılım geliştirme yaşam döngüsü boyunca yapılmalıdır.

Hata ayıklama, yazılım uygulama testi tamamlandıktan sonra yapılır.

Hataları ortaya çıkarır.

Hata ayıklama, tespit edilen hataları bularak ortadan kaldırır.

Yazılım geliştirme döngüsünün bir parçasıdır.

Hata ayıklama test sürecinin bir parçasıdır.

Yazılımın geliştirilmesine başlandığı andan itibaren başlar.

Test uzmanları herhangi bir hata bulduğunda hata ayıklama başlatılır.

 

Yazılım Test Türleri Nelerdir?

Farklı yazılım testi türleri, test hedeflerine ve test stratejisine göre birden fazla kategoriye ayrılabilir. Şu anda yazılım test uzmanlarının sıklıkla kullandığı iki ana yazılım testi türü vardır:

Fonksiyonel Test

Fonksiyonel test, yazılımın beklenen çıktıyı verip vermediğini doğrulamak için yapılan bir yazılım testi türüdür. Gerçek çıktının beklenen çıktıyla karşılaştırılmasıyla elde edilir. Test vakaları müşterilerin/kullanıcıların gereksinimlerine göre hazırlanır.

Fonksiyonel testin sağladığı temel kontroller şunlardır:

  • Test uzmanları uygulamanın nasıl çalıştığını tam olarak anlamalıdır.
  • Her zaman doğru ve eksiksiz veri kullanmak gerekir.
  • Uygulamanın işlevselliği ile test verileri uyumlu olmalıdır.
  • Tüm olası test senaryoları dikkate alınmalıdır.
  • Elde edilen sonuçlar, beklenen sonuçlarla karşılaştırılmalı ve kaydedilmelidir.

Fonksiyonel testlerin farklı türleri şunlardır:

1. Birim testi (Unit Testing)

Uygulamanın belirli bir birimi üzerinde yapılan test türü birim testi olarak adlandırılır. Bir birim, yazılımın en küçük test edilebilir parçasıdır. Yazılım test uzmanları birim testi için genellikle otomasyon test araçlarından yardım alır. Örneğin, kayıt ol butonunun doğru sayfa bağlantısına yönlendirilip, yönlendirilmediğini test etmek birim testine örnektir. 

Birim testi iki ana tür içerir:

✅ Beyaz Kutu Testi: Bu test türünde, uygulamanın iç yapısı veya temel kod tabanı test edilir. Uygulamanın tasarımında herhangi bir hata veya kusurun bulunmasını kolaylaştırır. Beyaz kutu testi çoğunlukla kodu daha iyi hale getirmek için tercih edilir. Koddaki verimsizlikleri, gereksiz kod satırlarını bulmak bu tür testlerde belirlenir. Kod optimizasyonunun ve güvenlik iyileştirmelerinin çoğu bu testin bir sonucu olarak gerçekleşir. Özetle, beyaz kutu testi web uygulamasının nasıl çalıştığına odaklanmaz. Daha çok nasıl daha iyi hale getirilebileceğine odaklanır. 

✅ Gorilla Testi: Gorilla testi, bir modülün bazı rastgele girdiler kullanılarak sık sık test edildiği ve modüllerin hatasız olarak kontrol edildiğinden emin olunduğu bir yazılım testi türüdür. Bu test türü, manuel ve tekrarlı bir şekilde yapılır. Kodun her parçası dikkate alınır ve rastgele girdilerle test edilip uygulama çökene kadar denenir. Kısacası Gorilla testi, uygulamanın sağlamlığını kontrol eder.

 

2. Entegrasyon testi (Integration Testing)

Entegrasyon testi, tüm sistemin entegre bir şekilde gereksinimleri karşıladığından emin olunan test türüdür. 

Entegrasyon testinin amacı, sistemdeki modüller arasındaki arayüz, veri akışı ve etkileşimdeki hataları bulmaktır. Test uzmanları, farklı birimlerin nasıl etkileşime girdiğini ve çeşitli senaryolar için nasıl çıktılar verdiğini araştırır.

Entegrasyon testi şu türü içerir:

✅ Big Bang (Büyük Patlama): Tüm uygulama modülleri entegre edilip bir araya getirilerek tam bir sistem oluşturulur. Ardından hatalar için test yapılır.
 

3. Sistem testi (System Testing)

Sistem testi, tüm entegre edilmiş modüllerin tamamını test etmeyi içerir. Bu test, sistem gereksinimlerinin karşılanıp karşılanmadığını doğrulamak ve onaylamak için test uzmanlarına olanak tanır.

Sistem devreye alındığında bu test çok önemlidir çünkü gerçek zamanlı bir senaryoya benzer bir durumun oluşturulmasına olanak sağlar. Dolayısıyla, bu test uygulamanın davranışını, mimarisini ve tasarımını incelemek için gerçekleştirilir.

Sistem testi, tüm sistemi doğrulayan çeşitli yazılım test kategorilerini içerir. Bu testlerden bazıları şunlardır:

✅ Uçtan Uca (E2E) Test: Uçtan uca test adından da anlaşılacağı gibi yazılım uygulamalarının başlangıçtan sona kadar olan iş akışını doğrulamayı içerir. Bu test türü, sistemin veri bütünlüğü ve entegrasyonu açısından doğrulanması için gerçek kullanıcı senaryolarını taklit etmeyi amaçlar. 

✅ Kara Kutu Testi: Kara kutu test yöntemi, yazılımın iç kod yapısının bilinmediği durumlarda işlevsellikleri doğrulamayı amaçlar. Burada ana bilgi kaynağı müşterinin belirlediği gereksinimlerdir. QA ekibi belirli bir işlevi seçer ve doğrulamak için girdi değerleri sağlar. İşlevin beklenen çıktıyı verip vermediği kontrol edilir. Eğer işlev doğru çıktıyı vermezse test başarısız olarak değerlendirilir; aksi halde test başarılı sayılır.

✅ Duman Testi (Smoke Testing): Sistemin temel ve karmaşık işlevlerinin beklendiği gibi çalışıp çalışmadığını doğrulamayı amaçlar. Diğer bir deyişle, geliştiriciler tarafından sağlanan yapı kodunun kararlı olup olmadığını belirlemeye yardımcı olur. 

✅ Akıl Sağlığı Testi (Sanity Testing): Bu test, regresyon testinin bir parçasıdır ve yazılımda yapılan kod değişikliklerinin beklendiği gibi çalışıp çalışmadığını kontrol eder. 

 

4. Kabul Testi
 

Yazılımı test ederken, birim, entegrasyon ve sistem testinin tamamlanmasının ardından bir sonraki adım uygulamanın kalitesini sağlamaktır. QA ekibi, kaliteyi önceden tanımlanmış test durumları ve senaryolarında tanımlamak için kabul testini çalıştırır.
Kabul testinde, QA ekibi tüm sistemi tasarım görünümünden iç işlevlerine kadar inceler. Kabul testi, alfa testi, beta testi, kullanıcı kabul testi ve gerileme testi gibi testleri içerir. 

 

Fonksiyonel Olmayan Test

Bir uygulamanın işlevsel olmayan yönlerinin beklendiği gibi çalışıp çalışmadığını doğrulamak için yapılan yazılım testi türü, fonksiyonel olmayan testtir. Bu test türü güvenilirlik, kullanılabilirlik ve performans gibi parametreleri dikkate alır. 

Fonksiyonel olmayan test türleri şunlardır:

1. Performans Testi


Performans testi, yazılım uygulamasının performans hedeflerini, örneğin yanıt süresi ve işlem kapasitesini (throughput) doğrulayan test türüdür. Bu test, ağ gecikmesi, veri tabanı işlem süreci, veri işleme ve sunucular arasındaki yük dengeleme gibi faktörlerin performansa etkisini ortaya çıkarır. 

Performans testi altındaki yazılım test türleri şunlardır:

  • Yük Testi: Yük testi, yazılımın istikrarını, kullanıcı sayısının hedeflenen seviyeye veya daha azına eşit olduğu durumlarda kontrol eder. Örneğin, yazılımınız 250 kullanıcıyı aynı anda yönetebiliyorsa ve yanıt süresi üç saniye olarak belirlenmişse, yük testi 250 veya daha az kullanıcıyla yapılır. Amaç, üç saniyelik yanıt süresini doğrulamaktır.
  • Stres Testi: Bu test, uygulamanın yanıt süresini ve kararlılığını, hedeflenen kullanıcı sayısının üzerinde bir yük uygulayarak kontrol eder. 
  • Ölçeklenebilirlik Testi: Uygulamanın ölçeklenebilirliğini kontrol etmek için tasarlanan kullanıcı sayısının üzerinde bir yük uygulanarak gerçekleştirilir ve uygulamanın çökebileceği nokta incelenir.
  • Flood (Taşkın) Testi: Flood testi, büyük bir veri kümesinin veri tabanına aktarılarak sistemin yanıt süresi ve istikrarını kontrol eder. QA ekibi, veri tabanının veri yönetim kapasitesini incelemek için flood testini kullanır.

 

2. Kullanılabilirlik Testi


Basitçe, test uzmanı uygulamanın kullanıcı dostu olup olmadığını kontrol eder. Uygulamanın kullanıcı arayüzünün kolayca kullanılabilir olup olmadığını doğrular. 

 

3. Güvenlik Testi

Güvenlik testleri, yazılım uygulamasının risklerini, tehditlerini ve güvenlik açıklarını ortaya çıkarır. Kötü niyetli saldırıları engellemeyi ve yazılım sistemindeki zayıflıkları tespit etmeyi amaçlar.

Güvenlik testi türleri şunlardır:

  • Sızma Testi: Bu test, yazılım uygulamasının dış saldırılara karşı savunmasız olup olmadığını değerlendirir. Yetkili bir siber saldırı yapılarak sistemin güvenlik sınırlamaları belirlenir. 
  • Güvenlik Açığı Tarama: Bu test, sistemdeki güvenlik açıklarını taramak için otomatik yazılımlar kullanılarak yapılır.
  • Etik Hacking: Etik Hacking testi, bir organizasyonun yazılım sistemini hacklemeyi içerir. Amaç, sistemdeki güvenlik açıklarını ortaya çıkarmaktır.

 

Hangi Uygulamalar Test Edilir?

Uygulama Testleri (AUT) genellikle dört ana kategoriye ayrılır:

  1. Web Testi
  2. API Testi
  3. Mobil Test
  4. Masaüstü Testi

Bu kategoriler arasında web testi en popüler olanıdır. Kalite Durumu Raporu’na göre web testi, son yıllarda en çok öncelik verilen test türü olmuştur. Diğer test türlerinin oranlarını aşağıdaki grafikte görebilirsin 👇.

 

Manuel ve Otomatik Test Nedir?

Yazılım testi, çeşitli yaklaşımlar kullanılarak gerçekleştirilen birçok farklı tür içerir. Test yapmanın iki ana yolu vardır: manuel ve otomatik test... Her yaklaşımın, yazılım geliştirme döngüsünün çeşitli aşamalarında belirli gereksinimleri ve amaçları vardır. Şimdi bu iki yaklaşımı daha ayrıntılı inceleyelim:

👉 Manuel yazılım testi, yazılımı manuel olarak, yani herhangi bir otomasyon aracı veya betiği kullanmadan test etmeyi içerir. Yazılım test uzmanı son kullanıcının rolünü üstlenir. Beklenmeyen bir davranış veya hatayı belirlemek için yazılımı test eder. Elbette günümüzün hızlı yazılım geliştirme yaşam döngüsünde manuel testin ölçeklenmesi zordur. 

👉 Otomatik test, yazılım test sürecini otomatikleştirmek için test komut dosyaları ve yazılım test otomasyon araçları kullanmayı içerir. Bu süreç, manuel bir sürecin otomasyonunu içerir. Otomasyon testi, manuel testte manuel olarak gerçekleştirilen test senaryolarını hızlı ve tekrar tekrar çalıştırmak için kullanılır.

 

Manuel Test ve Otomatik Test Arasındaki Farklar Nelerdir?

Herhangi bir yazılım test projesine başlarken, test ekibi ve geliştirme ekibi birlikte oturmalı ve hangi alanların manuel olarak test edileceğini ve hangi alanların otomasyon testinden yararlanılacağını belirten bir test planı geliştirmelidir. Manuel test ve otomatik test arasındaki temel farklılıklar şunlardır:

 

Manuel Test

Otomasyon Testi

Tanım

Herhangi bir komut dosyası veya araç kullanılmadan, bir insan tarafından manuel olarak gerçekleştirilen test.

Test vakalarını yürütmek için otomatik araçlar ve betikler kullanılarak gerçekleştirilen test.

Uygulama Hızı

İnsan emeğiyle gerçekleştirildiği için daha yavaştır.

Testler otomatize araçlar tarafından yürütüldüğü için daha hızlıdır.

Kesinlik

Tekrarlanan görevlerde insan hatasına daha yatkındır.

Tekrarlanan görevlerde insan hatasını ortadan kaldırdığı için daha doğrudur.

Kullanılabilirlik Testi

Etkilidir çünkü insan yargısına ve geri bildirimlere dayanır.

Etkisizdir çünkü araçlar kullanıcı deneyimini ve sezgiselliği değerlendiremez.

Gerileme Testi

Zaman alıcı ve emek yoğundur.

Her kod değişikliğinde testler otomatik olarak tekrar çalıştırılabildiği için oldukça verimlidir.

 

Yazılım Test Araçları

Yazılım testi, test araçlarının kullanılabilirliğiyle daha kolay hale gelir. Bu araçlar planlama, toplama, oluşturma, test yürütme ve analiz dahil olmak üzere çeşitli test süreçlerini destekler.

İhtiyaçlara göre kullanılabilen, otomatize test yaklaşımı için farklı araçlar mevcuttur. Yazılım testinde en çok tercih edilen yazılım test araçları için bu yazımıza da göz atabilirsin.

 

1. Selenium

Selenium, çeşitli tarayıcılar ve işletim sistemlerinde web uygulamalarını test eden açık kaynaklı bir otomatik test aracıdır. Web uygulaması testi için önde gelen otomasyon test framework’lerinden biridir. Bir uygulamayı bir tarayıcıda test ederken test sürecini otomatikleştirebilir ve hızlandırmaya yardımcı olabilir.

 

2. Cypress

Cypress, web uygulamalarında kullanılan popüler bir uçtan uca otomasyon test aracıdır. JavaScript tabanlıdır ve tarayıcılarda DOM manipülasyon tekniklerini kullanır. Cypress ile birim testleri, uçtan uca testler ve entegrasyon testleri yazabilirsin. 

 

3. Puppeteer

Puppeteer, Google Chrome için headless tarayıcı testine izin veren bir Node.js kütüphanesidir. Chrome tarayıcılarında testleri gerçekleştirmek için JavaScript'teki komutları kullanır.

 

Yazılım Test Kariyeri

Yazılım testi, yazılım geliştirme sürecinin kritik bir aşamasıdır. Yazılım test süreçlerini daha detaylı anlamak istersen, “Yazılım Test Yaşam Döngüsü” başlıklı yazımıza göz atabilirsin. 

Günümüzde, şirketlerin bu alanda yetkin profesyonellere olan ihtiyacı hızla artmaktadır. Kariyerinde Yazılım Test ve Otomasyon Uzmanı olarak mı ilerlemek istiyorsun? O halde hemen ücretsiz Yazılım Test Bootcamp eğitimlerimize göz atarak kendini bu alanda geliştirme fırsatını yakalayabilirsin!

İÇERİKLER
Konu içeriği

🎁 Coderspace Yılbaşı Çekilişi Stanley Termos, Herschel Sırt Çantası, Tişört, Python Sıfırdan Uzmanlığa kitabı, 500 TL Udemy desteği HEDİYE! Çekilişe Katıl
SIKÇA SORULAN SORULAR
Alfa testi nedir yazılım?

Ürünün iş gereksinimlerini karşıladığından emin olmak için yapılan test Alfa testi olarak adlandırılır. Ürünün başarılı bir şekilde çalışmasını sağlar.

Güvenlik testleri nelerdir?

Güvenlik testleri, yazılım uygulamasının risklerini, tehditlerini ve güvenlik açıklarını ortaya çıkaran testlerdir. Penetrasyon Testi ve Taşınabilirlik Testi, güvenlik testidir.

Maymun testi nedir?

Maymun testi, uygulamanın davranışını doğrulamak için test vakalarından bağımsız olarak test uzmanlarının rastgele girdiler sağlayarak uygulamayı veya sistemi test ettiği bir tekniktir. Maymun testinin amacı, yeni hatalar bulmaktır.

Önerilen İçerikler

Tüm İçerikler

Açık Etkinlikler

Tüm Etkinlikler
Geleceği Yazan Kadınlar Yapay Zeka Programı
Geleceği Yazan Kadınlar Yapay Zeka Programı

Kadınlar hem geleceği hem hayallerini yazıyor!

Yetenek Programı
  • Son Başvuru 9 Aralık
Detaylı Bilgi
Think Tech 2024
Think Tech 2024

Bilişim Teknolojisi Genç Yeteneklerle Buluşuyor!

Meet-up
  • Son Başvuru 10 Aralık
  • Başlangıç 10 Aralık
  • Bitiş 10 Aralık
Detaylı Bilgi
Gelecek Hayalim Projesi Teknoloji Eğitimleri
Gelecek Hayalim Projesi Teknoloji Eğitimleri

Gelecek Hayalim Topluluğu’na dahil olmak için hemen başvur!

Bootcamp
  • Son Başvuru 12 Aralık
Detaylı Bilgi
Tüm Etkinlikler

Codecast: Yazılımcı Sohbetleri

Farklı alanlardan konuklarımızın katılımlarıyla gerçekleşen Codecast’te yazılım ve veri bilimi yöneticilerini Podcast serimizde konuk ediyoruz!