<!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>Xamarin Test Bulutu üzerinde Mobil Uygulama Testi</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Akhan Akbulut, Çağatay Çatal, Ece Demiray, Okan Özen İstanbul Kültür Üniversitesi</institution>
          ,
          <addr-line>Bilgisayar Mühendisliği Bölümü</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Anahtar Kelimeler: Mobil Uygulama Testi, Xamarin Test Cloud</institution>
          ,
          <addr-line>Arayüz Testi, Test Otomasyonu, Mobil Uygulama, Bulut Bilişim</addr-line>
        </aff>
      </contrib-group>
      <fpage>251</fpage>
      <lpage>259</lpage>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Özet. Mobil cihaz kullanımındaki artışa paralel olarak yaygınlaşmaya başlayan
mobil uygulamalar, kullanım alanı zenginliği ve platform çeşitliliği yönünden
son kullanıcı ihtiyaçlarına önemli çözümler sağlamaktadır. iOS veya Android
platform kullanımı, cihazların fiziksel özelliklerine bağımlılığı ortadan
kaldırmakta ve uygulamaları; işlemci, RAM, ekran boyutu ve işletim sistemi sürümü
farklılığı gibi özelliklere bakılmaksızın ürün çalışabilirliğini tüm uyumlu cihazlar
üzerinde etkin kılmaktadır. Uygulamaların desteklediği ortamların artması,
çeşitlilik yelpazesini olumlu yönde genişletmekte iken; çok farklı sayıda
konfigurasyon için de uygulama testlerinin yapılması zorunluluğunu beraberinde
getirmektedir. Mobil uygulama testi alanının, temel araştırma konularında, ilk sırada
mobil cihaz çeşitliliği ve mobil platformların değişkenliği sorunu yer almaktadır. Bu
çalışmada, Xamarin test bulut (Test Cloud) ortamı kullanılarak, sınırsız sayıda
konfigurasyon için arayüz testlerinin otomasyonu sağlanmıştır. Çalışma
kapsamında kullanılacak olan Xamarin test bulutu, Calabash çerçevesini kullanarak
Android ve iOS mobil platformları için makine kodlu (native) veya melez
uygulamaları test edebilmektedir. C# ve Ruby dili ile geliştiricilerin, birim test
yazmaları gereken bu ortam için Andoid apk dosyalarının bulut üzerinde, arayüz
kontrolleri için hazırladığımız şablon test durumları referans alınarak mobil
uygulamaları otomatik olarak test eden bir uygulama geliştirilmiştir. 1000 adet
farklı konfigurasyona sahip ortam için aynı test gerçeklenebilirken, sanallaştırma
teknolojisi; erişim kolaylığı, test kapsamının genişlemesi, test maliyetlerini
azaltması, zamandan tasarruf edilmesi ve çevik yazılım geliştirmeyi desteklemesi
açısından önemli katkılar sunmaktadır. Üreticilerin Android işletim sistemlerini
özelleştirdikleri düşünüldüğünde, test otomasyonunun sağlandığı bu
uygulamayla birlikte, test uzmanları kaynak kod yazımını tekrarlı işler için
gerçekleştirmemekte, hazırladığımız şablon test durumlarından yararlanmaktadır.</p>
      <p>GİRİŞ
Günümüzde hemen hemen her kullanıcının beklenildiğinden farklı şekilde çalışan ve
istenmeyen sonuçlar üreten bir uygulama ile kullanım tecrübesi bulunmaktadır. Bu tarz
uygulamaların bireyler ve işletmeler üzerinde çok çeşitli olumsuzluklara neden
oldukları bilinmektedir. Bunların başında; vakit, para, itibar azalması, hatta sistemin
kritikliğine bağlı olarak hayat kaybı bile yaşanabilmektedir. Uygulamaların etkinliğinin
yayınlanmalarından önce çeşitli test faaliyetleri ile sınanması ve doğrulanması çok büyük
önem taşımaktadır.</p>
      <p>ANSI/IEEE 1059 uluslararası standardına göre test işlemi; bir yazılım öğesinin
