Close

2023-08-27

Yazılım Test Uygulamaları

Yazılım Test Uygulamaları

Bu Workshop Trakya Üniversitesi Bilgisayar ve İnovasyon Topluluğu ile Testinium firması tarafından düzenlenmiştir.

  • Yazılım Testi Nedir?
  • Yazılım Test Mühendisliği
  • Unified Functional Testing
  • API Testing
  • Load Test (Yük Testi)
  • JMeter Kullanımı

Yazılım Testi Nedir?

Yazılım testi (software testing), test altında hizmetlerin veya ürünlerin kalitesi hakkında paydaşlara bilgi sağlamak için yürütülen bir araştırmadır. Yazılım testi aynı zamanda, yazılım uygulamalarının risklerini anlamak için yazılımı bağımsız ve nesnel olarak incelemektir. Test teknikleri yazılım böceklerini (hatalar ve diğer kusurlar) bulma niyetiyle uygulama veya bir programı çalıştırma süreçlerini kapsar.

Yazılım testi bir veya daha fazla ilgili özelliği değerlendirmek için sistem bileşenlerini veya yazılım bileşenlerinin yürütülmesini içerir. Bu özellikler genellikle test altındaki sistem veya dahili bileşenleri işaret eder. Özellikler arasında geliştirme ve tasarımda kılavuzluk eden gereksinimlerin karşılanması, tüm ilişkili girdilere doğru şekilde karşılık verilmesi, kabul edilebilir zaman içerisinde fonksiyonların çalışması ve daha birçok özellik bulunmaktadır.

Yazılım testi, yazılımın kalitesi hakkında birbirinden bağımsız bilgiyi ve kullanıcılarına veya sponsorlarına başarısızlık riskini nesnel bir şekilde sağlar. Yazılım testi yürütülebilen bir yazılım çalıştırıldığı sürece var olur. Yazılım geliştirmeye genel yaklaşım sıklıkla ne zaman ve nasıl testin yürütüldüğünü belirlemektir.

Yazılım Testinin Amacı Nedir?

Yazılım testinin temel amacı, yazılımın belirlenen gereksinimleri ve standartları karşılayıp karşılamadığını doğrulamaktır. Bu, yazılımın istenen fonksiyonları doğru bir şekilde gerçekleştirip gerçekleştirmediğini, beklenmeyen durumlarla nasıl başa çıktığını ve potansiyel hataların veya eksikliklerin neler olduğunu belirlemek için yapılır. Aşağıda yazılım testinin amacı ve yazılım geliştirme sürecindeki yeri hakkında daha detaylı bilgi verilmiştir:

Kalite KontrolüYazılım testi, yazılımın kalitesini değerlendirmek ve doğrulamak için esastır. Test, yazılımın belirlenen standartlara ve gereksinimlere uygun olup olmadığını belirler.
Hataların TespitiTest süreci, yazılımdaki hataları, eksiklikleri ve kusurları tespit etmek için kullanılır. Bu, yazılımın daha güvenilir, stabil ve kullanıcı dostu olmasını sağlar.
Risk DeğerlendirmesiYazılım testi, yazılımın potansiyel risklerini belirler ve bu risklerin nasıl yönetileceğine dair bilgi sağlar.
Kullanıcı MemnuniyetiDoğru ve etkili bir test süreci, yazılımın son kullanıcıların beklentilerini karşılamasını sağlar.
Yazılım Geliştirme Sürecindeki YeriYazılım geliştirme sürecinin bir parçası olarak test, genellikle yazılımın farklı aşamalarında gerçekleştirilir. Başlangıçta birim testleri ile başlar ve entegrasyon, sistem ve kabul testleri ile devam eder. Çevik yazılım geliştirme metodolojilerinde, test sürekli ve iteratif bir şekilde gerçekleştirilir. Test, yazılımın her yeni sürümü veya özelliği için tekrarlanır, böylece her değişiklikten sonra yazılımın kalitesi korunur.

Yazılım testi, yazılım geliştirme sürecinin ayrılmaz bir parçasıdır ve yazılımın kalitesini, güvenilirliğini ve performansını garanti altına almak için kritik bir öneme sahiptir.

Yazılım Testinde Hangi Teknikler Kullanılır?

