aticiadem / AppiumTestAutomation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Appium ile Mobil Uygulama Testi

Mobil Uygulama Testi Nedir?

Mobil Uygulama Testleri, farklı platformlar için geliştirilmiş mobil uygulamaların mobil web sitelerinin doğru ve istenildiği gibi çalışıp çalışmadığının kontrol edilmesi amacıyla gerçekleştirilen yazılım test aktiviteleridir [1].

Mobil uygulama testi, genellikle bir mobil uygulama geliştirildikten veya tüketicilere bırakılmadan önce mobil uygulama geliştiricileri tarafından gerçekleştirilir. Tipik olarak, mobil uygulama testinin temel hedefleri şunlardır:

• Donanım uyumluluğu ve işlevselliği: Mobil uygulamanın bir mobil aygıtın fiziksel girdisine ve bileşenlerle etkileşimine yanıtı. Buna dokunmatik ekran, klavye, ekran, sensörler, ağ ve daha fazlası dahildir.

• İşletim sistemi uyumluluğu: Uygulamanın farklı işletim sistemi platformlarıyla tamamen uyumlu olduğunu değerlendirir ve garanti eder.

• Kaynak kodu değerlendirmesi: Uygulamadaki tüm kod hatalarını ve hataları tanımlar ve çözer.

• Kullanılabilirlik ve İşlevsellik: Uygulamanın kullanımı kolaydır ve istenen tüm işlevleri sağlar [2].

test1

Resim 1 Mobil Uygulama Testi [3]

Mobil Testin Faydaları Nelerdir?

Uygulama üzerinde yapılan mobil testlerin yararları kısaca şöyledir;

• Uygulamadaki eksikliklerin saptanmasında yardımcı olur.

• Mobil uygulamaların iyileştirilmesi için avantaj sağlar.

• Olası virüs ve risklerin giderilmesini sağlar.

• Geliştirme aşamasında mobil test oldukça önemlidir.

• Yeniden yapılandırma sağlar.

• Uygulamaların optimizasyonunu kolaylaştırır [4].

Resim 2 Mobil Testin Faydaları [5]

Test Türleri

  1. Kullanılabilirlik Testi: Uygulamanın ne kadar kullanıcı dostu ve sezgisel olduğunu test eder. Uygulamanın ara yüzü her cihaz için uyumlu, yazılar okunaklı olmalıdır. Buton boyutları farklı parmak tipleri tarafından kolayca tıklanacak şekilde olmalıdır. Kullanılabilirlik testi, gerçek cihazlar, son kullanıcının ne deneyimleyeceğini daha yakından yansıttığından, gerçek mobil cihazlar bu tür testlerde kritik öneme sahiptir.

  2. İşlevsel Test: İşlevsel test, en temel test sürecidir. Uygulamamızın; cihazlar, işletim sistemleri ve diğer varyasyonlarda tüm özelliklerinin olması gerektiği gibi çalışıp çalışmadığını test eder ve çözümler.

  3. Performans Testi: Performans testi, uygulamanızın performansını farklı koşullar altında test eder. Yük testi, stres testi ve hacim testi bazı performans testleri arasındadır.

  4. Yerelleştirme Testi: Yerelleştirme testi, uygulamayı yerel dil, kültür, dini duygular ve cihaz erişebilirliği ile uyumlu hale getirecek test türüdür.

  5. Uyumluluk Testi: Mobil uygulamamızın her tür cihaz, nesil, işletim sistemi, farklı donanım ve yazılım türlerinde uyumlu çalışıp çalışmadığını test eder.

  6. Kurulum Testi: Kurulum testi, uygulamanızın App Store veya Google Play’den doğru şekilde indirme süreçlerini analiz eden bir tür mobil testtir. Bu tür testler, uygulamanın kaldırılmasında olduğu gibi uygulama yükleme ve güncellemelerinin de sorunsuz bir şekilde çalıştığını doğrular.

  7. Güvenlik Testi: Kullanıcılar, verilerinin veya hassas bilgilerinin tehlikeye atılmayacağından emin olmak ister. Sızma testi, güvenlik açığı testi ve güvenlik taraması gibi testlerle mobil uygulamanızın güvenirliğini test edebilirsiniz. Güvenlik testleri uygulamanızdaki güvenlik açıklarını bulmayı içerir.

  8. Gerçek Kullanıcı Durum Testi: Uygulama doğru cihaz ve platformlarda değişen kullanıcı koşullarına ve ortamlarına karşı (Kamera, Ses, Rotasyon...) simülasyon testinden geçmelidir.

  9. Erişebilirlik Testi: Erişebilirlik testi uygulamamızın görme bozukluğu, işitme engelliler ve diğer fiziksel veya bilişsel koşullar gibi engelli olanlar dahil tüm kullanıcılar için kullanılabilir olmasını aynı zamanda yasal gereksinimlere de uygun olmasını sağlar [6].