mevcut ve gerekli koşulları arasındaki farklılıklarını (kusur / sorun / hata) tespit etmek ve
yazılım öğesinin özelliklerini değerlendirmek olarak ifade edilmektedir. İşletmelerde
bu alandaki çalışmaları icra etmek üzere, çalışanların bilgi ve tecrübe seviyesine göre,
test uzmanı, yazılım kalite güvence mühendisi veya kalite güvence analisti gibi farklı
unvanlarda çalışan test personelleri görev almaktadır. Test faaliyetleri esnasında test
otomasyonu yapabilen yardımcı yazılımlardan faydalanılması, süre ve iş gücü
yönünden olumlu etkiler bırakmaktadır.</p>
      <p>
        Günümüzde giderek yaygınlaşan mobil cihaz kullanımı, mobil uygulamaların
geliştirmesini arttırmakta ve etkin mobil uygulamaların belirlenebilmesi için geleneksel
yaklaşımlardan farklı test yöntemlerinin kullanılmasını gerektirmektedir. Mobil test
işlemleri için en çok tercih edilen çerçeveler; Appium [1], Calabash [2], Robotium [3],
Espresso [4], UI Automator [
        <xref ref-type="bibr" rid="ref1">5</xref>
        ] ve MobSF [
        <xref ref-type="bibr" rid="ref2">6</xref>
        ] olarak özetlenebilir.
      </p>
      <p>
        Bu çalışma kapsamında Calabash çerçevesini kullanarak arayüz testlerinin
gerçekleştiren Xamarin test bulut (Test Cloud) [
        <xref ref-type="bibr" rid="ref3">7</xref>
        ] ortamı ile arayüz testlerinin otomasyonuna
dair bir örnek verilecektir. İkinci bölümde Mobil test otomasyon faaliyetlerine ilişkin
çalışmalar anlatılmış olup, üçüncü bölümde geliştirilen uygulamanın yöntem detayları
sunulmaktadır. Dördüncü bölümde ise, örnek bir uygulama üzerinde gerçekleştirilen
test sonuçları verilmektedir.
2
      </p>
      <p>İLİŞKİLİ ÇALIŞMALAR</p>
      <p>
        Cambridge Üniversitesi’nin 2013 yılında yaptığı bir çalışmaya göre, küresel
düzeyde yazılım hatalarının bulunma ve yok edilme maliyeti yıllık olarak 312 milyar
dolardır [
        <xref ref-type="bibr" rid="ref4">8</xref>
        ]. Bu yüksek maliyetin azaltılması için test konusunda çalışan araştırmacılar,
test otomasyonu alanına ağırlık vermeye başlamıştır. Test faaliyetlerinin yeterli
olmadığı durumlarda, yazılım geliştirme maliyetlerinin, bakım aşamasından kaynaklı olarak
çok fazla arttığı bilinmektedir. Test uzmanını merkez alan manuel test yöntemleri
yerine, otomatikleştirilmiş test kullanımı zaman ve çaba açısından önemli tasarruflar
sağlamaktadır. Bu nedenlerle; test otomasyonu, karmaşıklaşan yazılım sistemleriyle
birlikte daha fazla önem kazanmış bir alan olarak karşımızda durmaktadır. Manuel
testlerin her durumda tamamen otomatikleştirilmiş hale getirilmesi uygulanabilir bir yöntem
gibi görünse de, bu çoğu durumda ekonomik açıdan akılcı bir yöntem değildir.
      </p>
      <p>
        Yazılım testlerinin ne zaman otomatikleştirilmesi ve nelerin otomatikleştirilmesi
gerektiği konusunda, Garousi ve Mantyla (2016), 78 kaynağı inceleyerek Çoksesli
Literatür Taraması (Multivocal Literature Review-MLR) çalışmasını gerçekleştirmiştir [
        <xref ref-type="bibr" rid="ref5">9</xref>
        ].
