Yazılım Test Prensipleri

Başlamadan önce , Yazılım Test Prensipleri 2.maddesinde “Yazılımı %100 test etmek imkansızdır !” yer almaktadır. Tüm testlerin yapılması mümkün olmadığı için de her zaman hata çıkma olasılığı vardır. Bunu çoğu kişi kabul etmeli arkadaşlar bunu dile getirerek başlamak istedim.

Yedi test prensibi ile test ilkelerini anlamak, test etmenin önemini kavramak ve prensipleri pratikte kullanmak için böyle bir yazı yazma gereği duydum umarım işinize yarar.

1. Testin amacı; yazılımda hataların olduğunu göstermektir, yazılımda hata kalmadığını ispatlamak değildir !
Test ile uygulamalardaki hatalar bulunur. Böylece ürünün kullanımı sırasında olası zaman/para ve itibar kaybı azaltılır. Ancak unutulmaması gereken nokta, ne kadar çok test yapılırsa yapılsın, hala bir yerlerde hatalar olmaya devam edecektir.

2. Yazılımı %100 test etmek imkansızdır !
Bir uygulamadaki tüm kombinasyon ve olasılıkları test edemezsiniz (Bazı aşırı-kritik uygulama istisnaları haricinde). Bu makul bir durum değildir. Ancak teorik olarak sınırsız zaman ve bütçe olması durumunda (Ve psikoloji sağlam test ekibi de dahil) bu seçenek gerçekleşebilir. O yüzden gerçek hayatta, belli parametreleri dikkate alıp(Risk, öncelik vs) ona göre “makul yeterlilikte” test yapılır. Fizibilitesi doğru yapılmış bir test aktivitesi ile bu sınırsız seçeneği test etmeye yakın sonuçlar alınabilir.

3. Teste yazılım geliştirme sürecinin başında başlamak gerekir !
“Early Testing” dediğimiz erken test ; ürünü geliştirme sürecinde , hatta mümkünse geliştirme öncesinde test işlemine başlamak demektir. Bu prensip ile projenin ilerleyen zamanlarında bulunacak ve epey maliyetli olacak hata, daha yolun başındayken bulunur.Bu da kaliteyi hızlı ve etkin bir biçimde ölçme ihtiyacını karşılamış olur. Çünkü kaynaklar ve zamanlamadaki kısıtlamalar ortadan kalkmayan gerçeklerdir.

4. Hatalar yazılımın belli alanlarında yoğunlaşır / Hata Kümelemesi
Yapılan araştırmalar ve elde edilen deneyimlerde, hataların homojen dağılmadığı, genelde belli modüllerde/kısımlarda oluştuğu veya belli kişiler (Geliştirme ekibi) tarafından geliştirilen kısımlarda olduğu görülmüştür. Ekonomi bilimindeki meşhur 80–20 kuralı gibi düşünülebilir (Pareto prensibi).Bu prensip dikkate alınarak en fazla hata alınan alana odaklanıldığında hataların büyük çoğunluğu bulunmuş olur. Böylece kısa sürede birçok kusur(defect) bulmuş oluruz bile.

5. Antibiyotik Direnci/ DNT paradoksu
Aynı test case, aynı data ile (Bir de aynı kişi olursa, paradoks daha güçlenir) defalarca test edildiğinde, artık orada bir hata bulunması zor olur. Test doğası gereği üçüncü/bağımsız bir göz olması ve farklı girdilerle sonuç alması dolayısıyla, aynı şeyi yapmak, artık oradada bir direnç gösterir. O yüzden, belli sürelerde data değiştirilmeli ve mümkünse o testler başka bir ekip üyesi tarafından çalıştırılmalıdır. Yalnız burda ufak bir istisna var: otomasyon testleri. Burda durum tersidir. Yani, aynı test aynı data ve state ile test edilmelidir ki, çıkan hata ona göre tekrar edilebilir (Reproduce) olsun.

