👩‍💻Mobil Uygulamaların Yazılım Testleri

Mobil Uygulamaların Yazılım Testleri

Büşra Akıncı
Huawei Developers - Türkiye
9 min readMay 20, 2022

--

Photo by freestock on Unsplash
Photo by freestocks on Unsplash

Giriş

Herkese merhaba👋 bu yazımızda genel olarak mobil uygulamaları test ederken hangi yazılım test türlerini kullanabileceğimize bakacağız.

Bugün mobil uygulamalar hayatımızın bir parçası haline geldi. Birçok kullanıcı artık günlük işlerini mobil uygulamaları kullanarak yapmak istiyor, örneğin kullanıcılar bir ödeme işlemini(eft/havale) bilgisayarı açarak veya bankaya giderek yapmak istemiyorlar bu durumsa mobil uygulamaların kullanım oranını artırmaktadır. Artan mobil uygulama kullanım oranı ise çeşitli sorunları ve kaliteye verilen önemi beraberinde getirmektedir.

Bazı rakamlara bakacak olursak;

  • ABD’de, akıllı telefonlar toplam dijital medya zamanının % 70'ini oluşturuyor.[1]
  • Y kuşağının % 21'i günde 50 den fazla kez cihazlarında ki uygulamaları açıyor ve akıllı telefonlarında günde en az beş saat harcıyor.
  • Z kuşağı yaklaşık beş farklı ekran kullanıyor: akıllı telefon, tablet, dizüstü bilgisayar, TV ve masaüstü. IBM tarafından yapılan bir araştırmaya göre, Z kuşağının yüzde 75'i akıllı telefonlarını tercih ettikleri cihaz olarak seçmekte.[2]
  • Mobil uygulama pazarının 2026 yılına kadar 407.31 milyar dolara ulaşması bekleniyor.
  • Global web trafiğinin ise yaklaşık %54,8'ini mobil cihazlar oluşturuyor.

Mobil uygulamaların kullanımının artışı mobil yazılımların testlerine olan gerekliliği artırmaktadır. Kullanıcılar hatalı uygulamaları kullanmak istemiyorlar ve kullandıkları uygulamaya güvenmek istiyorlar. Aynı zamanda kullanıcılar çok karmaşık kullanımı zor uygulamaları da kullanmak istememektedirler. Dolayısıyla yazılım her açıdan test edilmelidir. Mobil yazılımların testinde çok fazla cihaz ve uygulamalara ait farklı versiyonlar kullanıldığından test edilmesi gereken olasılıklar çok fazladır bu nedenle testinin çok da basit değildir. Bunun yanı sıra uygulamalar farklı cihazlarda ve işletim sistemlerinde hatasız şekilde çalışmalıdır. Bu sebeple bu yazıda testçilere, geliştiricilere uzun vadede en iyi kullanıcı deneyimini yaşatacak şekilde kaliteli uygulama geliştirmek için yapılması gereken test metotlarından bahsedeceğiz.

Mobil Uygulama Türleri

Mobil Uygulama Türleri

Üç mobil uygulama türü vardır:

  1. Native Uygulamalar: Native mobil uygulamalar, belirli bir işletim sistemi türü için özel olarak oluşturulan uygulamalardır. Belirli bir cihaza veya platforma özgü oldukları için “yerli” olarak adlandırılırlar.

Native uygulamalar, ilgili platformun desteklediği geliştirme araçlarını ve dili kullanırlar.

Native Uygulamaların Avantajları:

1. Diğer uygulama türlerine kıyasla hızlıdırlar.
2. Google ve Apple App Store’da kolayca dağıtılabilir.
3. Daha interaktif bir kullanıcı deneyimi sağlarlar.
4. Telefonun herhangi bir özelliği ile kolayca etkileşime girebilmektedirler.

Mobil Uygulamalarda Test Türleri

Mobil teknoloji ve akıllı cihazlar bugün oldukça trend ve bildiğimiz gibi dünyanın bugun bulunduğu halini değiştiren bir teknoloji ve şüphesiz geleceğini de değiştirecek. Bunun yanısıra mobil uygulama pazarındaki rekabet çok fazla fakat bu uygulamaların çoğu düşük kaliteli ve kullanıcılar uygulamayla ilgili sorunlarla karşılaşır karşılaşmaz bunları kullanmayı bırakma eğilimindeler.

Uygulama mağazalarındaki düşük derecelendirmeler ve kaldırmalar bunun sonuçlarıdır. Başarılı bir uygulama için kalite şarttır bu kalite ise sürekli ve kapsamlı testler yapılmadan elde edilemez.