26 kaynak akademik kaynaklardan alınırken, 52 kaynak gri literatür dediğimiz
yayınlanmamış ve araştırma çalışması olmayan kaynaklardan (blog, tanıtım yazıları, sunum
videoları, araçlar gibi kaynaklar) alınmıştır. Yazılım testlerinin otomatikleştirilmesinin
zamanını ve neleri içereceğini etkileyen faktörler bu çalışmayla birlikte saptanmıştır.
“Regresyon testleri için ihtiyaç”, “ekonomik faktörler” ve “yazılımın olgunluğu”
faktörlerinin, en fazla etkileyici faktörler olarak değerlendirildiği raporlanmıştır. Çok
sayıda yazılım test otomasyon aracında, otomasyonu sağlamak için (örneğin, Selenium)
betik (script) dillerinde çeşitli kodlar yazmak gereklidir. Test uzmanının yazılım
geliştirme kökenli olmadığı durumda, betik kodu yazma zorunluluğu ortaya farklı güçlükler
çıkarabilmektedir. Bunu aşmak üzere, bu tür yazılımlara, farklı eklentiler yazılarak,
bazı işlemlerin var olan test durumlarını seçerek gerçekleştirilebilmesi
sağlanabilmektedir. Örneğin, Selenium açık kaynaklı yazılıma bazı eklentilerle, betik kodu yazmadan
test otomasyonu yapılabilmektedir. Bu çalışmada ise Xamarin Test Cloud ortamında
bazı test durumları tarafımızdan geliştirilmiş olup bu test durumları, mobil
uygulamaların testlerini kod yazımına gerek olmadan gerçekleştirebilmektedir.
      </p>
      <p>
        Mobil uygulamaların test teknikleri konusunda Zein ve arkadaşları (2016), 79
empirik çalışmayı incelemiş ve bir sınıflandırma şemasına eşlemişlerdir [
        <xref ref-type="bibr" rid="ref6">10</xref>
        ]. Testleri;
kullanılabilirlik testi, test otomasyonu, bağlam-duyarlılığı (context-awareness), güvenlik
ve genel kategori olmak üzere 5 bölümde ele almışlardır. “Test otomasyonu” başlığı
altında kullanılan teknikleri ise model tabanlı, veri güdümlü, taşınabilir işletim sistem
kütüphaneleri, kara kutu, duyarlı-olay temelli, betikli kullanıcı arayüzü, ayrıntılı test
kuvvetlendirme, tersine mühendislik, veri akış analizi, bağlamsal bulanıklandırma,
makine öğrenmesi, yaklaşık yürütme, servis olarak otomatikleştirilmiş mobil test, paralel
GUI testi, arama tabanlı, test kümelerinin sistematik incelenmesi, sensör ve olay-akışı
temelli yaklaşım, sensör simulasyonu şeklinde kategorize etmişlerdir [
        <xref ref-type="bibr" rid="ref7">11</xref>
        ]. Kos ve
arkadaşları (2016), alana özel modelleme dili (domain specific modelling
languageDSML) tanımlayarak bir ölçüm sisteminin test otomasyonunu sağlamıştır [
        <xref ref-type="bibr" rid="ref8">12</xref>
        ]. Test
otomasyonu alanında, DSML kullanmanın faydaları bu çalışmada ortaya konulmuştur.
Tao ve arkadaşları (2015); “bulut temelli servis olarak mobil test” (Mobile TaaS)
konusundaki temel kavramlara odaklanmış, beklenen altyapıyı açıklamışlardır [
        <xref ref-type="bibr" rid="ref9">13</xref>
        ].
Çalışmada farklı vaka çalışmaları ile önerilen yaklaşımın etkinliği ortaya konulmuştur.
Collins (2012), endüstriyel bir deneyim çalışması olarak, çevik geliştirme ortamlarında
test otomasyon pratiklerini açıklamışlardır [
        <xref ref-type="bibr" rid="ref10">14</xref>
        ].
3
      </p>
    </sec>
    <sec id="sec-2">
      <title>YÖNTEM</title>
      <p>Geliştirilen uygulamanın amacı Xamarin test bulutu üzerinde mobil test yapılabilmesi
için uygulamalara yazılması gereken kod parçacıklarının gerekliliğini ortadan
kaldırarak, test uzmanının çalışma yükünü hafifletmektir. Xamarin ortamında testlerin
gerçekleştirilebilmesi için, mobil uygulamaların arayüzlerinde geçen her bir kontrol için Şekil
1’de gösterildiği gibi test durumu kodlanması gerekliliği bulunmaktadır. Test bulutu,
yazılan test durumlarını referans alarak sanal makineler üzerinde testleri
gerçekleştirmekte ve sonuçları web arayüzünden göstermektedir.
Şekil 1 : Test Durum Kod Parçacığı</p>
      <p>Test uzmanın kod yazmadan sınanacak uygulamayı kontrol etmesi için alternatif