6. Test yaklaşımı ve aktiviteleri yazılım projesinin koşullarına göre değişiklik gösterir
Her ne kadar ana konsept aynı olsa da, test yaklaşımı içeriğe/projeye göre değişkenlik gösterir. Farklı sektörlerin, farklı alanların ihtiyaçları farklıdır. Enerji sektörü, Telekom sektörü, Bankacılık sektörü vs hepsinin öncelikleri, riskleri ayrıdır. O yüzden, test stratejisi ve yaklaşımı oluştururken sektörün dinamikleri de göz önünde bulundurulmalıdır.

7. Yeni hata bulunamadığında başarılı bir yazılım elde ettik yanılgısı
“Hatasız Kod Olmaz” , Herkes hata yapabilir. Ne olursan ol, deneyimin ne olursa olsun, bilgi ve pozisyonun her ne ise, sonuçta insansın ve hata yaparsın. O yüzden “ben asla hata yapmam” veya “o hatayı yapmam imkansız” demeyin. Bu durum, özellikle test ekibini çok ilgilendiriyor. Projenin tüm “hata” bulma beklentisi test ekibine yığılıyor. Test ekibindeki insanların “gerçekten noksansız” olması bekleniyor, bu durum hem teknik hem sosyal sorunlara yol açıyor.

<span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> ISTQB | Yazılım Test Prensipleri için yorumlar kapalı

Yazılım Test Yaşam Döngüsü

Yazılım test yaşam döngüsü (Software Testing Life Cycle – bundan sonra Yazılım test yaşam döngüsü olarak kullanılacaktır.), bir sırayla yürütülecek bir dizi adımdan oluşan yazılım test sürecini ifade eder. Yazılımın gerekli kalite standartlarını karşıladığından emin olmak ve iyileştirilmesi gereken alanları belirlemek için yapılır. Yazılım test yaşam döngüsü aşamaları kuruluşa bağlı olarak değişebilse de, temel adımlar aynı kalır.

Yazılım Test Yaşam Döngüsü
Test Gereksinimlerinin Analizi

Bu, Kalite Güvence test cihazlarının test gereksinimlerini incelediği ve analiz ettiği yazılım testi yaşam döngüsünün ilk aşamasıdır. Bu aşama, test ihtiyaçlarının kapsamının belirlenmesine yardımcı olur.

İki ana test türü fonksiyonel testler ve fonksiyonel olmayan testlerdir:

  1. İşlevsel test – yazılımın işleyişini değerlendirmek için testler içerir.
  2. İşlevsel olmayan test – performans testi , güvenlik testi ve yük testi gibi sahne arkasındaki özellikleri değerlendirmek için testler içerir .
    İhtiyaç analizi aşamasında yer alan faaliyetler aşağıdaki gibidir:

Kalite Güvence ekibi (QA) gereksinimlerini analiz eder ve test ihtiyaçlarının listesini oluşturur.

  • Herhangi bir şüphe durumunda, Kalite Güvence ekibi müşteriler ve / veya paydaşlarla ilgili tüm endişeleri netleştirecektir.
  • Ardından, Kalite Güvence ekibi projeyi tamamlamak için gereken olası testleri özetler.
  • Projenin otomasyon gerektirmesi durumunda , bir otomasyon çalışması yapılacaktır.
Test Planlaması

Test analizi gereksinimleri tamamlandıktan sonra, bir sonraki adım testin nasıl yapılacağını planlamaktır. Bu, test hedeflerine ulaşılmasına yardımcı olabilecek kaynakları ve faaliyetleri tanımlamayı içerir. Sonuç, Test Planı belgesini üretir . Planlama iki faktöre dayanarak yapılır:

  1. Kuruluşun test stratejisi.
  2. Risklerin analizi ve yönetimi.

Test planlama aşamasında yer alan faaliyetler aşağıdaki gibidir:

  • Projenin kapsamı belirlenir.
  • İlgili riskler analiz edilir ve bunların azaltılması için bir plan yapılır.
  • Test tahmini yapılır.
  • Uygun test çözümlerinin seçimi .
  • Test için gerekli araçlar ve kaynaklar analiz edilir. Buna maliyet, gereken personel, işi tamamlamak için gereken çalışma saatleri ve sonuçların teslim edilmesi gereken son tarih dahildir.
  • Gerekli olması halinde, herhangi bir eğitim ihtiyacının analizi.
