<!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>ULAK-SPY: Ara Katman Entegrasyon Test Otomasyon Aracı</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Gökhan Öztaş</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Anahtar Kelimeler: Gömülü Sistemler, Entegrasyon Testi, Ara katman Protokol Testi, Otomatik Simülatör Oluşturma</institution>
          ,
          <addr-line>Senaryo Oluşturma</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Gömülü ve Gerçek Zamanlı Yazılım Tasarım Müdürlüğü, SST Sektör Bşk. ASELSAN A.Ş</institution>
        </aff>
      </contrib-group>
      <fpage>542</fpage>
      <lpage>549</lpage>
      <abstract>
        <p>Making Integration tests and testing protocol between software is time consuming when performed by manual methods due to development of simulators for testing purposes. On the other hand with the use of standard analysis tools protocol between software must be implemented on these tools to be able to observe communication. Since both methods are not flexible making</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>modifications to the protocol gets harder. ULAK developed in ASELSAN
Embedded and Real Time Software Design Department by a team that develops
software for sensor and weapon systems is a middleware that works on
network. ULAK- SPY is an integration test and automatic simulator generation
tool which aims to overcome the difficulties mentioned above developed for
ULAK middleware. ULAK- SPY enables testing of protocols by replacing
server or client that communicates with each other via ULAK middleware.
Apart from the middleware message test capabilities ULAK-SPY provides tools
for creating and running scenarios and logging communication between
software. ULAK-SPY generates the capabilities mentioned above automatically
with the creation of middleware protocol which leads to a flexible infrastructure
and saves great deal of time during the development of embedded software.
1</p>
    </sec>
    <sec id="sec-2">
      <title>Giriş</title>
      <p>
        Protokol farklı bilgisayarlar üzerinde koşan yazılımlar arası haberleşmeyi sağlamak