Resim 3 Mobil Test Türleri [7]

Appium Nedir ve Ne İçin Kullanılır?

Appium, bir Web Sürücüsü kullanarak hem iOS hem de Android platformlarında yerel bir mobil uygulamayı ve mobil web uygulamasını test etmeye yönelik açık kaynaklı bir otomasyon test aracıdır.

Appium Neden Bu Kadar Özel?

Piyasada birçok test otomasyon aracı bulunmaktadır (MonkeyTalk, Robotium, KIF (Keep It Functional) ...). Ancak araçların çoğu, aracın yerel mobil uygulamayla iletişim kurabilmesi için uygulama kodunun çoğuyla derlenmesi gereken ek bir aracı gerektirir.

Bunun dışında, Appium'u önde tutan bazı önemli farklılıklar:

  • Appium bir sunucu işlevi görür ve bir Selenium Sunucusu gibi arka planda çalışır.
  • TestNG test çerçevesi ile senkronize etme yeteneğine sahiptir.
  • Appium, ayrıntılı bir bilgi günlüğü üretebilen ve Ranorex gibi ayrıntılı bir raporlama yapısı oluşturan yerleşik bir UI Automator'a sahiptir.
  • Test kodundan backend API'lerine ve veritabanlarına tam erişim ile kontrolü ele alabilirsiniz [8].

Appium Server ve Inspector Nasıl Başlatılır?

Resim 4 Appium Server GUI

Appium Server GUI ayarlarını resimdeki gibi yaparak “Start Server v1.22.2” butonuna basarak serverımızı başlatıyoruz.


Resim 5 Appium Inspector


Server başladıktan sonra Appium Inspector üzerinden yukarıdaki gibi ayarları yapmalıyız. Buradaki “appPackage” ve “appActivity” uygulamamızın başlaması ve doğru çalışması için mutlaka yazılması gereken özelliklerdir. Bunlar doğrudan uygulamamız ve projemiz üzerinden alınabilecek değerlerdir. Bu ayarları da yaptıktan sonra “Start Session” butonu üzerinden Inspector’ımızı başlatabiliriz.

Bu işlemleri yaptıktan sonra test senaryomuzu “maven” ile oluşturup, testimizi başlatabiliriz. Bu senaryo için gerekli kodlar aşağıda gibidir.


Resim 6 Maven Setup Fonksiyonu

Yukarıdaki gördüğümüz Setup fonksiyonu ile tıpkı Appium Inspector’daki gibi proje ve emulator özelliklerimizi yazıyoruz. Bu fonksiyon ile emulatore doğrudan bağlantı sağlayacağız ve yazdığımız test senaryosunun işlemlerini göreceğiz.


Resim 7 Test Senaryosu

Yukarıdaki kodlar ile senaryomuzun nasıl gerçekleşmesini istediğimizi yazıyoruz. İlk olarak driver nesnesi üzerinden ulaşmak istediğimiz ilgili view ID’lerine nesneler atıyoruz. Böylelikle doğrudan bağlantı sağlıyoruz. Sonrasında oluşturduğumuz bu nesnelere sendKeys() metodu ile view’a değer veriyoruz. Aynı zamanda “button” nesnesi ile click() metodunu çağırıyoruz. Tıklama olaylarına yanıt veriyoruz böylece. Son olarak Thread.sleep() metodu ile kaç saniye bekletmek istediğimizi yazıyoruz, işlemler sonrasındaki uygulama tepkisini görmek adına. Sonuç olarak istediğimiz senaryo gerçekleşmiş oluyor.

Kaynaklar:

  1. https://keytorc.com/hizmetler/mobil-uygulama-testleri/
  2. https://tr.theastrologypage.com/mobile-application-testing
  3. https://www.innova.com.tr/tr/blog/mobil-uygulama-testi-yaparken-bunlara-dikkat-edin
  4. https://dinamikwebtasarim.com/mobil-test/
  5. https://www.affde.com/tr/mobile-app-usability.html
  6. https://hellospace.world/tr/blog/post/mobil-uygulamalarin-ihtiyac-duydugu-10-test-turu/da4c427fdd2
  7. https://apportunity.net/Mobile-Web-App-Testing
  8. https://blog.vsoftconsulting.com/blog/why-appium-is-preferred-over-other-mobile-test-automation-tools-1

License

MIT License

Copyright (c) 2022 Adem ATİCİ

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

License:MIT License


Languages

Language:Java 100.0%