Chapter 8 Yazılım Testi. Lecture 1. Chapter 8 Software testing

Benzer belgeler
Bölüm 2 Yazılım Süreçleri. Ders 1

Chapter 6 Mimari Tasarım. Lecture 1. Chapter 6 Architectural design

Yazılım Mühendisliği 1

11.DERS Yazılım Testi

1.Yazılım Geliştirme Metotları 1

Yrd. Doç. Dr. Caner ÖZCAN

SAĞLIK TEKNOLOJİ DEĞERLENDİRME (STD) İÇİN MODELLEME VE BENZETİM. Dr. Murat Günal

BM208- Nesneye Dayalı Analiz ve Tasarım. Öğr. Grv. Aybike ŞİMŞEK

IBM CLM Çözümleriyle Çevik Yazılım Süreçleri. Canberk Akduygu & Koray Okşar

Yazılım Testine Bakış. Defne Şarlıoğlu

Kullanım Durumu Diyagramları (Use-case Diyagramları)

BENZERSİZ SORUNLARA BENZERSİZ ÇÖZÜMLER

SİSTEM VE YAZILIM. o Bilgisayar sistemleri donanım, yazılım ve bunları işletmek üzere gerekli işlemlerden oluşur.

Yrd. Doç. Dr. Caner ÖZCAN

Varlık davranış modeli: Bu aşama her entity ye etki eden durumların tanımlandığı, modellendiği ve dokümante edildiği süreçtir.

Bölüm 3 Çevik (Agile) Yazılım Geliştirme. Ders 1

ESİS Projesi. Kaynaklar Bakanlığı

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

9.DERS Yazılım Geliştirme Modelleri

SİSTEM MÜHENDİSLİĞİ TASARIMIN SENTEZLENMESİ II

Pardus Yazılım Testleri ve Hata Takip Sistemi

Yaz.Müh.Ders Notları #3 1

Bir yazılım geliştirme metodolojisi aşağıdaki adımlardan meydana gelir; Yazılım geliştirme sürecine destek verecek araçlar, modeller ve yöntemler.

KULLANILABİLİRLİK TESTLERİ VE UYGULAMALARI

Elbistan Meslek Yüksek Okulu Güz Yarıyılı

Veritabanı Yönetimi Bilgisayarların. Keşfi Hedefler. Veritabanı, Veri ve Bilgi. Veritabanı, Veri ve Bilgi. Veritabanı, Veri ve Bilgi

MerSis. Bilgi Teknolojileri Bağımsız Denetim Hizmetleri

Doküman No Revizyon No Yayın Tarihi Sayfa No PROSES FMEA TALİMATI

5. PROGRAMLA DİLLERİ. 5.1 Giriş

5.DERS PROJEDE YÜRÜTMENİN PLANLANMASI

Model Tabanlı Geliştirmede Çevik Süreç Uygulanması

Yaz.Müh.Ders Notları #6 1

Tetkik Gün Sayısı Tespiti

ISO 27001:2013 BGYS BAŞTETKİKÇİ EĞİTİMİ

Y I L D I Z T E K N I K Ü N İ V E R S İ T E S İ MÜHENDİSLİĞİ

ISO 9001:2009 KALİTE YÖNETİM SİSTEMİ STANDARDININ AÇIKLAMASI

1.2.7 Kurum ve Süreç Performans Yönetimi Günler

KOBİ AR-GE BAŞLANGIÇ DESTEK PROGRAMI AR-GE YARDIMI İSTEK FORMU AGY301-02

ANALİZ RAPORU. Grup ismi ÖZET. Analiz hakkında ne biliyorsunuz? İhtiyaç Analizi. İçerik Analizi. Hüseyin LÜLECİ. Cuma Ali KURT

Bilgisayar Sistemleri; donanım, yazılım ve kullanıcılardan oluşur. Yazılım sadece belirli bir işlemi yapan bir program değildir. Yazılım belirli bir

FTR 331 Ergonomi. yrd. doç. dr. emin ulaş erdem

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Sistem Geliştirme Yaşam Döngüsü (The Systems Development Life Cycle) (SDLC)

YAZILIM SINAMA TEKNİKLERİ GENEL BİLGİLER

BM-311 Bilgisayar Mimarisi

08225 AĞ TEMELLERĠ. Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU. 20 EKi Salı, Çarşamba