Test Durumlarının Geliştirilmesi

Bu aşamada, Kalite Güvence ekibi ayrıntılı test senaryoları oluşturur. Bu önemli görevlerden biridir ve yazılım test yaşam döngüsünün en önemli aşamalarından biri olarak kabul edilir.

İlgili faaliyetler aşağıdaki gibidir:

  • Yazılımdaki tüm özellikler için test senaryolarının geliştirilmesi.
  • Gerekirse otomasyon komut dosyalarının oluşturulması .
  • Test senaryoları ve test otomasyon senaryoları gözden geçirilir.
  • Test verileri oluşturulur.
Test Ortamının Kurulması

Yazılım test yaşam döngüsünün bir sonraki aşaması, yazılım / uygulamanın test edilmesi için gerekli yazılım veya donanımın kurulmasını içerir. Bu aşama ayrıca test senaryosu geliştirme aşamasına paralel olarak da gerçekleştirilebilir.

Kurulum aşamasında yer alan faaliyetler aşağıdaki gibidir:

  • Yazılımın tasarım ve yapısının yorumlanması.
  • Canlı test için test ortamının kurulması .
  • Donanım ve yazılım kurulumu gerekir.
  • Gerekirse herhangi bir üçüncü taraf başvurusunun entegrasyonu yapılır.
  • Yapının kurulumu test edilir.
  • Test verilerinin oluşturulması.
  • Yapı üzerinde duman testi(smoke test) , temel işlevlerin çalışmasını kontrol etmek için yapılır.
  • Yapı, duman testi sonucuna bağlı olarak kabul edilir veya reddedilir.

Yazılım Test Yaşam Döngüsü’nün test ortamı kurulum aşamasının sonucu, test ortamının kurulumunu, test verilerini ve duman testi sonucunu içerir.

Test Vakalarının Yürütülmesi

Test senaryoları bu aşamada test ortamında yürütülür. Kalite Güvence ekibi, test vakalarının yürütülmesi sırasında hatalarla karşılaşabilir ve daha sonra ayrıntılı olarak rapor edilir. Hatalar geliştirici tarafından giderildikten sonra test senaryoları Kalite Güvence ekibi tarafından tekrar test edilir.

Test yürütme aşamasında yer alan faaliyetler aşağıdaki gibidir:

  • Test senaryoları test ortamında yürütülür.
  • Test sonucu belgesi hazırlandı.
  • Başarısız test durumlarındaki hatalar kaydedilir.
  • Test senaryoları ve test planları gerekirse güncellenir.
  • Test durumları, kusurlar giderildikten sonra tekrar test edilir.
  • Yeniden test edildikten sonra çalışıyorlarsa kusurların kapanması.
  • Hataların kapatılmasından sonra sabit kalmasını sağlamak için yazılımın regresyon testinin uygulanması.
  • Yazılım Test Yaşam Döngüsü’nün test yürütme aşamasının sonucu, test senaryosu yürütme raporunun tamamlanmasını, gerektiğinde test vakalarının güncellenmesini ve hata raporlamayı içerir.
Yazılım Test Döngüsü Kapatma Aşaması

Bu aşamada, Kalite Güvence ekibi , test ettikleri ürünlerini tartıştıkları bir toplantı düzenler. Bu toplantının amacı, test sürecinde yapılan hataları anlamak ve gelecekteki projelerde tekrarlanmadığını görmektir.

Test döngüsü kapatma aşamasında yer alan faaliyetler aşağıdaki gibidir:

  • Testin tamamlandığının Test Kapsamı ve Yazılım Kalitesi temelinde değerlendirilmesi
  • Projeden çıkarılan derslerin günlüğü
  • Test sonuçları ciddi kusurların dağılımını anlamak için analiz edilir.
  • Test Kapanışı raporunun oluşturulması
<span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> ISTQB | Yazılım Test Yaşam Döngüsü için yorumlar kapalı

Yazılım Testi Nedir?