Yazılımın doğru ve etkili bir şekilde test edilmesi için birçok farklı test tekniği bulunmaktadır. Bu teknikler, testin amacına, yazılımın türüne ve testin gerçekleştirildiği aşamaya bağlı olarak değişiklik gösterebilir. İşte bazı yaygın yazılım test teknikleri:

TeknikAçıklama
Statik TestKodun çalıştırılmadan incelendiği bir test tekniğidir. Kod incelemeleri, taramalar ve gözden geçirmeler bu kategoriye girer.
Dinamik Test Kodun çalıştırılarak test edildiği bir tekniktir.
Beyaz Kutu Testi (White Box Testing)Yazılımın iç yapısının bilindiği ve bu bilgiye dayanarak testlerin gerçekleştirildiği bir test tekniğidir. Kod kapsamı, dal testi ve yol testi bu kategoriye girer.
Siyah Kutu Testi (Black Box Testing)Yazılımın iç yapısına bakılmaksızın sadece fonksiyonelliğine odaklanılarak gerçekleştirilen testlerdir. Sınır değer analizi, denklik sınıfı testi ve karar tablosu testi bu kategoriye dahildir.
Gri Kutu Testi (Grey Box Testing)Beyaz kutu ve siyah kutu testlerinin bir kombinasyonudur. Hem kodun iç yapısı hem de fonksiyonelliği dikkate alınır.
Kabul Testi (Acceptance Testing)Yazılımın belirlenen gereksinimleri karşılayıp karşılamadığını kontrol etmek için gerçekleştirilen testtir.
Birim Testi (Unit Testing)Yazılımın bireysel bileşenlerinin veya ünitelerinin izole bir şekilde test edildiği test türüdür.
Entegrasyon Testi (Integration Testing)Farklı bileşenlerin veya modüllerin birlikte doğru bir şekilde çalışıp çalışmadığını kontrol etmek için gerçekleştirilen testtir.
Sistem Testi (System Testing)Yazılımın tamamının, belirlenen gereksinimlere uygun olarak çalışıp çalışmadığını kontrol etmek için gerçekleştirilen testtir.
Yük Testi (Load Testing)Yazılımın belirli bir yük altında nasıl performans gösterdiğini ölçmek için gerçekleştirilen testtir.
Stres Testi (Stress Testing)Yazılımın maksimum yük altında nasıl performans gösterdiğini ölçmek için gerçekleştirilen testtir.
Usability Testi (Usability Testing)Yazılımın kullanıcı dostu olup olmadığını değerlendirmek için gerçekleştirilen testtir.
Güvenlik Testi (Security Testing)Yazılımın güvenlik açıklarını ve zayıf noktalarını tespit etmek için gerçekleştirilen testtir.

Bu tekniklerin her biri, belirli bir amaç için tasarlanmıştır ve yazılımın farklı yönlerini değerlendirmek için kullanılır. Uygun test tekniklerinin seçilmesi, yazılımın kalitesini ve güvenilirliğini artırmada kritik bir rol oynamaktadır.

Yazılım testi, bir yazılımın potansiyel risklerini belirlemek ve bu riskleri yönetmek için kritik bir araçtır. İşte yazılım testinin risk belirleme ve yönetme konusundaki rolü:

EtkiAçıklama
Risk TespitiTest süreçleri, yazılımda potansiyel olarak problem oluşturabilecek hataları, kusurları ve eksiklikleri tespit eder. Bu, yazılımın belirli bir işlevi gerçekleştirirken beklenmeyen bir davranış göstermesi, performans sorunları yaşaması veya güvenlik açıklarına sahip olması gibi riskleri içerebilir.
Risk DeğerlendirmesiTespit edilen riskler, olasılık ve etki açısından değerlendirilir. Bu, riskin gerçekleşme olasılığının ve bu riskin gerçekleşmesi durumunda ortaya çıkabilecek zararın ne olacağının belirlenmesi anlamına gelir.
ÖnceliklendirmeTüm riskler eşit derecede kritik değildir. Bazıları yazılımın temel işlevselliğini etkileyebilirken, diğerleri daha az kritik olabilir. Test süreçleri, riskleri önceliklendirerek en kritik olanların önce ele alınmasını sağlar.
Risk AzaltmaTest süreçleri, tespit edilen riskleri azaltmak veya ortadan kaldırmak için gerekli düzeltmelerin yapılmasını sağlar. Bu, hataların düzeltilmesi, performans iyileştirmelerinin yapılması veya güvenlik açıklarının giderilmesi şeklinde olabilir.
Risk İzlemeYazılımın yaşam döngüsü boyunca riskler sürekli olarak izlenir. Yeni sürümler, özellikler veya değişikliklerle yeni riskler ortaya çıkabilir. Test süreçleri, bu yeni riskleri tespit etmek ve yönetmek için sürekli olarak gerçekleştirilir.
DokümantasyonTest süreçleri, tespit edilen risklerin, gerçekleştirilen testlerin ve alınan aksiyonların detaylı bir şekilde dokümantasyonunu sağlar. Bu, gelecekte benzer risklerin daha etkili bir şekilde yönetilmesine yardımcı olur.
BilgilendirmeTest süreçleri, paydaşları ve proje ekibini potansiyel riskler hakkında bilgilendirir. Bu, risklerin farkında olmalarını ve gerekli aksiyonları almalarını sağlar.

