<!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>Otomatik Sanal Servis Olusturma</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Hasan Ferit Eniser</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Alper Sen</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>ve Suleyman Olcay Polat</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Hasan Ferit Eniser</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Alper Sen</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>ve Suleyman Olcay Polat</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Bogazici University, Computer Engineering Department</institution>
          ,
          <addr-line>Istanbul</addr-line>
          ,
          <country country="TR">Turkey</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Netas Telecommunications</institution>
          ,
          <addr-line>Istanbul</addr-line>
          ,
          <country country="TR">Turkey</country>
        </aff>
      </contrib-group>
      <fpage>594</fpage>
      <lpage>606</lpage>
      <abstract>
        <p>Service Oriented Architectures (SOA), API and Cloud based applications are widely used in industry. Testing such complicated systems can be challenging due to multiple reasons including unavailability of components, high cost of using services or high overhead of transactions. Virtual services are employed to simulate the response behaviour of the real service to oversome these challenges. Virtual services are created</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>by analyzing service speci cations (such as WSDL), by recording and
replaying transactions, or by determining the behavior manually. There
is currently a lack of studies that presents intelligent and automated
methods for service virtualization. In this paper, we develop FancyMock
tool which is a service virtualization tool that makes use of
bioinformatics and machine learning algorithms. Our virtual services can synthesize
valid and logical responses in an acceptable amount of time in practice.
We show the validity of our approach on three di erent data sets
collected from real services and obtain promising results.
1</p>
    </sec>
    <sec id="sec-2">
      <title>Giris</title>
      <p>
        Gunumuzde yaz l m sistemleri uygulamalar n ve etkilesimlerin artmas yla
