<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Birleşik Kombinezon Etkileşim Sınama Yöntemi</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Sabancı Üniversitesi</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>İstanbul</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Türkiye</string-name>
        </contrib>
      </contrib-group>
      <fpage>712</fpage>
      <lpage>723</lpage>
      <abstract>
        <p>Testing software systems almost always involve sampling enormous variability spaces, such as input and configuration spaces, and testing representative instances of a system's behavior. This sampling is commonly performed with techniques collectively referred to as combinatorial interaction testing (CIT). These techniques typically have two inputs: configurations spaces and coverage crieteria. Configuration space contains all valid option-value</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>combinations (configurations). On the other hand coverage criteria defines all
valid combinations which needs to be tested. Under given configuration space
and coverage criteria, an CIT object is computed as an output. This CIT object
which contains a sample of a subset of configuration space, is computed as
“costeffectively” and have full coverage under the given coverage criteria. After CIT
objects are computed, quality assureance for software systems is done only
testing chosen configurations. Our main goal in this work is further exploit the
benefits of CIT to improve the efficiency, effectiveness and applicibilty of CIT
approaches in practial scenarios by enabling practitioners to define their own
space for testing as well as their own coverage criterion (thus enabling them to
invent their own application-specific CIT objects). The proposed techinque in
this work contains methods to compute a CIT object under given configuration
space and coverage criteria. This approach will be referred as Unified
Combinatorial Interaction Testing (U-CIT) in the rest of the paper. To this end,
this requires truly flexible CIT approaches. In this work, we would like to develop
tools for practitioners to define their own application-specific variability space as
well as their own application.
1</p>
    </sec>
    <sec id="sec-2">
      <title>Giriş</title>
      <p>
        Günümüz yazılım sistemleri; kullanıcı girdileri, konfigürasyon parametreleri ve iş
