<!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>Test ve Veri Otomasyon Yönetimi</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Canberk ERKMEN</string-name>
          <email>1canberk.erkmen@logo.com.tr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ahmet İZGİ</string-name>
          <email>2ahmet.izgi@logo.com.tr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ersin GÜLAÇTI</string-name>
          <email>3ersin.gulacti@logo.com.tr</email>
          <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: Test Otomasyonu</institution>
          ,
          <addr-line>Test Verisi, Web Otomasyonu, Otomasyon Senaryosu</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Logo Yazılım</institution>
          ,
          <addr-line>Kocaeli</addr-line>
          ,
          <country country="TR">Türkiye</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Özet. Kaliteli yazılım üretmenin en önemli yapı taşı, testi doğru ve etkili yapabilmektir. Yazılım geliştirme süreçlerinin temel adımlarından biri olan testin önemi gün geçtikçe artmaktadır. M anuel test ile maliyet, zaman, hata kaçırma riski artmaktadır. Bu riskleri minimuma indirgemek için yapılan test otomasyonu; testlerin otomatik şekilde yapılmasını sağlayarak kullanıcının manuel test etme zorunluluğu ortadan kaldırır. Fakat test otomasyonunun da kendine ait zorlukları bulunmaktadır. Zorluklardan biri her bir otomasyon senaryosu için farklı kod yazılmasıdır. Bu da senaryoyu yazan kullanıcının kodlama yetkinliğine sahip olmasını gerektirir. Ayrıca ürün değişikliklerinde, yapılan otomasyon senaryolarının kodlarının değiştirilmesi, hatta baştan yazılması bile gerekebilmektedir. Bu da senaryoların bakım maliyetini arttırmaktadır. Bir diğer zorluğu da test verisinin yönetilmesidir. Kodlarla iç içe girmiş olan veriler otomasyon senaryolarının bakımını da oldukça zorlaştırır. Yapılan otomasyon senaryolarının çalıştırılması için ortam kurulması, bunların yönetilmesi ve sonuçlarının takip edilebilmesi de test otomasyonunun zorlukları arasında yer alır. TEDAM (Test and Data Automation M anager), web uygulamaları için uçtan uca test otomasyonunu hazırlayıp, bu otomasyon senaryolarının yönetilmesinde kullanılır. Çalışmamız, test sorumlusunun kodlama bilgisi gerekmeksizin ara yüz ile otomasyon senaryolarını hazırlamasını ve çalıştırabilmesini sağlar. Bununla birlikte her otomasyon senaryosu için farklı bir kod yazmak gerekmediğinden, yazılan kodlar bir standarda bağlanarak üretilmiş olur. Ayrıca otomasyon senaryosu yapılan ekran ve bileşenleri kayıt altına alarak, otomasyon senaryolarının bakım maliyetini azaltır ve verinin akıllı yönetilmesi sağlanır. Son olarak, hazırlanan otomasyon senaryolarını toplu halde, dağıtık olarak, farklı ortamlarda koşturulmasını sağlayan 'İş Yöneticisi' teknolojisi de çalışmamız içerisinde yer almaktadır.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Test And Data Automation Manage ment
1</p>
    </sec>
    <sec id="sec-2">
      <title>Giriş</title>
      <p>
        Yazılım yaşam döngüsünde 1960 yıllarından test otomasyonlarının önem kazanmış