Mobil Cihazlardan Web Servis Sunumu

Web tabanlı altyapı sayesinde her cihazdan erişilebilir ve düzenlenebilir dokümanlar oluşturulup anında paylaşılabilir.

Sedona. Eğitim Kataloğu

Sedona. Nisan 2013 Eğitim Kataloğu

Üst Düzey Programlama

Sistem ve Yazılım Nedir?

WEB KULLANILABİLİRLİĞİ

Google Web Toolkit ile Öğretim Elemanı Otomasyon Sistemi

Öğretim planındaki AKTS Ulusal Kredi

Sizin başarınız için çalışıyorlar

FAN-SİM FAN-SİM FAN PERFORMANS HESAPLAMA VE SEÇİM YAZILIMI.

NX Motion Simulation:

BİÇİMSEL YÖNTEMLER (FORMAL METHODS) Betül AKTAŞ Suna AKMELEZ

Chapter 5 Sistem Modelleme. Lecture 1. Chapter 5 System modeling

YAZILIM MODELLEME VE TASARIM

Bilgiyi Keşfedin! Özelleştirme, Eklenti ve Veri Entegrasyonu Kurumsal Seviyede Yönetim ve Performans

SU KALITE SİSTEMİ. Türkiye Halk Sağlığı Kurumu

YAZILIM GÜVENLİK TESTLERİ. H A L D U N T E R A M A N h a l d u n t e r a m a g m a i l. c o m

TÜRK STANDARDLARI ENSTİTÜSÜ

SİSTEM ANALİZİ VE TASARIMI

Bilgisayarda Programlama. Temel Kavramlar

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers)

Smart Work ile SüreS. reçlerinizi Daha Verimli Hale Getirin Yeşim MUTLU. WebSphere Ürün Müdürü

Bilişim Teknolojileri Test ve Belgelendirme Hizmetleri. Mustafa YILMAZ

UNICASE.... kapsamlı bir CASE* aracı. *

Bölüm 9. Altprogramlar ISBN

Yaşanmış Tecrübe Paylaşımı Önce Test Et Sonra Kodla XP Pratiği

O T O M A S Y O N P A R T N E R İ N İ Z C O F A S O. T A S A R I M G E L İ Ş T İ R M E Ü R E T İ M K O M P L E S Ü R E Ç M Ü H E N D İ S L İ Ğ İ

Merhaba dediğini görün. Şimdi Cisco TelePresence ile gelecek yanınızda.

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.

Sistem Analizi ve Planlama

Yazılım Süreçleri Software Processes

NESNEYE YÖNELİK ÇÖZÜMLEME SÜRECİ

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

Akıllı Ortamlarda Sensör Kontrolüne Etmen Tabanlı Bir Yaklaşım: Bir Jadex Uygulaması

SİSTEM SİMÜLASYONU

VERİ MADENCİLİĞİ önemsiz olmayan, gizli, önceden bilinmeyen, potansiyel olarak kullanışlı

HSancak Nesne Tabanlı Programlama I Ders Notları

FAN SELECTOR FAN SELECTOR FAN SEÇİM YAZILIMI.

Üst Düzey Programlama

Zeki Gülen Marmara Üniversitesi Sosyal Bilimler Enstitüsü, Gazetecilik Ana Bilim Dalı, Bilişim

Yazılım Destek Hizmeti

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

WINDESKCONCENTO. sıgnum. Kurumsal İş Süreçleri Uygulamaları. windesk.com.tr

Yaz.Müh.Ders Notları #4 1

TSE Bilgi Teknolojileri Standartları Programı Sorumlu Grup: Bilgi Teknolojileri ve İletişim Hazırlık Grubu

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi SERVİS BİLEŞENLERİ. BLM401 Dr.Refik SAMET

aselsan Açık Pozisyonlar Bilgi Teknolojileri (BT) Denetçisi İç Denetçi

Yazılım Mühendisliği Bölüm - 2 Yazılım Geliştirme Yaşam Döngüsü. Cengiz GÖK

YMT 412-Yazılım Kalite Ve Güvencesi Test Stratejileri 1/57

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

1.1 Metodolojiyi Gerçeklemek Üzere Geliştirilen Altyapı