olarak, Xamarin Test Kaydedicisini (Test Recorder) kullanabilir. Fakat, test
kaydedicisinde, test uzmanın apk’yı en az bir kere bir sanal makine üzerinde çalıştırarak,
gerçekleştireceği arayüz testlerini manuel olarak uygulamalıdır. Xamarin test bulutu, test
uzmanın yaptığı işlemleri kayıt altına alarak, diğer farklı konfigurasyondaki sanal
makineler üzerinde uygulayarak ve test sonuçlarını gösterecektir.</p>
      <p>Her iki yöntemde de test uzmanın doğrudan uygulamayı çalıştırması gerekmekte
veya kod yazması ihtiyacı bulunmaktadır. Önerilen yöntem ile, mobil uygulamalarda
kullanılan kontrollerin test edilmesine uygun önceden hazırlanmış olan jenerik test
durumları yazılmıştır. Bu şablon test durumları bir JSON dosyası içerisinde test uzmanına
sunulmakta ve mobil uygulamaların arayüzleri test edilmektedir.</p>
      <p>Test uzmanı, apk dosyasını Xamarin test bulutu üzerine yükledikten sonra,
arayüzlerin içerisinde bulunan kontrolleri seçmektedir. Her farklı kontrol için daha önceden
yazılmış olan test durum kuralları JSON dosyası içerisinden tetiklenerek sanal
makineler üzerinde çalıştırılmaya hazırlanmaktadır. Apk içerisindeki tüm arayüzler için testi
yapılacak olan tüm kontrollerin belirlenmesinin ardından her biri için uygun test
durumu eşleştirilmesi ile test uzmanının görevi tamamlanmış olur. Şekil 2’deki sıralama
diyagramında 2 farklı kontrolü barındıran bir arayüz için yapılacak işlemler sırasıyla
gösterilmektedir.
Şekil 2 : Test Uzmanı İşlemleri Sıralama Diyagramı</p>
      <p>Test kurallarının belirlenmesi sonrasında Xamarin test bulutu test edilecek cihazları
getTotalDevicesNumber metodu ile belirler. Her bir cihaz üzerinde test işlemlerini
yaptıktan sonra, test sonuçlarındaki en yüksek bellek kullanımı getPeakMemory metodu
ile ve mobil uygulamanın kapladığı disk alanı getAppSize ile hesaplanarak tüm sonuçlar
test uzmanına görüntülenir. Tüm bu iç işlemlere ait sıralama diyagramı Şekil 3’de
gösterilmektedir.</p>
      <p>Test uzmanın arayüzler üzerindeki kontrollere hangi verinin girileceği ve hangi
işlemin yapılacağını yazdığı kod parçacıklarının ortadan kaldırılabilmesi için, ilk olarak
sınanacak apk’nın tüm arayüzleri ve barındırdığı kontroller otomatik olarak tespit
edilmektedir. Her bir girdi kontrolü (Text Fields) için arayüz testinde uygulanacak olan
veri, gelişigüzel olarak alfa-numerik karakterlerden üretilmektedir. Veri üretilmesi
gerekmeyen kontroller için (Checkboxes, Radio Buttons, Toggle Buttons, Spinners vb.)
ise sistem bool mantığında bir sonuç üreterek test durumu için seçim oluşturur. Arayüz
içerindeki tamamlayıcı kontrol (Button) ise en son olarak tetiklenerek arayüz testi,
ileriki arayüzler için sürdürülür. Aynı uygulama içerisindeki benzerlik gösteren
arayüzlerin testinde ve farklı cihazlar üzerinde yapılacak olan testlerde tekrar kullanılabilen bu
ara-rutinler görev almaktadır.
Şekil 3 : Xamarin Test Bulutu İşlemleri Sıralama Diyagramı</p>
      <p>256</p>
    </sec>
    <sec id="sec-3">
      <title>TEST</title>
      <p>Önerilen yöntem ile açık kaynak kodlu AndroidQuickStart uygulaması bulut
üzerinde test edilmiştir. Örnek uygulama kapsam itibariyle çevrimiçi t-shirt satış
uygulamasıdır. Uygulama, katalog gösterimi ve sepet ile satış ekranlarını bünyesinde
barındırmaktadır.</p>
      <p>Test kapsamında farklı işletim sistemi sürümlerine sahip 15 farklı Android tabanlı
