Yazılım testi
![](https://upload.wikimedia.org/wikipedia/commons/thumb/0/05/TestingCup-Polish-Championship-in-Software-Testing-Katowice-2016.jpg/220px-TestingCup-Polish-Championship-in-Software-Testing-Katowice-2016.jpg)
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. Genellikle, bu özellikler test altındaki sistem veya dahili bileşenleri işaret eder:
- 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ı
- Yeterli derecede kullanılabilme
- Çalıştırılacak platformlarda indirilebilmesi ve kurulması
- Paydaşların istediği genel sonuçları başarabilme
Pratik olarak sonsuz her bir yazılım bileşeni için bile sayısın mümkün test vardır, tüm yazılım test etme yöntemleri mevcut zaman ve kaynaklar için uygun testleri seçmek için bazı stratejileri kullanırlar. Sonuç olarak yazılım testi tipik olarak (fakat özel değil) yazılım böceklerini bulmaya çalışan uygulama veya programı yürütmeye çalışı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. Mesela fazlı süreçlerde, çoğu test etme olayı sistem gereksinimleri tanımlandıktan ve test edilebilir programlarda gerçekleştirimi yapıldıktan sonra meydana gelir. Karşıt olarak Çevik yaklaşım, gereksinimler, programlama altında test etme genellikle eş zamanlı olarak meydana gelir.
Test tasarım teknikleri
[değiştir | kaynağı değiştir]Statik test etmeye karşın dinamik test etme
[değiştir | kaynağı değiştir]Yazılım testinde birçok yaklaşım mevcuttur. Önizleme, talimatlar statik test etme olarak refere edilir, diğer taraftan test olaylarının bir kümesi verilerek yürütülen programlanmış kodların testi dinamik test olarak refere edilir. Statik test etme statik program analizleri olarak veri akışını ve söz dizimini kontrol eden derleyiciler veya kaynak kod yapılarını kontrol eden editörler programlandığı için örtülüdür. Dinamik test etme programın kendisi yürütüldüğünde yer alır. Dinamik test etme, ayrık fonksiyonlara veya modüllere uygulanabilir ve kodun belirli parçalarını test etmek için %100 tamamlanmadan önce başlayabilir. Bunun için tipik teknikler ya sürücüleri ya da hata ayıklayıcılardan çalıştırmayı kullanır. Statik test etme doğrulamayı içerir oysa dinamik test etme geçerliliği doğrular. Bununla birlikte hepsi yazılım kalitesini geliştirmeye yardımcı olur. Statik analizler için teknikler arasında mutasyon test etme kaynak kodu mutasyona uğratarak hataları ortaya çıkartmak için test adımlarından emin olmak için kullanılabilir.
Kutu yaklaşımı
[değiştir | kaynağı değiştir]Yazılım test etme metotları geleneksel olarak beyaz-ve siyah kutu test etme şeklinde ayrılır. Bu iki yaklaşım mühendislerin test olaylarını tasarlamakta kullandığı noktaları tanımlamak için kullanılır.
Yapı bazlı veya beyaz kutu teknikleri
[değiştir | kaynağı değiştir]Beyaz kutu testi (cam kutu test etme, açık kutu test etme, transparan kutu test etme ve yapısal test etme olarak da bilinir) iç yapıları veya programın çalışmasını test eder, son kullanıcının maruz kaldığı fonksiyonelliği karşılar.
Beyaz kutu testinde sistemin iç bakış açısı test edilir ve aynı zamanda programlama becerileri test edilir bunlar test olaylarını tasarlamak için kullanılır. Test edici kod ile birlikte çalışacak girdi çalışmalarını ve uygun çıktıları belirler. Bu çevrimde ki test etme düğümlerinin örneklemesidir. Beyaz kutu testi birim, entegrasyon ve sistem seviyelerinde yazılım test süreçlerine uygulanabilir.
Beyaz kutu testinde kullanılan teknikler:
- API test etme (uygulama programlama arayüzü) uygulamanın kullanılan public ve private API’lerinin test edilmesi.
- Kod kapsamı: kodun kapsadığı kriterlerin doyurulduğunu test etmek için, mesela test tasarımcısı programda en azından bir kere yürütülmesini sağlayacak testler oluşturabilir.
- Hata injeksiyon metotları test stratejilerinin etkinliğini ölçümlemek için bilerek hatalara yol açtırma.
- Mutasyon ve statik test metotları.
Spesifikasyon bazlı veya kara kutu teknikleri
[değiştir | kaynağı değiştir]Siyah kutu testi yazılıma bir kara kutu gibi davranır, dahili gerçekleştirimi bilmeksizin fonksiyonelliği inceler. Test ediciler sadece yazılımın ne olduğunun, yaptığı şeyin farkındadırlar, nasıl yaptığının değil. Siyah kutu test teknikleri, Denklik Paylarına Ayırma, Sınırlı Değer Analizi, Karar Tablosu Testi, Durum Geçişi Testi, Kullanım Senaryosu Testi olarak 5 gruba ayrılır.
Kaynakça
[değiştir | kaynağı değiştir]Dış bağlantılar
[değiştir | kaynağı değiştir]- Çanakkale OnSekiz Mart Üniversitesi11 Haziran 2020 tarihinde Wayback Machine sitesinde arşivlendi.
- Çanakkale OnSekiz Mart Üniversitesi Bilgisayar Mühendisliği22 Ekim 2013 tarihinde Wayback Machine sitesinde arşivlendi.
Alanlar | Gereksinim çözümlemesi • Yazılım tasarımı • Programlama • Biçimsel yöntemler • Yazılım testi • Yazılım sistemleri • Yazılım dağıtımı • Yazılım bakımı |
---|---|
Kavramlar | Veri modelleme • Kurumsal mimari • Functional specification • Modelleme dili • Programlama paradigması • Yazılım • Yazılım mimarisi • Yazılım geliştirme yöntembilimi • Yazılım geliştirme süreci • Yazılımın niteliği • Yazılım kalite güvencesi • Yapısal analiz |
Yönelimler | |
Modeller | Geliştirme modelleri: Atik • Yinelemeli model • RUP • Scrum • Spiral model • Waterfall model • XP • V-Model Diğer modeller: CMMI • Veri modeli • İşlev modeli • IDEF • Bilgi modeli • Metamodeling • Nesne modeli • Görünüm modeli • UML |
Yazılım mühendisleri | Victor Basili • Dennis Ritchie • Kent Beck • Peter Chen • Grady Booch • Fred Brooks • Barry Boehm • Bjarne Stroustrup • Ward Cunningham • Ole-Johan Dahl • Tom DeMarco • Edsger Dijkstra • Martin Fowler • C. A. R. Hoare • Watts Humphrey • Michael A. Jackson • Ivar Jacobson • Craig Larman • James Martin • Bertrand Meyer • David Parnas • Winston W. Royce • James Rumbaugh • Danese Cooper • Niklaus Wirth • Edward Yourdon |
İlgili alanlar |
Bilgisayar biliminin alt dalları | ||
---|---|---|
Matematiksel temeller | Matematiksel mantık · Kümeler kuramı · Sayı teorisi · Çizge teorisi · Tip teorisi · Kategori teorisi · Sayısal çözümleme · Bilgi teorisi · Kombinatorik · Boole cebiri | |
Hesaplama teorisi | ||
Algoritmalar ve veri yapıları | ||
Programlama dilleri ve derleyiciler | ||
Eşzamanlı, paralel ve dağıtık sistemler | ||
Yazılım mühendisliği | ||
Sistem mimarisi | ||
Telekomünikasyon ve ağ oluşturma | ||
Veritabanları | Veritabanı yönetim sistemleri · İlişkisel veritabanı · SQL · İşlem yürütme · Veritabanı indeksleme · Veri madenciliği · Metadata (Üst veri) · Ana veri (Master data) | |
Yapay zekâ | ||
Bilgisayar grafikleri | ||
İnsan-bilgisayar etkileşimi | Bilgisayar erişilebilirliği · Kullanıcı arayüzleri · Giyilebilir hesaplama · Yaygın bilişim · Sanal gerçeklik | |
Bilimsel hesaplama | ||
Bilgisayar bilimi, ACM Hesaplama ve Sınıflandırma Sistemi'ne göre farklı konu ve alanlara ayrılabilir. |
Text is available under the CC BY-SA 4.0 license; additional terms may apply.
Images, videos and audio are available under their respective licenses.