<!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>Byyen Ksmi Yol Kstlaryla Konkolik Test</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Yavuz Kro</string-name>
          <email>yavuz.koroglu@boun.edu.tr</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Alper en</string-name>
          <email>alper.sen@boun.edu.tr</email>
        </contrib>
      </contrib-group>
      <fpage>2</fpage>
      <lpage>13</lpage>
      <abstract>
        <p>zet. Otomatik birim testler sayesinde programlarn kapsama orann arttrmak mmkndr. Konkolik test metodu (concolic testing) otomatik birim test yaratm iin kullanlan bir yazlm testi tekni§idir. Ancak, yol patlamas (path explosion) ve kst zmlerinin (constraint solving) yaratt§ darbo§az nedeniyle, leklenebilir bir otomatik konkolik testi geli‡tirmek zor olmu‡tur. Bu tekni§i leklenebilir hale getirebilmek iin bu makalede kst zcye daha ok ama daha kk sorgular gnderilerek zme zerindeki yk haetecek bir yol nerilmi‡tir. Yapt§mz deneyler altta yatan kst zcye yaplan sorgu uzunluklarn d‡rerek bu hedefe yakla‡ld§n gsteriyor. Anahtar Kelimeler: Konkolik Test (Concolic Testing), Hedef Ynelimli Test (Goal Directed Testing), Dallanma Zorlamas (Branch Enforcement), Kst ˙zm (Constraint Solving)</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Konkolik testte ama test edilen programn yollarn dola‡acak girdileri
