1/49
YMT 412-Yazılım Kalite Ve GüvencesiYazılım Testine Giriş
F ı r a t Ü n i v e r s i t e s i Ya z ı l ı m M ü h e n d i s l i ğ i B ö l ü m ü
İçindekiler
2/49
Yazılım Testi…………………………………………..…………………….................................................................3
Türkiye Yazılım Kalite Raporu…………………………………………..……………………………….………………….8
Testin Amaçları………………………………………………………………………………..…………..………………….13
Doğrulama Ve Geçerleme …………………………………….………………………………………………….……15
Yazılım Hataları………………………………………………………………..……………………………………..………23
Testi Kim Yapar?…………………………………………………………………………..……………………………….……32
Yazılım Geliştirme Metodolojilerinde Test ..........……………..……………………………………………..………35
1
2
3
4
5
6
7
1. Yazılım TestiYazılım testi, yazılımın daha önce tanımlanmış teknik ve işlevselgereksinimleri karşılayıp karşılamadığının ve yazılımın beklendiği gibiçalışıp çalışmadığının kontrolüdür. Yazılım test süreci de temel olarak eldeedilen ürünün beklenen kalitede olduğunu belirlemek, değilse istenilenkaliteye ulaştırılmasını sağlamayı amaçlayan bir süreçtir.
3/49
1. Yazılım TestiBilgisayar sistemleri hatalar barındırır. Bu hatalar insan (geliştirici, analistvb.) ve donanım kaynaklı olabilir ve hatalar maddi ve/veya prestijkayıplarına neden olabilir. Yazılım test sürecinin proje döngüsünekatılmasıyla bu kayıplar en aza indirebilir. Burada unutulmaması gerekenşey mükemmel yazılım olmadığı ve bir yazılımın asla %100 testedilemeyeceğidir.
4/49
1. Yazılım TestiBir yazılımı %100 oranında test etmeye çalışmak hem maddi gerekçelerlehem de pratik olarak mümkün olmadığından, yazılımın beklendiği gibiçalıştığını gösterebilecek sınırlı sayıda ancak özenle seçilmiş bir testkümesinin belirlenmesi ve bu test kümesi üzerinden test yapılması dahamantıklıdır.
Yazılım testi başka bir ifadeyle bir yazılımın doğrulanması vegeçerlenmesi süreci olarak da tanımlanabilir.
5/49
1.1. Yazılım Testinin GelişimiYazılım testi ilk ortaya çıktığı sıralarda yalnızca hata ayıklama amacıylayapılmaktaydı. Sonra testler yazılımın doğru çalıştığını göstermek amacıylayapılmaya başlandı. Daha sonraları testlerin yapıcı olmaktan çok, yıkıcı birşekilde yapılmasının daha iyi sonuçlar verdiği görüldü.
1980’li yıllardan sonra daha kurallı geliştirme teknikleri kullanılmayabaşlandığından tüm geliştirme sürecini içeren aşamalı testler kullanıldı.Günümüzde de bu yöntem yanında hataları önlemeye yönelik testleryapılmalıdır.
6/49
1.1. Yazılım Testinin Gelişimi
7/49
2. Türkiye Yazılım Kalite RaporuVeriler Türkiye Yazılım Kalite Raporu 2011-2012’ den alınmıştır. 20sorudan ve 4 başlıktan oluşan anketi 250 yazılım geliştirme firmalarınınilgili IT direktör, Kalite Müdür, İş analisti, Proje Yöneticisi gibi kişilerincevaplanması istenmiştir. Cevaplar rapor halinde sunulmuştur.
8/49
International Software Testing Qualifications Board (ISTQB)Dünya çapında yazılım test sertifikası veren birkaç farklı kuruluşun içindeISTQB (International Software Testing Qualification Board) en yaygın ve liderkonumdadır.
ISTQB (International Software Testing Qualifications Board) yazılımtestine belirli standartlar koyup ortak bir dil oluşturan ve belirli sınavlardüzenleyerek sertifika veren gönüllü oluşturulmuş bir kurumdur. Türkiye’dede bu sınavın bilinirliği ve sertifikanın geçerliliği gün geçtikçe artmaktadır.
ISTQB de ilk olarak Foundation Level (temel seviye) sertifikası alınmasıgerekmektedir. Daha sonrasında Test Analist , Test Yönetimi ve Teknik testanalsti olarak 3 kola ayrılmaktadır.
Yazılım Test ve Kalite Derneği Türkiye’de ISTQB Sertifikasyon sınavlarınıgerçekleştirmektedir. Dünya’da 100 ülkede 380.000’den fazla uzman ISTQBsertifikalarına sahiptir.
9/49
ISTQB SertifikasyonlarıISTQB Foundation Level Sertifikasyon Sınavları
ISTQB Advanced Level Sertifikasyon Sınavları ise;
ISTQB Advanced Level Test Analyst
ISTQB Advanced Level Test Manager
ISTQB Advanced Level Technical Test Analyst
10/49
/49
Turkish Testing BoardTTB 2006 yılında yazılım test ve kalite alanında dünyanın en saygıngönüllü organizasyonu olan ISTQB’a (International Software TestingQualifications Board – (www.istqb.org) bağlı olarak kurulmuştur. Butarihten itibaren , Türkiye’deki bilişim profesyonellerinin yazılım testialanında ISTQB standartlarında eğitilmesi ve sertifikalanması amacıylaçalışmalarına başlamıştır.
Türkiye Bilişim Sektörünün uluslararası pazarlarda rekabet edebilmesiiçin sektörün yazılım testi ve kalitesi konusunda bilgilendirilmesi
ISTQB sınavlarının yapılarak sınavı kazanan adayların sertifikasyonu
Yazılım testi konusunda uluslararası kabul görmüş içeriğinTürkçeleştirilmesi
11/49
2. Türkiye Yazılım Kalite RaporuFirmanızda test işleminden kimler sorumludur?
12/49
Soruya birden fazla cevap verebilme imkanı vardır.
2. Türkiye Yazılım Kalite Raporuİşletmenizde kaç adet test
elemanı var?
13/49
41%
25%
15%
13%
6%
Hiç Yok <5
<10 <50
2. Türkiye Yazılım Kalite Raporu
En çok gerçekleştirdiğiniz test türleri nelerdir?
14/49
98,10%83,0…
43,40%
0,00%
20,00%
40,00%
60,00%
80,00%
100,00%
Fonksiyonel Performans Kullanılabilirlik
Soruya birden fazla cevap verebilme imkanı vardır.
2. Türkiye Yazılım Kalite RaporuÇalışanlarınızın test
sertifikasına sahip
olmaları ne kadar
önemlidir?
15/49
18%
52%
2%
28%
Çok önemli Önemli
Önemli değil Fikrim yok
3. Testin AmaçlarıMüşteriye sunmadan önce ürün kalitesinden emin olmak,
Yeniden çalışma ve geliştirme için masrafları azaltmak,
Geliştirme işleminin erken aşamalarında hataları saptayarak ileriaşamalara yayılmasını önlemek, böylece zaman ve maliyetten tasarrufsağlamak,
Müşteri memnuniyetini arttırmak ve izleyen siparişler için zeminhazırlamak.
16/49
3.1. Yazılım testinde neler test edilmektedir?İş gereksinimleri
İşlevsel tasarım gereksinimleri
Teknik tasarım gereksinimleri
Düzenleyici gereksinimler
Yazılımın kaynak kodu
Ortakların standartları
Donanım yapılandırılması ve dil farklılıkları
17/49
4. Doğrulama Ve GeçerlemeDOĞRULAMA
Ürünü doğru mu üretiyoruz?
Sistemin hatasız ve iyi bir mühendislikürünü olup olmadığını ölçer.
Geliştiriciler veya QA ekibi tarafındangerçekleştirilir.
Doğrulama aşamasında bulunanhataların maliyeti daha azdır.
GEÇERLEME
Doğru ürünü mü üretiyoruz?
Sistemin kullanıcı gereksinimlerineuygunluğu ölçer.
Test ekibi tarafından gerçekleştirilir.
Geçerleme aşamasında bulunanhataların maliyeti daha fazladır.
18/49
4.1. Doğrulama Süreci
Sözleşme doğrulaması
Süreç doğrulaması
İsterler doğrulaması
Tasarım doğrulaması
Kod doğrulaması
Belgelendirme doğrulaması
19/49
4.1. Doğrulama SüreciSözleşme Doğrulaması: Geliştirici ile müşteri arasında yapılan sözleşme şukıstaslara göre doğrulanmalıdır:
Geliştirici tüm isterleri karşılayabileceği güvenini vermektedir.
İsterler tutarlı olup kullanıcı gereksinimlerini kapsamaktadır.
İsterlere yapılacak değişiklikleri ve ortaya çıkabilecek problemleri kontrol edebilmek üzere yordamlar öngörülmüştür.
Taraflar arasında sahiplik, garanti, telif hakları ve gizlilik gibi konuları da içerecek şekilde işbirliği yapılmaktadır.
İsterlerle birlikte kabul kıstasları ve yordamları öngörülmüştür.
20/49
4.1. Doğrulama Süreci
Proje planlamaları yeterli ve takvime uygundur.
Proje için seçilen süreçler yeterlidir, planlandığı şekilde yürütülmektedir.
Proje süreçleri için seçilmiş standartlar, yordamlar ve ortamlar yeterlidir.
Proje personeli sağlanmış ve sözleşme gereklerine göre eğitilmiştir.
21/49
Süreç Doğrulaması: Süreç aşağıda listelenen kıstaslara göre doğrulanmalıdır.
4.1. Doğrulama Süreci
Sistem isterleri tutarlı, gerçekleştirilebilir ve test edilebilir durumdadırlar.
Sistem isterleri tasarım ölçütlerine uygun şekilde donanım öğelerine, yazılım öğelerine atanmıştır.
Yazılım isterler tutarlı, gerçekleştirilebilir ve test edilebilir durumda olup sistem isterlerine uymaktadır.
Emniyet, güvenlik ve kritik durumlarla ilgili yazılım isterleridoğrudur.
22/49
İsterlerin Doğrulanması: İsterler şu kıstaslara göre doğrulanmalıdır:
4.1. Doğrulama Süreci
Seçilen tasarım isterlerden türetilebilmektedir.
Tasarım isterlere göre tutarlıdır ve izlenebilir durumdadır.Tasarım, olayların, girdilerin, ara yüzlerin, mantık akışının uygun dizilişlerini, zaman ve büyüklük tahsislerini, hata tanımlarını, hataya dayanıklılığını gerçekleştirmektedir.
Tasarım, emniyet, güvenlik ve diğer kritik durumlarla ilgili isterleri gerçekleştirmektedir.
23/49
Tasarım Doğrulaması: Tasarım aşağıdaki kriterlere göre doğrulanmalıdır:
4.1. Doğrulama Süreci
Kod, tasarıma ve isterlere göre izlenebilir, türetilebilir ve test edilebilir.
Kod doğru ve kodlama standartlarına uygun olmalıdır.
Kod, olayların, girdilerin, ara yüzlerin, mantık akışının uygun dizilişlerini, zaman ve büyüklük tahsislerini, hata tanımlarını, hataya dayanıklılığı ve geri kazanmayı gerçekleştirmektedir.
Kod, emniyet, güvenlik ve diğer kritik durumlarla ilgili isterlerigerçekleştirmektedir.
Kod, yazan kişiden başkası tarafından rahatça okunabilir, anlaşılabilir ve bakım uygulanabilir.
24/49
Kod Doğrulaması
4.1. Doğrulama Süreci
Belgelendirme yeterli, uygun, tam, anlaşılabilir ve tutarlıdır.
Belgelendirme hazırlıkları takvime uygundur.
Belgelerin sürüm, baskı ve dağıtım denetimi belirlenmiş yordamlara göre yapılmaktadır.
Belgeler gizlilik derecelerine uygun olarak saklanmaktadır.
25/49
Belgelendirme Doğrulaması: Belgelendirme şu kıstaslara göre doğrulanmalıdır.
5. Yazılım Hataları
Yazılım geliştirme süreci boyunca hatalardan kaçınmak imkansızdır.
26/49
5. Yazılım HatalarıYazılım kalitesi konusunu anlamanın anahtarı failure, fault ve errorterimlerini anlamaktır.
IEEE Standart 610.12 (IEEE,1990) bu terimleri şu şekilde tanımlamıştır:
27/49
5. Yazılım HatalarıError: Kodlayıcı kaynaklı, doğru olmayan bir sonuç elde edilmesi.
Failure: Sistemin veya bir parçasının gerekli fonksiyonu yeterliperformansta yerine getirememesi.
Fault: Bir yazılım içerisindeki doğru olmayan adım, işlem veya veri tanımı.
Buna göre, failure kullanıcı gereksinimlerini veya ürün özelliklerinin doğruolarak karşılanamaması, fault yazılımdan kaynaklanan hata ve problemler,error ise kodlayıcı kaynaklı problemlerin ortaya çıkması durumu olaraközetlenebilir.
28/49
5. Yazılım Hataları
29/49
5.1. Hata Ayıklama (Debugging)
Hata ayıklama başarılı bir test sürecinin sonucudur. Şöyle ki, bir testsonucunda hatalar bulunduğu zaman hataların giderilme işlemine hataayıklama(debugging) denir.
30/49
5. Hata Ayıklama3 çeşit hata giderme stratejisi vardır.
31/49
Brute force
Backtracking
Causeelimination
5.1.1. Brute ForceBrute Force: Yürütme anındaki davranışlar izlenir, yazılım biriminin çeşitlinoktalarına ekrana veya bir dosyaya o an akışın neresinde olduğunu, geneldurumunu veya bir değişkenin değerini yazan deyimler eklenir. Bu bilgilerışığında, hataya neden olan yazılım kusuru aranır.
32/49
5.1.2. BacktrackingBacktracking: Kodun okunarak geri izlenmesi esasına dayanır. Hatanınoluştuğu yerden itibaren geriye doğru gidilerek kod incelenir; hata yaratandeyim yada kusurlu akış mantığı aranır. Küçük yazılımlarda yaygın olarakkullanılır. Yüksek satır ve modül sayısına sahip yazılımlarda, akış yolununçok dallandığı noktalarda bunu yapmak oldukça zordur.
33/49
5.1.3. Cause EliminationCause elimination: Tümevarım veya tümdengelim yöntemlerinedayanarak elde edilen verilere göre hatanın nedeni araştırılır. Ortayakonan varsayımları doğrulayıcı ya da çürütücü testler tasarlanır. İlk testlerolumlu sonuç verirse, daha ayrıntılı verilerle testlere devam edilerekhatanın tam yerinin saptanmasına çalışılır.
34/49
6. Testi Kim Yapar?Testi kimin yapacağı, test işlemine ve projenin paydaşlarına bağlıdır.Bilişim Teknolojileri sektöründe, büyük şirketler geliştirilen yazılımınyeterliliğini ölçmekle sorumlu test ekiplerine sahiptir. Yazılım testekibi, test edilecek uygulamanın büyüklüğüne ve karmaşıklığına göreoluşturulur.
35/49
6. Testi Kim Yapar?Çoğu durumda aşağıdaki çalışanlar sistemin test edilmesine kendi yaptıkları işle ilgili olarak dahil olurlar:
Yazılım test ekibi
Yazılım geliştirici
Proje lideri
Son kullanıcı
36/49
6. Testi Kim Yapar?Test Sürecinde mümkün olduğu kadar test ekibi daha etkin kullanılmalıdır ve diğer pozisyonların test sürecindeki etkinliği azaltılmalıdır.
Test yapan kişilerin,
Tedbirli,
Meraklı,
Eleştirmen
İyi iletişim kurabilen kişilikte olmaları gerekir.
37/49
7. Yazılım Geliştirme Metodolojilerinde Test
38/49
Ş
e
l
a
l
e
M
o
d
e
l
i
7. Yazılım Geliştirme Metodolojilerinde TestŞelale Modeli: Yazılım süreci lineardir, bir sonraki safhaya geçebilmek içinbir önceki safhada yer alan aktivitelerin tamamlanmış olması gerekir. Yanitest aşamasına gelebilmek için diğer aşamalar tamamlanmalıdır. Hatalarsadece 5. aşamada giderilebildiğinden yazılımın maliyetini artırır vebaşarısını azaltır.
Kullanıcı katılımı başlangıç safhasında mümkündür. Kullanıcı isterleri busafhada tespit edilir ve detaylandırılır. Daha sonra gelen tasarım vekodlama safhalarında müşteri ve kullanıcılar ile diyaloğa girilmez. Buyüzden kullanıcı testlerinde başarı yakalama oranları azdır.
39/49
7. Yazılım Geliştirme Metodolojilerinde Test
40/49
Ç
e
v
i
k
Y
a
z
ı
l
ı
m
7. Yazılım Geliştirme Metodolojilerinde Test
Agile: Geleneksel yaklaşımın tersine,test profesyonelleri, yazılım geliştirmeyaşam döngüsünün en başından itibarensürece dahil olurlar. Kullanıcınıngeliştirici ve test sorumlusu ile aynıortamı paylaşması prensibi, geliştirilenürünün kullanıcının gerçekten istediği birbiçimde geliştirilmesi ve gerçekçikullanım durumlarına göre testedilmesini sağlar. Test güdümlügeliştirme yöntemini( TDD) kullanır.
41/49
TDD: Test Driven Developmentyöntemiyle kodlama yaparken geneldeşu şekilde bir yol izlenmekdir.1. Tek satır kod yazmadan kodun
testini yaz.2. Testi çalıştır ve testin geçemediğini
gör.3. Testi geçecek en basit kodu yaz ve
testin geçtiğini gör.4. Kodu düzenle5. Başa dön
7. Yazılım Geliştirme Metodolojilerinde Test
42/49
V
M
o
d
e
l
i
7. Yazılım Geliştirme Metodolojilerinde Test
V modeli: Test işlemlerinin ne zaman yapılacağını ön plana çıkarır. Birönceki şekle bakacak olursak, sol kanat üretim etkinliklerini, sağ kanat datest etkinliklerini gösterir. Bu modelde geliştirme ve test paralel şekildeyapılır. Her aşama sonunda test edilecek ürün, test grubu tarafındansınanır, onay verildikçe bir sonraki aşamaya geçilir.
İsterlerin iyi tanımlandığı, belirsizliklerin az olduğu ve aşamalar halindeilerlenmesi gereken projelerde «v» modeli iyi sonuç verir.
43/49
7. Yazılım Geliştirme Metodolojilerinde Test
44/49
RiskAnalizi
RiskAnalizi
RiskAnalizi
RiskAnalizi
Proto-tip 1
Prototip 2Prototip 3
İşinPrototipi
Öninceleme
AnaliziİşinGenel Kavramı
GeliştirmePlanı
Birleştirme ve Test Planı
YazılımGereksinimi
Gereksinimonaylama
ÜrünTasarımı
Tasarımı testEtme ve onay
DetaylıTasarım
Kodlama
Modül TestiBirleştirme testi
Kabul testiServis
Simulasyon ve Modelleme
Amaca, Alternatiflere ve Sınırlamalara karar verme
Alternatifleri değerlendirme ve risk analizi
Bir sonraki fazın planlanması ve kullanıcı değerlendirmesi
Geliştirme ve bir sonraki ürünü onaylama
onay ekseni
Planlama Risk Analizi
ÜretimKullanıcı Değerlendirme
S
p
i
r
a
l
M
o
d
e
l
7. Yazılım Geliştirme Metodolojilerinde TestSpiral Model: Aynı safhalara geri dönülmesinin bir zorunluluk olduğunuvurgular. Proje çevrimlere ayrılır ve her bir çevrimin riskleri ayrı ayrı elealınır.
Bu modelin avantajları vardır. İlki üretim süreci boyunca ara ürün üretmeve üretilen ara ürünün kullanıcı tarafından sınanması temeline dayanır.Diğer bir avantajı gerek proje sahibi, gerekse yüklenici tarafındakiyöneticiler, çalışan yazılımlarla proje boyunca karşılaştıkları için daha kolayizleme planlaması yapılır. Avantajlarından biri de; yazılımın kodlanması vetesti daha erken başlar.
45/49
Çalışma Soruları1. Yazılım hatalarını örnek vererek açıklayınız.
2. Hangi yazılım geliştirme metodolojisinde testin yeri en büyüktür? Açıklayınız.
3. Hata ayıklama nedir? Test ile farkını yazınız.
4. Hata ayıklamanın türlerini yazıp açıklayınız.
5. Doğrulama ve geçerleme arasındaki farkları yazınız. Birer örnekle açıklayınız.
6. Doğrulama süreci aşamalarını yazınız.
7. Testin amaçları nelerdir? Yazılım testinde neler test edilir?
8. Test güdümlü geliştirme nedir? Avantajları nelerdir?
46/49
Kaynaklar[1] Software Enginnering A Practitioner's Approach (7th Edition),RogerPressman,2013
[2] Yazılım Mühendisliği(2. Baskı), M.Erhan Sarıdoğan,2008
[3] Yazılım Test Mühendisliği (1. Baskı), Rifat Çölkesen, 2010
[4] http://www.cihataltuntas.com/test-driven-development/
[5] www.kurumsaljava.com/download/10/
[6] http://www.turkishtestingboard.org/TurkeySoftwareQualityReport.pdf
[7] http://www.tutorialspoint.com/software_testing/
[8]http://www.computerworld.com.tr/wpcontent/uploads/2015/04/yazilim-testi.jpg
47/49
Top Related