Mobil uygulama testinin üç ana hedefi vardır:

  • Standartlara göre desteklenmesi kolay kod yazılmalıdır
  • Gereken fonksiyonların belirtildiği gibi çalıştığından emin olunmalıdır
  • Hatalar hızlı bir şekilde tespit edilmeli ve hemen düzeltilmelidir

Bu hedefler sayesinde uygulamanın daha sorunsuz çalışması ve kullanıcıların daha memnun olması sağlanmış olur.

Mobil Uygulama Test Türleri

1. Unit Test

Birim testler, geliştiricilerin düzgün çalışan bir uygulama geliştirmek için yapmaları gereken ilk adımdır. Adından da anlaşılacağı gibi, fonksiyonlar veya classlar gibi küçük kod birimleri için kullanılırlar. Bir geliştirici küçük bir kod parçası üzerinde çalışmayı bitirdiğinde, onu test etmek zorundadır. Birim testler geliştiriciler tarafından yazılır ve bu tür testlerin yazılması uygulamanın kalitesi açısından oldukça faydalıdır. Geliştiricilerin kendi yazdıkları kodu değiştirmeleri daha kolaydır, çünkü yazmış oldukları kodda yanlış giden birşey varsa bunu daha kolay farkedebilirler.

Tüm geliştirme ortamları unit test frameworklerine sahiptir. Test frameworkleri sayesinde geliştiriciler her bir fonksiyon için test yazabilirler. Tabii ki, her şeyi test etmek imkansız, ama mümkün olduğunca test edilmelidir.

Mobil uygulama testi için test odaklı geliştirme (test driven development) yöntemi ile kodlar yazılabilir bu yaklaşımda geliştirme sürecine başlamadan önce testler yazılmaya başlanır. Bu yöntem ile önce küçük kod parçaları oluşturulur. Ardından kodlamadan önce yazılan bu testler çalıştırılır. Test fail olursa bu hata düzeltilecek şekilde kod yazılır. Geliştirme, tüm testler başarılı bir şekilde geçilene kadar devam eder.

2.Otomatik Testler

Otomatik testler, birim testlerden biraz daha karmaşıktır ve genellikle bir kullanıcının beklenen ve beklenmeyen davranışını test etmek ve uygulamanın bu durumda nasıl bir tepki verdiğini kontrol etmek için kullanılırlar. Örneğin, bir kullanıcı yanlış şifre veya e-posta adresi gibi yanlış veriler girebilir veya bir butona arka arkaya birden fazla kez basabilir.

Otomatik testler, aşağıdaki gibi diğer bazı durumları içeren test durumlarına göre oluşturulur

  • Düşük batarya
  • Memory Yetersizliği
  • Uygulama kullanımı sırasında yaşanan kesintiler (örneğin uygulama kullanımı esnasında gelen aramalar)

Bu gibi durumlar manuel olarak kontrol edilebilir, ancak bu durumların örneğin farklı versiyonlarda veya uygulama her release çıktığında tekrar tekrar kontrol edilmesi gerektiğinden genellikle otomatik testler kullanılır. Otomatik test bu açıdan çok faydalı bir araçtır, çünkü bu sayede test mühendisleri sadece bir kez test yazmak zorundadır ve daha sonra yazılan bu test geliştirme süreci boyunca devamlı (tabiki arada fixlemeler olacaktır) kullanabilir.

Otomatik testin dezavantajı ise , bu tür testlerin oldukça pahalı ve karmaşık olmasıdır. Aynı zamanda business rule (iş kuralı) artan uygulamalarda her türlü iş kuralı için ayrı ayrı testler yazmak da çok kolay değildir. Uygulamada herhangi bir değişiklik olursa örneğin; yeni özellikler eklenirse veya bir uygulamanın iş kuralında değişiklikler yapılırsa test mühendisi otomatik testi yeniden yazmak zorunda kalacaktır. Bu nedenle bu tür testler genellikle yalnızca temel özellikler için kullanılır. Örneğin, bir alışveriş uygulaması için uygulamaya giriş -çıkış yapabilme, ürün arama, sipariş oluşturma ve satın alma gibi özellikler çok fazla değişmeyecektir, böylece onlar için otomatik testler yazılabilir. Daha küçük değişiklikler içinse manuel test kullanılabilir.

Otomatik test yazabilen çalışanlara sahip olmak yazılım geliştiren herhangi bir şirket için büyük bir artıdır, çünkü bu şekilde daha sağlam, güvenilir ve hatasız uygulamalar geliştirilebilir.

3.Sistem Testleri