DESTEK DOKÜMANI. Web hizmetleri hesap ayarları bölümüne, mylogo.com.tr de tanımlanmış olan hesap kodu ve, ve portal adresi bilgileri kaydedilir.

Transkript:

Chapter 8 Yazılım Testi Lecture 1 1

Konular Geliştirme testi Test tabanlı geliştirme Sürüm testi Kullanıcı testi 2

Programı test etmek Test etmek, bir programın yapması gereken şeyi yaptığını doğrulamak ve programdaki hataları keşfetmek için program kullanılmadan önce yapılan işlemdir. Bir yazılımı test ederken yapay veriler kullanılır. Çalıştırılan bir testin sonucunda, hatalar, anormallikler veya programın fonksiyonel olmayan özellikleri ile ilgili bilgiler edinilir. Test, Tetkik ve Tasdik sürecinin bir parçası olarak düşünülebilir. 3

Program testinin amaçları Gösterim amaçlı testlerde yazılımın ihtiyaçları karşılayıp karşılamadığı gösterilir. Özel amaçlı bir yazılımın testi için gereksinim dokümanındaki her bir gereksinim için en az bir test bulunmalıdır. Genel amaçlı bir yazılımın testi için sistemin özelliklerini sınayacak testlerin yanı sıra bu özelliklerin birleşimi için de testler bulunmalıdır. Keşif amaçlı testlerde yazılımın hangi davranışlarının hatalı, istenmeyen olduğu veya gereksinimleri karşılamadığı gösterilir. Kusur testi sistemin çökmeler, diğer sistemlerle istenmeyen etkileşimleri, yanlış hesaplamalar ve veri bozma gibi davranışlarına odaklıdır. 4

Doğrulama ve Kusur Testi Önceki sayfadaki ilk amaç doğrulama testini yönetir Verilen bir test durumları kümesi için sistemin istenen çıktılar üretmesini bekleriz. Önceki sayfadaki ikinci amaç kusur testini yönetir Verilen test durumları kümesi için sistemin hata verip vermediği gözlemlenir. 5

Program testi için bir giriş-çıkış modeli 6

Verification (Tetkik) vs Validation (Tasdik) Tetkik: «Ürünü doğru geliştiriyor muyuz?. Yazılım, gereksinimleri sağlamalı Tasdik: «Doğru ürünü geliştiriyor muyuz?. Yazılım gerçekte kullanıcının istediklerini sağlamalı 7

İnceleme ve Test Yazılım inceleme, statik olarak yapılan tetkiktir. Dokümantasyon ve kod analizi şeklinde olabilir. Yazılım testi, dinamik olarak yapılan tetkiktir. Sistem, test verisi ile çalıştırılır ve davranışları gözlemlenir. 8

Yazılım İncelemeleri İnsanların, kaynak koddaki hataları ve anormallikleri aramalarını kapsar. İnceleme, yazılımın çalıştırılmasını gerektirmediği için geliştirme sürecinden önce de yapılabilir. Sistemin herhangi bir «gösterimi» üzerinde yapılabilir. (gereksinimler, tasarım, konfigürasyon verisi, test verisi.) Program hatalarının keşfi için etkili bir yöntemdir. 9

İncelemenin avantajları Test esnasında bazı hatalar diğer hataları maskeleyebilir. İnceleme statik bir süreç olduğu için hataların etkileşimleri ile ilgilenmenize gerek yoktur. Sistemin henüz bitmemiş sürümleri incelenebilir. Programdaki hataları arama şeklinde olabileceği gibi aynı zamanda istenen standartları sağlayıp sağlamadığı, taşınılabilirlik ve sürdürülebilirlik gibi özellikler de incelenebilir. 10

İnceleme ve Test İnceleme ve Test birbirlerini tamamlayan şeylerdir. Biri diğerinin yerine kullanılamaz. İnceleme bir gereksinimin sağlandığını gösterebilir ancak kullanıcının gerçek ihtiyacını onaylayamaz. İnceleme, performans, kullanılabilirlik gibi fonksiyonel olmayan gereksinimlerin kontrol edilmesinde kullanılmaz. 11

Testin aşamaları Geliştirme testi, sistemin geliştirilmesi aşamasındaki hataların yakalanması. Sürüm testi, farklı bir test ekibi tarafından sistemin sürümden önce test edilmesi. Kullanıcı testi, kullanıcıların sistemi kendi ortamlarında test etmeleri. 12