Sonuç olarak, yazılım testi, bir yazılımın potansiyel risklerini belirlemekte ve bu riskleri etkili bir şekilde yönetmekte kritik bir role sahiptir. Bu, yazılımın daha güvenilir, stabil ve kullanıcı dostu olmasını sağlar.

Micro Focus Unified Functional Testing (UFT)

Micro Focus Unified Functional Testing (UFT), daha önce QuickTest Professional (QTP) olarak bilinen bir yazılımdır. UFT, yazılım uygulamaları ve ortamları için fonksiyonel ve regresyon test otomasyonu sağlar. UFT, anahtar kelime ve betikleme arayüzlerini destekler ve grafiksel bir kullanıcı arayüzüne sahiptir. Test prosedürünü belirtmek ve test edilen uygulamanın nesnelerini ve kontrollerini değiştirmek için Visual Basic Scripting Edition (VBScript) betikleme dilini kullanır. UFT, geliştiricilere bir programın işlemlerinin üç katmanını tek bir konsoldan test etme olanağı tanır: arayüz, servis katmanı ve veritabanı katmanı.

UFT, Mercury Interactive tarafından yazılmıştır ve orijinal adı QuickTest Professional’dır. Mercury Interactive, 2006’da Hewlett-Packard (HP) tarafından satın alındı. UFT 11.5, HP QuickTest Professional ve HP Service Test’i tek bir yazılım paketinde birleştirdi. Bu paket, 2016’da bölümün Micro Focus’a satılmasına kadar HP Software Division’dan temin edilebilirdi.


Micro Focus UFT, çeşitli yazılım uygulamaları ve ortamları için otomatik test yazılımıdır. Bir yerel GUI veya web arayüzü gibi bir kullanıcı arayüzü aracılığıyla fonksiyonel ve regresyon testleri gerçekleştirir. Uygulama kullanıcı arayüzündeki veya bir web sayfasındaki nesneleri tanımlayarak çalışır ve istenen işlemleri gerçekleştirir (örneğin, fare tıklamaları veya klavye olayları); ayrıca nesne özelliklerini, adı veya işleyici kimliği gibi yakalayabilir. HPE Unified Functional Testing, test prosedürünü belirtmek ve test edilen uygulamanın nesnelerini ve kontrollerini değiştirmek için bir VBScript betikleme dilini kullanır.

API Testing Nedir?

API testing, uygulama programlama arayüzleri (API’ler) üzerinde doğrudan ve entegrasyon testinin bir parçası olarak gerçekleştirilen bir yazılım test türüdür. Bu test, API’lerin işlevsellik, güvenilirlik, performans ve güvenlik beklentilerini karşılayıp karşılamadığını belirlemek için yapılır. API’lerin grafiksel bir kullanıcı arayüzü (GUI) olmadığı için API testi mesaj katmanında gerçekleştirilir. API testi, API’lerin artık uygulama mantığına birincil arayüz olarak hizmet ettiği ve GUI testlerinin, Agile yazılım geliştirme ve DevOps’ta yaygın olarak kullanılan kısa sürüm döngüleri ve sık değişikliklerle zorlukla sürdürülebildiği için otomatik testlerde kritik olarak kabul edilmektedir.

API Testinin Genel Bakışı:
API testi, API’leri doğrudan (izole bir şekilde) ve entegrasyon testi sırasında gerçekleştirilen uçtan uca işlemlerin bir parçası olarak test etmeyi içerir. Bu işlemler, web hizmetleri, ESB’ler, veritabanları, ana bilgisayarlar, web kullanıcı arayüzleri ve ERP’ler gibi çeşitli uç noktaları içerir. API testi, geliştirme ekibinin ürettiği API’ler üzerinde gerçekleştirildiği gibi, uygulama içinde kullanılan API’ler (üçüncü taraf API’ler dahil) üzerinde de gerçekleştirilir.