gittikce daha karmas k bir hal almaktad r. Bunun yan nda Continuous Integration
(CI) gibi kavramlar de gun gectikce populerlesmektedir. Butun bu gelismeler
sistemin butun parcalar yla test edildigi entegrasyon testini zorunlu hale
getirmektedir. Fakat gercek hayatta entegrasyon testinin onunde baz zorluklar
bulunmaktad r [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. Bu zorluklar aras nda ihtiyac duyulan servislerin
tamamlanmam s olmas , servisin s n rl kapasitede olmas , servisin ucretli olmas , ve
s n rl izinle kullan labilmesi gibi sebepler say labilir. Bu sebeplerden dolay bu
tur sistemlerin testi genellikle gercek benzeri ortamlarda yap l r.
      </p>
      <p>
        Populer gercek benzeri ortam yaratma yollar ndan birisi sanal makineleri
kullan p bag ml uygulamalar n bir kopyas n yaratmakt r [
        <xref ref-type="bibr" rid="ref11 ref6">6, 11</xref>
        ]. Fakat sanal
makinelerin kon gurasyonu ve bak m bazen maliyetli olabilir. Bunun yan nda
ucuncu-parti servisler gibi baz parcalar n kopyas n yaratmak mumkun
olmayabilir.
      </p>
      <p>
        Sanal makinelerin bir alternati bag ml servislerin ogrenilip sentetik
cevaplar n uretildigi servis sanallast rmad r. Servis sanallast rma kavram sanal
sunucular ile kar st r lmamal d r. Servis sanallast rma sadece ilgili servisin istek-cevap
davran s n simule etmeyi amaclar [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Bunun yan nda servis sanallast rma
konsepti, mocking 'le de kar st r labilir. Fakat mock objeleri belli bir gelistirme
ihtiyac n gidermek icin o anl k uretilmis basit davran slar taklit eden objelerdir.
Buna kars n sanal servisler butun gelistirme ihtiyaclar n kars lar, tekrar tekrar
kullan labilir ve uretim zincirinin herhangi bir an nda konusland r labilir.
      </p>
      <p>
        Otomatik sanal servis yaratman n iki yolu vard r. Birinci metod sanallast r lacak
servisin WSDL gibi servis spesi kasyonlar n veren bir dokuman n elde oldugunu
varsayar. Bu yontem gelen bir istege gecerli bir cevap donulecegini garanti eder.
Fakat bu yontemin bir tak m k s tlar vard r. O rnegin sanallast r lmak istenen
servis ucuncu-parti bir servis olabilir. Bunun yan nda bu yontem zaman ac s ndan
maliyetlidir [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
      <p>
        I_kinci ve ayn zamanda bizim kulland g m z yontem servis ayaktayken, test
edilecek yaz l m ve servis aras nda kaydedilmis istek-cevap ikililerini kullan r
[
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. Yaklas m m zda, servis henuz ayaktayken kaydedilmis istek-cevap
ikililerinden servisi ogrenerek yeni gelen bir istege cevap sentezlemeye cal s yoruz.
Kulland g m z teknikler mesaj format ndan bag ms z cal s r. Yaklas m m z n temel
hatlar Sekil 1'de gorulebilir.
      </p>
      <p>Sekil 1. FancyMock'a genel bak s. (a) Sanallast r lacak servisin ulas labilir oldugu
durum. Servis ve test edilecek olan uygulama aras nda duran bir kaydedici istek-cevap
ikililerini bir etkilesim kutuphanesine kaydeder. (b) Sanallast r lacak servisin ulas lamaz
oldugu durum. Uygulama sanal servise bir istek gonderir ve Cevap Sentezleme Motoru
(CSM) analiz safhas n n s g nda bir cevap uretip gonderir.</p>
      <p>Yaklas m m z n temel katk lar soyledir:
{ Bu cal smada mesaj format ndan bag ms z cal san otomatik bir servis
sanallast rma yaklas m sunduk.
{ Kay tl istek-cevap ikililerini islemek icin bioinformatik ve makine ogrenmesi
algoritmalar kulland k.
{ Bu cal smada sundugumuz teknik mesaj uzunlugu konusunda herhangi bir
s n rlama getirmez ve uretilen cevaplar mesaj format na uygundur.
{ Butun gelistirmelerimizi FancyMock ad n verdigimiz bir arac olarak gerceklestirdik
ve yaklas m m z gercek servisler uzerinde dogrulad k.</p>
      <p>Bildirinin geri kalan su sekilde duzenlenmistir: I_kinci k s m bu konuda daha
once yap lm s cal smalar anlat r. Ucuncu k s m yaklasm m z n detaylar n verir.
Dorduncu k s m deneyleri sunarak yaklas m z degerlendirir. Son olarak besinci
k s m ise k sa bir ozetle bildiriyi sonland r r.
2</p>
      <p>I_lgili Cal smalar</p>
      <p>
        Servis sanallast rma oldukca yeni bir kavramd r. Bu sebeple, bu konu uzerine
yap lm s cok say da akademik cal sma bulunmamaktad r. Fakat farkl alanlarda
benzer problemlere baz cozumler onerilmistir. O rnegin Cui vd. [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] bir
uygulaman n network izlerini inceleyerek uygulaman n kulland g protokol mesaj
formatlar n c karan bir arac sunmustur. Bu arac protokolden bag ms z cal s r fakat
bu yontem sanal servislerin yarat lmas icin uygulanamaz.
      </p>
      <p>
        Servis temelli ortamlar n test edilmesinin zorluklar n inceleyen cal smalar
da bulunmaktad r. Morris vd. [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] bu tur mimarilerin test edilmesinin
zorluklar n ve bu konuda sanal servislerin nerede durdugunu anlatan genis bir
cal sma yay nlam st r. Bozkurt vd. [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] ise servis odakl mimarilerin test
edilmesindeki ve entegrasyon testindeki zorluklar anlatan kapsaml bir derleme
makalesi yay mlam st r. Nizamic vd. [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] gercek is hayat nda sanal servislerin
kullan lmas n gosteren bir vaka cal smas yapm st r.
      </p>
      <p>
        Servis sanallast rma konusuna odaklanan son cal smalar [
        <xref ref-type="bibr" rid="ref18 ref20 ref21 ref8 ref9">8,9,18,20,21</xref>
        ]'de
sunulmustur ve yazarlar sanal servis yaratmay ele alan bir dizi cozum onermistir.
Bu cal smalar da bioinformatik algoritmalar ndan faydalanmaktad r. Bu cal smalardan
sonuncusu daha oncekilerde onerilen cozumleri ilerleterek Opaque Service
Virtualization (OSV) ad yla yeni bir arac sunmustur. OSV kaydet-oynat yap s yla
cal smaktad r ve mesaj format ndan (XML, JSON vs.) bag ms zd r. Fakat OSV'nin
basar l bir sekilde cal sabilmesi icin mesajlar n ya belirli bir uzunlukta olmas
ya da uzunluk bilgisinin mesaja gomulmus olmas onerilmektedir [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Bunun
yan nda Deneyler k sm nda gosterildigi gibi kaydedilen mesajlar n say s artt g nda
oldukca kotu bir performans gostermektedir.
      </p>
      <p>
        Sanal makineler ya da Docker [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] gibi yeni c kan konteyner tarz araclar
servis sanallast rmaya bir alternatif degildir; bu kavramlar birbirini tamamlay c
niteliktedir. O rnegin bir sanal servis bir konteynerin icinde cal st r labilir.
3
      </p>
    </sec>
    <sec id="sec-3">
      <title>Yontem</title>
      <p>FancyMock arac n n genel semas Sekil 1'de gorulmektedir. Sekil 1(a) servis
hala ulas labilirken yasan lan senaryoyu gostermektedir. Bu senaryoda,
uygulama servisle etkilesime gecer. Bu etkilesim devam ederken istekler ve ilgili
cevaplar etkilesim kutuphanesine bir kaydedici vas tas yla kaydedilmektedir. Sekil 1(b)
ise servisin herhangi bir sebepten dolay ulas lamad g durumu gostermektedir.
Bizim katk m z da bu durumda ortaya c kmaktad r. I_lk olarak Analiz k sm nda
etkilesim kutuphanesindeki veri analiz edilir ve gerekli bilgiler ogrenilir. Bu
bilgiler s g nda Cevap Sentezleme Motoru (CSM) yarat l r. Sanal servise yeni bir
istek ulast g nda, Cevap Sentezleme Motoru yeni bir cevap uretir.</p>
      <p>Asag daki k s mlarda Analiz motoru ve Cevap Sentezleme Motorunun
detaylar anlat lmaktad r.
3.1</p>
      <p>Analiz Motoru</p>
      <p>Bu k s mda ilk olarak her bir istek ve cevap tipi icin bir sablon olustururuz.
Cevap Sentezleme Motoru bu sablonlar daha once kaydedilmemis bir istek
geldiginde yeni bir cevap sentezlemek icin kullan r. I_stegin kay tl oldugu
durumlarda dogru cevap etkilesim kutuphanesinde kolayca bulunabilir.</p>
      <p>
        Genel olarak, eger iki istek birbirine benziyorsa bunlar n cevaplar da
birbirine benziyor demektir. Fakat buna hata mesajlar ya da durumsal servisler gibi
iki istisna gosterebiliriz. Hata mesajlar bizim onerdigimiz cozumde goz onunde
bulundurulmustur. Fakat durumsal servisler bu cal sman n kapsam d s ndad r.
I_steklerin birbirine benzeme durumu ikililer aras ndaki uzakl ga bakarak karar
verilir. Uzakl k ise biyoinformatikte kullan lan Needlman-Wunsch ikili hizalama
algoritmas n n [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] c kt s ndaki eslesmeler ve hizalama uzunlugu uzerinden
hesaplan r.
      </p>
      <sec id="sec-3-1">
        <title>Tablo 1. I_ki farkl tipte (searchsong, searchuser) istekten olusan yapay bir etkilesim</title>
        <p>kutuphanesi. Ayn ID'li istekler ve cevaplar birbirlerine kars l k gelmektedir.
ID I_stekler</p>
      </sec>
      <sec id="sec-3-2">
        <title>1 ftype: searchsong, title: somesong, singer: somesingerg</title>
      </sec>
      <sec id="sec-3-3">
        <title>2 ftype: searchuser, username: rstg</title>
      </sec>
      <sec id="sec-3-4">
        <title>3 ftype: searchuser, username: secondg</title>
      </sec>
      <sec id="sec-3-5">
        <title>4 ftype: searchuser, username: thirdg</title>
      </sec>
      <sec id="sec-3-6">
        <title>5 ftype: searchuser, username: fourthg</title>
      </sec>
      <sec id="sec-3-7">
        <title>6 ftype: searchsong, title: anothersong, singer: somesingerg</title>
        <p>ID Cevaplar</p>
      </sec>
      <sec id="sec-3-8">
        <title>1 ftype: searchsong, title: somesong, streamurl: someurlg</title>
      </sec>
      <sec id="sec-3-9">
        <title>2 ftype: searchuser, fname: John, lname: Doeg</title>
      </sec>
      <sec id="sec-3-10">
        <title>3 ftype: searchuser, errormessage: Not Foundg</title>
      </sec>
      <sec id="sec-3-11">
        <title>4 ftype: searchuser, errormessage: Not Foundg</title>
      </sec>
      <sec id="sec-3-12">
        <title>5 ftype: searchuser, fname: Jane, lname: Roeg</title>
      </sec>
      <sec id="sec-3-13">
        <title>6 ftype: searchsong, title: anothersong, streamurl: anotherurlg</title>
        <p>Etkilesim kutuphanesinde kay tl olmayan bir istege en yak n istegi bulman n
en sade yolu yeni gelen istegin butun isteklerle olan uzakl g n hesaplamakt r.
Fakat, bu kontrolu her seferinde gerceklestirmek ozellikle buyuk etkilesim
kutuphaneleri icin buyuk bir vakit kayb olabilir.</p>
        <p>
          Bunun yerine birbirine benzer kay tl mesajlar orijinal kNN [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ]
algoritmas n n bizim taraf m zdan modi ye edilmis versiyonunu kullanarak bir araya
getirme yolunu izledik. Orijinal kNN algoritmas obekleme icin kullan lan bir
makine ogrenmesi algoritmas d r. Modi ye edilmis kNN Algoritma 1'de
gosterilmistir. Modi ye edilmis kNN algoritmas na gore belli bir uzakl g n icindeki
mesajlar ayn kumeye konulur. Eger ikililerin aralar ndaki uzakl k belli bir esik
degerinin uzerindeyse yeni bir kume olusturulur. Bu esik degeri deneylerden yola
c karak 0.8 olarak belirlenmistir. Hatas z bir durumda her bir kumenin icinde
sadece bir tek tip istek veya cevap bulunur ve tipleri ayn olan iki istek farkl
kumelerde bulunmaz. O rnegin butun searchsong tipli istekler ayn kumede bulunur
ve bu kumenin d s nda bir searchsong bulunmaz. Kumeleme islemi yap ld ktan
sonra her bir kume/tip icin bir sablon c kar l r. Boylece sanal servise yeni bir
istek geldiginde eger o istek daha once kaydedilmemis ise, ona en yak n
mesajlar bulmak icin sadece sablonlarla kars last rmak yeterli olacakt r. Kumeleme
islemi hem istekler hem de cevaplar icin ayr ayr yap l r. Tablo 1'de veriler icin
muhtemel kumeler asag daki gibi olur:
I_stek Kumeleri: f 1:f1, 6g, 2:f2, 3, 4, 5gg
Cevap Kumeleri: f 1:f1, 6g, 2:f2, 5g, 3:f3, 4gg
Algorithm 1 Modi ye Edilmis K-Nearest Neighbour
Input:
&lt; : I_stek veya cevaplar n bulundugu bir liste.
        </p>
        <p>: Kume ay rma esigi.</p>
        <p>K : K parametresi.</p>
        <p>Output:</p>
        <p>C : Anahtarlar istek veya cevaplar, degerleri kume numaralar olan bir sozluk.
1: kumeNumaras 0
2: C[&lt;[0]] kumeNumaras
3: kumelenmisMesajlar.ekle(&lt;[0])
4: for each r in &lt; do
5: uzakl klar, numaralar
6: if min(uzakl klar )&gt;
7: kumeNumaras ++
8: C[r] kumeNumaras
9: else
10:</p>
        <p>KNearestNeighbourBul(K,r,kumelenmisM esajlar)
then</p>
        <p>C[r] enCokBulunanEleman Al(numaralar) . En yak n K tane aras nda
en cok bulunan kume numaras .
11: end if
12: kumelenmisMesajlar.ekle(r)
13: end for
. Birinci elemana kume numaras atan r.</p>
        <p>. Yeni bir kume yarat.</p>
        <p>Kumeleme islemi bittikten sonra istek kumeleri ve cevap kumeleri aras ndaki
iliskinin bulunmas gerekir. Bunun sebebi ayn istek kumesinde olan mesajlar n
cevaplar n n farkl kumelerde olabilme ihtimalidir. O rnegin 2 ve 3 numaral
istekler, 2 kumesinde bulunurken, cevaplar s ras yla 2 ve 3 kumelerinde bulunur.
Cevap Sentezleme Motoru cevaplar uretirken daha gercekci cevaplar icin bu
iliskiyi goz onunde bulundurur. Bu isleme kume eslestirmesi ad verilmistir.
Pre-sampling Kumeleme isleminin bize h z kazand rd g n ve sadece bir kere
yap lmas gerektigini daha once anlatm st k. Fakat kumeleme islemi de her ikili
aras ndaki uzakl g bulmak gerektiginden oldukca maliyetli bir istir. Bu cal smada,
performans art rmak icin, basit ama etkili bir cozum olarak kumelerin eleman
say s na bir ust s n r koyduk ve bu isleme pre-sampling ad n verdik. Pre-sampling
yontemiyle oncekiyle ayn say da kume olmas na ragmen ikililerin kars last rma
say s azald g icin kumeleme islemi h z kazanacakt r. Cunku kumeleme isleminin
karmas kl g kareselden dogrusala duser. O rnegin, eger kume ust s n r n 3 secerek
pre-sampling uygulam s olsayd k, 2 sunun gibi olurdu: 2:f2, 3, 4g</p>
        <p>
          Pre-sampling'in cevap uretimine olan etkisini Deneyler k sm nda degerlendirecegiz.
Sablon C karma Bu asamada bir coklu dizi hizalama algoritmas olan
ClustalW'yi [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ] kullanarak her bir kumeyi temsil eden bir sablon c karacag z. Sablon
c karma islemi hem istek hem de cevap kumeleri icin yap l r.
        </p>
        <p>Coklu dizi hizalama islemi yap ld ktan sonra, ayn indisteki karakterler aras nda
bir uyum yoksa sablonun o indisine bir joker karakter konulur. Uyum o indisteki
karakterlerin %80'inin ayn olmas olarak belirlenmistir. Eger bir uyum varsa
sablonun o indisine uyumu saglayan karakter konulur. Bu tan ma gore istek
kumesi 2'nun ve cevap kumesi 1'in sablonu asag daki gibi olur:
sablon 2: ftype:searchuser, username:#######g
sablon 1: ftype:searchsong, title:########, streamurl:#######g
Bu yaklas m dizilerin as l k s mlar n tutarken degisken k s mlar n joker
karakterlerle (#) degistirir.</p>
        <p>Asag daki iki sablon gecersiz sablonlara ornektir. Birinci sablonda degisken
olan bir k s m tamamiyle joker karakterlerden olusmamaktad r. I_kinci sablonun
problemi ise degisken olmayan bir k sm n joker karakterleri bar nd rmas d r.
ftype:searchsong, title:####s###, streamurl:#######g
ftype:sear##song, title:########, streamurl:#######g</p>
        <p>Hat rlanacag uzere, sablonlar, bir istegin hangi kumeden olduguna karar
vermek icin kumelerdeki butun elemanlar yerine sadece bir kars last rma yapmak
icin uretilirler.</p>
        <p>
          Bu cal smada sablon c kar l rken [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ]'de anlat lan yontemden esinlenilmistir.
Mesajlardaki Degisken K s mlar n Analizi O nceki cal smalar gercekci
cevaplar uretmek konusunda k s tl yeteneklere sahiptir [
          <xref ref-type="bibr" rid="ref21 ref9">9, 21</xref>
          ]. Biz bu cal smada,
cesitli ve gercekci cevaplar uretebilmeyi amacl yoruz. Bu ad mda kay tl butun
cevap mesajlar n n butun degisken k s mlar n bulmay hede iyoruz. Degisken
k s mlar yani mesajlar n parametrelerini bulmak icin mesaj o kumenin sablonu
ile hizalar z. Bu hizalamada sablonun joker karakterleriyle eslesen k s mlar o
mesaj n degisken k s mlar olur. Bu k s mlar c kar ld ktan sonra bir sozluk yap s nda
tutulur. Asag da bir ornek gosterilmistir.
        </p>
        <p>ftype:searchsong, title:somesong, streamurl:someurlg
ftype:searchsong, title:########, streamurl:#######g</p>
        <p>Yukar daki hizalamaya bakarak somesong ve someurl in bir degisken k s m
oldugunu kolayca anlayabiliriz. Bu islem butun cevap kumelerinin butun
mesajlar na uygulan r ve degiskenK s mSozlugu ismiyle bir sozluk yarat l r. O rnek bir
degiskenK s mSozlugu Tablo 2'de gosterilmistir.</p>
        <p>Tablo 2. Tablo 1 icin degiskenK s mSozlugunun anahtar ve degerleri gosterilmistir.</p>
      </sec>
      <sec id="sec-3-14">
        <title>Ornegin (2,1) ikinci kumenin birinci degisken k sm anlam na gelmektedir.</title>
        <p>Key Value
(1,1) [somesong, anothersong, ...]
(1,2) [someurl, anotherurl, ...]
(2,1) [John, Jane, ...]
(2,2) [Doe, Roe, ...]
3.2</p>
        <p>Cevap Sentezleme Motoru</p>
        <p>Cevap Sentezleme Motoru (CSM), Analiz k sm n n c kt lar n kullanarak
kabul edilebilir, gercege yak n ve cesitlendirilmis cevaplar uretir. Analiz k sm n n
c kt lar sablonlar, kumeler ve degiskenK s mSozlugudur.</p>
        <p>CSM, servise yeni bir istek geldiginde ona cevap sentezlemek icin harekete
gecer ve toplamda 3 ana ad mdan olusur:
1. Cevap sentezlemede temel al nacak mesaj n secilmesi. (Temel Mesaj Secimi):
(a) En benzer istek kumesinin sablonunu bul.
(b) Secilen istek kumesinin iliskili oldugu cevap kumelerini bul.
(c) Secilen cevap kumesinden bir mesaj sec (Temel cevap) ve bu cevab n
istegini bul (Temel istek ).
2. Simetrik K s mlar n Yerlestirilmesi (SKY) prosedurunu uygula:
(a) Temel istek ve Temel cevap aras nda ayn olan degisken k s mlar n
indislerini bul.
(b) Bu indislerden yola c karak Gelen istegin ilgili alanlar n Temel cevaba
kopyala.
3. Temel cevab n geri kalan degisken alanlar n degiskenK s mSozlugu yard m yla
degistir.(Cesitlendirme).</p>
        <p>Temel Mesaj Secimi O ncelikle, yeni gelen bir istegi butun istek
kumelerinin sablonlar yla kars last r r ve en yak n n buluruz. Ayn tipteki istekler farkl
tiplerdeki cevaplarla yan tlanabildiginden muhtemel cevap kumelerinden birini
secebiliriz. Burada en yuksek ihtimalli cevap kumesini secmek uygun olur. Daha
sonra secilen bu cevap kumesinden rastgele bir mesaj al n r (Temel cevap) ve
buna kars l k gelen istek bulunur (Temel istek ).</p>
        <p>Simetrik K s mlar n Yerlestirilmesi (SKY) Bu ad mda Temel istek ve
Temel cevap aras nda tamamen ayn olan degisken k s mlar bulunur. Asag daki
ornekte goruldugu gibi somesong bu ikili aras nda ayn olan bir degisken k s md r.
Cal smam zda sadece degisken k s mlar aras ndaki simetri hesaba kat lm st r.
O rnegin searchsong asag daki ikili aras nda simetrik olarak kabul edilmemistir.
Cunku bu alan sablonun kendisinde bulunmaktad r (kumedeki butun mesajlarda
ortakt r).</p>
        <p>
          Temel istek: ftype:searchsong, title:somesong, singer:somesingerg
Temel cevap: ftype:searchsong, title:somesong, streamurl:someurlg
Bu alanlar bulunduktan sonra Temel cevap uzerinde degisiklikler yap larak
yeni gelen istege kars l k gelen cevap sentezlenmeye baslan r. [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ]'deki cal sman n
aksine biz sadece degisken k s mlar aras ndaki simetriyi hesaba katar z, sablon
uzerindeki simetriyi goz ard ederiz. Bunun yan nda yeni yerlestirilen degisken
k s m Temel cevab n ilgili k sm ndan daha k saysa o k s m kuculur, eger daha
uzunsa buyur. Bu bize degisen uzunluktaki mesajlar n ustesinden gelmemizi
saglar. Eger mesajlar aras nda simetrik bir degisken k s m yoksa bu ad m
atlan r.
Cesitlendirme Temel cevab n simetrik olmayan degisken k s mlar degiskenK s mSozlugunun
ilgili yerinden secilerek degistirilir. Bu sekilde, sentezlenen cevaplar cesitlendirilir
ve bu, yaz l m n daha kapsaml sekilde test edilmesine yard mc olur. Asag da
ornek bir Cesitlendirme islemi gosterilmistir.
        </p>
        <p>Yeni gelen istek 1 ve Sentezlenen Cevap 1:
ftype:searchsong, title:awesomesong, singer:coolsingerg
ftype:searchsong, title:awesomesong, streamurl:randomurl1g
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Deneyler</title>
      <p>
        Bu k s mda FancyMock'u degerlendirmek icin yapt g m z deneyleri sunacag z.
Bu cal smada FancyMock'u Baseline ad n verdigimiz bir referans
implementasyonla kars last rd k. Baseline implementasyonunda pre-sampling, degisken k s m
analizi ve cesitlendirme ad mlar yoktur. SKY prosedurunun ilkel bir versiyonu
dahil edilmistir. Bu haliyle Baseline [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]'de anlati lan teknigin (OSV) bizim
taraf m zdan kodlanm s versiyonudur.
      </p>
      <p>Yaklas m m z degerlendirmek icin deneylerde 4 olcum yapt k: sentezlenen
cevaplar n gecerliligi, sentezlenen cevaplar aras ndaki ortalama uzakl k (cesitlilik),
analiz safhas cal sma suresi ve ortalama cevap sentezleme suresi. Bunun yan nda
pre-samplingin sablon c karma uzerinde olan etkisini de degerlendirdik.</p>
      <p>Deneyler 32 GB haf zal ve Intel Xeon E5520 2.27 GHz islemcili bir sunucuda
kosulmustur.
4.1 Veri setleri</p>
      <p>Yaklas m m z uc farkl veri seti uzerinde test ettik. Daha gercekci sonuclar
icin butun veriler gercek sistemlerden toplanm st r. Veriler bilgisayar ortam ndan
otomatik olarak sorgu atan kucuk kod parcalar yla toplanm st r. Birinci veri seti
I_kamet Bilgisi Sorgu Sistemi (I_BSS) ad verilen bir sistemden toplanm st r. Bu
sistemde kisi bir id veya tam isimle sorgu yapabilir. Bu isteklere donen cevaplar
ise sorgulanan kisinin dogum tarihi, dogum yeri adres vs. gibi detayl
bilgilerini icermektedir. I_kinci veri seti SoundCloud uygulamas n n API'sinden
toplanm st r. SoundCloud herkese ac k olarak RESTful bir API sunmaktad r. Son
olarak, WeatherUnderground API'sinden gecmisteki bir gune ait bir hava
durumu verisi toplad k. Bu API de SoundCloud gibi RESTful bir API'dir. Tablo
3 istek tiplerinin ve toplanan mesajlar n toplam say s n gostermektedir.</p>
      <p>Tablo 3. Veri Setleri
I_sim
I_BSS XML
SoundCloud API JSON
WeatherUnderground API JSON</p>
      <p>Format #Request Type #Traces</p>
      <p>Bu deneyde her bir sentezlenen cevab n gecerli olup olmad g kontrol edilmistir.
Bir mesaj iki durumda gecersiz olabilir: Ya sentezlenen cevap beklenen mesaj
format na uygun degildir (JSON, XML, etc.) ya da beklenen cevap tipine ait
degildir. O rnegin searcsong tipli cevap beklerken searchuser tipli cevap
uretilmesi gibi. Gecerlilik deneyinde sadece kay tl olmayan (egitim setinde olmayan)
mesajlar kullan lm st r.</p>
      <sec id="sec-4-1">
        <title>Tablo 4. Sentezlenen cevaplar n gecerlilik Tablo 5. Butun sentezlenen cevap ciftlerinin yuzdesi. aras ndaki ortalama uzakl k.</title>
        <p>I_sim</p>
      </sec>
      <sec id="sec-4-2">
        <title>Baseline FancyMock I_sim</title>
        <p>Baseline FancyMock
I_BSS 48.6%
SoundCloud API 18.3%
WeathrUndrgrnd API 21.2%</p>
        <p>Bu deneyde cesitliligi uretilen cevaplar aras ndaki farkl l k olarak tan mlad k.
Cesitliligin olcumunu ise uretilen cevaplardan ayn tipte olan her ikili aras ndaki
uzakl g hesaplayarak yapt k. O rnegin tipi searchuser olan butun cevaplar n
aralar ndaki uzakl g ikili ikili hesaplad k. Daha sonra bu uzakl klar n ortalamas n
ald k.</p>
        <p>Tablo 5 Baseline yaklas m taraf ndan uretilen cevaplar n s n rl bir cesitliligi
oldugunu gosteriyor. Diger taraftan, FancyMock birbirinden farkl cevaplar
uretebilmektedir.</p>
        <p>Analiz Safhas n n Cal sma Suresi Degerlendirmesi</p>
        <p>Bu deneyle analiz safhas n n cal sma suresini degerlendirdik. FancyMock'u,
pre-sampling ad m n icermeyen Baseline yaklas m yla kars last rd k.</p>
        <p>Tablo 6. Analiz Safhas Cal sma Suresi (hh:mm:ss)</p>
        <p>Baseline FancyMock
400 800 1200 400 800 1200
I_BSS 01:53:03 08:47:17 20:11:08 01:22:07 02:37:08 03:54:12
SoundCloud API 00:08:47 00:16:03 00:41:06 00:18:23 00:35:12 00:52:34
WeathrUndrgrnd API 00:10:30 00:39:43 01:24:34 00:16:04 00:32:58 00:52:12</p>
        <p>Bu deneyi performanstaki degisimi gorebilmek icin farkl buyukluklerdeki
(400, 800, 1200) verilerle gerceklestirdik. Tablo 6 sonuclar gostermektedir.
Tablodan anlas ld g uzere pre-sampling teknigi ozellikle etkilesim kutuhanesi buyudugunde
faydal olmaktad r. Gercek hayatta buyuk etkilesim kutuphaneleri daha s k kars las lan
bir senaryodur. Analiz safhas n n cal sma suresini etkileyen bir diger faktor
etkilesim kutuphanesindeki mesajlar n ortalama uzunlugudur. SoundCloud veri
setinde Baseline yaklas m n n FancyMock'tan daha iyi performans
gostermesinin sebebi mesajlar n oldukca k sa olmas d r. FancyMock mesajlar uzad kca daha
buyuk bir fark yarat r.
4.5</p>
        <p>Ortalama Cevap Sentezleme Suresi</p>
        <p>Bu deneyde, cevap sentezleme suresi, servise bir istegin ulasmas yla, bu
servisin bir cevap dondurmesi aras nda gecen zaman olarak tan msanm st r. Tablo
7 ortalama cevap uretim surelerini gostermektedir. Bu deneyde gercek
servisten toplad g m z cevap donme surelerini de kars last rd k. Tabloya gore bizim
onerdigimiz yaklas mla bir sanal servisten cevap almak genelde daha uzun
surmektedir. Bunun sebebi uretilen mesajlar n gecerlilik oran n ve cesitliligini art rmak
icin Cevap Sentezleme Motoruna ekledigimiz ad mlard r. WeatherUnderground
API' nda istisnai bir durum olarak FancyMock daha iyi performans gostermistir.
Bunun sebebi istekler ve cevaplar aras nda simetrik degisken k s mlar
bulunmad g icin SKY ad m n n FancyMock'ta atlanm s olmas d r. Baseline yaklas m nda
ise mesaj n degisken olmayan k s mlar aras nda da yerlestirme yap lmaktad r.</p>
      </sec>
      <sec id="sec-4-3">
        <title>Tablo 7. Ortalama Cevap Uretim Suresi (saniye)</title>
        <p>Baseline FancyMock Gercek Servis</p>
        <p>Min Max Ort Min Max Ort Min Max Ort
I_BSS 1.42 1.91 1.68 2.50 3.92 3.09 0.02 8.94 0.61
SoundCloud API 0.47 0.91 0.72 0.33 1.22 0.86 0.10 0.54 0.45</p>
        <p>WeathrUndrgrnd API 0.69 0.84 0.74 0.57 1.31 0.66 0.05 0.96 0.63
4.6</p>
        <p>Pre-sampling'in Sablon C karma U zerine Etkisi</p>
        <p>Son olarak, pre-sampling tekniginin sablon c karma uzerine olan etkisini
inceleyecegiz. Bir sablonda mesaj n degisken olmayan k s mlar n n korunmas ve
butun degisken k s mlar n joker karakterleriyle doldurulmus olmas
beklenmektedir. Dogru ve bozuk sablon ornekleri Sablon C karma basl g alt nda gorulebilir.</p>
        <p>Bu olcum veri setinden ve mesajlar n istek ya da cevap olmas ndan bag ms zd r.
Bu sebeple bu deneyde I_BSS veriseti kullan lm st r. Kume ust s n r olarak 5, 10,
20, 25 ve s n rs z (Baseline yaklas m ndaki gibi) sectik ve daha dogru bir sonuc
icin bu deneyi 10 kere tekrarlay p ortalamas n ald k.</p>
        <p>Tablo 8 deneyin sonuclar n gostermektedir. Tablodan goruldugu uzere kume
ust s n r artt kca sablonun dogrulugu artmaktad r. Fakat belli bir yerde dogruluk
oran doyum noktas na ulasmaktad r. Buna gore eger butun kumeyi almak
yerine pre-sampling yaparak kume ust s n r n uygun bir buyuklukte secersek, ikili
uzakl k bulma islemi azalacag ndan h z konusunda belirli bir art s elde edebiliriz.</p>
      </sec>
      <sec id="sec-4-4">
        <title>Tablo 8. Pre-sampling'in Sablon C karma Uzerine Etkisi</title>
      </sec>
      <sec id="sec-4-5">
        <title>Kume Ust S n r Sablon Gecerlilik Oran (%)</title>
        <p>5
10
20
25
Butun Kume</p>
        <p>
          Bu cal smay yaparken yaklas m m z n belli k s tlar oldugunu gorduk. Bizim
kulland g m z modi ye edilmis kNN teknigi ancak uygun bir esik degeri secilirse
dogru cal sabilir. Bunun yerine DBSCAN [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ] ya da OPTICS [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ] daha gelismis
kumeleme teknikleri kullan labilir. Bunun d s nda FancyMock ornegin bir
saniyenin alt nda gibi cok k sa bir surede cevap bekleyen uygulamalar ve sifreli
mesajlar kullanan protokoller icin uygun degildir.
5
        </p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Sonuc</title>
      <p>Bu cal smada ozgun bir servis sanallast rma teknigi gelistirdik. Bizim yaklas m m zda
servis henuz ayaktayken istekler ve cevaplar kaydedilir. Daha sonra belirli
tekniklerle bir sablon c kar l r ve sonuc olarak yeni gelen bir istek icin sentetik bir
cevap yarat l r.</p>
      <p>FancyMock mesaj format ndan bag ms z cal s r yani sanallast r lacak servisin
belirli bir mesaj format nda cal st g n varsaymaz. I_kinci olarak, uretilen sentetik
cevaplar hem mesaj format n ihlal etmez hem de dogru tiptedir. Bu sebeple
uretilen cevaplar n gecerlilik oran yuksektir. U cuncu olarak uretilen cevaplar
olabildigince cesitlendirilerek yapmac kl ktan olabildigince uzaklas lm st r ve son
olarak FancyMock'un performans pratikte kabul edilebilir s n rlar icerisindedir.</p>
      <p>FancyMock'la yapt g m z deneyler yaklas m m z n faydalar n gostermistir.
Bir sonraki cal sma olarak durumsal servislerin sanallast r lmas uzerine yogunlasmay
planl yoruz.</p>
      <p>Kaynaklar</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <article-title>1. ODP manual page</article-title>
          . https://docops.ca.com/devtest-solutions/9- 5/en/using/using-ca
          <article-title>-service-virtualization/using-devtest-workstation-withca-service-virtualization/creating-service-images/create-a-service-image-byrecording/transport-protocols/opaque-data-processing-transport-protocol</article-title>
          ,
          <source>accessed: 2017-08-26</source>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Smartbear</surname>
          </string-name>
          (
          <year>2017</year>
          ), https://smartbear.com/learn/software-testing/what-is-servicevirtualization/, [Online; accessed 23-May-2017]
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Ankerst</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Breunig</surname>
            ,
            <given-names>M.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kriegel</surname>
            ,
            <given-names>H.P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sander</surname>
          </string-name>
          , J.:
          <article-title>Optics: ordering points to identify the clustering structure</article-title>
          .
          <source>In: ACM Sigmod record</source>
          . vol.
          <volume>28</volume>
          , pp.
          <volume>49</volume>
          {
          <fpage>60</fpage>
          .
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>1999</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Boettiger</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>An introduction to docker for reproducible research</article-title>
          .
          <source>ACM SIGOPS Operating Systems Review</source>
          <volume>49</volume>
          (
          <issue>1</issue>
          ),
          <volume>71</volume>
          {
          <fpage>79</fpage>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Bozkurt</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Harman</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hassoun</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>Testing and veri cation in service-oriented architecture: a survey</article-title>
          .
          <source>Software Testing, Veri cation and Reliability</source>
          <volume>23</volume>
          (
          <issue>4</issue>
          ),
          <volume>261</volume>
          {
          <fpage>313</fpage>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Chen</surname>
            ,
            <given-names>P.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Noble</surname>
            ,
            <given-names>B.D.</given-names>
          </string-name>
          :
          <article-title>When virtual is better than real [operating system relocation to virtual machines]</article-title>
          .
          <source>In: Hot Topics in Operating Systems</source>
          ,
          <year>2001</year>
          . Proceedings of the Eighth Workshop on. pp.
          <volume>133</volume>
          {
          <fpage>138</fpage>
          .
          <string-name>
            <surname>IEEE</surname>
          </string-name>
          (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Cui</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kannan</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>H.J.</given-names>
          </string-name>
          : Discoverer:
          <article-title>Automatic protocol reverse engineering from network traces</article-title>
          .
          <source>In: Usenix Security</source>
          . vol.
          <volume>158</volume>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Du</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schneider</surname>
            ,
            <given-names>J.G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hine</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Grundy</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Versteeg</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Generating service models by trace subsequence substitution</article-title>
          .
          <source>In: Proceedings of the 9th international ACM Sigsoft conference on Quality of software architectures</source>
          . pp.
          <volume>123</volume>
          {
          <fpage>132</fpage>
          .
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Du</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Versteeg</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schneider</surname>
            ,
            <given-names>J.G.</given-names>
          </string-name>
          , Han,
          <string-name>
            <given-names>J</given-names>
            .,
            <surname>Grundy</surname>
          </string-name>
          , J.:
          <article-title>Interaction traces mining for e cient system responses generation</article-title>
          .
          <source>ACM SIGSOFT Software Engineering Notes</source>
          <volume>40</volume>
          (
          <issue>1</issue>
          ), 1{
          <issue>8</issue>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Ester</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kriegel</surname>
            ,
            <given-names>H.P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sander</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Xu</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          , et al.:
          <article-title>A density-based algorithm for discovering clusters in large spatial databases with noise</article-title>
          .
          <source>In: Proceedings of the Second International Conference on Knowledge Discovery and Data Mining</source>
          . vol.
          <volume>96</volume>
          , pp.
          <volume>226</volume>
          {
          <issue>231</issue>
          (
          <year>1996</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Hine</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Emulating enterprise software environments</article-title>
          .
          <source>Ph.D. thesis</source>
          , Swinburne University of Technology (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Hurwitz</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <article-title>Service Virtualization for dummies</article-title>
          . John Wiley &amp; Sons (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Michelsen</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>English</surname>
          </string-name>
          , J.:
          <article-title>What is service virtualization?</article-title>
          <source>In: Service Virtualization</source>
          , pp.
          <volume>27</volume>
          {
          <fpage>35</fpage>
          . Springer (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Morris</surname>
            ,
            <given-names>E.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Anderson</surname>
            ,
            <given-names>W.B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Balasubramanian</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Carney</surname>
            ,
            <given-names>D.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Morley</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Place</surname>
            ,
            <given-names>P.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Simanta</surname>
            ,
            <given-names>S.:</given-names>
          </string-name>
          <article-title>Testing in service-oriented environments</article-title>
          .
          <source>Tech. rep., Software Engineering Institute</source>
          , Carneige Mellon University (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Needleman</surname>
            ,
            <given-names>S.B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wunsch</surname>
          </string-name>
          , C.D.:
          <article-title>A general method applicable to the search for similarities in the amino acid sequence of two proteins</article-title>
          .
          <source>Journal of molecular biology 48(3)</source>
          ,
          <volume>443</volume>
          {
          <fpage>453</fpage>
          (
          <year>1970</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Nizamic</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Groenboom</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lazovik</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Testing for highly distributed serviceoriented systems using virtual environments</article-title>
          .
          <source>Proceedings of 17th Dutch Testing Day</source>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Roussopoulos</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kelley</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vincent</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Nearest neighbor queries</article-title>
          .
          <source>In: ACM Sigmod record</source>
          . vol.
          <volume>24</volume>
          , pp.
          <volume>71</volume>
          {
          <fpage>79</fpage>
          .
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>1995</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Schneider</surname>
            ,
            <given-names>J.G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mandile</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Versteeg</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Generalized su x tree based multiple sequence alignment for service virtualization</article-title>
          .
          <source>In: Software Engineering Conference (ASWEC)</source>
          ,
          <year>2015</year>
          24th Australasian. pp.
          <volume>48</volume>
          {
          <fpage>57</fpage>
          .
          <string-name>
            <surname>IEEE</surname>
          </string-name>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Thompson</surname>
            ,
            <given-names>J.D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Higgins</surname>
            ,
            <given-names>D.G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gibson</surname>
          </string-name>
          , T.J.:
          <article-title>Clustal w: improving the sensitivity of progressive multiple sequence alignment through sequence weighting, positionspeci c gap penalties and weight matrix choice</article-title>
          .
          <source>Nucleic acids research</source>
          <volume>22</volume>
          (
          <issue>22</issue>
          ),
          <volume>4673</volume>
          {
          <fpage>4680</fpage>
          (
          <year>1994</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Versteeg</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Du</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bird</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schneider</surname>
            ,
            <given-names>J.G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Grundy</surname>
            ,
            <given-names>J</given-names>
            ., Han, J
          </string-name>
          .:
          <article-title>Enhanced playback of automated service emulation models using entropy analysis</article-title>
          .
          <source>In: Continuous Software Evolution and Delivery</source>
          (CSED), IEEE/ACM International Workshop on. pp.
          <volume>49</volume>
          {
          <fpage>55</fpage>
          .
          <string-name>
            <surname>IEEE</surname>
          </string-name>
          (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Versteeg</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Du</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schneider</surname>
            ,
            <given-names>J.G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Grundy</surname>
            ,
            <given-names>J</given-names>
            ., Han, J
          </string-name>
          .,
          <string-name>
            <surname>Goyal</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Opaque service virtualisation: a practical tool for emulating endpoint systems</article-title>
          .
          <source>In: Proceedings of the 38th International Conference on Software Engineering Companion</source>
          . pp.
          <volume>202</volume>
          {
          <fpage>211</fpage>
          .
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>