Geliştirme testi Geliştirme testinin bütün aşamaları geliştirme ekibi tarafından yapılır. Birim testi, programın birimlerinin veya nesne sınıflarının test edilmesidir. Bu birimlerin fonksiyonellikleri ile ilgilenilir. Bileşen testi, bireysel bileşenlerin birleştirilerek daha büyük bileşenler oluşturulması aşamasında uygulanır. Bileşen testi, bileşenlerin arayüzlerine odaklanmalıdır. Sistem testi, sistemin bütün olarak test edildiği aşamadır. Sistem testi, bileşenlerin etkileşimlerine odaklanmalıdır. 13

Birim testi Bireysel bileşenlerin «izole» edilerek test edilmesi. Hata bulmayı amaçlar Olası bileşenler şunlardır: Bir nesnedeki fonksiyonlar veya metodlar Birçok özellik veya metoddan oluşan nesne sınıfları Birden çok arayüze sahip kompozit bileşenler. 14

Otomatikleştirilmiş test Eğer mümkünse, birim testi el değmeden otomatikleştirilmiş olarak yapılmalıdır. Otomatikleştirilmiş birim testi için test otomasyon frameworkleri kullanarak testler yazıp çalıştırabilirsiniz. Birim testi otomasyon frameworkleri genel amaçlı test sınıfları sağlarlar. 15

Otomatikleştirilmiş testin bileşenleri Kurma aşaması, girişlerin ve istenen çıkışların belirlendiği aşama. Çağırma aşaması, test edilecek nesnenin «çağırıldığı» aşama. Değerlendirme aşaması, sonuçların istenen spnuçlarla karşılaştırıldığı aşama. 16

Chapter 8 Yazılım Testi Lecture 2 17

Bileşen Testi Yazılım bileşenleri genelleikle birden fazla nesnenin etkileşimi ile oluşan kompozit bileşenlerdir. Bu bileşenlerin fonksiyonelliklerine arayüzleri üzerinden ulaşılır. Bundan dolayı bileşen testi, ilgili bileşenin aryüzünün nasıl davrandığına odaklanır. Bu aşamada, birim testlerinin yapılmış olduğu varsayılabilir. 18

Arayüz testi Amaç, arayüzlerdeki hataları yakalamaktır. Arayüz tipler Parametre arayüzleri veri bir metoddan diğerine aktarılır. Paylaşılan hafıza aryüzleri bir hafıza bloğu metodlar arasında paylaşılır. Prosedürel arayüzler Alt sistem, başka alt sistemler tarafından çağırılabilecek fonksiyonları kapsüller. Mesajlaşma arayüzleri Alt sistem, başka alt sistemlerden servis ister. 19

Arayüz hataları Arayüzün hatalı kullanımı Parametrelerin yanlış sırada verilmesi gibi. Arayüzün yanlış anlaşılması Bir ikili arama fonksiyonunun sırasız dizi ile çağırılması Zamanlama hataları Çağıran ve çağrılan metodların farklı hızlarda çalışması. 20

Arayüz testi için öneriler Verilerin sınır değerlerini kullanarak test verisini hazırla. Pointer parametreleri mutlaka null pointer ile dene. Mesajlaşma sistemlerini stres testi ile test et. Paylaşılan bir hafızanın kullanılması durumunda bileşenlerin çalışma sıralarını değiştirerek dene. 21

Sistem testi Sistem testi bütün sistem üzerinde yapılır. Amacı, sistem bileşenlerinin etkileşimlerini test etmektir. Sistem testi bileşenlerin uyumluluğunu, düzgün etkileşimlerini ve doğru veriyi doğru zamanda arayüzlerinden aktarabildiklerini sınar. Sistem testi, sistemin yeni çıkan özelliklerini test eder. 22

Kulanım durumları ile test Kullanım durumları birden fazla sistem bileşeninin etkileşimini içerir. Bu yüzden kullanım durumları, sistem testinde kullanılabilir. 23

Test tabanlı geliştirme (TTG) TTG, geliştirme ile testin iç içe geçtiği bir durumdur. Testler kodlamadan önce geliştirilir ve bir bileşenin testi geçmesi geliştirme süreci için önemlidir. Kod, artırımlı olarak geliştirilir. Bir kod parçası testi geçemezse sonraki aşamaya geçilmez. TTG, çevik yöntemlerin bir parçası olarak ortaya çıkmıştır ancak plan tabanlı yöntemlerle de kullanılabilir. 24