olduğu bugüne doğru gelinirken; gerçekleşen efor bölüşümlerinde, yazılım testine
ayrılan oranın arttığı görülmektedir [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Testlerin manuel olarak yapılması, harcanan
süreyi arttırdığı gibi, kapsam olarak da belli bir alanda kısıtlı kalınmasına neden
olmaktadır. 2018 yılında sektör çalışanları arasında yapılan uluslararası bir araştırma
raporuna göre kuruluşların büyük bir kısmı, yapılan testleri otomatikleştirmek adına
test otomasyon faaliyetleri yürütmektedir [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Fakat test otomasyonu yapılırke n
karşılaşılan sorunlar da yapılan test otomasyonun etkinliğini azaltabilmekte d ir.
Örneğin, test yapan uzmanın kodlama gibi teknik alt yapı gerektiren konularda yazılım
geliştirici kadar bilgi sahibi olması gerekmektedir. Yazılan kodla rın bakımın ın
yapılması, otomasyonda kullanılan test verisinin kodla iç içe geçmesi ve yazıla n
otomasyon kodlarının çalıştırılacağı ortamların yönetilmesi, sonuçların doğru takip
edilebilmesi gibi sorunlar da bulunmaktadır. Logo Yazılım olarak test otomasy onunda
karşılaşılan bu tip sorunları aşabilmek adına TEDAM ürünü geliştirilmiştir.
      </p>
      <p>TEDAM; kullanıcı ara yüzü (TEDAMFace), kendisine gelen komutları çalıştıran
istemci (TEDAMAgent), sistem yöneticisi (TEDAMEngine), Chrome browser için
geliştirilmiş data toplama yardımcısı (TEDAM Chrome Extension), bileşenlerin
temelinde bulunan merkez uygulama (TEDAMCore) olmak üzere 5 ana parçadan
oluşur. Yapmış olduğumuz bu çalışmada ilk olarak test otomasyonuna neden ihtiyaç
duyduğumuz ve test otomasyonu esnasında karşılaşılan zorluklardan bahsedilecektir.
Sonrasında da TEDAM ürününün ortaya koyduğu avantajlar ve alt bileşenleri ile
çalışma şekli anlatılacaktır.
2</p>
    </sec>
    <sec id="sec-3">
      <title>Neden Test Otomasyonu?</title>
      <p>
        Projelerde yazılım testi için ayrılan sürenin, test uzmanları tarafından sadece manuel
olarak yapılan testlere ayrılması genel anlamda efor kaybı olarak adlandırılabilir. Ço k
sayıda test senaryosunun olduğu bir ortamda regresyon testlerinin sürekli manuel olarak
koşulması iş yükünü çok fazla arttıracaktır [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Test otomasyonu, yazılım test sü relerine
doğru şekilde uygulandığında şu faydaları sağlayacaktır:
      </p>
      <p>
        Regresyon testlerinin manuel testlere göre daha sık koşulabilmesini sağlar [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
Çevik yazılım geliştirme süreçlerine uyumludur [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
      </p>
      <p>
        Test senaryolarının kayıt altında olmasını destekler [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
      </p>
      <p>Kullanıcı gözünden kaçabilecek ufak detayları yakalayabilir [5].</p>
      <p>Testlerin derinlik seviyesi ve kapsama alanını arttırır [5].</p>
      <p>Uygulamanın çalışmasına yönelik güveni pekiştirir [6]
•
•
•
•
•
•
•
•
•
•
Test otomasyonu hazırlanırken test uzmanı olan kişilerin de kodlama yapması
gerekmektedir. Kodlama yapmadan senaryo hazırlamaya imkân sağlayan kaydet -oynat
prensibi ile çalışan (Selenium vb.) test otomasyon araçları da bulunmaktadır. Fakat bu
araçlar da temelde kullanıcının yaptığı eylemleri kod olarak kayıt altına alıp
oynatmaktan ileriye gidememektedir. Bu nedenle bakım yapılması gerektiğinde test
uzmanının otomasyon senaryosuna ait kodları güncellemesi gerekecektir. Test yapan
3</p>
    </sec>
    <sec id="sec-4">
      <title>Test Otomasyonunda Karşılaşılan Sorun ve Zorluklar</title>
      <p>Yazılım test otomasyonunun geliştirilmesi uçtan uca düşünüldüğünde kendi içinde bir
yaşam döngüsüne sahiptir. Bu yaşam döngüsündeki adımların doğru şekilde
işlemesinde test uzmanının ve kullanılan aracın yetkinlikleri ön plana çıkmaktadır. Bu
yaşam döngüsündeki temel aksiyonlar şunlardır;</p>
      <p>Test senaryosunun yazılması,
Kullanılan aracın kodlama diline uygun olarak kodlanması,
Test ortam ve verilerinin hazırlanması,</p>
      <p>Otomasyon senaryolarının koşularak bakımının yapılması.
kullanıcılara bakıldığında sadece %33 seviyesinde test otomasyon uzmanı olduğunu
görüyoruz [7]. Test otomasyonunu sadece kodlama bilen test uzman larından ziyade,
hiç kodlama bilmeyen test uzmanı, analist veya konu uzmanlarının da yapma
gerekliliği, geleneksel otomasyon araçları ile mümkün olmamaktadır. En çok kullanılan
test otomasyon aracına bakıldığında da doğrudan kod bilme gereksinimi olan Seleniu m
aracının olduğu görülmektedir [7].</p>
      <p>Senaryolarda verilerinin hazırlanan test otomasyon kodlarının için gömülü olması,
verilerin belli bir noktadan sonra kontrol altında tutulmasını oldukça zorlaştıracakt ır.
Bu tarz problemleri çözmek adına ortaya konulmuş olan metotlar bulunmaktadır. Fakat
ortaya konulan metotlar, spesifik olarak sadece bu problemi çözmeye odaklandığından
resmin bütününde verimli bir iyileştirme ortamı oluşturmamaktadırlar [8].</p>
      <p>Testlerin koşulması esnasında, test senaryolarının dağıtık olarak koşturulmasını
sağlayan sunucu ve koşu işlemini gerçekleştirecek istemcilerin hazırlanması ve
yönetilmesi oldukça zordur. Bu aksiyon genel olarak test otomasyonu kapsamında
düşünülmediğinden, birçok test otomasyon aracında bu dağıtım ve takip özellikleri
bulunmamaktadır. Testlerin istemcilerde koşulması ve sonuçlarının toplanarak kayıt
altına alınması, hatta hangi ortamda, test edilen ürünün hangi versiyon ve data ile test
edildiğinin kayıt altında tutulması, takip edilmesi oldukça zordur.
4</p>
    </sec>
    <sec id="sec-5">
      <title>Logo Yazılımda Test Otomasyonu</title>
      <p>TEDAM ile ortaya konulan otomasyon çözümü öncesinde, tüm vaktini otomasyon
çalışmalarına harcayan test uzmanları bulunmasına rağmen, yapılan otomasyonlar ile
kod kapsamında, belirlenen ilk hedef olan %50 başarılmıştır. Ayrıca yazılan otomasyon
senaryolarının koşulması, bakımının yapılması, dağıtık olarak çalıştırılabilmes i
mümkün olmuyordu. Test senaryolarının yeterli düzeyde yazılamaması, nelerin tam
olarak test edildiğini anlamayı zorlaştırıyordu.
5</p>
    </sec>
    <sec id="sec-6">
      <title>TEDAM'ın Geliştirilmesi</title>
      <p>TEDAM; Test and Data Automation Manager kelimelerin in kısaltması ile oluşmuş, test
ve veri otomasyon yönetimi anlamına gelen bir kavramdır. Uçtan uca test otomasyonu
geliştirilmesi için ortaya konulmuş olan bir yazılım ürünüdür.
5.1</p>
      <sec id="sec-6-1">
        <title>TEDAM ile İlgili Gereksinimlerin Belirlenmesi</title>
        <p>Test otomasyonunu verimli ve etkin bir seviyeye çıkarmak için; mevcut çalışmalar
incelenmiş, sorun yaşanan ve iyileştirmeye açık olan alttaki konular ortaya
çıkarılmıştır:
•
•</p>
        <p>Verinin hali hazırdaki otomasyon yöntemlerinde kodun içinde kalmas ı
nedeniyle, veriyi kod ile ayıracak bir yapının oluşturulması,
Test senaryolarının yazıldığı ortam, otomasyon kodlarının hazırlandığı ortam
ve otomasyonların çalıştırıldığı ortamların tamamen farklı olmasının önüne
geçilerek, tek bir uygulama ile tüm otomasyon eylemlerinin birleştirilmesi,</p>
        <p>Test uzmanlarının kodlama yapmak zorunda olması ve otomasyon için yazıla n
kodların da hataya açık olması nedeniyle, kodun test uzmanı tarafından
yazılması yerine sistem tarafından otomatik olarak hazırlanması.
5.2</p>
      </sec>
      <sec id="sec-6-2">
        <title>TEDAM Çalışma Süreçleri</title>
        <p>TEDAM’ın işletilmesinde iki tür süreç vardır.</p>
        <p>Konfigürasyon Süreci. Test edilecek her yeni proje için bir kere yapılan süreçtir.
TEDAMAgent’ların çalışacağı istemcilerin hazırlanması ve tanımlanması, kullanılac a k
olan komutlar için parametre ve değerlerin tanımlanması, komutların tanımlanması ve
TEDAM Chrome Extension üzerinde uygulama ekranlarına bağlı tanımlamala rın
yapılması adımlarından oluşmaktadır.</p>
        <p>Senaryo Giriş Süreci. TEDAM üzerinden senaryo girişinde yapılması gereken
adımları kapsayan süreçtir (Şekil 1).</p>
        <p>Şekil 1. TEDAM senaryo giriş süreci
Şekil 1’de de gösterilen senaryo giriş süreci; TEDAM kullanıcısının test etmek istediği
kısımla ilgili her türlü etkileşimi (yazma, okuma, tıklama) atomik parçalar halinde
TEDAMFace aracılığıyla adım adım yazmasıyla başlar (1). Sonrasında TEDA M
Chrome Extension kullanılarak her bir ekranın etkileşim yapılan bileşenleri ve giriş
yapılan verilerini barındıran XML dosyaları (Snapshot) toplanır (2). Girilmiş olan test
adımları ile alınmış olan snapshot dosyaları birebir o larak TEDAMFace üzerinde
eşleştirilir (3). TEDAM kullanıcısının girmiş olduğu her bir adım için adım tipini
seçmesi gerekmektedir. Bu adım tipleri o anda test adımında etkileşimde olunan
uygulama ekranı için; veri girişinde FormFill, bileşen veya dataların kontrol
edilmesinde Verify, bileşenlerin tıklanmasında ButtonClick olara k
isimlendirilmektedir (4). Adım tiplerine bağlı olarak açılan TEDAM formlarınd a ,
kullanıcı etkileşimde olacağı alanları seçer (5). Kullanıcı çalıştırmak istediği test
senaryolarını, anlamlı olarak gruplayarak, test senaryosunun çalışabilir kısmı diye
adlandırılan işlere dönüştürür (6). Oluşturulan işler için istemciler, komutlar ve
parametreler seçilir (7). Çalışmaya hazır hale getirilmiş olan işler anlık olarak ya da
istenen zaman dilimlerinde çalıştırılır (8).
5.3</p>
      </sec>
      <sec id="sec-6-3">
        <title>TEDAM Sistem Mimarisi ve Bileşenleri</title>
        <p>TEDAM, şekil 2’de de gösterildiği üzere belirlenen ihtiyaçlara bağlı olarak farklı görev
ile sorumlu 5 bileşenden oluşmaktadır.</p>
        <p>Şekil 2. TEDAM sistem bileşenleri
TEDAMCore. Bu bileşen sistemin en temel parçası olarak konumlandırılmıştır. Tüm
uygulamanın veri tabanı ile olan etkileşimi bu bileşen aracılığıyla sağlanır. Hazırlan mış
olan test otomasyon senaryolarının kodlarının üretilmesini sağlar. TEDAMAgent ile
TEDAMEngine arasındaki iletişime aracılık etmektedir. TEDAM Chrome Extensio n
dışındaki tüm bileşenler tarafından ortak olarak kullanılır.</p>
        <p>TEDAMEngine. Bu bileşen temel olarak, işlere bağlı senaryoların istemcile re
dağıtılmasını yönetir. Kullanıcının başlattığı işler için devreye girerek, yeni başlayan
ve çalışmaya devam eden işlerin, istemciler arasında belirli önceliklere bağlı olara k
çalıştırılmasını sağlar. İşlere bağlı her bir senaryo, çalışma anında sırası geldiğinde önce
TEDAMCore kullanılarak komutlara dönüştürülür. Dönüştürülen bu komutla r
istemcilere yollanır. TEDAMAgent’larla olan bu iletişim tek taraflı olmayıp ,
TEDAMAgent’lardan gelen senaryoların çalıştırılma durumları TEDAMEngin e
tarafından kayıt altına alınarak, kullanıcı bilgilendirme ve raporlama işleri yapılır.
TEDAMEngine’in bir diğer görevi de tanımlanmış REST arayüzü sayesinde Jenkins,
Hudson, gibi sürekli entegrasyon (Continuous Integration) araçlarıyla entegre olabilir,
böylece test edilen ürüne bağlı yapılandırma sürecine (build) dahil olabilir.
TEDAMAgent. Bu bileşen tamamen kendisine verilen görevleri yapmakla
yükümlüdür. TEDAMAgent; TEDAMEngine ile sürekli iletişim halinde olup,
kendisine iletilen komutları TEDAMCore bileşenini de kullanarak çalıştırır. Çalış ma
esnasında oluşan olumlu olumsuz durumları TEDAMEngine’e bildirir.
TEDAMFace . Bu bileşen kullanıcının yoğun olarak kullandığı arayüz uygulamasıdır.
Kullanıcılar; test senaryolarını bu arayüzden sisteme girerler, snapshot dosyalarını
yükleyip, adımlarla ilişkilendirirler, Test adım tiplerini seçerek, parametreleri
hazırlayabilirler. Hazırlanmış olan senaryoların iş haline getirilmesi de yine
TEDAMFace arayüzü üzerinden yapılır. Hazırlanan işlerin konfigüre edilmes i,
çalıştırılması ve takibinin de yapıldığı bileşendir. Ayrıca kullanıcı yönetimi, proje
yönetimi, TEDAMAgent’a gönderilen komutların yönetimi, komutlar için kullanılacak
parametrelerin yönetimi, istemcilerin ve ortamların yönetimi gibi işler de TEDAMFace
üzerinden yapılmaktadır.</p>
        <p>TEDAM Chrome Extension. Kullanıcıların snapshot alabilmeleri için tasarlanmış
bileşendir. Kullanıcı test edeceği uygulamanın, kullanıcıya yansıyan kısmınd aki
kodlamaya bağlı olarak kurallar tanımlar. Kurallar oluşturulduktan sonra, kullanıcı
istediği herhangi bir ekran açıkken snapshot alabilir.
6</p>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>Sonuç</title>
      <p>TEDAM’ın geliştirilip kullanılması ile beraber, otomasyon uygulanan yazılımdaki kod
kapsamı kısa sürede, belirlenen ilk hedef olan %50 başarılmıştır. Test senaryo
adımlarının atomik ve detaylı olarak yazılması, yapılan testin ne olduğunu anlaşılır
kılmıştır. Test uzmanının otomasyon için herhangi bir kod yazma gereksinimin in
olmaması daha az yetkin test uzmanlarının çalışabilir olmasını mümkün kılmıştır. Bu
nedenle az kaynak ve zaman ile daha çok iş yapılması sağlanmıştır. Testlerin dağıtık
olarak çalışmasına imkân sağlayan yapısı ile yüksek adetli test senaryolarının toplu
olarak kısa sürede koşulabilmesi sağlanmıştır. Daha önceden tek bir senaryonun
otomatikleştirilmesi günlerce sürebiliyorken, TEDAM ile birlikte bir günde yazılan
senaryo sayısı yaklaşık 4 adet olabilmektedir. Bu kazanılan hız sayesinde
otomatikleştirilen senaryo adedi 5000 adetlere gelmiştir.</p>
    </sec>
    <sec id="sec-8">
      <title>Kaynaklar</title>
      <p>automate
5. Why Automated Testing?, https://smartbear.com/learn/automated-testing/
6. Deliver faster and better software using test automation,
https://www.atlassian.com/blog/add-ons/deliver-faster-and-better-software-using-testautomation
7. Top Challenges in Test Automation http://toolsqa.com/blogs/test-automation-challenges/
8. Data Driven Framework
http://toolsqa.com/selenium-webdriver/data-driven-testing-excelpoi/</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Schmidt F. Richard</surname>
          </string-name>
          <article-title>: "Software Engineering: Architecture-driven</article-title>
          <source>Software Development"</source>
          ,
          <fpage>72</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <source>TURKEY SOFTWARE QUALITY REPORT 2018-19</source>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>Why</given-names>
            <surname>You Shouldn't Skip</surname>
          </string-name>
          Regression Testing, https://testlio.com/blog/shouldnt-skipregression-testing/
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Test</surname>
          </string-name>
          <article-title>Automation for Web Applications</article-title>
          , https://www.seleniumhq.org/docs/01_introducing_selenium.jsp#to
          <article-title>-automate-or-not-to-</article-title>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>