amacıyla verileri düzenlemeye yarayan standart olarak kabul edilmiş kurallar dizisidir
[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. İki yazılım arasında iletişim için kullanılan dili ve haberleşme kurallarını belirtir
ve iki yazılım arasında haberleşme sırasında kullanılacak mesaj tanımları protokol
kurallarına uyularak tariflenir. Yazılımlar arası haberleşme için kullanılacak mesajlar
yazılımcı tarafından manüel olarak kodlanabileceği gibi bu iş için oluşturulmuş hazır
bir ara katman yazılımı da kullanılabilir. ULAK, özellikle az sayıda yazılımdan
oluşan gerçek zamanlı gömülü sistemlerdeki haberleşmeyi sağlamak için
oluşturulmuş bir ara katmandır [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Haberleşmeyi, gecikmeyi minimuma indirerek
kısıtlı kaynak kullanımı ile gerçekleştirmek, çoklu görev yürütümünün olduğu
yazılımlarda görev bölünmesine karşı önlem almak ULAK’ın öncelikleri ve
geliştirmesini tetikleyen nedenlerdendir. ULAK Sensör ve Silah sistemleri için
yazılım-yazılım ve yazılım-donanım arası haberleşme ihtiyaçlarını çözebilmektedir.
ULAK ara katmanı bu makale kapsamında tartışılmayacaktır, Karasoy ve Çınar
“Dağıtık Sistemler İçin Haberleşme Otomasyon Ara Katmanı: ULAK” isimli
makalelerinde ULAK ara katmanı hakkında detaylı bilgiyi vermektedir. ULAK-SPY;
ULAK ara katmanı ile haberleşen yazılım ya da donanımların entegrasyon test
altyapılarının otomatik olarak oluşturulabilmesi için geliştirilmiş bir yazılımdır ve bu
makalenin ana odağını ULAK ara katmanı değil ULAK-SPY aracı oluşturmaktadır.
ULAK ara katmanı ve ULAK-SPY aracı bugüne kadar yaklaşık 28 adet sensör, silah
ve görüntü işleme sistemi için geliştirilmiş gömülü yazılımların geliştirilmesinde
kullanılmıştır. Bir sonraki bölümde ULAK-SPY aracına ilişkin genel bilgiler
verilecektir.
      </p>
    </sec>
    <sec id="sec-3">
      <title>ULAK-SPY Genel Bakış</title>
      <p>
        Yazılım testlerinin yazılım kalitesini artırıcı yöndeki etkileri görüldükçe çok
farklı test seviyesinde yazılım testleri gündeme gelmiştir. Test seviyesi test
edilmekte olan yazılım bileşenlerinin büyüklüğünü ve testlerin uygulanış sırasını
ifade etmektedir [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Yukarıdaki tanıma göre test seviyeleri 5 farklı gruba ayrılabilir:
1.
2.
3.
4.
5.
      </p>
      <p>Birim Testi
Entegrasyon Testi
Yazılım Yeterlilik Testi
Sistem Entegrasyon Testi</p>
      <p>Kullanıcı Kabul Testi</p>
      <p>
        Yukarıda belirtilen test seviyelerinden entegrasyon testi, büyük sistemlerde
birbirinden bağımsız geliştirilen bileşenlerin bütünleşik bir şekilde çalışabilir hale
getirilmesinin ilk adımı olduğu için ciddi hataların tespit edilebileceği bir adımdır.
IEEE Yazılım mühendisliği sözlüğüne göre entegrasyon testi, yazılım bileşenlerinin,
donanım bileşenlerinin veya her ikisinin bir bütün halinde ele alınarak aralarındaki
etkileşimin test edilmesidir [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Birbiriyle haberleşen ve veri alışverişinde bulunan
pek çok yazılım bileşenin ya da donanımın bulunduğu büyük sistemlerde
entegrasyon testleri büyük bir önem arz etmektedir. Yazılım geliştirme süreci
boyunca yazılım hatalarının erken aşamalarda bulunabilmesi geliştirme ekibinin
hataları daha erken giderebilmelerine, test ekiplerinin de hataları çözülen yazılım
bileşenleri üzerinde tekrar test (regression test) yapabilmesine imkân sağlamakta ve
yazılım kalitesini artırmaktadır [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Kullanıcı kabul testlerine yaklaşılan zamanlarda
bulunan hata yoğunluğunun fazla olması müşteri memnuniyetini azaltmakta ve
projenin başarısız olmasına sebep olmaktadır.
      </p>
      <p>
        Yukarıda bahsedilen sebeplerden dolayı entegrasyon testlerine mümkün
olduğunca erken başlayabilmek proje takviminin sonlarına doğru karşılaşılacak hata
yoğunluğunun azaltılabilmesi için önemlidir. Birbirinden bağımsız ekip ya da kişiler
tarafından geliştirilen yazılım bileşenleri ve donanımların her zaman beklenilen
zamanda entegrasyon test takvimine uygun bir şekilde geliştirilmesi mümkün
olamayabilmektedir[
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Farklı bileşenlerin geliştirme takvimlerindeki gecikmeler
entegrasyon testlerinin de gecikmesine sebep olmaktadır. Yazılım bileşenin
etkileşimde bulunduğu diğer yazılım bileşenleri ya da donanımlardan bağımsız bir
test ortamında koşturulabilmesi entegrasyon testleri sırasında görülebilecek kritik
hataların çok daha önceden görülebilmesini sağlayacağı ve diğer yazılım ve
donanım bileşenlerinin geliştirme takvimlerindeki gecikmelerin entegrasyon
testlerinde gecikmeye sebep olması nedeni ile karşılaşılabilecek kritik hataların çok
daha önceden çözülebilmesini sağlayacağı için önem taşımaktadır [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Bunu
sağlayabilmek için yazılım bileşeninin beraber çalıştığı bütün yazılım bileşenleri ya
da donanımların simüle edilmesi ihtiyacı ortaya çıkmaktadır. ULAK-SPY ulak ara
katmanı kullanılarak tanımlanmış yazılım ya da donanım ara yüzleri için otomatik
olarak simülatör oluşturma altyapısı sunarak yazılım entegrasyon testleri öncesi test
ortamının oluşturulabilmesini sağlar. ULAK-SPY yazılımı yeteneklerini yazılım
entegrasyon testleri için faydası açısından 3 başlık altında toplayabiliriz.
2.1
      </p>
      <sec id="sec-3-1">
        <title>ULAK-SPY Otomatik Simülatör Oluşturma Yeteneği</title>
        <p>ULAK iki farklı yazılımın birbiri ile ya da yazılım ve donanımın birbiri ile
haberleşmesini sağlamaktadır. Şekil 1’de görülen konfigürasyon ile haberleşen
yazılım ve donanımlar için hataların projenin erken aşamalarında tespit edilebilmesi
için yazılım geliştirme süreci boyunca entegrasyon ihtiyacı bulunmaktadır.</p>
        <p>Şekil 1. Yazılım-Yazılım ve Yazılım-Donanım ULAK kullanımı</p>
        <p>
          Entegrasyon ihtiyacını karşılamak için geliştirilen yazılım bileşeni ile haberleşen
diğer yazılım ya da donanımların ara yüzlerini kontrollü bir şekilde gerçekleyen
simülatör yazılımlar geliştirilmesi gerekmektedir. Geliştirilen bu simülatör yazılım
bileşenleri ilgili yazılım ya da donanımın bütün yeteneklerini gerçekleştirmez, sadece
test için gerekli olan ara yüzleri gerçekleştirir [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ]. Bu simülatör yazılımlar her ara yüz
için manüel olarak geliştirildikleri için test altyapısının oluşturulması çok fazla işgücü
alabilmektedir. Geliştirilen yazılımın ULAK ara yüzlerinde proje yaşam döngüsü
boyunca değişiklik yapılması ihtiyacı doğmakta ve buda ilgili ara yüze ait simülatör
yazılımda değişiklikler yapılmasına sebep olmaktadır. Test altyapısının güncel
tutulması çok fazla işgücü ve zaman kaybına yol açabilmektedir.
        </p>
        <p>ULAK-SPY yazılımı, ULAK’ın hazırladığı ara yüze ilişkin detayların yer aldığı
DLL dosyasını girdi olarak alır. ULAK ara katmanı C++ ve C# dillerini
desteklemektedir. ULAK-SPY yazılımı C# için üretilen DLL dosyasını kullanmakta
ve tüm ara yüz yeteneklerini çalışma zamanında otomatik
çözümlemektedir.ULAKSPY “.NET Framework Reflection” teknolojisinden faydalanarak ilgili ara yüze
ilişkin sınıfların yer aldığı DLL dosyasını çözümleyerek haberleşme ara yüzü ile ilgili
kullanıcı ara yüzünü dinamik olarak oluşturur.
Şekil 3. ULAK-SPY Otomatik Simülatör Mesaj Listesi Arayüzü</p>
        <p>546
Şekil 2 ve şekil 3’de ULAK-SPY tarafından otomatik olarak oluşturulan simülatör
ara yüzü görülmektedir. Kullanıcı ilgili ULAK ara katman protokolü için sağlayıcı ya
da istemci rolünü seçebilmektedir. Seçilen role göre ULAK ara katmanı ile haberleşen
iki yazılım tarafının simülatörü de otomatik olarak oluşturulabilmektedir.</p>
        <p>ULAK-SPY rolüne göre istemci olunan ara katman mesajları çalışma zamanında
çözümlenerek bir liste halinde kullanıcıya sunulmaktadır. Kullanıcı bu listeden
istediği bir mesajı seçtiğinde o mesajla ilgili doldurulması gereken parametreler
dinamik olarak çözümlenerek kullanıcı ara yüzüne yansıtılmakta ve kullanıcı ilgili
parametreler için değer girebilmektedir. Parametreleri için değer girilen mesaj karşı
taraftaki yazılıma gönderilmekte ve ilgili mesaj kayıt listesine eklenmektedir. Yine
aynı şekilde karşı taraftaki yazılım tarafından gönderilen ULAK ara katmanı mesajları
çalışma zamanında çözümlenmekte ve mesaj listesine eklenmektedir. Gönderilen
mesajlarda olduğu gibi alınan mesajlar içinde otomatik olarak kullanıcı ara yüzü
oluşturulmakta ve kullanıcıya alınan mesaj içeriği sunulabilmektedir. ULAK-SPY
mesaj listesindeki gönderilen ve alınan mesajlar analiz ve hata ayıklama amaçlı olarak
dosyaya kaydedilebilmekte ve daha sonra dosyadan tekrar yüklenebilmektedir. Mesaj
içeriği çalışma zamanında otomatik olarak çözümlenebildiği için proje sürecinde
ortaya çıkan ULAK ara katman mesajları güncelleme ihtiyaçlarına çok hızlı bir
şekilde cevap verilebilmektedir. Simülatörler otomatik olarak oluşturuldukları için
entegrasyon test altyapısının idamesi için işçilik ve zaman boyutunda çok büyük bir
kazanç sağlanabilmektedir.</p>
        <p>ULAK-SPY rollerine göre Şekil 4 ve Şekil 5’te görülen test konfigürasyonları
oluşturulabilmektedir. Şekil 4 teki konfigürasyonda geliştirilen yazılım olan Yazılım1
bileşenin arayüzü olduğu yazılım ve donanım bileşenleri için otomatik olarak
simülatör oluşturulmuş ve entegrasyon testleri için otomatik olarak bir test altyapısı
oluşturulmuştur. Şekil 5’te ise geliştirilen bir donanımın entegrasyon testinin
yapılabilmesi için karşı taraftaki yazılımın simülatörü otomatik olarak oluşturulmuş
ve ilgili donanımın entegrasyon testleri için bir test altyapısı oluşturulmuştur.
Şekil 4. “Yazılım-Yazılım ULAK-SPY simülatörü” ve “Yazılım-Donanım
ULAKSPY simülatörü” kullanımı konfigürasyonu
Şekil 5. “Yazılım ULAK-SPY Simülatörü-Donanım” kullanımı konfigürasyonu
2.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>ULAK-SPY Senaryo Yeteneği</title>
        <p>ULAK-SPY zaman veya mesajlar ile tetiklenen senaryolar tanımlanmasına ve
senaryo tetiklenme koşulları sağlandığında içeriği belirlenebilen mesajların karşı
taraftaki yazılıma otomatik olarak gönderilmesine imkân sağlamaktadır. Oluşturulan
senaryolar kaydedilip daha sonra yüklenerek tekrar oynatılabilmektedir. Senaryo
oluşturma yeteneğinin 2 ana kullanım alanı bulunmaktadır.</p>
        <p>Periyodik Sorgu Yapabilme ve Cevap Verme İhtiyacı: Birbiri ile haberleşen iki
yazılım ya da donanım arası haberleşme protokolünde tanımlanmış periyodik olarak
gönderilmesi gereken mesajlar bulunabilmektedir. Belirli bir frekansta ya da karşı
taraftan alınan bir mesaja cevap olarak sürekli olarak gönderilmesi gereken mesajların
kullanıcı tarafından gönderilmesi çok zordur. Kullanıcı ULAK-SPY senaryo
yeteneğini kullanarak periyodik mesajlar için gerekli senaryoları tanımlayıp
koşturarak entegrasyon testi yaptığı yazılımı istediği duruma getirebilmekte ve diğer
test senaryolarını koşturabilmektedir.</p>
        <p>Entegrasyon Test Senaryolarının Gerçeklenmesi İhtiyacı: ULAK ara katmanını
kullanarak haberleşen yazılım ya da donanımlar için entegrasyon testleri kapsamında
tanımlanmış test tanımları senaryo yeteneği ile oluşturulabilmektedir. Oluşturulan bu
test senaryoları koşturularak sonuçları kullanıcı tarafından analiz edilerek testlerin
başarılı ya da başarısız olduğuna karar verilebilmektedir. Oluşturulan senaryolar
tekrar koşturulabilir olduğu için yeni sürüm testlerinde (regression test) tekrar
kullanılabilmektedir.
2.3</p>
      </sec>
      <sec id="sec-3-3">
        <title>ULAK-SPY Haberleşme Kayıtlama Yeteneği</title>
        <p>Yazılım geliştirme sürecinde geliştirilen yazılım ya da donanımlar entegrasyon
testi olgunluğuna geldiğinde gerçek yazılım ya da donanımlar ile entegrasyon testi
yapılabilmektedir. Entegrasyon testi sırasında hatalar ortaya çıkabilmekte ve hatanın
hangi yazılım ya da donanım kaynaklı olduğunun anlaşılabilmesi için bileşenler arası
haberleşmenin izlenilebilmesi ihtiyacı doğmaktadır. ULAK-SPY Şekil 6’da verilen
konfigürasyonda çalışarak ULAK ara katmanı ile haberleşen yazılım ya da
donanımların arasına girerek iki taraflı gönderilen mesajları çalışma zamanında
çözümleyip kayıt altına alarak liste halinde kaydedebilmektedir. Bu yetenek sayesinde
entegrasyon testi sırasında test senaryosundaki hata görülebilmekte ve hatanın hangi
yazılım ya da donanımda olduğu tespit edilebilmektedir.
3</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Sonuçlar</title>
      <p>ULAK-SPY yazılımı Sensör ve Silah Sistemleri gömülü yazılımları geliştirme
sürecinde ortaya çıkan entegrasyon test altyapısını otomatik olarak oluşturulmasını
sağlayan bir otomatik simülatör oluşturma yazılımıdır. Simülatörlerin otomatik olarak
ULAK-SPY tarafından oluşturulması sayesinde simülatör geliştirme işçiliklerin den
büyük oranda tasarruf edilmiştir. Otomatik simülatör oluşturma yeteneği yazılım
geliştirme, donanım geliştirme ve sistem test ekiplerinin ortak bir ihtiyacını çözerek
manüel olarak simülatör yazılımlarının hazırlandığı çözüme göre büyük bir işçilik ve
zaman tasarrufu sağladığı görülmüştür. Test altyapısının ULAK-SPY tarafından
otomatik olarak oluşmasının sağladığı esneklik yazılım geliştirme sürecinin her
aşamasında yazılım ve donanım ara yüzlerinin ihtiyaç duyulması halinde hızlı bir
şekilde değiştirilebilmesine imkân vermiştir. Entegrasyon faaliyetlerine diğer yazılım
ya da donanımların geliştirilmesinden bağımsız bir şekilde başlanabilmesini sağladığı
için ULAK-SPY kritik hataların yazılım geliştirme sürecinin erken aşamalarında
tespit edilmesini sağlamıştır.</p>
    </sec>
    <sec id="sec-5">
      <title>Kaynaklar</title>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Karasoy</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Çınar</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          , “
          <article-title>Dağıtık Sistemler İçin Haberleşme Otomasyon Ara Katmanı: ULAK”</article-title>
          ,
          <source>Proceedings of the 8th Turkish Natioanal Software Engineering Symposium UYMS2014</source>
          , pp.
          <fpage>372</fpage>
          -
          <lpage>382</lpage>
          , Güzelyurt, KKTC 2014
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2. “
          <article-title>IEEE Standard Glossary of Software Engineeering Terminology”</article-title>
          ,
          <source>IEEE Standards Board</source>
          ,
          <year>1990</year>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Bennett</surname>
            ,
            <given-names>T.L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wennberg</surname>
            ,
            <given-names>P.W.</given-names>
          </string-name>
          , “Eliminating Embedded Software Defects Prior to Integration Test”,
          <source>The Journal of Defense Software Engineering</source>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Hetzel</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          , “
          <article-title>The Complete Guide to Software Testing”</article-title>
          ,
          <source>QED Information Sciences</source>
          ,
          <year>1984</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Sivera</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pasquato</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , “
          <article-title>Software Integration and Test Techniques in a Large Distributed Project:Evolution, Process</article-title>
          , Improvement, Results”,
          <source>Proceedings of ICALEPCS07</source>
          , pp.
          <fpage>508</fpage>
          -
          <lpage>510</lpage>
          , Knoxville, USA,
          <year>2007</year>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Zhenyi</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Offutt</surname>
            ,
            <given-names>A.J.</given-names>
          </string-name>
          “
          <article-title>Coupling-based Criteria for Integration Testing”</article-title>
          ,
          <source>The Journal of Software Testing,Verification, and Reliability</source>
          , pp.
          <fpage>133</fpage>
          -
          <lpage>154</lpage>
          ,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Copeland</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <article-title>“A Practitioner's Guide to Software Test Design”</article-title>
          , Artech House Publishers,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>