Sistem testleri daha büyük bir kapsam ile yazılımı test eder. Sistem testi, sistem gereksinimleri, kullanım senaryoları, gereksinimler ve analiz raporlarından oluşur. Bu testler sırasında kullanıcı kılavuzu, sistem kılavuzu, gereksinim dokümanı gibi kaynaklardan faydalanılır. Birim testlerden çok daha kapsamlıdırlar ve elde edilen sonucu beklenen sonuçla karşılaştırarak tüm uygulama test edilir. Sistemin test sırasında aynı kalması test ortamında herhangi bir değişikliğin olmaması çok önemlidir.Sistem testleri temel olarak manuel gerçekleştirilen testlerdir. Manuel test, test sürecinin önemli bir parçasıdır.

Sistem testi sırasında, bir testci, uygulamanın tam olarak nasıl çalıştığını görmek için farklı cihazları veya emülatörleri kullanarak tüm uygulamayı manuel olarak test eder.

4. Kullanıcı Kabul Testleri

Kabul testleri, geliştirme aşaması bittiğinde yapılan son aşama testidir. Test mühendisi bu aşamada testleri gerçekleştirir fakat müşteri de test sürecine katılır. Bu test, tüm aşamalar bittiğinde kullanıma hazır hale gelmiş bir ürün üzerinde yapılır.

Kabul testleri, uygulamanın gereksinimlerine göre bazı test koşullarını ve senaryolarını da kullanır. Müşteri kaliteden memnunsa ve ürünü kabul ederse, ürün kullanıcıların cihazlarına kurulmaya hazır demektir. Aksi takdirde, kabul testi, müşteri ürünü kabul etmeye hazır olana kadar devam eder.

Mobil Uygulama Test Yöntemleri

Mobil uygulamalar için test yöntemleri, test türlerinden farklı olarak, yalnızca test seviyelerine göre değil, uygulamanın çalışma sürecinin ayrıntılarına göre de ayırt edilir. Mobil uygulamalar için yaklaşık 14 test türü vardır. Her uygulama bu yöntemlerin tamamını kullanmak zorunda değildir, ancak burada en yaygın olanları şunlardır:

  1. Kullanılabilirlik(Usability) Testi: Bu test yöntemi bir uygulamanın kullanıma uygun olup olmadığından emin olmamızı sağlar. Ön yüzü ve tasarımı tüm cihazlarda mümkün olduğunca iyi hale getirmek çok önemlidir. Her bir arayüz detayının boyutu, yerleşimi ve işlevleri, her boyutta ve versiyondaki cihazlarda aynı şekilde çalışabilmelidir.

2. Uyumluluk(Compatibility) Testi: Aslında bu test yöntemi de kullanılabilirlik testine benzer, ancak uygulamanın farklı ekran boyutlarına ve işletim sistemine sahip farklı mobil cihazlarda düzgün çalışmasına daha fazla odaklanır. Uyumluluk testi sırasında, uygulamanın müşterinin tüm gereksinimlerini karşıladığından emin olmak önemlidir.

3. Arayüz(Interface) Testi: Bu test yöntemi menü seçeneklerinin, geçmişin, ayarların ve yer imlerinin çalışmasını kontrol etmeyi içerir. Arayüz testi, iki farklı yazılım sistemi arasındaki iletişimin doğru olduğunu kontrol eden bir yazılım testi türü olarak tanımlanır.

Bu tür bir test, iki ana bileşenden oluşur:

  • Web sunucusu ve uygulama sunucusu arayüzü.
  • Veritabanı sunucusu ve uygulama sunucusu arayüzü.

Arayüz testi, temel olarak sistem mimarisinin mesajlaşma katmanında yapılır. Çoğunlukla REST API veya SOAP web hizmetini JSON veya XML formatıyla test etmeyi içerir.

4. Performans(Performance) Testi: Bu test yöntemi ile uygulama belirli koşullar altında test edilir: örneğin düşük pil, zayıf ağ sinyali, bellek yetersizliği ve uygulamanın işlevselliğini bozabilecek diğer faktörler. Performans sorunlarına iki taraf da neden olabilir: sunucu ve ya istemci. Performans testi ile her ikisi de kontrol edilir.

5. Bellek Sızıntısı (Memory Leakage) Testi: Bu test yöntemi bir uygulamanın performansını kontrol etmek için kullanılır.Bir uygulama belleği iyi yönetemediğinde sonuç zayıf ve yavaş performanstır. Tüm cihazların farklı bellek sınırları vardır, bu nedenle uygulamanın bunlara göre test edilmesi gerekir.

6. Kurulum (Installation) Testi: Bu test yöntemi uygulamanın düzgün bir şekilde yüklenip kaldırılabildiğini kontrol eder ve kullanıcı için herhangi bir zorluğa neden olmadığından emin olur. Kurulum testi,uygulamayı son kullanıcıların tüm yazılım bileşenlerini yükleyebilmesini ve yükleme işleminin çok zaman alıcı veya tutarsız olmamasını sağlayacak şekilde test eder. Kurulum testi, kurulumun başarıyla tamamlandığını ve yazılımın kaldırılmasını(uninstall), güncellenebilmesini(update) veya geri yüklenmesini(re-install) kontrol eder.