otomatik olarak olu‡turmaktr. Buna rnek olarak bir gen snandrma
programn d‡nelim. Bu program test edilirken btn olas sonularn (e‡itkenar,
ikizkenar, e‡kenar, gen de§il) bir ‡ekilde ortaya karlmasn sa§layacak test
girdileri retilmesini bekleriz. Tm yollar kapsayacak ‡ekilde bir test retmek
zor ve uzun vakit alan bir i‡tir. Bu i‡in hzlanabilmesi, daha byk
programlarda da otomatik test retimini mmkn klacaktr. Konkolik testin daha hzl
al‡mas iin nerdi§imiz yntem kst zcye yaplan sorgu uzunluklarn
d‡rerek bu amaca hizmet etmeyi ngren bir n al‡madr. Konkolik test
metodu program al‡masn (program execution) istenilen yollara ynlendiren
girdileri yaratmaya al‡r. Bu girdileri yaratabilmek iin, istenilen yollarn yol
kstlar (path constraint) bulunur. Byle kstlar sa§layan girdileri bulmak kst
sa§lama problemi (constraint satisfaction problem) olarak bilinen ok zor bir
problemdir. Bu problemleri zmek genelde girdinin byy‡yle ssel oranda
vakit alr. Bu yzden kst sa§lama iin yapmay planlad§mz ‡ey mmknse
kst zcye yaplan sorgu saysn artrmak pahasna sorgular ksaltmaktr. Bir
byk kstn zm iin daha kk kstlarn zmn kullanmak zerinde
al‡lm‡ bir kirdir [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Kst zcleri bu ‡ekilde kullanmak yazlm
do§rulamas (verication) alannda nerilmi‡tir [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Yntemimizi CREST adl konkolik
test programnda gerekle‡tirdik. Yapt§mz ilk deneysel al‡malarda daha
kk denemeler ile ayn kapsama oranna ula‡labildi§ini grdk. Makalenin geri
kalan ‡u ‡ekilde dzenlenmi‡tir. Blm 2 konkolik test zerine yaplm‡ di§er
al‡malar aklamaktadr. Blm 3 konkolik test ve geli‡tirilmi‡ yeni yntem
hakknda detayl bilgi vermektedir. Blm 4 ise nerilen metodun yararl oldu§u
bir rne§i iermektedir. Blm 5 ise kk programlar zerindeki deneysel
sonular gsterirken bu sonular tart‡maktadr. Blm 6 ise ‡imdiye kadar gelinmi‡
olan noktay belirtirken Blm 7 ise daha ileride yaplabilecekleri anlatmaktadr.
2
      </p>
      <p>lgili ˙al‡malar</p>
      <p>
        Konkolik test verilen bir programn istenilen ksmlarn al‡trmak iin
gerekli girdileri reten ve programlar somut olarak bu girdilerle al‡tran yazlm
testi temelli bir yakla‡mdr. Konkolik test program istenilen tek bir hedefe
ynlendirilebilir [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] veya olas btn hedeere varmaya al‡abilir [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Java [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]
[
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], C [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] ve C# [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] gibi bilinen dillerin o§unda kullanlm‡tr. Konkolik test
byk programlarda al‡trlamad§ndan bu yntemin farkl ba§lamlarda
geli‡tirilmesi iin al‡malar yaplm‡tr [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. Konkolik testte kullanlan yakla‡mlar
zerine detayl bir ara‡trma bulunmaktadr [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Geleneksel konkolik testin znde
tm program yollar zerinde derinlik ncelikli arama (depth rst search)
vardr [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Bu aramalarda uygulamann somut al‡m sonucu hesaplanm‡ sembolik
yollar kullanlr. Bu yakla‡mda yol zerinde denenmemi‡ en son dallanma tersine
evrilmeye al‡lr. En ok uygulanan alternatif yakla‡mlardan biri ise geni‡lik
ncelikli aramadr (breadth rst search) [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. Bu yakla‡mda algoritma
rastgele bir girdiden ba‡lar ve yol zerinde denenmemi‡ ilk dallanmada sapmaya
neden olacak girdileri bulmaya al‡r. lk seviyedeki dallanmalar bitti§inde bir
sonraki dallanmalara geilir ve yeni girdiler olu‡turulurken nceki yaratlm‡
girdilerden faydalanlr. Bu yakla‡m ba‡ta ok kk yol kstlar yaratr ve kstl
bir test yapma yakla‡mna olanak sa§lar. Ba‡ka bir arama alternati de
kontrolak‡ ynlendirmeli (control-ow directed) testtir [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Algoritma program
istatistiki olarak kontrol-ak‡ izelgesindeki en yakn ifadelere ynlendirmeye al‡r.
Program al‡ma yollar zerinde arama yaptka algoritmann yava‡lad§
grlm‡, bu yzden rastgele yeniden ba‡lamalar kullanlm‡tr. Rastgele-dallanma
test yakla‡m uygulamann somut al‡m sonucu hesaplanm‡ sembolik yol
zerindeki herhangi bir dallanmay rastgele olarak seer [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Rastgele-dallanma
aramasnn yan sra, rastgele-yol aramas da denenmi‡tir. Bu yakla‡m rastgele
yollar semeyi ve al‡may bu yollara ynlendirmeyi dener. Bu yakla‡mn
yazlm testinde en sk kullanlan rastgele-girdi aramasndan daha iyi al‡t§ iddia
edilmi‡tir. Bu yakla‡m somut bir al‡ma seer ve bu al‡ma yolu zerindeki
her dallanmay 12 olaslkla tersine evirir. Sonra da bu yeni yol kst iin girdi
yaratmaya al‡r. Rastgele-dallanma yakla‡mnn kapsama bakmndan daha iyi
al‡t§ gsterilmi‡tir [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Bir di§er ilgin yakla‡m ise hedef-ynelimli dallanma
zorlamasdr (goal-directed branch enforcement). Bu yakla‡mda belirli bir
hedef iin sembolik yol kstlar toplanr ve btn kst giderek artan ‡ekilde kritik
dallanma ko‡ullarn zerek sa§lanr [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. Bizim al‡mamzda ise, sz konusu
yakla‡mn tm yollar deneyen metodlara genellenmesi sunulmaktadr.
Konkolik testte kullanlan kst sa§lama problemi verilen kstlar ierisinde kalan bir
rnek bulmak olarak tanmlanabilir. Konu hakknda daha fazla bilgi [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]
kayna§ndan elde edilebilir. Yices, Z3 gibi standart kst zclerin yan sra nonlineer
kstlar zmek [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] ve gerel saylarda yksek kesinlik [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] iin ayarlanm‡
kst zcler vardr. Kst zm 3-sa§lanabilirlik (3-satisability) probleminin
bir genellemesi olup problemin byk rneklerini zen bir algoritma bulunmas
beklenmemelidir. Bu makalede kulland§mz yntem derinlik ncelikli arama ile
hedef-ynelimli konkolik test algoritmalarnn birle‡tirilmesiyle geli‡tirilmi‡tir.
3
3.1
      </p>
    </sec>
    <sec id="sec-2">
      <title>Yntem</title>
      <sec id="sec-2-1">
        <title>Konkolik Test</title>
        <p>Konkolik (Concolic) test ingilizce concrete (somut) ve symb olic (sembolik)
testlerin birle‡imi iin bir ksaltmadr. Bu yakla‡mda, test altndaki program
sa§lanmas gereken dallanma ko‡ullarnn (branch condition) sembolik olarak
toplanlmasn sa§layacak ‡ekle getirilir. Sonra toplanm‡ ko‡ullar kullanlarak
yeni bir ko‡ul kmesi elde edilir. Bu yeni ko‡ullar incelenilerek yeni girdiler
yaratlr ve programa girdi olarak sunulur.</p>
        <p>Tanm 1 DALLANMA KOULU (Branch Condition, c) En az bir program
parametresine (girdi) ba§l sadece do§ru veya yanl‡ olabilen ve her farkl sonucun
program farkl bir al‡ma yoluna ynlendirdi§i ko‡ullardr.</p>
        <p>Dallanma ko‡ullar a‡a§dakilerden herhangi biri olabilir:
Boole cebri (boolean algebra) kullanlarak yazlm‡ bir ifade,
Bir kar‡la‡trma veya
Sadece do§ru veya yanl‡ dndren bir fonksiyon.</p>
        <p>
          Genelde bir programdaki dallanma ko‡ullar birbirine ba§ldr, o yzden bir
ko‡ulun sonucunu sabit tutmak di§erlerini etkiler. Rastgele bir al‡ma yolu
zerindeki rastgele bir ko‡ulun, bu yol zerindeki di§er dallanmalarn ortalama
i ile ba§l oldu§u gsterilmi‡tir ( N bu yol zerindeki toplam dallanma ko‡ulu
says olarak alnm‡tr) [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ].
        </p>
        <p>N
8
Tanm 2 DALLANMA KOULU BALILII (Branch Condition Dependency)
ki dallanma ko‡ulu sadece ve sadece a‡a§daki durumlarda birbirine ba§l kabul
edilir:
ki dallanma ko‡ulunun d gibi en az bir ortak de§i‡keni varsa veya
ki ko‡ul da nc bir ko‡ulla ba§lysa.</p>
        <p>Olas bir al‡ma yolunun gereklenebilmesi ancak o yol zerindeki btn
dallanma ko‡ullarnn sa§lanmasyla olabilir.
Tanm 3 TAM YOL KISITI (Full Path Constraint, ) Tam yol kst, bir
al‡ma yolu zerindeki btn dallanma ko‡ullarnn mantksal Ve operatryle
birle‡tirilmesi olarak tanmlanr:
u andan itibaren kst zc ad verilecek olan ve varsa tam yol kstn
sa§layan de§erler yaratabilen bir zcnn oldu§u varsaylacaktr. Bylece,
gereklenebilir (feasible) btn al‡ma yollarna gtrecek olan gerekli girdiler
yaratlp program bu girdilerle al‡trlabilir. rne§in, program bir hata ifadesine
ynlendiren bir yol gereklenmeye al‡lyor ve buna kar‡lk gelen tam yol kst
biliniyorsa ya bu ifadeye varacak girdiler yaratlabilir ya da bu al‡ma yolunun
gereklenemez (olanaksz) oldu§u sonucuna varlr.</p>
        <p>
          Konkolik testte, program nce rastgele girdilerle al‡trlr. Sonra, al‡ma
srasnda sembolik al‡ma yolunun tam yol kst toplanr. Asl kst zerinden
yeni bir tam yol kst elde etmek iin bir strateji izlenir. Genel bir strateji bu
tam yol kst zerindeki son dallanma ko‡ulunu tersine evirmektir [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. Sonra
yeni yol kst kst zc ye verilir ve program iin yeni test girdileri elde edilir.
0 = :cN ^
        </p>
        <p>N 1
^ ci
i=1
(1)</p>
        <p>
          Bu stratejiye derinlik-ncelikli arama ad verilir. Uygulamalar genel olarak
kst saysyla veya azami iterasyon saysyla [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ] snrlandrlm‡tr. Byle bir
algoritma Algoritma 1 zerinde aklanm‡tr.
3.2
        </p>
        <p>Ksmi Yol Kstlar</p>
        <p>
          Teoride, bir kst zcnn al‡ma sresi zcye verilen ifade (ko‡ul)
saysyla ssel olarak byr [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ]. Bu yzden, kst zcye byk kstlar vermek
kt bir kirdir. Konkolik testte, leklendirilebilirli§in nndeki darbo§az yol
patlamas, yksek dallanma says ve kst zcye verilen bu byk sorgulardr
[
          <xref ref-type="bibr" rid="ref16">16</xref>
          ]. Bizim yakla‡mmzda, sorgu uzunluklar sorgu saysn artrmak pahasna
d‡rlmeye al‡lm‡tr.
        </p>
        <p>Tanm 4 KISM YOL KISITI (Partial Path Constraint, ) Tam yol kstnn
her yukar yakla‡m (over-approximation) bir ksmi yol kst olarak
adlandrlr. Tam yol kstn yol zerindeki dallanma ko‡ullarnn bir kmesi olarak
d‡nrsek, ksmi yol kstn da tam yol kstnn herhangi bir alt kmesi olarak
grebiliriz.</p>
        <p>Tanma gre, mutlak do§ruluk (true) btn tam yol kstlarnn bir yukar
yakla‡mdr. Ayrca, al‡ma yolu zerindeki her dallanma ko‡ulunun da bir
ksmi yol kst oldu§u grlebilir.</p>
        <p>!
Algoritma 1 Derinlik ncelikli Aramal ve Azami terasyonlu Konkolik Test.
Teorem 1 YOL KISITLARININ YUKARI YAKLAIMI (Over-approximation
of Path Constraints)
Bir tam yol kstn sa§layan btn rnekler ayrca bu yolun btn ksmi yol
kstlarn da sa§lar.</p>
        <p>E§er sadece ksmi yol kstn zersek, bu zmn her zaman tam yol kstn
sa§lama ‡ans vardr. Bu al‡mada, tam yol kstlarnn kullanmndan
kanabilmek amacyla ksmi yol kstlarnn yaratlmas zerine al‡lm‡tr. Burada
asl hedef btnlk (completeness) ve geerlilikten (soundness) dn vermeden
byk kstlarn yaratt§ yk azaltmaktr.
3.3</p>
        <p>Ksmi Yol Kst Yaratma Stratejileri</p>
        <p>Algoritma 2’da program zerinde tek bir al‡ma yolunu gerekleyecek girdi
retilmektedir. Bunun iin sembolik olarak bu heden tam yol kst
bilinmelidir. E§er 3. satrda ksmi yol kstn sa§layan girdiler bulunamyorsa, tam yol
kst da sa§lanamyor demektir. E§er 8. satrda §renilen tam yol kst hedef ile
aynysa istenilen girdi elde edilmi‡ demektir. E§er hibiri de§ilse, o zaman yolun
sapmasna neden olan bir ko‡ul vardr. Bu sapma 15. satrda §renilmektedir.</p>
        <p>Algoritma 3’te ise Algoritma 2 kullanlarak tm yollar gerekleyecek olan bir
girdi listesi retilmektedir. Derinlik ncelikli arama kullanlm‡tr. 15. satrda
grld§ gibi daha nce gereklenmi‡ al‡ma yollarndan yeni tam yol kstlar
elde edilerek Algoritma 2’ye verilmektedir.
Algoritma 2 Byyen Ksmi Yol Kstlar Kullanan Hedef-Ynelimli Konkolik
Test
Algoritma 3 Byyen Ksmi Yol Kstlarn Kullanan Tam Konkolik Test</p>
      </sec>
      <sec id="sec-2-2">
        <title>Require: P : program under test</title>
        <p>Ensure: inputs : Test Suite
1: inputs ;
2: = true.
3: girdi generateInput( )
4: for j = 1 to max_iterations do
5: Execute P with input
6: Add input to inputs
7: collectedPathConstraint
8: for i = length( ) to 0 do
9: if !isVisited(branchOf( [i]) then
10: c [i]
11: break
12: end if
13: end for
14: if isDened( c) then
15: [i] :c
16: input Algortihm 2(P; )
17: Add input to inputs
18: else
19: break
20: end if
21: end for
Teorem 2 YOL SAPMASI (Path Divergence) Ksmi kst yi sa§layan ama
tam yol kst ’yi sa§lamayan girdiler var ise bu girdiler iin ( ! c)^( 0 ! :c)
ifadesini sa§layan ve yol sapmasna neden olan c vardr. Bu ifadede 0, yi
sa§layan girdilerin kar‡lk geldi§i al‡ma yolunun tam yol kstn belirtmektedir.</p>
        <p>
          Algoritma 3’n perfromansn arttrmak iin 15. satrda daha uzun ama
kst zcye yklenmeyen bir ile ba‡lanabilir. Bu sefer yine son dallanma
ko‡ulunun tersi :cN i ierir, ama bundan ba‡ka birbirinden ba§msz (Tanm
2) di§er btn dallanma ko‡ullarn da ierir. Byle bir yi zmek, kst
zc iin = cN yi zmek kadar kolay olacaktr, nk kst zc byle
bir durumda her dallanma ko‡ulunu ayr ayr zer [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ]. Bu durumda ksmi
yol kstlar daha ok de§i‡ken ierdi§i iin al‡ma yolunu sa§lama ‡ans daha
yksek olacaktr.
        </p>
        <p>Sonraki
φ ye geç
(π → φ)
evet
evet
Sonraki φ
var mı?
hayır
φ ← φ ∧ cd evet π0 smaup?ıyor hayır πSoyneragkeçi</p>
        <p>Sonraki π hayır
var mı?</p>
        <p>DUR
ekil 1. Byyen Ksmi Yol Kstl Konkolik Test Ak‡ ˙izelgesi</p>
        <p>Grsel kolaylk vermek iin ekil 1 te geli‡tiridi§imiz algoritmann ak‡
izelgesi vardr. Bir listesi oldu§unu ve de her iin btn yollar deneyen bir
listesi oldu§unu varsaymaktadr. Genel olarak sonsuz yol olabilir ve azami
iterasyon snr durma ko‡ulu olarak kullanlr. Ak‡ izelgesi ayrca cd de§i‡kenini
kullanmaktadr. Bu de§i‡ken sapma sebebini belirtmek iin kullanlm‡tr. Hedef
yol kst nin bir dallanma ko‡uludur.</p>
        <p>Başlangıç,
φ ← &gt;
φ için
girdi yarat
φ
gerçeklenebilir
mi?</p>
        <p>evet
Programı
Girdilerle
Çalıştır
hayır</p>
        <p>rnek</p>
        <p>Bu blmde rnek olarak verilen saynn kkten by§e sral olup
olmad§n kontrol eden bir program iin test kmesi yaratlacaktr. Test altndaki
programn kontrol-ak‡ izelgesi ekil 2 zerinde gsterilmi‡tir.</p>
        <p>a ≤ b
a ≤ c</p>
        <p>A
B
C</p>
        <p>a &gt; b
a &gt; c</p>
        <p>HAY IR
b &gt; c
b ≤ c</p>
        <p>EV ET
ekil 2. sralM(a,b,c) Metodunun Ak‡ ˙izelgesi</p>
        <p>Klasik bir konkolik test ekil 3 zerinde grld§ gibi rastgele bir girdi
ile ba‡lar. Test altndaki program bu girdiyle al‡trlr ve tam yol kst 1
hesaplanr. Bundan sonra yeni bir tam yol kst 2, 1 in son dallanma ko‡ulu
tersine evrilerek olu‡turulur. Bu yeni al‡ma yolunu gerekleyebilmek iin tam
yol kst kst zcye verilir. Bu tam yol kst 3 tane dallanma ko‡ulu ierdi§i
iin bu operasyon 3 uzunlukta kst zm, ksaca K˙(3) olarak tanmlanm‡tr.</p>
        <p>Test altndaki program test boyunca 4 kere al‡trlm‡tr ve kst zcye 3
kere sorgu gnderilmi‡tir. nemli nokta ise bu sorgularn ortalama uzunlu§unun
(3 + 2 + 1)=3 = 2 olmasdr.</p>
        <p>Geli‡tiridi§imiz konkolik test tekni§inde ekil 4 zerinde grlen testte bir
girdiyle ba‡lanm‡ ve kar‡lk gelen tam yol kst §renilmi‡tir. Sonra 2 normal
konkolik testteki gibi olu‡turulup hedef olarak belirlenmi‡tir. Tm ifadenin
zlmesi yerine tam bu noktada tam yol kstnn yukar yakla‡mlar
kullanlm‡tr. 21 alttaki kst zcnn program do§ru al‡ma yoluna ynlendiremeyen
bir girdi yaratmasna neden olmu‡tur. Bu yzden algoritma sapmann nedenini
(cd) bulur ve §renir ( ^ cd). Bu §renme bir ba‡ka yukar yakla‡m olan
2 ! 22 ! 21 ile sonulanr. Bu yukar yakla‡m rnekte program al‡masn
hedefe ynlendirme asndan yeterli gelmi‡tir.</p>
        <p>ki algoritmay kar‡la‡tracak olursak, bunda da yine test altndaki program
4 kere al‡trlm‡tr, ancak kst zcye ortalamada (1 + 2 + 1)=3 = 1:33
uzunlu§unda sorgular yaplm‡tr.
[K˙(3)]
[K˙(2)]
[K˙(1)]
[Tm Yollar Denendi ]
ekil 3.</p>
      </sec>
      <sec id="sec-2-3">
        <title>Klasik Konkolik Test Kullanlarak ˙zm</title>
        <p>ekil 4.</p>
        <p>Geli‡tiridi§imiz Ksmi Yol Kstlar ile ˙zm
[ba‡langta ]</p>
        <p>[K˙(1)]
[P21 6= Pistenen ]
[ ^ cd]</p>
        <p>[K˙(2)]
[P22 = Pistenen ]</p>
        <p>[K˙(1)]
[Tm Yollar Denendi ]
i1 = [0; 0; 0]
P1 = A ! B ! C ! EV ET
1 = (a b) ^ (a c) ^ (b
2 = (a b) ^ (a c) ^ :(b
21 = :(b c)
i21 = [0; 0; 1]
P21 = A ! B ! HAY IR
22 = (a c) ^ :(b c)
i22 = [ 1; 0; 1]
P22 = A ! B ! C ! HAY IR
3 = :(a b)
31 = :(a b)
i31 = [0; 1; 1]
P31 = A ! HAY IR</p>
        <p>DUR
c)
c)</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Deneyler</title>
      <p>
        Tekni§imizi CREST adl C iin geli‡tirilmi‡, derinlik-ncelikli arama ve
rastgeledallanma gibi bilinen stratejileri kullanan bir konkolik test uygulamas zerine
ekledik [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. CREST’i ksmi yol kstlarn ve girdi/kst nbelleklenmesi
kullanacak ‡ekilde de§i‡tirdik. Ayrca verilen test kmelerinin verilen programlardaki
dallanma kapsamn (branch coverage) len bir kod da yazdk.
      </p>
      <p>A‡a§da be‡ farkl konkolik test uygulamas tanmlanm‡tr. Bunlardan KYK
ve bKYK bizim geli‡tirid§imiz ksmi yol kstlar yakla‡mn kullanmaktayken
di§er kar‡la‡trma amal olarak literatrde bulunana ve CREST’te
gerekle‡tirlmi‡ yntemlerdir.
1. DA: Derinlik-ncelikli arama kullanan normal konkolik test
algoritmasdr.
2. KA˙: Kontrol-ak‡ izelgesi ynlendirmeli konkolik test algoritmasdr.
3. Rastgele: Rastgele-dallanma yakla‡m kullanlan konkolik test
algoritmasdr.
4. KYK: Ksmi yol kstlar yakla‡m kullanlan konkolik test algoritmasdr.
5. bKYK: Bellekli ksmi yol kstlar algoritmasdr. Bu algoritma da normal
KYK’dan farkl olarak kst zcye daha nce yollanm‡ sorgular ve test
altndaki programa gnderilmi‡ girdileri hatrlayan bir hafza vardr ve ayn
sorgularla al‡malarn tekrarlanmasna engel olmak amacyla tasarlanm‡
olup yer kayglar yznden bu makalenin d‡nda braklm‡tr.</p>
      <p>Be‡ yntem de iki farkl C programnda ( Drtgen ve gen ) ile
al‡trlm‡tr. Bu programlar alar ve kenar uzunluklar verilen gen ve drtgenleri
snandrmak amacyla yazlm‡tr. Test altndaki programn al‡trlma iin
iterasyon limiti 100 olarak belirlenmi‡tir.</p>
      <p>Tablo 1’de deney sonularmz verilmi‡tir. Tablodan KYK ve bKYK’nn DA
ve KA˙’a gre daha ok sorgu yapt§ grlebilir. Ancak, ortalama sorgu
uzunlu§u bunlara gre ok d‡ktr. Benzer ‡ekilde Rastgele’nin ortalama sorgu
uzunlu§unn en ksa oldu§u ancak sorgu saysn ok fazla oldu§u ve dallanma
kapsamnn d‡t§ grlmektedir. Bu sayede kst zcnn zm sresi kst
uzunlu§uyla ssel olarak artt§ndan karma‡klk azaltlm‡tr. Tablo’dan bKYK
ynteminin kst zc zerindeki yk en az tavizle en ok haeten yntem
oldu§unu grlmektedir. nceki sorgular hatrlamann toplam sorgu says
zerinde bir etkisi olmam‡tr, ancak gereksiz test girdilerinin karlmas ile test
kmeleri KYK’ya gre kltm‡tr. Bu saptama gen programnn ihtiya
duydu§u girdi saysnn 27’den 19’a d‡rlm‡ olmasyla aklanabilir.
6</p>
    </sec>
    <sec id="sec-4">
      <title>Sonular</title>
      <p>Bu n al‡mada byyen ksmi yol kstlarnn konkolik test iin
kullanlabilecek bir yakla‡m oldu§u gsterilmi‡tir. Deneylerimizde ortalama sorgu
uzunlu§unun yarya kadar d‡rlmesi ilerisi iin umut vaat edici bir geli‡medir. Bu
geli‡melerin zellikle karma‡k yol kstlarna sahip programlarda konkolik testin
gen
10
19
26
26
DA
KA˙
KYK
bKYK
Rastgele 100</p>
      <p>Sorgu Ort. Sorgu Girdi Dallanma</p>
      <sec id="sec-4-1">
        <title>Sorgu Ort. Sorgu Girdi Dallanma</title>
        <p>Yntem</p>
        <p>Says</p>
        <p>Uzunlu§u Says Kapsamas</p>
      </sec>
      <sec id="sec-4-2">
        <title>Says</title>
      </sec>
      <sec id="sec-4-3">
        <title>Uzunlu§u Says Kapsamas</title>
        <p>Drtgen
100
10
18
17
17
daha hzl al‡masn sa§layaca§ beklenmektedir. Bu nal‡mann devam
olarak leklenebilirli§i grmek asndan daha byk kodlar zerinde test etmeyi
planlamaktayz.
7</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Gelecek ˙al‡malar</title>
      <p>Ksmi yol kstlar yakla‡m birka ‡ekilde geli‡tirilebilir. rne§in,
kadar kk bir yukar yakla‡mla ba‡lamak ok iyi bir kir de§ildir. Onun yerine
yol zerinde birbiriyle ba§msz bir dallanma ko‡ullar kmesiyle ba‡lanabilir.
Sonra kst zc bu daha gl ksmi kstn ko‡ullarn birer birer zebilir. Bu
yntem kst zcye yklenmeden sorgu ba‡na do§ru girdileri bulma ‡ansn
artrr.</p>
      <p>Ksmi yol kstlar grep ve vim gibi daha byk kodlar zerinde test
edilmelidir. Zaman kstlarna uyulabilmesi iin bu testler henz gerekle‡tirilememi‡tir.
iin bu</p>
    </sec>
    <sec id="sec-6">
      <title>Kaynaklar</title>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>P.</given-names>
            <surname>Godefroid</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Klarlund</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Sen</surname>
          </string-name>
          , Dart: Directed automated random testing,
          <source>SIGPLAN Not.</source>
          , vol.
          <volume>40</volume>
          , no.
          <issue>6</issue>
          , pp.
          <fpage>213223</fpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>A. R.</given-names>
            <surname>Bradley</surname>
          </string-name>
          ,
          <article-title>Sat-based model checking without unrolling</article-title>
          , in Verication, Model Checking, and
          <string-name>
            <surname>Abstract</surname>
          </string-name>
          Interpretation - 12th
          <source>International Conference, VMCAI 2011</source>
          , pp.
          <fpage>7087</fpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>C.</given-names>
            <surname>Cadar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Dunbar</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Engler</surname>
          </string-name>
          ,
          <article-title>Klee: Unassisted and automatic generation of high-coverage tests for complex systems programs</article-title>
          ,
          <source>in Proceedings of the 8th USENIX Conference on Operating Systems Design and Implementation</source>
          , OSDI'
          <volume>08</volume>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>K.</given-names>
            <surname>Sen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Marinov</surname>
          </string-name>
          , and G. Agha,
          <article-title>Cute: A concolic unit testing engine for c</article-title>
          ,
          <source>SIGSOFT Softw. Eng. Notes</source>
          , vol.
          <volume>30</volume>
          , no.
          <issue>5</issue>
          , pp.
          <fpage>263272</fpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>J.</given-names>
            <surname>Burnim</surname>
          </string-name>
          and
          <string-name>
            <given-names>K.</given-names>
            <surname>Sen</surname>
          </string-name>
          ,
          <article-title>Heuristics for scalable dynamic test generation</article-title>
          ,
          <source>in Proceedings of the 2008 23rd IEEE/ACM International Conference on Automated Software Engineering, ASE '08</source>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>N.</given-names>
            <surname>Tillmann</surname>
          </string-name>
          and
          <string-name>
            <surname>J. De Halleux</surname>
          </string-name>
          ,
          <article-title>Pex: White box test generation for .net</article-title>
          ,
          <source>in Proceedings of the 2Nd International Conference on Tests and Proofs</source>
          ,
          <source>TAP'08</source>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>K.</given-names>
            <surname>Sen</surname>
          </string-name>
          and
          <string-name>
            <surname>G.</surname>
          </string-name>
          <article-title>Agha, Cute and jcute: Concolic unit testing and explicit path modelchecking tools</article-title>
          ,
          <source>in Proceedings of the 18th International Conference on Computer Aided Verication , CAV'06</source>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>K.</given-names>
            <surname>Khknen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Kindermann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Heljanko</surname>
          </string-name>
          ,
          <string-name>
            <surname>and I. Niemel</surname>
          </string-name>
          ,
          <article-title>Experimental comparison of concolic and random testing for java card applets</article-title>
          , in Model Checking
          <string-name>
            <surname>Software (J. van de Pol</surname>
          </string-name>
          and M. Weber, eds.), vol.
          <volume>6349</volume>
          of Lecture Notes in Computer Science, pp.
          <fpage>2239</fpage>
          , Springer Berlin Heidelberg,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>X.</given-names>
            <surname>Qu</surname>
          </string-name>
          and
          <string-name>
            <given-names>B.</given-names>
            <surname>Robinson</surname>
          </string-name>
          ,
          <article-title>A case study of concolic testing tools and their limitations</article-title>
          ,
          <source>in Proceedings of the 2011 International Symposium on Empirical Software Engineering and Measurement</source>
          ,
          <source>ESEM '11</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>H.</given-names>
            <surname>Seo</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Kim</surname>
          </string-name>
          ,
          <article-title>How we get there: A context-guided search strategy in concolic testing</article-title>
          ,
          <source>in Proceedings of the 22Nd ACM SIGSOFT International Symposium on Foundations of Software Engineering , FSE</source>
          <year>2014</year>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <given-names>S.</given-names>
            <surname>Sidiroglou-Douskos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Lahtinen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Rittenhouse</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Piselli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Long</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Kim</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M. C.</given-names>
            <surname>Rinard</surname>
          </string-name>
          ,
          <article-title>Targeted automatic integer overow discovery using goaldirected conditional branch enforcement</article-title>
          ,
          <source>in Proceedings of the Twentieth International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS '15</source>
          , pp.
          <fpage>473486</fpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12. E. Tsang, Foundations of constraint satisfaction,
          <year>1993</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <given-names>P.</given-names>
            <surname>Nuzzo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Puggelli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. A.</given-names>
            <surname>Seshia</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Sangiovanni-Vincentelli</surname>
          </string-name>
          ,
          <article-title>Calcs: Smt solving for non-linear convex constraints</article-title>
          ,
          <source>in Proceedings of the 2010 Conference on Formal Methods in Computer-Aided Design , FMCAD '10</source>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>M. Souza</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Borges</surname>
            , M. d'Amorim, and
            <given-names>C. S.</given-names>
          </string-name>
          <string-name>
            <surname>Pasareanu</surname>
          </string-name>
          ,
          <article-title>Coral: Solving complex constraints for symbolic pathnder</article-title>
          ,
          <source>in Proceedings of the Third International Conference on NASA Formal Methods , NFM'11</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>J. Zhou</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Yin</surname>
            , and
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Zhou</surname>
          </string-name>
          ,
          <article-title>New worst-case upper bound for 2-sat and 3-sat with the number of clauses as the parameter</article-title>
          ,
          <source>in Proceedings of the Twenty-Fourth AAAI Conference on Articial Intelligence</source>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <given-names>S.</given-names>
            <surname>Anand</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. K.</given-names>
            <surname>Burke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T. Y.</given-names>
            <surname>Chen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Clark</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. B.</given-names>
            <surname>Cohen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Grieskamp</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Harman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. J.</given-names>
            <surname>Harrold</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P.</given-names>
            <surname>Mcminn</surname>
          </string-name>
          ,
          <article-title>An orchestrated survey of methodologies for automated software test case generation</article-title>
          ,
          <source>J. Syst. Softw.</source>
          , vol.
          <volume>86</volume>
          , pp.
          <fpage>19782001</fpage>
          ,
          <string-name>
            <surname>Aug</surname>
          </string-name>
          .
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <given-names>B.</given-names>
            <surname>Dutertre</surname>
          </string-name>
          , Yices
          <volume>2</volume>
          .2, in Computer Aided Verication (
          <string-name>
            <given-names>A.</given-names>
            <surname>Biere</surname>
          </string-name>
          and R. Bloem, eds.), vol.
          <volume>8559</volume>
          of Lecture Notes in Computer Science , pp.
          <fpage>737744</fpage>
          , Springer International Publishing,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>