API testi, API’lerin doğru yanıtı (beklenen formatında) geniş bir talep yelpazesi için döndürüp döndürmediğini, sınır durumlarına (başarısızlıklar ve beklenmeyen/aşırı girişler gibi) uygun şekilde tepki verip vermediğini, kabul edilebilir bir süre içinde yanıtlarını döndürüp döndürmediğini ve potansiyel güvenlik saldırılarına karşı güvenli bir şekilde tepki verip vermediğini belirlemek için kullanılır.

API Testi, GUI Testi ve Test Otomasyonu:
API testi, GUI testinden daha uygun olarak kabul edilir, özellikle test otomasyonu ve sürekli test için. Bunun nedenleri arasında sistem karmaşıklığı, kısa sürüm döngüleri ve hızlı geri bildirim döngüleri bulunmaktadır. Bu nedenlerle, ekiplerin API test seviyelerini artırırken GUI testine olan bağımlılıklarını azaltmaları önerilmektedir.

API Test Türleri:
API testi üzerinde gerçekleştirilebilecek çeşitli test türleri bulunmaktadır. Bunlar arasında duman testi, işlevsel test, güvenlik testi, penetrasyon testi ve doğrulama testi gibi testler bulunmaktadır. Yapay zeka (AI) API testinde kullanılarak test sürecinin verimliliğini ve doğruluğunu artırabilir.

Yük Testi (Load Testing) Nedir?

Yük testi, bir yazılım uygulamasının veya sisteminin belirli bir yük altında nasıl performans gösterdiğini ölçmek için gerçekleştirilen bir test türüdür. Bu test, bir sistemin veya uygulamanın belirli bir kullanıcı sayısı veya işlem miktarı altında nasıl tepki verdiğini belirlemek için yapılır. Yük testinin amacı, performans sorunlarını tespit etmek, sistem kapasitesini belirlemek ve herhangi bir performansla ilgili sorunun nedenini bulmaktır.

Yük testi sırasında, aşağıdaki metrikler genellikle izlenir:

  • Yanıt süreleri
  • İşlem oranları
  • Eşzamanlı kullanıcı sayısı
  • Sistem ve uygulama hataları

Yük testi, bir sistemin maksimum kapasitesine ulaşana kadar yükün kademeli olarak artırılmasıyla gerçekleştirilir. Bu, sistemin ne zaman başarısız olacağını ve hangi koşullar altında en iyi performansı gösterdiğini belirlemek için yapılır.

Bu test türü, web siteleri, web uygulamaları, mobil uygulamalar, API’ler ve daha birçok yazılım ürünü için uygundur. Özellikle e-ticaret siteleri, online bankacılık platformları ve büyük ölçekli web uygulamaları için kritik bir öneme sahiptir, çünkü bu platformlar genellikle yüksek trafik ve eşzamanlı kullanıcı sayısına maruz kalır.

Apache JMeter Nedir?

Apache JMeter, Apache Software Foundation tarafından geliştirilen bir projedir ve çeşitli servislerin performansını analiz etmek ve ölçmek için kullanılan bir yük testi aracıdır. Özellikle web uygulamalarına odaklanmaktadır.

JMeter, JDBC veritabanı bağlantıları, FTP, LDAP, web servisleri, JMS, HTTP, genel TCP bağlantıları ve OS yerel süreçleri için bir birim test aracı olarak kullanılabilir. JMeter ayrıca bir monitör olarak da yapılandırılabilir, ancak bu genellikle ileri düzey monitörleme yerine temel monitörleme çözümü olarak kullanılır. Fonksiyonel testler için de kullanılabilir. Ayrıca, JMeter, performans veya yük testleri yanında otomasyon betiklerini çalıştırmak için Selenium ile entegrasyonu destekler.

JMeter, değişken parametreleme, doğrulamalar (yanıt doğrulama), her iplik için çerezler, yapılandırma değişkenleri ve çeşitli raporları destekler. JMeter’ın mimarisi eklentilere dayanmaktadır. Temel özelliklerinin çoğu eklentilerle gerçekleştirilmiştir.