<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="tr">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Statik ve Dinamik Analizler ile Hesaplanan Risklere Dayalı Olarak Test Modellerinin İyileştirilmesi</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Ceren</forename><forename type="middle">Şahin</forename><surname>Gebizli</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">Vestel Elektronik</orgName>
								<address>
									<settlement>İzmir</settlement>
									<country>Türkiye</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Duygu</forename><surname>Metin</surname></persName>
							<email>duygu.metin@vestel.com.tr</email>
							<affiliation key="aff0">
								<orgName type="institution">Vestel Elektronik</orgName>
								<address>
									<settlement>İzmir</settlement>
									<country>Türkiye</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Hasan</forename><surname>Sözer</surname></persName>
							<email>hasan.sozer@ozyegin.edu.tr</email>
							<affiliation key="aff1">
								<orgName type="institution">Özyeğin Üniversitesi</orgName>
								<address>
									<settlement>İstanbul</settlement>
									<country>Türkiye</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Statik ve Dinamik Analizler ile Hesaplanan Risklere Dayalı Olarak Test Modellerinin İyileştirilmesi</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">BB2F02BF32FE1CE2D52BEA1D62F2690A</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-25T02:05+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>Tasarım Doğrulama</term>
					<term>Yazılım Sınama ve Doğrulama</term>
					<term>Test Otomasyonu</term>
					<term>Kullanım Modeli Bazlı Test</term>
					<term>Test Verimliliği</term>
					<term>Kullanım Profili</term>
					<term>Test Senaryosu Oluşturma</term>
					<term>Kod Analizi</term>
					<term>Yazılım Güvenilirliği</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Model bazlı test teknikleri, sistem kullanım modelinden test senaryolarının otomatik olarak oluşturulmasını sağlayarak verimliliği artırmaktadır. Prensip olarak sonsuz sayıda test senaryosu oluşturmak mümkündür; ancak bu senaryoları sınamak için kaynaklar kısıtlıdır. Dolayısıyla, kullanılan modelin içeriği ve test senaryosu oluşturma teknikleri, etkin bir şekilde hataların tespit edilmesini sağlamalıdır. Bu çalışmamızda, model bazlı test için kullanılan model içeriği ve model parametrelerinin iyileştirilmesine yönelik özgün bir yaklaşım öneriyoruz. Yaklaşımımızda kullandığımız Markov zincirleri, istatistiksel verileri baz alarak, model parametrelerini, hata riski yüksek olan senaryolara ağırlık verecek şekilde güncellememize olanak vermektedir. Statik kod analiz teknikleri ve kullanım profili analizlerini değerlendirerek sık kullanılan ve hata ile karşılaşılma olasılığı yüksek olan işlevleri belirliyoruz. Model içeriğini bu işlevleri test etmek üzere oluşturuyoruz. Dinamik analiz sonuçlarına göre hata oluşumuna yatkın olan işlevlerin, oluşturulan test senaryolarına dâhil edilme olasılıklarını artıracak şekilde model parametrelerini güncelliyoruz. Bu yöntem ile gerçek bir Akıllı TV sistemi yazılımı için oluşturulan test senaryolarını kullandığımızda, hata tespit etkinliğinin arttığını gözlemledik.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="tr">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Giriş</head><p>Tüketici elektroniği alanında müşterilerin temel beklentisi, aldıkları ürünlerin son teknolojileri içermesi ve aynı zamanda ürünün işlevlerinin hatasız bir şekilde çalışması yönündedir. TV, uydu alıcı, beyaz eşya ve cep telefonları gibi sayılabilecek bu ürünler artık eski elektro-mekanik yapılarından uzaklaşıp karmaşık yazılım sistemleri haline dönüşmektedirler. Ürünlere son teknoloji özellikler eklendikçe test edilmesi gereken işlevlerin sayısı artmaktadır ve test süresinin kabul edilemez değerlere yükselmesine sebep olmaktadır. İşgücünün ve zamanın verimli kullanılması için test otomasyonu sağlanması yönünde çalışmalar yapılmıştır. Ancak test otomasyonu, test verimliliği için tek başına çözüm olmamaktadır. Ancak doğru tasarlanmış, hata tespit oranı yüksek test senaryolarının otomatik olarak sistem üzerinde uygulanması, maliyetlerin azaltılmasını, ürün kalitesinin yükseltilmesini, kaynak ve zamanın daha etkin kullanılmasını sağlayabilmektedir.</p><p>Model Bazlı Test (MBT) <ref type="bibr" target="#b0">[1]</ref>, test senaryolarının otomatik olarak oluşturulmasını sağlayarak verimliliği arttıran test tekniklerinden biridir. Bu teknikte öncelikle sistem gereksinimleri analiz edilerek, test edilecek sistemin beklenen davranışları, kullanıcı aksiyonları ve girdileri modellenir. Bir MBT aracı ile tasarlanan model üzerinden otomatik olarak test senaryoları oluşturulur.</p><p>MBT ile prensip olarak sonsuz sayıda test senaryosu üretmek mümkündür, ancak bu senaryoları sınamak için kaynaklar kısıtlıdır. Verimin yüksek olması için otomatik oluşturulan test senaryolarının hata tespit etkinliklerinin artırılması gerekmektedir. Dolayısıyla, test senaryosu oluşturmak için kullanılan modelin içeriği ve kullanılan model parametreleri kritik öneme sahiptir.</p><p>Bu çalışmada, hata tespit etkinliği yüksek test senaryolarının MBT ile oluşturulabilmesini sağlamak üzere, sistem modeli geliştirmek ve iyileştirmek için bir yöntem öneriyoruz. Yöntemimizde, sistem modelini Markov zincirleri <ref type="bibr" target="#b9">[10]</ref>[12] ile oluşturuyoruz. Bunun için öncelikle kullanım profili <ref type="bibr" target="#b5">[6]</ref> ile statik kod analizlerinin sonuçlarını temel alarak, sık kullanılan ve hata oluşumuna yatkın olan işlevleri değerlendiriyoruz. Bu değerlendirmelere göre modelde temsil edilen durumlar ile bu durumlara geçiş olasılıklarını belirliyoruz. Geliştirilen model ile oluşturulan test senaryoları çalıştırılırken, sistem üzerinde dinamik analizler gerçekleştiriyoruz. Dinamik kod analizi sonuçlarına göre hata oluşumuna yatkın olan durumları tekrar belirliyoruz ve sistem modeli üzerinde durum geçiş olasılıklarını güncelliyoruz.</p><p>Önerdiğimiz yöntem ile gerçek bir Akıllı TV sistemi yazılımı için geliştirilen bir modele dayalı olarak test senaryoları oluşturduk. Bu test senaryolarını çalıştırırken gerçekleştirdiğimiz dinamik analizleri değerlendirerek modeli güncelledik. Güncellenen modele dayalı olarak tekrar test senaryoları oluşturduk ve bu süreci 3 kez tekrarladık. Her tekrarda, hataya daha yatkın olan yazılım işlevlerini kapsayan test senaryolarının sayısı artarken, toplam test senaryolarının sayısının azaldığını ve buna rağmen tespit edilen hata sayısının arttığını gözlemedik.</p><p>Bir sonraki bölümde yöntemimiz detayları ile açıklanmaktadır. 3. Bölümde ise yöntemimizi sınamak için gerçekleştirdiğimiz vaka analizi ve sonuçları sunulmuştur. Daha sonra literatürde yer alan ilgili çalışmalar 4. Bölümde açıklanmıştır ve son olarak 5. Bölümde bildirinin katkıları özetlenmiştir.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Yöntem</head><p>Yaklaşımımızda yer alan manuel ve otomatik işlemler ile bu işlemlerin girdileri ve çıktıları, Şekil 1'de bir akış şeması ile gösterilmektedir.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Şekil 1. MBT için model oluşturma ve iyileştirme yaklaşımı.</head><p>Şekilde gösterilen süreçte, ön çalışma ile elde edilen iki adet girdi bulunmaktadır: 1) Bir statik kod analiz aracı kullanılarak elde edilen, her bir yazılım modülü başına raporlanan uyarı/hata sayıları, 2) Her yazılım işlevinin ne sıklıkta kullanıldığı bilgisini içeren kullanım profilleri analizi <ref type="bibr" target="#b5">[6]</ref> sonuçları. Bu girdiler sistem modelini Şekil 2'de örneklendiği gibi bir Markov zinciri <ref type="bibr" target="#b9">[10]</ref>[12] şeklinde oluşturmak için kullanılmaktadır. Markov zincirinde en sık kullanılan sistem işlevlerine ilişkin durumlara (örnek modeldeki A, B, C durumları gibi) yer verilmektedir. Bu durumlar arasındaki geçişler için kullanılan olasılık değerleri <ref type="bibr" target="#b10">[11]</ref> ise (örnek modelde C durumundan D durumuna geçiş için belirlenmiş 0.5 olasılık değeri gibi), ilgili işlevlere tekabül eden modüller için statik kod analiz aracı tarafından raporlanan uyarı sayılarına göre belirlenmektedir. Fazla sayıda uyarı, yüksek risk taşıyan bir modüle işaret olarak görülmektedir. Eğer bir durumdan n farklı duruma (n &gt; 1) geçiş söz konusu ise, her alternatif durum geçişi için, hedef durum i (1 ≤ i ≤ n) ile ilgili modüller için raporlanan uyarı sayısı, W i olsun. Bu halde, i durumuna geçiş olasılığı, P(i) = W i / ∑ k=1..n W k olarak hesaplanmaktadır. Alternatif durumlar için geçiş olasılıkları toplamı 1'e eşittir, yani ∑ k=1..n P(k) = 1.  </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Vaka Çalışması -Akıllı TV Sistemleri</head><p>Yöntemimizi değerlendirmek üzere, Vestel Elektronik firması tarafından geliştirilmekte olan Akıllı TV sistemlerinin test süreçleri kapsamında bir vaka analizi gerçekleştirdik. Gelişen yeni teknolojiler ve hızlı İnternet bağlantısı ile televizyon sistemleri akıllı televizyonlar haline dönüşmüştür. Bu sistemler, gelişmiş multimedya servisleri gibi geniş kapsamlı birçok interaktif servisler ve uygulamaları içermektedir (örnek olarak IPTV, interaktif TV, Hybrid Broadcast Broadband TV, Pay TV, Portal uygulamaları; Facebook, Twitter, Youtube ve daha birçok İnternet uygulamaları sayılabilir). Artık kullanıcılar TV sistemlerini bir kanal izlemek için kullanmanın yanı sıra, TV program takipleri, bir program izlerken diğer programları kaydedebilme, İnternet işlemleri, online video izleme, harici cihazlar bağlayarak TV'leri çok amaçlı kullanabilme gibi birçok ek işlem yapabilmekteler. Bu sebeple TV sistemlerinde kullanılan yazılım boyutu artmış ve karmaşık bir hal almıştır.</p><p>Vaka analizi çalışmamız kapsamında, önerdiğimiz yöntemi (Şekil 1) oluşturan işlemleri sırasıyla Akıllı TV sistemlerinin testlerini gerçekleştirmek üzere uyguladık ve bulgularımızı kaydettik. Öncelikle gerçek TV kullanıcıların hareketlerini kayıt altına alarak ve analiz ederek, kullanıcıların günlük kullanım hareketlerini yansıtan bir sistem modeli hazırladık. Tüm yazılım sistemini statik kod analizine tabi tuttuk ve hatalı olarak raporlanan modülleri, sistem modelinde yer alan durumlar ile eşleştirdik. Statik kod analizi sonucunda raporlanan hata sayılarına göre göre modeldeki durumlar arası geçiş olasılıklarını tayin ettik. Bir MBT aracı ile geliştirdiğimiz modeli kullanarak test senaryoları oluşturduk. Bu test senaryolarını otomatik olarak çalıştırırken dinamik kod analizleri gerçekleştirdik. Analiz sonuçlarına göre, modelde yer alan her durum için oluşan bellek açığı miktarlarını ölçtük ve modeldeki durumlar arası geçiş olasılıklarını ölçümlerimize göre güncelledik. MBT ile test senaryolarının oluşturulması, oluşturulan test senaryolarının sistem üzerinde çalıştırılması, dinamik analizlerin gerçekleştirilmesi ve modelin analiz sonuçlarına göre güncellenmesi işlemlerini 3 kez tekrar ettik. Sonuç olarak gerçekleştirdiğimiz testlerin hata tespit etkinliğini giderek geliştirdiğini gözlemledik. Aşağıda, vaka analizi sırasında gerçekleştirdiğimiz işlemleri ve elde ettiğimiz sonuçları detaylı bir şekilde açıklıyoruz.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1">Kullanım Profili Analizi</head><p>Kullanım profili bilgilerini toplayabilmek için, 10 adet Akıllı TV sistemi, 10 farklı son kullanıcıya dağıtılmıştır. Kullanıcıların 10 gün boyunca bu sistemleri kullanmaları sağlanmıştır. Bu süre zarfında kullanıcıların sistem ile etkileşimi ve gerçekleştirdikleri işlemler kayıt altına alınmıştır. Kaydedilen bilgiler içinden "durum" ve "geçiş" bilgileri analiz edilmiştir. Bu durumlar kullanıcının girdiği herhangi bir menünün ya da kaynağın bilgisini içermektedir. Geçişler ise o menülere nasıl girildiğinin bilgisini vermektedir. 10 günün sonunda alınan veriler, durum-geçiş bilgileri izlenebilirlik matrisi oluşturularak analiz edilmiştir. Böylece kullanıcıların hangi işlevlerin kullanımına yoğunlaştıkları bilgisi ortaya çıkarılmıştır.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2">Statik Kod Analizi ve Test Modelinin Hazırlanması</head><p>Kullanıcılardan alınan bilgilere göre sık gerçekleştirilen işlemler, "kanal geçişleri, rehbere girme, rehber üzerinden kayıt kurma, USB üzerinden video izleme ya da başka içerikler görüntüleme, Teletext uygulamasına girme, kanal listesi operasyonları, İnternet uygulamalarına girme, Youtube üzerinden video izleme, başka kaynakları görüntüleme, kanallar arası navigasyon, kanal izleme, ses açma/kapatma" olarak belirlenmiştir. Bu işlemleri kapsayacak şekilde bir sistem modeli Şekil 3'te görüldüğü şekilde hazırlanmıştır. Modelleme aracı olarak MaTeLo<ref type="foot" target="#foot_1">2</ref> aracı <ref type="bibr" target="#b8">[9]</ref> kullanılmıştır. Şekil 3'te gösterilen model en üst seviye modeldir. Bu modelde yer alan farklı her durum için ilgili durumda gerçekleştirilen işlemleri tanımlayan alt modeller bulunmaktadır. En üst seviye modelde, sık kullanılan temel işlevlere tekabül eden 11 adet duruma yer verilmiştir: HDMI (SSw), SCART (SSw), HBBTV, Portal (Pr), Youtube (Yt), Edit Channel List (ChO), Navigation Channels (ChL), EPG, Teletext (TXT), PVR, Media Browser (MB).</p><p>Modelde yer alacak durumları ve be durumlar arasındaki geçişleri belirledikten sonra, durum geçiş olasılıklarını belirlemek üzere statik kod analizleri gerçekleştirilmiştir. Klocwork<ref type="foot" target="#foot_2">3</ref> aracı kullanılarak, modelde yer alan işlevleri gerçekleyen modüller için raporlanan uyarı sayıları belirlenmiştir. Tablo-1'de, modelde yer alan durumlara ilişkin modüller için raporlanan hata sayıları ve hesaplanan durum geçiş olasılık değerleri listelenmiştir. Bazı işlevlerin gerçeklemesinde ortak yazılım modülleri kullanılmaktadır. Bu modüller için raporlanan hata sayıları, ilgili durum geçiş olasılığı hesaplamaları için eşit paylaştırılmıştır.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Tablo-1. Statik kod analizi sonuçları ve tayin edilen durum geçiş olasılıkları</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Durum Geçişi</head><p>Hata Oluşturulan testlerin çalıştırılması 3 saat sürmüştür ve testler sonucunda 1 adet hata bulunmuştur.</p><p>Şekil 3. Kullanım profili ve statik kod analizi sonuçları ile hazırlanan üst seviye model</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.3">Dinamik Kod Analizi ve Test Modelinin Güncellenmesi</head><p>İlk hazırlanan model ile oluşturulan test senaryoları, Akıllı TV sistemi üzerinde otomatik olarak çalıştırılmıştır. Testlerin çalıştırılması sırasında, Teraterm<ref type="foot" target="#foot_3">4</ref> aracı ile sistemdeki yazılım modüllerinin bellek kullanımları kayıt altına alınmıştır. Kayıt altına alınan değerler ve bu değerlere göre hesaplanan yeni durum geçiş olasılıkları Tablo 2'de listelenmiştir. Statik kod analizi sonuçlarının değerlendirilmesinde de yapıldığı gibi, ortak kullanılan yazılım modüllerine ilişkin bellek kullanımı miktarlarının, bu modülleri kullanan işlevler tarafından eşit paylaşıldığı varsayılmıştır.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Tablo-2. Dinamik analiz sonuçları ve güncellenen durum geçiş olasılıkları</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Durum Geçişleri</head><p>Bellek </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">İlgili Çalışmalar</head><p>Literatürde, MBT için birden fazla yaklaşım <ref type="bibr" target="#b0">[1]</ref>[5] ve modelleme teknikleri önerilmiştir. Sonlu durum makinaları <ref type="bibr" target="#b13">[14]</ref> (Finite State Automata), Birleşik modelleme dili (UML), Markov zincirleri <ref type="bibr">[8][12]</ref> bu yaklaşımlarda yaygın olarak model tipleridir. Raporlanan çalışmalarda daha çok modelleme yaklaşımları ve test senaryosu oluşturma metotlarına odaklanılmıştır. Modellerin geliştirilmesi ve iyileştirilmesi ise manuel olarak gerçekleştirilen ve ağırlıklı olarak alan bilgisi ile tecrübeye dayanan bir aktivitedir. Modellerin dinamik analizlere göre iteratif güncellenmesi konusu üzerine çok fazla çalışma yapılmamıştır.</p><p>Yakın zamanda modelleme ve capture-replay test tekniklerinin birlikte kullanılmasına yönelik bir yaklaşım önerilmiştir <ref type="bibr" target="#b14">[15]</ref>. Bu yaklaşımdac capture-replay test araçları ile modelin güncellenmesine odaklanılmıştır. Biz çalışmamızda modeli ilgili modullerin bellek aciklarina göre güncellemekteyiz. Ayrıca biz metodumuzu, yaptığımız deneysel çalışma verileri ve sonuçları ile desteklemekteyiz.</p><p>Yakın zamanda, modeli tecrübeye göre güncellemek konusunda bir yaklaşım sunulmuştur <ref type="bibr" target="#b1">[2]</ref>. Bu çalışmanın amacı MBT ile tecrübeye dayalı testleri birleştirerek modelleri iyileştirmeye dayalıdır. Tecrübeli test mühendislerinin testler sırasında gerçekleştirdikleri işlemler kayıt altına alınarak ve analiz edilerek MBT için kullanılan modellerdeki eksiklerin bulunulması sağlanmıştır. Fakat kullanım profili, statik ve dinamik analizlere dayalı bir iyileştirme yapılmamıştır.</p><p>Daha önce de MBT sürecinin endüstride kullanımına ilişkin tecrübelerimiz paylaşılmıştır <ref type="bibr" target="#b2">[3]</ref>. Bu tecrübeler kapsamında kullanım profilleri model geliştirme sürecinde değerlendirilmiştir. Ancak mevcut yaklaşımımızda dahil ettiğimiz statik kod analizine dayanan hesaplamalar ve dinamik kod analizi ile modeli her defasında iyileştirme yöntemi kullanılmamıştır.</p><p>Bir önceki çalışmamızda <ref type="bibr" target="#b15">[16]</ref> dinamik analizlere dayalı risk hesaplayarak model güncelleme yaklaşımını değerlendirmiştir. Fakat bu kapsamlı bir vaka analizi ile sınamamıştık. Ayrıca, bu çalışmada kullanım profili ve statik kod analizine dayalı geliştirilen ilk modelin hâlihazırda var olduğunu varsaymıştık.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Sonuç</head><p>Bu çalışmada, MBT için sistem modeli geliştirmek ve iyileştirmeye yönelik özgün bir yöntem önerdik. Yöntemimizde, kullanım profili ve statik kod analizlerinin sonuçlarını temel alarak, sık kullanılan ve hata oluşumuna yatkın olan işlevlere odaklanan bir model geliştirilmesini sağladık. Geliştirilen model ile oluşturulan test senaryoları çalıştırılırken, sistem üzerinde dinamik analizler gerçekleştirerek hata oluşumuna yatkın olan durumları tekrar tekrar gözden geçirerek sistem modelini iteratif olarak güncelledik.</p><p>Önerdiğimiz yöntemi sınamak adına, gerçek bir Akıllı TV sisteminin test süreçleri kapsamında bir vaka analizi gerçekleştirdik. İlk modelin geliştirilmesinin ardından model iyileştirme sürecini 3 kez tekrarladık. Her tekrarda, toplam test senaryolarının sayısının ve test süresinin azaldığını; fakat buna rağmen tespit edilen hata sayısının arttığını gözlemedik.</p><p>İleriki çalışmalarda, vaka analizi sayısını artırmayı ve bellek kullanımı dışındaki hata tiplerini de çalışma kapsamına almayı hedefliyoruz. Ayrıca, oluşturulan modelleri yazılım güvenilirliğine <ref type="bibr" target="#b6">[7]</ref>[13] ilişkin sayısal veriler elde etmek için de kullanmayı planlıyoruz.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Şekil 2 .</head><label>2</label><figDesc>Markov zinciri olarak tasarlanmış örnek sistem modeli. Oluşturulan model ile birlikte, test durumu ve geçişlerine ilişkin test adımlarının betikler (script) halinde tanımlanması gerekmektedir. Böylece, MBT aracı ile bir durum dizini halinde oluşturulan test senaryoları (örnek modelde mümkün olan {A, D}, {B, D}, {C, D} ve {C, E} dizinleri gibi), ilgili test adımları ile eşleştirilip otomatik olarak çalıştırılabilir. Uyguladığımız yöntemde test adımları modelin içine betikler olarak gömülmüştür. Bu betikler Vestel Elektronik firması içinde geliştirilmiş olan bir test otomasyon aracı[4] ile sistem üzerinde çalıştırılabilmektedir.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0"><head></head><label></label><figDesc></figDesc><graphic coords="7,124.75,416.58,343.63,164.80" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0"><head></head><label></label><figDesc></figDesc><graphic coords="8,136.10,497.52,324.27,156.55" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head></head><label></label><figDesc>Sistem modeli oluşturulduktan sonra, bu model bir MBT aracına girdi olarak kullanılıp otomatik olarak test senaryolarının oluşturulması sağlanmaktadır. MBT aracı test senaryolarını oluştururken durumlar arası geçiş olasılıklarını dikkate almakta, böylece geçiş olasılığı yüksek olan durumların daha sık teste tabi tutulmasını sağlamaktadır. Oluşturulan test senaryolarında yer alan test adımları için betikler önceden tanımlanmış olduğundan, bu test senaryoları otomatik olarak çalıştırılabilecek durumdadırlar. Oluşturulan test senaryoları sistem üzerinde çalıştırılırken dinamik analizler gerçekleştirilmektedir. Bu analizler farklı yazılım modülleri tarafından kullanılan bellek alanlarını kontrol etmektedir ve bellek açıklarını tespit etmektedir. Yazılım testi sırasında tespit edilen bellek açıklarına sebep olan yazılım modülleri, hataya sebep olma riski taşıyan modüllerdir 1 . Bu sebeple, modüllerin sebep oldukları bellek açıklarının miktarı, sistem modelindeki durum geçiş olasılıklarını güncellemek için kullanılmaktadır. Eğer bir durumdan n farklı duruma (n &gt; 1) geçiş söz konusu ise, her alternatif durum geçişi için, hedef durum i (1 ≤ i ≤ n) ile ilgili modüllerin bir önceki test sırasında sebep olduğu bellek açığı miktarı, M i olsun. Bu halde, i durumuna geçiş olasılığı, P(i) = M i / ∑ k=1..n M k olarak güncellenmektedir. Alternatif durumlar için geçiş olasılıkları toplamı 1'e eşit olarak kalmaktadır, yani kısıt olarak ∑ k=1..n P(k) = 1 şartı sağlanmaya devam etmektedir. Sistem modeli güncellendikten sonra tekrar MBT aracı için girdi olarak kullanılarak yeniden test senaryoları oluşturulmaktadır. Yeniden oluşturulan test senaryoları ile yazılım testi aynı yazılım versiyonu ile tekrar edilir. Dinamik analizler, model güncelleme, test senaryoları oluşturma ve yazılım test süreci kaynaklar elverdikçe bir döngü halinde devam etmektedir. Böylece her seferinde hataya yol açma olasılığı daha yüksek olan test senaryolarının sistem üzerinde daha çok sınanması sağlanmaktadır. Özyineleyen süreç kapsamında güncellenen ve test kapsamına dâhil olan senaryolar, giderek bellek açıklarına sebep olan işlevlere odaklanmakta ve bu açıklarla ilgili hataların ortaya çıkma ihtimalini artırmaktadır. Bir sonraki bölümde, gerçek bir TV sistemi yazılımının test süreci kapsamındaki bir vaka analizi ile yöntemimizi değerlendiriyoruz.</figDesc><table /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_2"><head>.</head><label></label><figDesc>Dinamik analiz sonuçlarına göre güncellenmiş üst seviye model Modelde durum geçiş olasılıkları dışında herhangi bir değişiklik yapılmamıştır. Test adımları için önceden geliştirilmiş Pyhton test kodları tekrar kullanılmış ve MBT aracı ile model üzerinden otomatik çalıştırılabilir test senaryoları tekrar oluşturulmuştur. Bu kez, dinamik analiz sonuçlarına göre riskli oldukları tespit edilen işlevlere daha fazla odaklanacak şekilde 540 adımlık bir test süit oluşturulmuştur. Oluşturulan testlerin çalıştırılması 2,5 saat sürmüştür ve testler sonucunda 2 adet hata bulunmuştur. Bu süreç iki kez daha tekrarlanmıştır. Her defasında MBT ile test senaryoları oluşturulmuş, oluşturulan test senaryoları sistem üzerinde çalıştırılmış, dinamik analizler gerçekleştirilmiş ve modeldeki durum geçiş olasılıkları analiz sonuçlarına göre güncellenmiştir. Sonuçlar Tablo 3'de listelenmiştir. İterasyon 0, ilk oluşturulan modele ilişkin paylaşılan sonuçları temsil etmektedir. Daha sonra tekrar eden her iterasyon kapsamında model güncellenmiştir. Model güncelleme işlemi sadece modeldeki olasılık parametrelerinin değiştirilmesinden ibaret olduğundan, bu işlem için geçen süre göz ardı edilmiştir.</figDesc><table><row><cell></cell><cell>Açığı (Mb)</cell><cell>P'</cell></row><row><cell>Portal (Pr)</cell><cell>21</cell><cell>0,263</cell></row><row><cell>Youtube (Yt)</cell><cell>26</cell><cell>0,326</cell></row><row><cell>HBBTV</cell><cell>16</cell><cell>0,200</cell></row><row><cell cols="2">Media Browser (MB) PVR Navigation Channels (ChL) 1 9 2 EPG 1 Edit Channel List (ChO) 1 Teletext (TXT) 2 HDMI (SSw) 2 SCART (SSw) 2 Şekil 4Tablo-3</cell><cell>0,113 0,025 0,006 0,012 0,006 0,025 0,012 0,012</cell></row></table><note>Tablo 2'de görüldüğü üzere "Youtube", "Portal" ve "HBBTV" işlevleri bellek kullanımı açısından ön plana çıkmaktadır. Bu sonuçlar durum geçiş olasılıklarına yansıtılarak model güncellenmiştir (Bkz. Şekil 4).</note></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_3"><head>. Tekrar eden adımlarda elde edilen test sonuçları</head><label></label><figDesc></figDesc><table><row><cell>İterasyon</cell><cell>Test Sayısı</cell><cell>Test Süresi (saat)</cell><cell>Hata Sayısı</cell></row><row><cell>0</cell><cell>650</cell><cell>3</cell><cell>1</cell></row><row><cell>1</cell><cell>540</cell><cell>2,5</cell><cell>2</cell></row><row><cell>2</cell><cell>480</cell><cell>2</cell><cell>3</cell></row><row><cell>3</cell><cell>379</cell><cell>1,75</cell><cell>5</cell></row><row><cell cols="4">Her tekrarda, hataya daha yatkın olan yazılım işlevlerini kapsayan test senaryolarının</cell></row><row><cell cols="4">sayısı artmıştır. Aslında, Tablo 3'de görüldüğü gibi toplam test senaryolarının sayısı</cell></row><row><cell cols="4">ve test süresi azalmıştır. Bu duruma karşın, tespit edilen hata sayısı artmıştır. Bu</cell></row><row><cell cols="4">hatalar statik kod analizi sonucunda raporlanmış olan kod seviyesindeki hatalar değil,</cell></row><row><cell cols="3">kullanıcı tarafından gözlemlenen hatalardır.</cell><cell></cell></row></table></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">Bu çalışmada, sadece bellek açıkları ve yanlış bellek kullanımı sebebi ile oluşan hataların tespitine odaklanılmıştır.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="2" xml:id="foot_1">http://www.all4tec.net</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="3" xml:id="foot_2">http://www.klocwork.com</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="4" xml:id="foot_3">http://ttssh2.sourceforge.jp/</note>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">A survey on model-based testing approaches: A systematic review</title>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">C D</forename><surname>Neto</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Subramanyan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Vieira</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">H</forename><surname>Travassos</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 1st ACM international workshop on Empirical assessment</title>
				<meeting>the 1st ACM international workshop on Empirical assessment</meeting>
		<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Improving Models for Model Based Testing Based on Exploratory Testing</title>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">Ş</forename><surname>Gebizli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Sözer</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 8th IEEE International Computer Software and Applications Conference Workshops</title>
				<meeting>the 8th IEEE International Computer Software and Applications Conference Workshops</meeting>
		<imprint>
			<date type="published" when="2014">2014</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Kullanım Modeli Bazlı Otomatik Test Tasarımı</title>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">Ş</forename><surname>Gebizli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Metin</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 7th National Software Engineering Symposium</title>
				<meeting>the 7th National Software Engineering Symposium</meeting>
		<imprint>
			<date type="published" when="2013">2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Automatic functional TV set failure detection system</title>
		<author>
			<persName><forename type="first">V</forename><surname>Marijan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Zlokolica</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Teslic</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Pekovic</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Transactions on Software Engineering</title>
		<imprint>
			<biblScope unit="volume">56</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="125" to="133" />
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Early fault detection with model-based testing</title>
		<author>
			<persName><forename type="first">J</forename><surname>Boberg</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 7th ACM SIGPLAN workshop on ERLANG</title>
				<meeting>the 7th ACM SIGPLAN workshop on ERLANG</meeting>
		<imprint>
			<date type="published" when="2008">2008</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Assessing the sensitivity to usage profile changes in test planning</title>
		<author>
			<persName><forename type="first">P</forename><surname>Wesslén</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Runeson</surname></persName>
		</author>
		<author>
			<persName><surname>Regnell</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 11th International Symposium on Software Reliability Engineering ISSRE</title>
				<meeting>the 11th International Symposium on Software Reliability Engineering ISSRE</meeting>
		<imprint>
			<date type="published" when="2000">2000</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Sensitivity of software system reliability to usage profile changes</title>
		<author>
			<persName><forename type="first">K</forename><surname>Weyns</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Runeson</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 2007 {ACM} Symposium on Applied Computing (SAC)</title>
				<meeting>the 2007 {ACM} Symposium on Applied Computing (SAC)</meeting>
		<imprint>
			<date type="published" when="2007">2007</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Using Markov Chain Usage Models to Test Complex Systems</title>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">J</forename><surname>Prowell</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 38th Hawaii International Conference on System Sciences</title>
				<meeting>the 38th Hawaii International Conference on System Sciences</meeting>
		<imprint>
			<date type="published" when="2005">2005</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">MaTeLo: Automated Testing Suite for Software Validation</title>
		<author>
			<persName><forename type="first">B</forename><surname>Guiotto</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Acquaroli</surname></persName>
		</author>
		<author>
			<persName><surname>Martelli</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of DASIA</title>
				<meeting>DASIA</meeting>
		<imprint>
			<date type="published" when="2003">2003</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Fenhua : MaTeLo -Statistical Testing Using Annotated Sequence Diagrams, Markov Chains and TTCN-3</title>
		<author>
			<persName><forename type="first">W</forename><surname>Dulz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the Third International Conference on Quality Software</title>
				<meeting>the Third International Conference on Quality Software</meeting>
		<imprint>
			<date type="published" when="2003">2003</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Generating transition probabilities to support model-based software testing</title>
		<author>
			<persName><forename type="first">H</forename><surname>Feliachi</surname></persName>
		</author>
		<author>
			<persName><surname>Le Guen</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the Third International Conference on Software Testing, Verification and Validation (ICST)</title>
				<meeting>the Third International Conference on Software Testing, Verification and Validation (ICST)</meeting>
		<imprint>
			<date type="published" when="2010">2010</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">A markov chain model for statistical software testing</title>
		<author>
			<persName><forename type="first">M</forename><surname>Whittaker</surname></persName>
		</author>
		<author>
			<persName><surname>Thomason</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Transactions on Software Engineering</title>
		<imprint>
			<biblScope unit="volume">20</biblScope>
			<biblScope unit="issue">10</biblScope>
			<biblScope unit="page" from="812" to="824" />
			<date type="published" when="1994">1994</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">A theory of software reliability and its application</title>
		<author>
			<persName><forename type="first">J</forename><surname>Musa</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Transactions on Software Engineering</title>
		<imprint>
			<biblScope unit="volume">1</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="312" to="327" />
			<date type="published" when="1975">1975</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">Optimal test input sequence generation for finite state models and pushdown systems</title>
		<author>
			<persName><forename type="first">D</forename><surname>Chander</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Dhurjati</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Koushik</surname></persName>
		</author>
		<author>
			<persName><surname>Dachuan</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 4th IEEE International Conference on Software Testing, Verification and Validation</title>
				<meeting>the 4th IEEE International Conference on Software Testing, Verification and Validation</meeting>
		<imprint>
			<date type="published" when="2011">2011</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Combining model-based and captue replay testing techniques of graphical user interfaces: An industrial approach</title>
		<author>
			<persName><forename type="first">M</forename><surname>V. Entin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Winder</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Zhang</surname></persName>
		</author>
		<author>
			<persName><surname>Christmann</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">4th IEEE International Conference on Software Testing, Verifcation and Validation Workshops</title>
				<imprint>
			<date type="published" when="2011">2011</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Combining Model-Based and Risk-Based Testing for Effective Test Case Generation</title>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">Ş</forename><surname>Gebizli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Metin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Sözer</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 10th IEEE International Conference on Software Testing, Verification and Validation Workshops</title>
				<meeting>the 10th IEEE International Conference on Software Testing, Verification and Validation Workshops</meeting>
		<imprint>
			<date type="published" when="2015">2015</date>
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