7. Güvenlik (Security) Testi : Bu test yöntemi uygulamanın verileri koruduğundan emin olmak için kullanılır. Uygulamanın saldırıya(hacklenmeye) açık olup olmadığını kontrol eder ve kimlik doğrulama, yetkilendirme, oturum yönetimi vb. için güvenlik standartlarını doğrular. Güvenlik testi, bir yazılım uygulamasındaki güvenlik açıklarını, tehditleri ve riskleri tanımlayan ve kötü amaçlı kişilerden gelen saldırıları önleyen bir tür yazılım testidir. Güvenlik testlerinin amacı, yetkisiz kişilerin elinde bilgi, gelir, itibar kaybına yol açabilecek yazılım sistemindeki olası tüm boşlukları ve zayıflıkları tespit etmektir.

8. Kesinti (Interrupt) Testi : Kesinti(Interrupt) testi ile uygulamanın çalışma esnasında gelen aramalar, bildirimler, pilin çıkarılması veya ağ sorunları nedeniyle kesintiye uğradığı durumlardaki tepkisini test eder. İdeal olarak, bir kesinti durumunda, uygulama bekleme durumuna geçmeli ve kesinti biter bitmez yeniden başlatılmalıdır.

9. Yük (Load) Testi: Yük testi, bir uygulamanın aynı anda birçok kullanıcıyı idare edip edemeyeceğini test etmek için kullanılır. Bu test, çok kullanıcılı sistemlerle ilgilidir; genellikle web sunucuları gibi bir istemci/sunucu modeli kullanılarak oluşturulur. Uygulamaya kaldırabileceği maximum yük seviyesinde yük bindirilir ve nasıl tepki verdiği gözlemlenir.

10.Sertifika(Certificate) Testi: Bu test ile uygulamanın yönergelere göre tasarlanıp tasarlanmadığını kontrol edilir. Bir uygulamayı uygulama mağazalarına(app store) koymak için sertifika testi gereklidir.

Mobil Testin Zorlukları
Mobil Testin Zorlukları

Mobil Testin Zorlukları

Mobilin diğer tüm alanlara hakim olduğu ve neredeyse her iki haftada bir yeni bir cep telefonunun piyasaya sürüldüğü, uygulamaların her gün güncelleme aldığı bu çağda, aslında mobil test mühendisleri büyük bir baskı altında. Mobil hayat o kadar çok hayatımızın parçası oldu ki, mobil olmayan bir siteyi veya uygulamayı reddeder hale geldik. Her şeyin parmaklarımızın ucunda olmasını istiyoruz. Bu talepler, her projenin mobil uyum desteği sağlaması için baskı yaratmaktadır.

Zamanla, iOS, WebOS, Blackberry ve Android gibi bilinen işletim sistemlerine ek olarak giderek daha fazla işletim sistemi de geliştirilmektedir ve bu geliştirilen uygulamaların çoğunun platformlar arası çalışıyor olması beklenmektedir bu nedenle desteklenen farklı işletim sistemlerinde kapsamlı testler yapılması gerekiyor.

Mobil testlerde, aynı zamanda ağ sorunları gibi diğer farklı zorluklarla ortaya çıkmaktadır; zayıf ağ bağlantısı, güçlü ağ bağlantısı, Wi-Fi’den 3G/4G’ye ve bunun tersi gibi ağ geçişleri, aynı anda birden fazla uygulama kullanılırken performans durumu, bellek sızıntısı sorunları, pil tüketimi sorunları vb. önem teşkil etmektedir.

Test mühendisleri tüm olasılıkları, uygulamayı ve cihazla olan durumunu manuel,otomasyon,performans ve yukarıda bahsettiğimiz birçok testi uygulamanın güncel her versiyonu için ele almak zorundadır. Mobil testin bu durumda çok da kolay olmadığını söyleyebiliriz.

SONUÇ

Tüm bu tür testler için test mühendisleri farklı test araçları kullanır. Her uygulamanın farklı test ihtiyaçları olabilmektedir kimi uygulama için manuel kimi uygulama içinse otomasyon testi öne çıkabilir. Bu noktada uygulamanın gereksinimleri ve ihtiyaçları müşteri beklentisi gibi konular ele alınabilir.

Android test sürecinde uygulama son kullanıcı tarafından kullanılmaya başlanmadan önce dikkate alınması gereken farklı durumlar vardır, ancak bir yandan da ilginç bir görev olduğunu da söyleyebiliriz.

Herkese happy testing😊

Bir dahaki yazıda görüşmek üzere.

Kaynakça:

--

--