parçacıkları etkileşimleri (thread interleavings) gibi test edilmesi gereken bir çok
değişkenlik parametresine sahiptir. Bu değişkenlik parametreleri son kullanıcılar için
esneklik sağlarken yazılım geliştirenler için yazılımların kalite güvencesinin sağlanması
noktasında ciddi sıkıntılara sebebiyet verir. Küçük çaptaki yazılımlar için dahi tüm
değişkenlik uzayının test edilmesi genellikle mümkün değildir. Örneğin; Apache
sunucusunun bir sürümü son kullanıcılar tarafından yapılandırılabilen 172 konfigürasyon
parametresine ve bu parametrelerle oluşturulabilecek 1,8x1055 farklı konfigürasyona
sahiptir [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Her bir konfigürasyonun test edilmesi bir saniye bile sürse bütün
konfigürasyonların test edilmesi için gereken süre, büyük patlamadan (big bang) bu yana geçen
süreden daha fazladır. Dolayısıyla Apache (ve benzeri diğer sistemler) için bütün
konfigürasyonların test edilmesi söz konusu bile olamaz.
      </p>
      <p>
        Bu ve benzeri sebeplerden dolayı endüstriyel sistemlerin test edilmesi nerdeyse
her zaman çok büyük bir değişkenlik uzayından (ki bu tür uzaylar dokümanın geri
kalan kısmında konfigürasyon uzayları olarak adlandırılacaktır) örnekleme yöntemiyle
seçilen ve tüm uzayı temsil kabiliyetine sahip olduğu düşünülen bir alt uzay
kullanılarak gerçekleştirilir. Pratik hayatta bu örnekleme işlevi genellikle Kombinezon
Etkileşim Sınama (KES) yöntemleri adı altında toplanmış teknikler kullanılarak
gerçekleştirilir [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. KES yöntemlerinin başlıca iki girdisi vardır: konfigürasyon uzayı
ve kapsama kriteri. Konfigürasyon uzayı, geçerli bütün parametre değerleri
kombinasyonlarını (konfigürasyonları) içerir. Kapsama kriteri ise test edilmesi istenilen bütün
geçerli kombinasyonları tanımlar. Verilen bir konfigürasyon uzayı ve kapsama kriteri
için çıktı olarak bir KES objesi hesaplanır. Bu obje; kapsama kriteri altında
“maaliyetetkili” bir yolla tam bir kapsama elde edilecek şekilde konfigürasyon uzayından
seçilmiş bir konfigürasyon kümesinden oluşur. KES objesi hesaplandıktan sonra yazılım
sisteminin sınanması sadece seçilen konfigürasyonların test edilmesi ile sağlanır. KES
objelerine örnek olarak sıklıkla kullanılan t li kapsayan diziler (t-way covering array)
verilebilir. t li kapsayan diziler, konfigürasyon uzayını kapalı bir şekilde (implicit)
tanımlayan bir konfigürasyon uzayı modelini girdi olarak alır.
En basit haliyle bu model, her biri sonlu değer alan konfigürasyon parametrelerini
ve bu parametrelerin alabileceği değerleri içerir. Verilen bir konfigürasyon uzayı
modeli için t li kapsayan bir dizi, konfigürasyon parametreleri kümesinin her t li altkümesi
için, ilgili parametre değerlerinin her bir kombinasyonunu en az bir
kere içerecek şekilde oluşturulmuş bir konfigürasyon kümesidir. KES yöntemlerini
kullanmanın temel gerekçesi; bu yöntemlerin t veya t'den daha az sayıda parametrenin
etkileşiminden kaynaklanan hataların (belirli kabuller dahilinde) etkili ve verimli
bir şekilde bulunmasına olanak sağlamasıdır. Literatürde yer alan birçok çalışma
KES yöntemlerinin farklı uygulama alanlarında başarılı bir şekilde kullanıldığını
göstermektedir [
        <xref ref-type="bibr" rid="ref10 ref11 ref5 ref6 ref7 ref8 ref9">5,6,7,8,9,10,11</xref>
        ].
      </p>
      <p>İlk zamanlarda KES yaklaşımları sadece iki değer alan parametrelerin ikili
ilişkilerini test etmek amacıyla kullanılıyordu. Daha sonra pratisyenler (örn. yazılım
mühendisleri) üç değer alan parametreler için kapsayan dizilere ve sonrasında ise karışık
kapsayan dizilere; yani her parametrenin farklı sayıda değer alabileceği kapsayan dizilere,
ihtiyaç duymuşlardır. Bu ihtiyaçları karşılayabilmek adına KES alanında yeni
çalışmalar yapılmaya başlanmıştır. Bunları takiben yüksek kapsama kuvvetine sahip kapsayan
dizilerin icadı ise bu alanda yapılan bir başka yeniliktir. Ayrıca karışık kapsama
kuvvetine (variable strength) sahip kapsayan dizilerde, yani farklı parametrelerin kendi
aralarında farklı kapsama kuvvetlerine sahip olmaları, gün geçtikçe popüler olmaya
başlamıştır. Bu alanda getirilen her yenilik “geleneksel olmayan” bu objeleri “geleneksel”
hale getirebilmek için bunları üretebilecek ve hesaplayabilecek yeni algoritmaların
araştırılmasına ve geliştirilmesine sebep olmuşlardır. Başka bir deyişle, KES alanında
yapılan bütün çalışmalarda izlenen yöntem şu şekilde özetlenebilir: araştırmacılar
sahadaki test senaryolarını desteklemek için özgün konfigürasyon uzayı modelleri
ve/veya özgün kapsama kriterleri tanımlar, bu kriterleri sağlayacak özgün KES objeleri
icat eder ve bu objeleri hesaplayacak özelleştirilmiş yöntemler geliştirir. Sahadaki
pratisyenler ise geliştirilen KES objelerini kullanmak suretiyle yazılım sistemlerini test
eder. Biz KES’in faydalarını “geleneksel olmayan” konfigürasyon uzaylarını
“geleneksel olmayan” kapsama kriterleri kullanarak daha da ileriye götürebileceğimize
inanıyoruz. Fakat bu düşünce ancak gerçekten esnek KES yaklaşımları ile mümkün olabilir.
Bu nedenle, eğer pratisyenlerin kendi uygulamalarına özel konfigürasyon uzaylarını ve
kapsama kriterlerini tanımlamaya olanak sağlayan araçlar olsaydı, KES’in esnekliği
arttırılarak pratik hayatta uygulanabilirliğinin daha da arttırabileceğine inanıyoruz.</p>
      <p>
        Bizim bu çalışmamızda sunmuş olduğumuz yaklaşımın amacı ise bu anlatmış
olduğumuz akışı tersine çevirmek suretiyle KES yaklaşımlarının “geleneksel olmayan”
konfigürasyon uzaylarında “geleneksel olmayan” kapsama kriterleri ile kullanılmasına
olanak sağlamak suretiyle KES yaklaşımlarının verimliliklerini, etkinliklerini ve
sahadaki uygulanabilirliklerini önemli ölçüde artırmaktır. Diğer bir deyişle; bu
çalışmamızda önermiş olduğumuz yaklaşım sayesinde araştırmacıların yeni KES objeleri icat
etmek suretiyle pratisyenlere neyin test edilmesi gerektiğini dikte ettirmeleri yerine
pratisyenlerin, kendi ihtiyaçları doğrultusunda özelleştirdikleri özgün KES objeleri
tanımlamaları (diğer bir deyişle icat etmeleri) sağlanacaktır ki dokümanın geri kalan
kısmında bu yaklaşım Birleştirilmiş Kombinezon Etkileşim Sınama Yöntemi (B-KES)
olarak adlandırılmıştır (Unified Combinatorial Interaction Testing) [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. Bu amaca
ulaşmak gerçek anlamda esnek KES yaklaşımlarının geliştirilmesini gerektirmektedir.
Önceki çalışmamızda [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] bu amaca ulaşmak adına ilginç bir kısıt çözüm (constraint
solving) problemi üzerinde yoğunlaştık. Bu çalışmamızda ise B-KES’in test etme
yönüne daha çok ağırlık verip, neden daha esnek bir yapıda olduğunu gösteren örnekler
veriyoruz.
      </p>
      <p>Makalenin 2. bölümünde B-KES’i genelleştirmek adına daha resmi tanımlarla
anlatıyoruz. 3. bölüm KES alanında yapılan çalışmalar ile ilgili literatür özeti veriyor. 4.
bölümde ise B-KES’in önemini anlatmak üzere örnekler verip aynı zamanda
pratik hayatta B-KES’e duyulan ihtiyacı anlatıyoruz. 5. bölümde B-KES objeleri
hesaplayabilmek için açgözlü (greedy) bir algoritma anlatıyoruz. Son olarak 6. bölümde
ise sonuç kısmını veriyoruz.
2</p>
    </sec>
    <sec id="sec-3">
      <title>Birleşik Kombinezon Etkileşim Sınama</title>
      <p>Bu bölümde B-KES’i daha resmi bir şekilde anlatıp genelleştirmek adına aşağıdaki
tanımları kullanıyoruz. Her yazılım sistemi için uygulanabilirliği farklı olduğundan
tanımlar soyut bir şekilde verilmiştir.</p>
      <p>


</p>
      <p>Bir B-KES isterleri (requirements): Bir B-KES isteri kısıtlarla ifade edilmiş
birimlerdir.</p>
      <p>Bir B-KES test durumu: Bir B-KES test durumu birlikte test edilebilen isterler
kümesidir. Başka bir deyişle; birlikte tatmin edilebilir (satisfiable) kısıtlar
kümesidir. Fakat, tüm isterler kombinasyonları pratik hayatta her zaman geçerli
olmayabilir.</p>
      <p>Bir B-KES uzay modeli: Bir B-KES uzay modeli tüm geçerli B-KES isterlerini
kapalı bir şekilde tanımlayan kısıtlardan ve geçerli B-KES test durumlarından
oluşan sistemdir.</p>
      <p>Bir B-KES kapsama kriteri: Bir B-KES kapsama kriteri kapsanması istenen
B-KES isterlerini kapalı bir şekilde tanımlayan kriterdir.</p>
      <p>Genel bağlamda, B-KES girdi olarak bir sistem modellemesi alır. Bu modelleme
tüm geçerli test durumları uzayını ve test edilmek üzere kapsanması gereken tüm olası
isterleri ifade eden kapsama kriterinden oluşmaktadır. Çıktı olarak ise verilen test
kriteri altında tam kapsama elde eden test durumlarından oluşan bir test havuzu verir.</p>
      <p>
        B-KES’i birleşik bir yaklaşım yapan şey kapsanması gereken birimlerin, test
durumlarının ve test durumlarının üretileceği uzayın bir kısıt olarak ifade edilmesidir.
Sonuç olarak, B-KES üretme problemi aslında büyük ve ilginç bir kısıt çözme problemine
dönmektedir [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. Şunu belirtmek isteriz ki, “kısıt” terimini genel anlamda
kullanıyoruz; yani mantıksal programlama dillerinden bağımsız her hangi bir sınırlama olarak
tanımlanabilen bir kısıt kastedilmektedir.
      </p>
      <p>Bir kapsama kriteri aslında kısıtlar ile ifade edilmiş kapsanmak istenen birimlerin
(hepsi birlikte olmak zorunda değil, grup halinde olabilir) oluşturduğu kümeyi tanımlar.
Daha sonra, bu kısıtların minimum sayıda alt kümeleriyle oluşturulan; öyle ki alt
kümedeki tüm kısıtlamaların kendi aralarında tatmin edilebilir ve bütün bu alt kümelerin
birleştirilmesiyle tüm kısıt kümesi tekrar oluşturulabilen, bir B-KES objesi üretilir. Bu
kısıtlardan oluşan her alt küme geçerli bir test durumuna karşılık gelir; yani birlikte test
edilebilen birimleri kapsayan bir test durumu. Bu yüzden, tüm bu alt kümeler
kullanılarak kapsama kriteri altında B-KES’i oluşturan test durumları (her bir alt küme bir test)
üretilir. Yani başka bir deyişle kısıtlar kümesini minimum sayıda alt kümelere bölerek
kendi aralarında tatmin edilebilir alt kümeler elde etmek, B-KES için test durumları
üretmek problemiyle aynıdır.
3</p>
    </sec>
    <sec id="sec-4">
      <title>Literatür Özeti</title>
      <p>
        Nie ve Leung [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] geleneksel kapsayan dizileri hesaplama yöntemlerini başlıca dört
kategoriye ayırır: rastgele aramaya dayalı yöntemler, matematiksel yöntemler, aç gözlü
(greedy) yöntemler ve lokal aramaya dayalı yöntemler. Rastgele aramaya dayalı
yaklaşımlar yer değiştirme stratejisi uygulamayan bir rastgele arama yöntemi (random search
without replacement) kullanırlar [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Bu yöntemde her adımda bir konfigürasyon,
geçerli konfigürasyon uzayından rastgele seçilir. Tekrarlamalar, seçilen konfigürasyonlar
bir t li geleneksel kapsayan dizi teşkil edene kadar devam eder. Geleneksel kapsayan
dizileri hesaplamak için matematiksel yöntemler de kullanılmıştır [
        <xref ref-type="bibr" rid="ref1 ref15 ref3">1,3,15</xref>
        ]. Bu
yöntemlerde büyük konfigürasyon uzayı modelleri için kapsayan dizileri hesaplarken bu
modellerin küçük parçaları için hesaplanmış kapsayan dizileri, özyinelemeli (recursive)
bir şekilde kullanır. Aç gözlü yöntemler ise tekrarlamalı bir şekilde çalışır [
        <xref ref-type="bibr" rid="ref10 ref6">6,10</xref>
        ]. Her
tekrarlamada, aday olarak değerlendirilen bir konfigürasyon kümesinden, daha önce
kapsanmamış t li parametre değerleri kombinasyonlarından en fazlasını kapsayan
konfigürasyon, kapsayan diziye eklenir. Tekrarlamalar, istenilen bütün t li kombinasyonlar,
seçilen konfigürasyonlar tarafından kapsandığında sona erer. Lokal aramaya (heuristic
search) dayalı yöntemler [
        <xref ref-type="bibr" rid="ref16 ref17">16, 17</xref>
        ] ise geleneksel kapsayan dizileri hesaplamak için
yapay zekâya dayalı teknikler kullanır. Bu yöntemler, ellerinde her an bir aday
konfigürasyon kümesi bulundurur ve bu küme, geleneksel t li bir kapsayan dizi teşkil edene
kadar tekrarlamalı bir şekilde bu kümeye çeşitli dönüşümler uygular.
      </p>
      <p>
        Literatürde yer alan ve yukarıda özetlenen bu çalışmaların amacı geleneksel
kapsayan dizileri hesaplamaktır. Farklı türde özgün kapsayan diziler olan T-KAD, M-KAD
ve TM-KAD’ları üzerine de ayrıca çalışmalar yapılmaktadır. Literatürde, yakın
geçmişteki bir yayınımız [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] dışında test durumlarına özel kısıtları göz önüne alarak
kapsayan dizi hesaplayan bir çalışmaya rastlanmamıştır. Reel test maliyetlerini göz önüne
alan ve makalemizde önerilen çalışmaya en yakın olan çalışmalar ise KES
yaklaşımlarında test durumlarının önceliklendirilmesi ile ilgili olan çalışmalardır
[
        <xref ref-type="bibr" rid="ref19 ref20 ref21 ref22 ref23">19,20,21,22,23</xref>
        ]. Elbaum konfigürasyonların kaynak kod kapsama yetilerini
notlandırarak geleneksel kapsayan diziler tarafından seçilen konfigürasyonları
önceliklendirmiştir. Qu ise önceliklendirme için konfigürasyonların hataları keşfetme yetilerini
kullanmıştır. Srikanth ve Kimoto, konfigürasyonlar arasında geçiş yapmanın sebebiyet
verdiği ek maliyetleri, kapsayan diziler tarafından seçilmiş konfigürasyonları
önceliklendirmek için kullanmıştır. Konfigürasyon geçiş maliyeti, test esnasında, sistemin
mevcut konfigürasyonunu bir sonraki konfigürasyona çevirmek için gerekli olan
maliyettir. Bu tür maliyetler, genellikle test altındaki sistemin konfigüre edilmesi için insan
müdahalesinin gerekli olduğu ve oluşturulan konfigürasyonların gelecek kullanımlar
için bütün veya kısmi olarak saklanamadığı durumlarda geçerlidir. Örneğin; test
altındaki sistemin bir konfigürasyon parametresinin sistem ile entegre edilmiş bir yazıcıda
kullanılan kağıt tipi olduğunu düşünelim. Yazıcıdaki kağıt tipini değiştirmek insan
müdahalesi gerektirir ki bu maliyetli bir iştir. Ayrıca bir kağıt tipi ile konfigüre edilmiş
yazıcı (birden fazla yazıcı kullanılmadığı sürece), gelecek kullanımlar için saklanamaz.
Bu basit senaryoda konfigürasyon geçiş maliyetlerini minimize etmeyi amaçlayan
yöntemler, yazıcıdaki kağıt tipi değiştirme sayısını minimize edecek şekilde seçilen
konfigürasyonları sıralar.
      </p>
      <p>
        Bu bölümde verilmiş tüm çalışmaların esas amacı özelleştirilmiş bir KES alanında,
etkili ve/veya verimli bir şekilde KES objesi üretmektedir. Öte yandan B-KES’in amacı
ise bunların hepsini üretebilecek yetenekte olmak ve son kullanıcılar tarafından
belirlenmiş kapsama kriteri kullanılarak daha kompleks yapıda test havuzları oluşturmaya
olanak sağlamaktır. Buna ilk adım olarak daha önce sunmuş olduğumuz çalışmamızda
bu amacımıza ulaşabilmek için bir kısıt probleminden bahsetmiştik [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. Bu
çalışmamızda ise buna ek olarak B-KES’in bu alandaki önemini daha iyi anlatabilmek adına
gerçek hayattan esinlenerek oluşturulmuş örnekler sunuyoruz.
4
      </p>
    </sec>
    <sec id="sec-5">
      <title>B-KES Yöntemlerine Duyulan İhtiyaç</title>
      <p>Bir KES objesi olan kapsayan diziler bu alanda test havuzu olarak sıklıkla kullanılan
objelerdir. Fakat buna rağmen bu objelerin esneklikleri kısıtlıdır. Diğer bir deyişle bu
objeler sadece bir tür konfigürasyon uzayı ve sadece bir tür kapsama kriteri kabul eder.
Örneğin; kapsayan diziler için konfigürasyon uzayı sonlu değerler alabilen
konfigürasyon parametrelerinden oluşur ve her konfigürasyonda her bir parametre geçerli bir
değer almak zorundadır. Sahadaki ihtiyaçlar bu modele uymuyorsa geleneksel kapsayan
dizilerden yararlanılamayabilir ya da bu dizilerin gelişi güzel kullanılması sonucunda
sistemlerdeki hatalar yeterince etkili ve verimli bir şekilde tespit edilemeyebilir.</p>
      <p>
        Örneğin; test edilmesi gereken sistemin yüksek seviyede yapılandırılabilir bir
sistem olduğunu varsayarsak, bu sistemi test etmek için t li bir geleneksel kapsayan dizi
hesaplandıktan sonra seçilen konfigürasyonlarda sistem için yazılmış olan bir dizi test
durumunun koşturulması gerektiğini, fakat her test durumunun her konfigürasyonda
test durumuna özel bir takım kısıtlardan dolayı çalışamadığını varsayalım. Bu
senaryoda geleneksel kapsayan dizilerin kullanılması maskeleme etkileri olarak adlandırılan
ve test edilmemiş parametre değerleri kombinasyonu ve test durumları ikililerini test
edilmiş gibi göstermek suretiyle yazılım sınama süreçlerine zarar veren etkilerin
oluşmasına sebebiyet verecektir [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. Bunun sebebi geleneksel kapsayan dizilerin test
durumlarından ve test durumlarına özel kısıtları dikkate almamasıdır. Dolayısıyla bir test
durumunun, kendisine özel bir kısıtı sağlamayan bir konfigürasyon üzerinde
koşturulması istenebilir. Bu durumda test koşturulamayacağından, test durumu bahse konu
konfigürasyon içerisinde yer alan ve kendisi için geçerli olan hiç bir parametre değerleri
kombinasyonunu test edemeyecektir (bu kombinasyonlar maskelenmiş olacaktır). Bu
durumu engellemek için geleneksel kapsayan dizilerin girdi olarak aldığı
konfigürasyon uzayı modeli, test durumları ve test durumlarına özel kısıtları alacak şekilde
genişletilmeli, her test durumu için geçerli olan t li parametre değerleri kombinasyonları
dikkate alınarak kapsama kriteri güncellenmeli ve sonuçta oluşacak olan yeni KES
objelerini hesaplamak için hesaplama yöntemleri geliştirilmeli ve gerçeklenmelidir. Yılmaz
et. al [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] bütün bu değişiklikleri adreslemek suretiyle test durumlarını dikkate alan
kapsayan diziler adı altında özgün KES objeleri tanımlamış ve bu çalışma yazılım
mühendisliği alanında en prestijli dergilerden birinde, geleneksel kapsayan diziler yazılım
testleri için kullanılmaya başlandıktan onlarca sene sonra ve sadece geleneksel
kapsayan dizileri hesaplamak için 50’den fazla makale varken [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] yayımlanabilmiştir. Fakat
sahada karşılaşabilecek her bir özel senaryo için bu yeni KES objesi geliştirme
sürecinin baştan işletilmesi sürdürülebilir değildir. Dolayısıyla bu çalışmamızda önermiş
olduğumuz B-KES yaklaşımına şiddetle ihtiyaç vardır.
      </p>
      <p>Bu iddialarımızı daha net bir şekilde gösterip B-KES’in esnekliğini daha detaylı
gösterebilmek için 2 tane örnek sunuyoruz.</p>
      <p>Örnek 1: Şekil 1’de verilmiş olan sistem daha önce kullanmış olduğumuz
yapılandırılabilirlikleri yüksek ve sıklıkla kullanılan bir veritabanı yönetimi sistemi olan
MySQL ve bir HTTP sunucusu olan Apache yazılım sistemlerinden esinlenerek
oluşturduğumuz örnektir. Bu örnekte, her biri 2 değer alabilen, D ve Y (Doğru ve Yanlış),
sistem kurulmadan önce test edilmesi gereken 5 tane derleme zamanı konfigürasyon
parametresi (p1, p2, p3, p4 ve p5) bulunmaktadır. Şekil 1’de bir örneği verildiği üzere, C
ve C++ gibi ön işleme (preprocessing) gereken programlama dillerinde bu parametreler
genellikle #ifdef gibi ön işlem direktifleri kullanılarak yazılmaktadır.</p>
      <p>Şekil 1 iç içe geçmiş if durumlarını tanımlayan derleme zamanı konfigürasyon
parametrelerinin birbirleriyle nasıl ilişkide olduğunu gösteren bir sistemi
örneklendirmektedir. Bu tip sistemlerde pratisyenlerin sıklıkla kullanmayı tercih ettikleri yapısal
kapsama sunan test yöntemlerinden birisi karar kavrama (KK) (decision coverage)
kriteridir. KK kriterinde tam bir kapsama elde edebilmek için mümkün olan tüm kararlar için
bütün sonuçların denenmesi gerekir. Örneğin, Şekil 1’de verilmiş olan iç içe geçmiş
#ifdef bloklarında %100 KK kapsaması elde etmek için dıştaki kararın (p1 &amp;&amp; p2 &amp;&amp;
p3) ve dıştaki bu karar ile korunmuş olan içteki kararın (p4 || p5) doğru ve yanlış olarak
en azından bir kere test edilmeleri gerekir.</p>
      <p># i f d e f ( p 1 ) . . . # e n d i f
# i f d e f ( p 2 ) . . . # e n d i f
# i f d e f ( p 3 ) . . . # e n d i f
# i f d e f ( p 4 ) . . . # e n d i f
# i f d e f ( p 5 ) . . . # e n d i f
# i f d e f ( p 1 &amp; &amp; p 2 &amp; &amp; p 3 )
. . .</p>
      <p># i f d e f ( p 4 | | p 5 )
. . .</p>
      <p># e n d i f
Şekil. 1. Önişlemci direktifleri kullanılarak 5 tane ön derleme parametresinden oluşan
varsayımsal bir sistem.</p>
      <p>Ayrıca bir pratisyenin tam bir KK kapsaması elde etmek dışında tüm bu
parametrelerin ikili ilişkilerini de test etmek istediğini varsayalım. Bunu yapmak için 2 li bir
kapsayan dizisi (Şekilde 2’deki ilk beş sütun) hesaplanmış ve sonrasında bu kapsayan
dizinin konfigürasyonları kullanılarak test edilmiştir. Başka bir deyişle, Şekil 2’deki ilk
beş sütun Şekil 1’de verilmiş olan parametrelerin alabileceği değerleri göstermektedir.
Son iki sütun ise #ifdef bloklarındaki iç içe geçmiş kararların sonuçlarını
göstermektedir: doğru için ‘D’, yanlış için ‘Y’ ve eğer bir karar dıştaki karar tarafından
korunduğundan dolayı hiç işlenemediyse ‘-’ kullanılmıştır. Fakat, Şekil 2’de verilmiş olan 2 li
kapsayan dizisi Şekil 1’de verilmiş olan ilk beş #ifdef blokları için %100 KK kapsaması
elde ederken, iç içe geçmiş #ifdef durumları için 4 ihtimalden sadece 3’ünü kapsayarak
%75 KK kapsaması elde etmektedir. Kapsanmamış durum ise içteki kararın (p3 || p4)
yanlış olarak hesaplanmasıdır. Bu durumun kapsanması sadece 5’li (p1=D, p2=D,
p3=D, p4=Y, p5=Y) kombinasyonu kullanılarak mümkün kılınabilir.</p>
      <p>p1
D
D
Y
Y
Y
Y
p2
Y
D
Y
D
D
Y
p3
Y
D
D
Y
D
Y
p4
D
Y
D
Y
D
Y
p5
Y
D
D
Y
Y
D
p1 ∧ p2 ∧ p3</p>
      <p>Y
D
Y
Y
Y
Y
p4 ∧ p5
D
Şekil. 2. Şekil 1’deki senaryo için oluşturulmuş 2 li kapsayan diziye bir örnek ve kararlardan
elde edilmiş sonuçlar.</p>
      <p>Başka bir alternatif çözüm yolu ise kapsayan dizinin kapsama kuvvetini arttırmak
olabilir. Ama bu yaklaşımda test havuzunun boyutunu çok fazla arttırabilir. Örneğin,
KK kriteri için tam kapsama elde etmeyi garanti etmek için eklenmesi gereken
kombinasyon beş tane parametre içerdiğinden, 5 li bir kapsayan dizi kullanmak gerekecektir.
Yani 5 uzunluğundaki bu özelliklerde bir kapsayan dizi 32 tane konfigürasyon içerecek
olup aslında tüm konfigürasyon uzayını test etmek ile aynı sonuca gelecektir.</p>
      <p>Eğer bu probleme B-KES yaklaşımı uygulanmış olsaydı, Şekil 2’de verilen 2 li
kapsayan dizisine bir tane ekstra konfigürasyon daha eklenerek KK kriteri altında tam bir
kapsama elde edilebilirdi. B-KES yöntemi için KK kriteri altında tüm karar sonuçları
bir kısıt şeklinde ifade edilmelidir: p1,¬p1, p2, ¬p2, p3, ¬p3, p4, ¬p4, p5, ¬p5, (p1 ∧ p2 ∧
p3), ¬(p1 ∧ p2 ∧ p3), ((p1 ∧ p2 ∧ p3) ∧ (p4 ∨ p5)), ve ((p1 ∧ p2 ∧ p3) ∧ ¬(p4 ∨ p5)). Şekil 2’de
verilen 2 li kapsayan dizisi ((p1 ∧ p2 ∧ p3) ∧ ¬(p4 ∨ p5)) dışında tüm ikili parametre
ilişkilerini kapsamaktadır. Dolayısıyla, bu karar sonucunun kapsanması için p1=D,
p2=D, p3=D, p4=Y, ve p5=Y şeklinde bir konfigürasyon daha üretilmelidir.</p>
      <p>Örnek 2: Şekil 3a varsayımsal bir yazılım sistemini modelleyen bir sonlu durum
makinesini göstermektedir. Modelde başlangıç (si) ve bitiş durumlarına ek olarak (sf) 4
tane durum (s1, s2, s3, s4) ve 4 tane de sadece iki değer alabilen (doğru için D, yanlış
için Y) parametreler bulunmaktadır. Bir parametre sadece 1 tane durum içinde
tanımlanabilir ve bir durum hiç olmamakla beraber farklı sayılarda parametre içerebilir.
Örneğin, Şekil 3a’da durumların hepsi sadece 1 parametre içermektedir. Parametrelere
değerler sadece kendi bulundukları durumlarda atanabilir. Parametrenin değeri bir
durum içinde bir kez atandıktan sonra, bu parametre bulunduğu durumunda içinde olduğu
durumlardan oluşmuş herhangi bir yoldaki tüm parametrelerle etkileşebilir. Örneğin, p2
parametresine sadece s2 durumunda değer atanabilir ve bir kez atandıktan sonra p1 ve
p4 parametreleri ile etkileşebilir (Şekilde 3a’daki &lt;si-s1-s2-s4-sf&gt; yolundan ötürü).
Durumlar arasındaki geçişler parametrelerin değerleri tarafından korunabilirler. Örneğin,
s1 ile s2 arasındaki geçiş sadece p1 doğru olduğunda mümkün olabilir. Ayrıca sistemi
başlangıç durumundan bitiş durumuna götüren test parametreleri ve değerleri kümesi
test durumu olarak düşünülmüştür. Bu tip bir sistem modellemesi mesela bir telefon
uygulaması testinde kullanılabilir. Her durum grafiksel arayüzdeki ekran görüntüsü,
parametreler ekrandaki kullanıcı girdileri ve durumlar arasındaki geçişler ise ekranlar
arasındaki girdiye bağlı sağlanan geçişleri olarak düşünülebilir.</p>
      <p>
        Şekil. 3. Varsayımsal bir yazılım sistemini modelleyen sonlu bir durum makinesi
Yazılım geliştiricilerin bizim bu varsayımsal sistemimizin tüm ikili parametre değer
kombinasyonlarını test etmek istediklerini düşünelim. Geleneksel kapsayan diziler
kullanılarak sistemdeki 4 parametre için 2 li bir kapsayan dizi üretilebilir (Şekil 4). Fakat,
p3, p1=Y (¬p1) olduğunda erişilemeyeceğinden ötürü, 16 ikili parametre
kombinasyonundan 3 tanesi (%18.75) maskelenmiş olacak [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. Yani bu 3 kombinasyon verilen
kapsayan dizi tarafından kapsanmadığı için test edilemeyecekler ve yazılım
geliştiricilerinin tüm parametre kombinasyonlarını test ettiklerini düşünmelerine sebep olacaklar.
      </p>
      <p>Maskelenen kombinasyonlardan biri olan (p3 = D, p4 = D) Şekil 4’te sadece ilk
konfigürasyonda (p1 = D, p2 = Y, p3 = D, p4 = D) bulunmaktadır. Fakat bu konfigürasyon,
p3’ün p1=D olduğu zamanlarda ulaşılamayacağından dolayı uygulanamayacaktır. Bu
sebeple, bu kombinasyon Şekil 4’te verilmiş olan kapsayan dizi tarafından test
edilemeyecektir. Diğer maskelenen kombinasyonlar ise şunlardır: (p2 = Y, p4 = Y) ve (p2 =
D, p4 = D).</p>
      <p>Şekil. 4. Şekil 3a için üretilmiş geleneksel bir 2 li kapsayan dizi.</p>
      <p>Başka bir yaklaşım ise bu sistem modelinin her yolu için üzerinde bulunan
parametreler kullanılarak kapsayan diziler üretmek olabilir. Daha sonra üretilen bu kapsayan
p1
D
D
D
Y
Y
Y
p2
Y
D
Y
D
Y
D
p3
D
Y
Y
D
Y
Y
p4
D
Y
Y
Y
D</p>
      <p>D
diziler sistemin test havuzunu oluşturmak için birleştirilebilirler. Örneğin, Şekil 3a’da
verilen modelin &lt;si-s1-s2-s4-sf&gt; ve &lt;si-s1-s3-s4-sf&gt; yolları için ayrı ayrı 2 li kapsayan
diziler oluşturulması gerekir.</p>
      <p>Bu alternatif yaklaşımın bir problemi daha karmaşık sistem modelleri için
dallanmalar arttıkça olası bütün yolların sayısı da üssel bir hızda artacaktır ve çoğu zaman
bütün bu yollar için ayrı ayrı kapsayan diziler oluşturmak mümkün olmayacaktır.
Örneğin, Şekil 3b’de başlangıç durumundan bitiş durumuna gidilebilecek 4 farklı yol
vardır. Bütün bu yollar için kapsayan diziler üretilmesi gerekir.</p>
      <p>Bu yöntemi uygulamak mümkün olsa dahi, her yol için kapsayan dizi üretip daha
sonra bunlar birleştirildiğinde, test durumlarının sayısı gerekenden çok fazla bir şekilde
artacaktır. Bu da sistemi test etmenin maliyetini arttıracaktır. Bir başka örnek olan Şekil
3c’de ise 2 tane 2 li kapsayan diziye ihtiyaç vardır: bir tanesi &lt;si-s1-s3-s4-s5-s6-sf&gt; yolu
üzerindeki p2, p4, p5 ve p6 parametreleri için, diğeri ise &lt;si-s1-s2-s4-s5-s6-sf&gt; yolu
üzerindeki p3, p4, p5 ve p6 parametreleri için. Bahsedilen yollarda bulunan p1’in test
durumlarında olmamasının sebebi her yol üzerinde de alacağı değerlerin (D veya Y) sabit
olmasındandır. Her iki kapsayan dizinin boyutları en azından 6 olacağından (Şekil 4),
birleştirilmiş kapsayan dizinin boyutu ise en az 12 olacaktır. B-KES ise verilen sistem
modellemesini kullanarak mümkün olan geçerli tüm parametre değer
kombinasyonlarını kısıtlar şeklinde tanımlar. Örneğin, Şekil 3c’de verilen sistem modeli için (p3=D,
p4=Y) ikilisi p2 ∧ ¬p4 şeklinde kısıta çevrilebilir.</p>
      <p>Geçerli tüm 2 li parametre değerleri kombinasyonlarını gösteren kısıtları kapsamak
için Şekil 5’de gösterilen boyutu 8 olan bir B-KES objesi oluşturulabilir. Geleneksel
kapsayan dizileri kullandığımız önceki çözümlerimize kıyasla, B-KES 2 li kapsama
kriteri ile tam kapsamayı koruyarak test havuzunun boyutunu %33 oranında azaltmıştır.
p1
D
D
D
D
Y
Y
Y
Y
p2
D
Y
D
Y
*
*
*
*
p3
*
*
*
*
Y
Y
D
D
p4
D
D
Y
Y
Y
D
Y
D
p5
D
Y
Y
D
Y
D
Y
D
p6
Y
D
D
Y
Y
D
Y
D
Şekil. 4. Şekil 3c senaryosu için oluşturulmuş bir B-KES objesi. *’lar “önemsiz” durumları
göstermektedir. Yani, bu kısımlar geçerli herhangi bir değer ile değiştirildiğinde B-KES
objesinin kapsama özelliklerini etkilemezler.
5</p>
    </sec>
    <sec id="sec-6">
      <title>B-KES Hesaplama Yöntemi</title>
      <p>Bu bölümde B-KES objesi hesaplayabilmek için aç gözlü (greedy) bir algoritma
öneriyoruz. Algoritma girdi olarak kısıtlarla tanımlanmış bir sistem modeli M ve bir kapsama
kirteri C, alır. Algoritma ilk olarak tüm geçerli B-KES test isterlerini üretir. Bunu
yapabilmek için, öncelikle kapsanması istenen her bir ister üretilir ve bir kısıta r
dönüştürülür. Daha sonra tüm r için r ∧ M ‘nin tatmin edilebilir olup olmadığı kontrol edilir.
Eğer tatmin edilebilirse r geçerli bir isterdir ve test havuzu tarafından kapsanması
gerekir. Değilse geçersiz olarak işaretlenir.</p>
      <p>Bütün geçerli isterler kümesi R bu şekilde üretildikten sonra, R’nin alt kümelerinden
R’ oluşmuş başka bir küme S daha oluşturulur, öyle ki; her bir alt küme R’ içindeki
bulunan kısıtlar kendi bulundukları kümede birlikte tatmin edilebilir olsun. Bu alt
kümeler kümesi S oluşturulurken R içindeki her bir r’in mutlaka en azından bir alt kümede
bulunduğu garanti edilir. S’in içindeki her bir kümenin daha sonra test durumlarına
dönüştürüleceğini göz önünde bulundurarak, içerdiği alt kümeleri sayısı mümkün
olduğunca az olması gerektiği söylenebilir.</p>
      <p>Bu S kümesini oluşturabilmek için öncelikle boş bir alt küme havuzu ile başlarız.
Akabinde, R içindeki bütün geçerli isterleri (r) havuzdaki herhangi bir alt kümeye
eklenebilir mi onu kontrol ediyoruz. Eğer böyle bir alt küme bulunursa, r’yi bu alt kümeye
ekleriz. Eğer bulunamazsa, havuza yeni boş bir alt küme ekler ve r’yi bu yeni kümeye
koyarız. Burada dikkat edilmesi gereken husus alt kümelerde bulunan tüm isterler
kısıtların birleşimi şeklinde ifade edilmiştir ∧ r′∈R′ r′. Bundan dolayı, bir isterin r var
olan bir alt kümeye eklenip eklenememesi, aslında bu alt kümedeki kısıtların r ve M ile
birlikte tatmin edilebilir olup olmamasıdır: yani r ∧ M ∧ (∧ r′∈R′ r′). Sonuç olarak, eğer
bu kısıt ifadesinin sonucu tatmin edilebilir ise, r bu alt kümeye eklenir.</p>
      <p>Bütün alt kümeleri oluşturduktan sonra, tüm alt kümeler R′ için, r ∧ M ∧ (∧ r′∈R′ r′).
ifadesi çözülerek her bir alt küme için farklı bir test durumu oluşturuyoruz. Bu sayede
oluşturulmuş bu test durumlarının verilen kapsama kriteri C altında tam kapsama
yaptığı garanti edilmiş oluyor.
6</p>
    </sec>
    <sec id="sec-7">
      <title>Sonuç ve Gelecek Çalışmalar</title>
      <p>Bu çalışmamızda sunmuş olduğumuz yaklaşımımızın, KES yaklaşımlarının pratik
hayattaki kullanabilirliklerini önemli ölçüde arttıracağını düşünüyoruz. Bu yüzden,
B-KES objeleri üretebilmek adına yeni diller ve geleneksel olmayan tipte
konfigürasyon uzaylarını ve kapsama krtierlerini tanımlayabilmek için yeni araçlar ve
algoritmalar geliştirmeye devam edeceğiz.
7</p>
      <p>Kaynaklar</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Hartman</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Software and hardware testing using combinatorial covering suites</article-title>
          . In Graph theory, combinatorics and algorithms pp.
          <fpage>237</fpage>
          -
          <lpage>266</lpage>
          . Springer US (
          <year>2005</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Yilmaz</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fouche</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          , Cohen,
          <string-name>
            <given-names>M.B.</given-names>
            ,
            <surname>Porter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Demiroz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            and
            <surname>Koc</surname>
          </string-name>
          ,
          <string-name>
            <surname>U.</surname>
          </string-name>
          :
          <article-title>Moving forward with combinatorial interaction testing</article-title>
          .
          <source>Computer</source>
          , (
          <volume>2</volume>
          ), pp.
          <fpage>37</fpage>
          -
          <lpage>45</lpage>
          (
          <year>2014</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Williams</surname>
            ,
            <given-names>A.W.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Probert</surname>
            ,
            <given-names>R.L.</given-names>
          </string-name>
          :
          <article-title>Formulation of the interaction test coverage problem as an integer program</article-title>
          .
          <source>In Testing of Communicating Systems</source>
          XIV pp.
          <fpage>283</fpage>
          -
          <lpage>298</lpage>
          . Springer US (
          <year>2002</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Harman</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>The current state and future of search based software engineering</article-title>
          .
          <source>In 2007 Future of Software</source>
          Engineering pp.
          <fpage>342</fpage>
          -
          <lpage>357</lpage>
          . IEEE Computer Society (
          <year>2007</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Schroeder</surname>
            ,
            <given-names>P.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Faherty</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Korel</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Generating expected results for automated blackbox testing</article-title>
          .
          <source>In Automated Software Engineering, Proceedings. 17th IEEE International Conference</source>
          on pp.
          <fpage>139</fpage>
          -
          <lpage>148</lpage>
          . IEEE (
          <year>2002</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Kuhn</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lei</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Kacker</surname>
          </string-name>
          , R.:
          <article-title>Practical combinatorial testing: Beyond pairwise</article-title>
          .
          <source>IT Professional</source>
          ,
          <volume>10</volume>
          (
          <issue>3</issue>
          ), pp.
          <fpage>19</fpage>
          -
          <lpage>23</lpage>
          (
          <year>2008</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Yilmaz</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cohen</surname>
            ,
            <given-names>M.B.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Porter</surname>
            ,
            <given-names>A.A.</given-names>
          </string-name>
          :
          <article-title>Covering arrays for efficient fault characterization in complex configuration spaces</article-title>
          .
          <source>Software Engineering</source>
          , IEEE Transactions on,
          <volume>32</volume>
          (
          <issue>1</issue>
          ), pp.
          <fpage>20</fpage>
          -
          <lpage>34</lpage>
          (
          <year>2006</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Mercan</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          <article-title>and</article-title>
          <string-name>
            <surname>Yilmaz</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Pinpointing Failure Inducing Event Orderings</article-title>
          .
          <source>In Software Reliability Engineering Workshops (ISSREW)</source>
          , IEEE International Symposium on pp.
          <fpage>232</fpage>
          -
          <lpage>237</lpage>
          . IEEE (
          <year>2014</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Johansen</surname>
            ,
            <given-names>M.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Haugen</surname>
          </string-name>
          , Ø. and
          <string-name>
            <surname>Fleurey</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>An algorithm for generating t-wise covering arrays from large feature models</article-title>
          .
          <source>InProceedings of the 16th International Software Product Line Conference-</source>
          Volume
          <volume>1</volume>
          pp.
          <fpage>46</fpage>
          -
          <lpage>55</lpage>
          . ACM (
          <year>2012</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Cohen</surname>
            ,
            <given-names>M.B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gibbons</surname>
            ,
            <given-names>P.B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mugridge</surname>
            ,
            <given-names>W.B.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Colbourn</surname>
          </string-name>
          , C.J.: May.
          <article-title>Constructing test suites for interaction testing</article-title>
          .
          <source>In Software Engineering. Proceedings. 25th International Conference on</source>
          (pp.
          <fpage>38</fpage>
          -
          <lpage>48</lpage>
          ). IEEE (
          <year>2003</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Yuan</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cohen</surname>
            ,
            <given-names>M.B.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Memon</surname>
            ,
            <given-names>A.M.:</given-names>
          </string-name>
          <article-title>GUI interaction testing: Incorporating event context</article-title>
          .
          <source>Software Engineering</source>
          , IEEE Transactions on,
          <volume>37</volume>
          (
          <issue>4</issue>
          ), pp.
          <fpage>559</fpage>
          -
          <lpage>574</lpage>
          ,Vancouver (
          <year>2011</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Mercan</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          , Yilmaz C.
          <article-title>: A Constraint Solving Problem Towards Unified Combinatorial Interaction Testing, accepted for publication in the 2016</article-title>
          <source>Proceedings of the International workshop on Constraints in Software Testing, Verification and Analysis (CSTVA'16)</source>
          , Saarbruecken, Germany, (
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Nie</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Leung</surname>
          </string-name>
          , H.:
          <article-title>A survey of combinatorial testing</article-title>
          .
          <source>ACM Computing Surveys (CSUR)</source>
          ,
          <volume>43</volume>
          (
          <issue>2</issue>
          ), p.
          <volume>11</volume>
          (
          <year>2011</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Dumlu</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yilmaz</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cohen</surname>
            ,
            <given-names>M.B.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Porter</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Feedback driven adaptive combinatorial testing</article-title>
          .
          <source>In Proceedings of the International Symposium on Software Testing and Analysis</source>
          pp.
          <fpage>243</fpage>
          -
          <lpage>253</lpage>
          . ACM (
          <year>2011</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Kobayashi</surname>
          </string-name>
          , N.:
          <article-title>Design and evaluation of automatic test generation strategies for functional testing of software</article-title>
          . Osaka, Japan, Osaka Univ (
          <year>2002</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Bryce</surname>
            ,
            <given-names>R.C.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Colbourn</surname>
          </string-name>
          , C.J.:
          <article-title>One-test-at-a-time heuristic search for interaction test suites</article-title>
          .
          <source>In Proceedings of the 9th annual conference on Genetic and evolutionary</source>
          computation pp.
          <fpage>1082</fpage>
          -
          <lpage>1089</lpage>
          . ACM (
          <year>2007</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Cohen</surname>
            ,
            <given-names>M.B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Colbourn</surname>
            ,
            <given-names>C.J.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Ling</surname>
            ,
            <given-names>A.C.</given-names>
          </string-name>
          :
          <article-title>Augmenting simulated annealing to build interaction test suites</article-title>
          .
          <source>In Software Reliability Engineering</source>
          . 14th International Symposium on pp.
          <fpage>394</fpage>
          -
          <lpage>405</lpage>
          . IEEE (
          <year>2003</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Yilmaz</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Test case-aware combinatorial interaction testing</article-title>
          .
          <source>Software Engineering</source>
          , IEEE Transactions on,
          <volume>39</volume>
          (
          <issue>5</issue>
          ), pp.
          <fpage>684</fpage>
          -
          <lpage>706</lpage>
          (
          <year>2013</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Elbaum</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Malishevsky</surname>
            ,
            <given-names>A.G.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Rothermel</surname>
          </string-name>
          , G.:
          <article-title>Test case prioritization: A family of empirical studies</article-title>
          .
          <source>Software Engineering</source>
          , IEEE Transactions on,
          <volume>28</volume>
          (
          <issue>2</issue>
          ), pp.
          <fpage>159</fpage>
          -
          <lpage>182</lpage>
          (
          <year>2002</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Bryce</surname>
            ,
            <given-names>R.C.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Colbourn</surname>
            ,
            <given-names>C.J.:</given-names>
          </string-name>
          <article-title>Prioritized interaction testing for pair-wise coverage with seeding and constraints</article-title>
          .
          <source>Information and Software Technology</source>
          ,
          <volume>48</volume>
          (
          <issue>10</issue>
          ), pp.
          <fpage>960</fpage>
          -
          <lpage>970</lpage>
          (
          <year>2006</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Qu</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cohen</surname>
            ,
            <given-names>M.B.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Woolf</surname>
            ,
            <given-names>K.M.:</given-names>
          </string-name>
          <article-title>Combinatorial interaction regression testing: A study of test case generation and prioritization</article-title>
          .
          <source>In Software Maintenance</source>
          . IEEE International Conference on pp.
          <fpage>255</fpage>
          -
          <lpage>264</lpage>
          . IEEE (
          <year>2007</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Srikanth</surname>
            , H., Cohen,
            <given-names>M.B.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Qu</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          :
          <article-title>Reducing field failures in system configurable software: Cost-based prioritization</article-title>
          .
          <source>In 20th International Symposium on Software Reliability</source>
          Engineering pp.
          <fpage>61</fpage>
          -
          <lpage>70</lpage>
          . IEEE (
          <year>2009</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Kimoto</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tsuchiya</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Kikuno</surname>
          </string-name>
          , T.:
          <article-title>Pairwise testing in the presence of configuration change cost</article-title>
          .
          <source>In Secure System Integration and Reliability Improvement</source>
          . Second International Conference on pp.
          <fpage>32</fpage>
          -
          <lpage>38</lpage>
          . IEEE (
          <year>2008</year>
          ).
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>