Yazılımlar, iş uygulamalarından tutun da (örneğin bankacılık) tüketici ürünlerine kadar (örneğin arabalar) yaşamın ayrılmaz bir parçasıdır. Çoğu insan, beklendiği gibi çalışmayan bir yazılım ile karşılaşmıştır. Düzgün çalışmayan yazılımlar; para, zaman veya ticari itibar kaybetme ve hatta yaralanma veya ölüm gibi birçok soruna yol açabilir. Yazılım testi, yazılımın kalitesini değerlendirmenin ve kullanım sırasında oluşabilecek yazılım hatası riskini azaltmanın bir yoludur.

Yazılım testi hakkındaki yaygın yanlış kanılardan biri yazılım testinin yazılımı çalıştırmaktan ve sonuçları kontrol etmekten ibaret olduğudur. Yazılım testi birçok farklı faaliyeti içeren bir süreçtir; test koşumu aktivitesi (sonuçların kontrolü de dahil olmak üzere) bu faaliyetlerden sadece bir tanesidir.

Test süreci aynı zamanda test planlama, test analizi, test tasarımı, testin uyarlanması, test ilerlemesini ve sonuçlarını raporlama ve bir test nesnesinin kalitesini değerlendirme gibi faaliyetleri içerir.

The Software Testing Life Cycle


Bazı testler, test edilen birimin veya sistemin çalıştırılmasını içerir; bu testlere dinamik testler denir.

Diğer testler, test edilen birimin veya sistemin çalıştırılmasını gerektirmez; bu testlere ise statik testler denir. Dolayısıyla testler; gereksinimler, kullanıcı hikayeleri ve kaynak kod gibi çalışma ürünlerinin gözden geçirilmesini de içerir.

Testler hakkındaki bir başka yanlış kanı ise testlerin tamamen gereksinimlerin doğrulanmasına, kullanıcı hikayelerine veya diğer spesifikasyonlara odaklandıklarıdır. Her ne kadar yazılım testleri sistemin belirli gereksinimleri karşılayıp karşılamadığını kontrol etmeyi içerse de, aynı zamanda sistemin operasyonel ortamında/ortamlarında kullanıcı ve diğer paydaş ihtiyaçlarını karşılayıp karşılamadığını kontrol etmek anlamına gelen sağlama yapmayı da içerir.
Test faaliyetleri farklı yaşam döngülerinde farklı şekilde düzenlenir ve yürütülür.

<span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> ISTQB | Yazılım Testi Nedir? için yorumlar kapalı

ISTQB Nedir ?

ISTQB 100’den fazla ülkede kar amacı gütmeyen, gönüllü dernekler şeklinde yazılım test ve kalitesi konusunda faaliyetlerini sürdüren en büyük uluslararası organizasyondur.

Türkiye’de de yavaş yavaş önemsenmeye başlanan uluslararası sertifika. Özellikle Avrupa’da Software Testing alanında iş arıyorsanız, cepte birkaç ISTQB sertifikası bulundurmakta fayda var. Sertifikanız varsa bu rahatlıkla iş bulacağınız anlamına gelmiyor olsa da, kendinizi geliştirmek ve test alanında gündemi takip etmek açısından yararlı olduğunu düşünüyorum.

Biz bu yazımızda Foundation Level (Temel Seviye) sertifikasından bahsedeceğiz Türkçe kaynak olarak resmi kuruluşun Türkçe diline çevirdiği Syballusu linkten edinebilirsiniz.
http://www.turkishtestingboard.org/foundation-level-ders-programi-turkce/

Temel Seviye sertifikasında katılım ücreti olarak:
200 USD + KDV belirlenmiştir

Sınav içeriğinden bahsedecek olursak toplam 40 adet sorudan oluşuyor ve geçme notu olarak 40 soru içerisinden 26 Adet doğru cevaba ulaşmak yeterli . Yanlış soru cevapları doğru soru sayısını azaltmamaktadır bu nedenle boş bırakmamakta fayda olduğunu bilin isterim.

Aşağıda ISTQB’nin çeşitli seviyelerde ve çeşitli dallarda ayrılmış sertifika türlerini görebilirsiniz.

http://www.turkishtestingboard.org/
https://www.istqb.org/

<span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> ISTQB | ISTQB Nedir ? için yorumlar kapalı