cihaz üzerinde bulut testi yapılmıştır. 14 akıllı telefon ve 1 tablet üzerinde çalıştırılan
apk’nın arayüz testlerinin kontrolleri 14dk’da tamamlanmıştır. Şekil 4’te görüldüğü
üzere uygulamanın kapladığı disk alanı 8.77 MB olarak belirlenmiştir. Ayrıca testler
esnasında tepe bellek kullanımında en yüksek tüketimin 122.56 MB olarak belirlendiği
görülmektedir.</p>
      <p>Şekil 4 : Xamarin Test Bulutu Sonuç Ekranı</p>
      <p>HTC, LG ve Samsung marka belirlenen cihazlarda sırasıyla, Android 4.2.2, Android
4.3 ve Android 4.4.2 sürümlü işletim sistemleri yüklü olacak şekilde yapılan testler
sonrasında, Android 4.3 işletim sistemine sahip Samsung Galaxy S5 cihazı üzerinde
uygulamanın bellek yönetimi kaynaklı bir sorunla karşılaştığı tespit edilmiştir. Android
işletim sistemlerinin üreticiler tarafından özelleştirildiği bu tarz durumlarda hata ile
karşılaşma ihtimali artmaktadır. Şekil 5’de yapılan test süresince karşılaşılan hataların
işletim sistemi, üretici ve yapıya göre kategorize edilerek gösterimi sunulmaktadır.
Şekil 5 : Xamarin Test Bulutu Sonuç Ekranı
Mobil uygulamaların çok sayıda platform ve cihazda çalışabilmesi söz konusu
olduğundan, her bir platformda ve cihazda uygulamanın davranışı test edilmeli, olası hatalar
düzeltilerek tüm kullanıcıların sorunsuz şekilde kullanabileceği uygulamalar ortaya
çıkarılmalıdır. Mobil uygulama testlerinin fazla oluşu, Xamarin Test Cloud gibi bulut
ortamında çalışan test altyapısı yazılımlarının ortaya çıkmasını sağlamış, geliştiriciler
açısından kapsamlı testler hızlıca yapılır duruma gelinmiştir. Bu altyapı yazılımları
büyük kolaylıklar sağlasa da, kaynak kod yazımı gerektirmeleri nedeniyle, yazılım
geliştirme alanında uzman olmayan test uzmanlarının işlerini zorlaştırmaktadır. Bu
çalışmada, gerekli testler için kaynak kod yazımını ortadan kaldırılarak, şablon test
durumlarının uygulanması sağlanmış olup test uzmanlarının iş yükü azalmış ve testler daha
kısa sürelerde yapılır duruma gelmiştir. Bulut üzerindeki sanal sistemleri kullanarak
yapılan otomatik arayüz testleri, test uzmanlarının gözünden kaçabileceği hataları da
çok daha kısa sürede yakalayabilmektedir. Bu çalışma ile birlikte, Xamarin Test Cloud
yazılımının, mobil uygulamaların test sürecinde önemli katkılar sunduğu tespit edilmiş,
geliştirilen uygulama sayesinde kod yazımı gerekliliği minimum seviyeye çekilmiştir.
Yazılım test mühendisliği alanında ülkemizde çalışan uzmanların bir kısmı, yazılım
geliştirme altyapısına sahip olmadığı için bu tür kod yazımı gerektiren noktalarda
sıkıntılar yaşamakta ve ilgili araçtan tam olarak yararlanamamaktadır. Bazı firmalar, bu
nedenle kendi eklentilerini bu şekilde geliştirerek test uzmanlarının işlerini
kolaylaştırmaya başlamıştır. Bulut ortamında çalışan Xamarin Test Cloud yazılımı için
geliştirdiğimiz uygulama da benzer nitelikte katkılar sağlamış olup önümüzdeki dönemde yeni
eklentilerle zenginleştirilecektir. Kavram ispatı olarak ortaya konulmuş olan ve
faydaları görülen bu yaklaşımın, yeni test durumlarıyla birlikte sektörün önemli ihtiyaçlarına
yanıt verebilir nitelikte olacağı değerlendirilmektedir. Yakın zamanda yeni test
durumlarının eklenmesi planlanmıştır ve aktivite diyagramlarından tam otomatik bir şekilde
testlerin üretilmesi mümkün olabilmesi için geliştirmeler devam etmektedir. Ayrıca,
ticari mobil uygulamaların geliştirdiğimiz bu uygulama üzerinde testleri
gerçekleştirilecek ve sektörün ihtiyacına dönük olarak beklentileri karşılama durumu incelenecektir.
Bir yazılım firmasıyla görüşmeler gerçekleştirilmiş olup yakın zamanda geliştirdiğimiz
uygulamanın, yeni geliştirilen mobil bir uygulama testlerini yapacak şekilde
düzenlenmesi hedeflenmiştir.
6</p>
    </sec>
    <sec id="sec-4">
      <title>REFERANSLAR</title>
      <p>1. http://appium.io/ - Appium: Mobile App Automation Made Awesome