Test tabanlı geliştirme (TTG) 25

Test tabanlı geliştirme (TTG) süreç aktiviteleri Bir fonksiyonellik için bir artırım belirle. Bu artırım için test oluştur ve otomatik olarak geliştir. Testi, şimdiye kadar yazılmış diğer bütün testlerle birlikte sırası ile çalıştır. Fonksiyonelliği geliştir ve testi yeniden çalıştır. Bütün testler başarılı olduklarında sonraki fonksiyonelliğe geç 26

Test tabanlı geliştirmenin faydaları Kodların kapsanması Bütün kod parçaları en az bir kez test edilmiş olur. Regresyon testi Program geliştirildikçe regresyon test yapısı da geliştirilmiş olur. Basitleştirilmiş hata ayıklama Bir test hata ile sonuçlanınca hatayı nerde arayacağınızı bilirsiniz. Sistem dokümantasyonu Testler aynı zamanda birer dokümandır ve hangi bileşenin ne yapması gerektiğini söyler. 27

Sürüm testi Sürüm testi, bir sistemin belirli bir sürümünün geliştirme ekibi haricindeki kişilerce test edilmesidir. Bu testin birincil amacı, yazılımın kullanılacak durumda olup olmadığının sınanmasıdır. Bundan dolayı sürüm testi bir sistemin yapması gerekenleri yaptığını, performansını ve güvenilirliğini gösterir. Ayrıca, normal kullanım durumunda hata vermediğini gösterir. Sürüm testi «kara kutu» testi olarak da adlandırılır. 28

Sürüm testi ve Sistem testi Sürüm testi sistem testinin bir biçimidir. Önemli farkları: Sürüm testini, geliştirme ekibinin haricindeki bir ekip yapar. Geliştirme ekibi tarafından yapılan sistem testi, sistemin hatalarını bulmaya odaklıdır. Sürüm testinin amacı, sistemin gereksinimleri karşılayıp karşılamadığının belirlenmesidir. Böylece, sistemin kullanıma hazır olup olmadığı sorusunun cevabı bulunabilir. 29

Performansı test etmek Sürüm testinin bir parçası da performansı test etmektir. Testler, sistemin kullanım profiline uygun olmalıdır. Performans testleri genellikle sistemi artan biçimde yükleyen testler serisi olarak planlanır ve sistemin performansının «kabul edilemez» olarak adlandırıldığı noktaya kadar yapılır. Stres testi, performans testinin bir biçimidir. 30

Kullanıcı testi Kullanıcı testi (müşteri testi), girişlerin kullanıcılar tarafından verildiği ve sistemin değerlendirildiği bir aşamadır. Kapsamlı bir sistem ve sürüm testi yapılmış olsa bile kullanıcı testi gereklidir. Bunun nedeni, kullanıcının ortamının sistemin çalışması üzerinde büyük etkisinin olmasıdır. Bu durum bir test ortamında oluşturulabilecek bir durum değildir. 31

Kullanıcı test tipleri Alpha testi Geliştirme ekibi ile beraber çalışan kullanıcılar sistemi geliştirilen ortamda test eder. Beta testi Sistemin bir sürümü kullanıcılara açılır. Kullanıcılar sistem üzerindeki deneyimlerini ve çıkan problemleri geliştiriciler ile paylaşır. Kabul testi Müşteriler sistemin gerçek çalışma ortamında aktarılabilecek durumda olup olmadığını test ederler. 32

Kabul testi sürecinin aşamaları Kabul kriterlerini tanımla Kabul testini planla Kabul testini geliştir Kabul testini çalıştır Test sonuçlarını değerlendir Sistemi kabul et veya reddet 33

Çevik yöntemler ve kabul testi Çevik yaklaşımlarda müşteri geliştirme ekibinin bir parçasıdır ve sistemin kabul edilmesi üzerine karar verebilir. Testler müşteri tarafından tanımlanır. Ayrı bir kabul testi yoktur. Buradaki sorun, geliştirme ekibine dahil edilen kullanıcının «paydaşları» ne kadar temsil ettiğidir. 34