2. http://calaba.sh/ - Calaba.sh - Automated Acceptance Testing for iOS and Android Apps
3. https://github.com/robotiumtech/robotium - User scenario testing for Android
4. https://google.github.io/android-testing-support-library/docs/espresso/index.html - Build
High-Quality Apps</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          5. https://developer.android.com/training/testing/ui-testing/
          <article-title>uiautomator-testing.html - I Automator is a UI testing framework suitable for cross-app functional UI testing across system and installed apps</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          6. https://github.com/ajinabraham/Mobile-Security
          <string-name>
            <surname>-Framework-MobSF - Mobile-SecurityFramework (MobSF)</surname>
          </string-name>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          7. https://www.xamarin.com/test-cloud - Mobile
          <source>App Testing On Hundreds Of Devices - Xamarin Test Cloud</source>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          8.
          <string-name>
            <surname>Britton</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          <string-name>
            <surname>Jeng</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          <string-name>
            <surname>Carver</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cheak</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Katzenellenbogen</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          (
          <year>2013</year>
          ).
          <article-title>Reversible debugging software</article-title>
          . University of Cambridge-Judge Business School,
          <source>Tech. Rep.</source>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          9.
          <string-name>
            <surname>Garousi</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          &amp;
          <string-name>
            <surname>Mäntylä</surname>
            ,
            <given-names>M. V.</given-names>
          </string-name>
          (
          <year>2016</year>
          ).
          <article-title>When and what to automate in software testing? A multi-vocal literature review</article-title>
          .
          <source>Information and Software Technology</source>
          ,
          <volume>76</volume>
          ,
          <fpage>92</fpage>
          -
          <lpage>117</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          10.
          <string-name>
            <surname>Zein</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Salleh</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Grundy</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          (
          <year>2016</year>
          ).
          <article-title>A systematic mapping study of mobile application testing techniques</article-title>
          .
          <source>Journal of Systems and Software</source>
          ,
          <volume>117</volume>
          ,
          <fpage>334</fpage>
          -
          <lpage>356</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          11.
          <string-name>
            <surname>Hoffman</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          (
          <year>1999</year>
          ).
          <article-title>Test automation architectures: planning for test automation</article-title>
          .
          <source>In Quality Week</source>
          (pp.
          <fpage>37</fpage>
          -
          <lpage>45</lpage>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          12.
          <string-name>
            <surname>Kos</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          <string-name>
            <surname>Mernik</surname>
            ,
            <given-names>M</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Kosar</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          (
          <year>2016</year>
          ).
          <article-title>Test automation of a measurement system using a domain-specific modelling language</article-title>
          .
          <source>Journal of Systems and Software</source>
          ,
          <volume>111</volume>
          ,
          <fpage>74</fpage>
          -
          <lpage>88</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          13.
          <string-name>
            <surname>Tao</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Gao</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          &amp;
          <string-name>
            <surname>Li</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          (
          <year>2015</year>
          ,
          <article-title>October)</article-title>
          .
          <article-title>Cloud-Based Infrastructure for Mobile Testing as a Service</article-title>
          .
          <source>In 2015 Third International Conference on Advanced Cloud and Big Data</source>
          (pp.
          <fpage>133</fpage>
          -
          <lpage>140</lpage>
          ). IEEE.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          14.
          <string-name>
            <surname>Collins</surname>
            ,
            <given-names>E. F.</given-names>
          </string-name>
          (
          <year>2012</year>
          , June).
          <article-title>Software test automation practices in agile development environment: An industry experience report</article-title>
          .
          <source>In Proceedings of the 7th International Workshop on Automation of Software Test</source>
          (pp.
          <fpage>57</fpage>
          -
          <lpage>63</lpage>
          ). IEEE Press.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>