Engel ne kadar büyükse, üstesinden gelmedeki zafer o kadar büyük olur.
— Molière
Her sorunun sizin için bir hediyesi vardır.
— Richard Bach
Hüzün sizi neşeye hazırlar.
— Mevlana Rumi
“Mobilite” ve “mobil bağlam” terimlerine alıştıktan hemen sonra, zorluklara biraz zaman ayırmamız gerekiyor. Evet, doğru duydunuz: Tahmin edebileceğiniz gibi, mobil testte başarılı olabilmeniz için önünüzde bir takım zorluklar var ve bu zorluklar gerçekten zor.
Mobil test kullanıcıları genellikle bu gerçeği hafife alır. Zorlukları net bir şekilde tanımlamadan, kişinin mobil testte ustalaştığını söyleyemeyeceğini bilmeleri gerekir. Proje yönetimi kursları da bu gerçeği çok net bir şekilde vurgulamaktadır. Stratejinizi ve uygun bir yaklaşımı oluşturmak için karşılaştığınız zorlukları bilin. Güvenilir bir eylem planı, önünüzdeki zorlukların iyi bir yansıması/çözümünden başka bir şey değildir.
O halde şimdi mobil testin zorluklarını listelemeye çalışalım. Burada daha açık olmak için, bu zorlukları iki alana ayıracağım. Biri, yönetim, strateji ve insan kaynakları (İK) konularını içeren “genel zorluklar” olacaktır. Diğer alan, daha çok testin kendisiyle ilgili olan “teste özel zorlukları” kapsar.
Genel Zorluklar
Platform sayısı — En son mobil işletim sistemi (OS) sürümlerinin zaman çizelgesini incelediğimizde iOS, Android, Windows ve BlackBerry’nin pazara hakim olduğunu görüyoruz. Sık işletim sistemi güncellemeleri ve cihaza özgü özelliklere sahip çok sayıda cihazda çalışan en yeni sürümlere sahiptirler. Bu ortak platformlar yaygın olarak kullanıldığından, buna göre test edilmelidir. Her test uzmanına “Uygulama Geliştiricileri Birliği” web sitesini düzenli olarak kontrol etmelerini ve mobil platformların son sürümleri, haberleri ve istatistikleri hakkında bilgi sahibi olmalarını tavsiye ediyorum.
Cihaz ve ekran sayısı — Application Developers Alliance tarafından geçen yıl yapılan bir araştırmaya göre, piyasada yaklaşık on dört bin farklı Android cihaz vardı! Çok fazla, değil mi? Bir testçi gözüyle baktığımızda bu ulaşılmaz ve gerçekçi olmayan bir hedef olabilir. Biz testçiler olarak zamanımız ve bütçemiz kısıtlı olduğu için testlerimizde seçici olmamız gerekiyor. Aşağıdaki blog yazılarında, cihaz seçimi ve kapsamı ile başa çıkmak için bazı yöntemler önereceğim.
Elbette, farklı cihazlar aynı zamanda farklı ekranlar anlamına gelir. Mobil test kullanıcıları da bunu dikkate almalıdır. Farklı ekran boyutu, farklı testler ve farklı öncelikler anlamına gelir. Bu nedenle, piyasadaki cihazlar ve bunların ekran özellikleri hakkında kendinizi güncel tutabilmeniz için Wikipedia’da düzenli olarak “piksel yoğunluğuna göre ekran listesi” aramanızı öneririm.
Mobil donanım karmaşıktır — İster inanın ister inanmayın, mobil cihazlar karmaşıktır, özellikle donanım. Çok küçük bir alanda çok sayıda mikro elektronik cihaz vardır ve hepsi birlikte çalışabilir olmalıdır. Bir işlemci, katı hal diski, arka ışıklar, hoparlörler ve kulaklık, Bluetooth modülü, USB çevre birimleri, pil, GPS anteni, dokunmatik ekran ve diğer birkaç sensör ve mikroçip vardır.
Bunları topladığınızda, karmaşık bir formülünüz olur. Bir mobil test cihazı olarak, herhangi bir mobil cihazı test ederken donanım karmaşıklığını anlamanız gerekir. Donanım tarafını daha iyi anlamak için düzenli olarak ifixit.com’u kontrol etmenin fiziksel parçaları ve testteki önemini anlamada faydalı olduğunu görebilirsiniz.
Mobil yazılım karmaşıktır — Yalnızca donanım karmaşık değildir, mobil yazılım genellikle ayrıntılı özelliklere ve mimariye sahiptir – özellikle de sunucu-istemci uygulamalarından bahsediyorsak. Birçok farklı teknoloji dikkate alınmalıdır. Sunucu ve istemci birbirleriyle nasıl konuşmalı? Veritabanına nasıl entegre edilmeli ve erişilmelidir? Web servisleri nasıl yönlendirilir. Kaç ekran var? Uygulama çevrimdışı çalışabilir mi? Kimlik doğrulaması/yetkilendirmesi var mı? Liste sonsuz olabilir.
Bir mobil uygulamayı test ediyorsanız, en azından böyle bir uygulamanın geliştirilmesinde kullanılan teknolojileri, uygulamanın dayandığı mimariyi ve uygulamanın getirdiği özellik kümesini temel olarak anlamanız gerekir. Bu bilgiler olmadan testler, özellikle birim ve entegrasyon testi gibi alt seviye testler etkin bir şekilde yapılamaz.
Mobil güvenlik kritik öneme sahiptir — Güvenlik, yazılım üreticileri için her zaman bir baş ağrısı olmuştur. Mobil uygulamalardan bahsettiğimizde, en büyük zorluklardan biridir. İstatistikler her yıl ortak bir gerçeğe işaret ediyor: mobil işletim sistemleri kötü amaçlı yazılımlar tarafından hedefleniyor ve bu artan bir güvenlik riski anlamına geliyor. Her akıllı telefon veya tabletin standart özellikli bir telefondan yaklaşık yüz kat daha fazla veri kullandığını düşündüğümüzde bu denklem daha da kritik hale geliyor.
Taşıyıcılar/Operatörler önemlidir — Kaynak, teknik bilgi ve finansman eksikliği nedeniyle, mobil testler genellikle WAN, LAN veya Wi-Fi gibi taşıyıcı olmayan ağlardan yapılır. Mobil uygulamaları çalışırken etkileyen ağ/taşıyıcı ile ilgili birçok faktör olduğundan, bu büyük bir sorundur. Gerçek taşıyıcı ağları kullanarak testinizin bir kısmını vahşi ortama taşımadan, test kapsamınızdan yüzde 100 emin olamazsınız.
Mobil kullanıcıların hareket halinde olduklarını ve her zaman Wi-Fi’ye bağlı olmadıklarını hepimiz biliyoruz. Bu nedenle test faaliyetlerimizde taşıyıcı ağ dinamiklerini de dahil etmemiz gerekiyor. 4G, 3G veya 2G kullanırken test etmemiz gerekiyor, dolaşımdayken test etmemiz gerekiyor, İnternete bağlanırken test etmemiz gerekiyor, erişimimiz sınırlı veya zayıfken test etmemiz gerekiyor ve biz gelen aramalar, SMS’ler, MMS’ler, e-postalar vb.’nin neden olduğu kesintileri test etmeniz gerekir. Tüm bu operatör sorunları önemli ve mobil test faaliyetleri için vazgeçilmezdir.
Mobil cihazların sınırlamaları vardır — Bazı kişiler mobil cihazın taşınabilir/minyatür bir bilgisayar olduğunu düşünür. Bu algıya katılıyorum, ancak bir dereceye kadar. Bu cihazların PC’lere kıyasla bazı önemli sınırlamaları olduğunu bilmemiz gerekiyor. Daha küçük ekranları ve azaltılmış bant genişliği var, fareleri veya standart boyutlu klavyeleri yok, işlemcileri ve hafızaları daha az yetenekli, güç yönetimi farklı, daha küçük disk alanları var, çoğunlukla dokunmatik ekranları var, genellikle tek bir uygulamayı çalıştırıyorlar. tek ekran, daha kısa oturumları var ve kullanıcıları hareket ediyor.
Bir mobil cihazı test ederken bu sınırlamaları hatırlamanız gerekir. Testlerinize başlamadan önce sınırlamalarınızı ve farklılıklarınızı tanımlamayı unutmayınız. Bu şekilde, testiniz ve sonuçları hakkında daha emin olabilirsiniz.
Yerel ve mobil web — Mobil uygulama geliştirmede ortak bir tartışma şudur: “Yerel uygulamalarımız mı olmalı yoksa mobil web mi kullanmalıyız?” Cevap o kadar kolay değil. “Duruma göre değişir” gibi politik bir cevap buraya uyuyor.
Her iki yol da avantajlar ve dezavantajlar getirir. Örneğin, yerel bir uygulama daha gelişmiş kullanıcı arayüzü özelliklerine sahip olabilir ve cihaza özgü özelliklere (ör. titreşim, yerelleştirme, arka ışıklar, kamera, sensörler vb.) daha fazla erişime sahip olabilir. Öte yandan, mobil web, yükseltme esnekliğine ve kod taşınabilirliğine sahiptir. Testçi olarak kullanıcılarımızın/kuruluşlarımızın ihtiyaçlarını anlamamız ve özellikle ilgili teknolojileri ve farklılıklarını göz önünde bulundurarak mobil uygulamaları buna göre test etmemiz gerekiyor.
Çerçevemizi az önce tanımladık, şimdi teste özel zorluklara geçelim.
Teste Özel Zorluklar
Daha kısa geliştirme yaşam döngüleri ihtiyacı — Mobilite çok talepkar ve sürekli değişen kullanıcı davranışına dönüştüğünden, yazılım üreticileri kendilerini bu bağlama adapte etmelidir. Müşterilerin ihtiyaçlarını karşılamak ve pazara daha hızlı girebilmek için daha az gereksinim ve özellik ile daha kısa yaşam döngüleri ile mobil uygulama geliştirme yapılmalıdır. Döngü başına daha az gereksinime sahip olmak, mutsuz kullanıcılara sahip olma riskini önemli ölçüde azaltır. Bunu başarmak için şirketler çevik gelişimi benimsemeye ve daha duyarlı olmaya çalışıyorlar. Geniş kapsamlı güncellemeler yerine dar kapsamlarla sık sık yeni yayınlamalar yaparlar. Mobil testler bu çok zorlu ve çevik bağlama uyarlanmalı ve test kullanıcıları daha duyarlı ve yaratıcı olmalıdır. Her zaman test için kalan zamanın olmamasından şikayet ettiğimiz için burada dikkatli olmamız gerekiyor. Riske dayalı bir test yaklaşımı uygulamamız ve test çalışmalarımızı en sık kullanılan özelliklere ve iş kurallarına odaklamaya çalışmamız gerekiyor.
Regresyon testi ihtiyacı — Daha kısa yaşam döngülerinden bahsettikten sonra, regresyon testi hakkında konuşmamız gerekir. Daha sık yayınlama yapacağımız için daha fazla regresyon testi yapmalıyız. Koddaki her değişiklikle, eski (öncül) işlevlerin ve/veya özelliklerin durumundan emin olmamız gerekir. Bu değişiklikler yeni özellikler ve/veya hata düzeltmeleri olabilir ve her ikisi de çok dikkatli bir şekilde test edilmelidir.
Aşağıdaki blog yazılarında, mobil test otomasyonunun önemini daha da vurgulayacağım ve birkaç vaka çalışmasına atıfta bulunarak regresyon testi ile nasıl uyacağını göstereceğim.
Back-end testi ihtiyacı — Ne yazık ki, mobil test kullanıcıları API’lar veya herhangi bir back-end katmanı yerine kullanıcı arayüzüne (front-end) çok daha fazla odaklanır. Bu rakamı birkaç örnek olay üzerinden ölçtüğümde yüzde 90 civarında bir oran gözlemliyorum. Genellikle mobil uygulamalar daha büyük sistemlerin parçalarıdır. Örneğin, bir mobil bankacılık uygulamasını düşünün: back-end kodunun temel bankacılık sistemi ile bağımlılıkları, eşleşmesi ve paylaşılan kodu olması muhtemeldir.
Benzer mimariye sahip bir mobil uygulamayı test edersek, front-endin yanı sıra back-endi de test etmemiz gerekir. Özellikle uygulama programlama arayüzleri (API’ler) test senaryoları ile kontrol edilmeli ve bu şekilde iş ve veritabanı katmanları da kontrol edilmelidir.
Performans testi ihtiyacı — Yaygın olarak ihmal edilen bir diğer test etkinliği de performans testidir. Yazılım projelerinde işlevsel olmayan gereksinimler nadiren toplandığından, geliştirildiğinden ve izlendiğinden, işlevsel olmayan testler maalesef düşük öncelikli bir konu olarak konumlanıyor. Mobil yazılım üreticilerine sorarsanız kimse buna katılmaz ama gerçeği gizleyemezsiniz. Neredeyse tüm performansla ilgili hatalar üretim ortamlarında çözülüyor! Başka bir deyişle, şirketler, canlı sistemlerinde can sıkıcı bir performans hatası yaşamadıkça, performans testlerine kolayca yatırım yapmıyorlar.
Mobil test kullanıcıları bu gerçeğin farkında olmalı ve performans testini teşvik etmelidirler. Bu alanda pek çok araştırma yapılıyor ve sonuçlar mobil kullanıcıların sabırsız olduğunu gösteriyor. Onlara mobil uygulamanızın açılması için on saniye beklemelerini ve sonrasında cennete gideceklerini söyleyemezsiniz. Sektör karşılaştırmaları, mobil kullanıcıların uygulamaların iki saniye içinde başlatılmasını istediğini gösteriyor! Evet, doğru okuyorsunuz: sadece iki saniye. Basitçe söylemek gerekirse, mobil kullanıcılar performans testi yapmamızı istiyor; aksi takdirde bizim için yapacaklar ve ardından geliştirdiğimiz uygulamaları silerler.
Mobil test araçlarına duyulan ihtiyaç — Bu, herhangi bir yazılım testi sorunu ve araç seçiminde genel bir noktadır. Odağımızı mobil teste kaydırdığımızda, daha da büyüyor. Mobil uygulama hatası riskini azaltmak ve izlenebilirliği, kapsamı, raporlamayı ve yürütme sıklığını iyileştirmek için doğru zamanda doğru mobil test araçlarını seçmeniz gerekir.
Son zamanlarda, bu alanda önemli gelişmeler gözlemledik. Mobil test araçları yükselişte ve her yıl piyasaya yeni oyuncular tanıtılıyor. İki ila üç yıl önce en büyük zorluk olan alet kıtlığı artık resmin dışında görünüyor. Ancak bu, takımların artık bir zorluk olmadığı anlamına gelmez. Doğru araçları seçerken kuruluşların acı çektiğini hala biliyoruz. Kullanılabilir test yazılımından daha fazla raf yazılımına (kullanılmayan/kullanılmayan yazılım) sahiptirler. Birçok çözüm bulunduğundan, tek bir doğru seçenek yoktur. Ve mobil test kullanıcıları bu denklemi çözme ve kullanacakları test aracını bulma sorumluluğuna sahip olmalıdır.
Test etmek için daha fazla zamana ihtiyaç var — Herhangi bir testçinin hayatındaki bir diğer büyük zorluk da zaman sıkıntısıdır. Birkaç yıldır yazılım testi ve mobil test konusunda eğitim veriyorum ve insanlara erken ve sık test yapmalarını söylüyorum – ancak yine de fazla bir gelişme yok! Özellikle yönetim kurullarıyla ve üst düzey yöneticilerle konuştuğumda, etkilendiklerini ve testlere daha fazla zaman ayırmaya söz verdiklerini söylüyorlar ama bu asla olmuyor. En son yaşam döngüsü etkinliği yazılım testi gibi görünüyor ve mobil uygulamalarla uğraşıyorsanız bu davranış daha fazla acı çekmenize neden olabilir.
Sorumlu bir test uzmanı, rasyonel çabaları tahmin etmeli ve pazara sunma süresinden ziyade kaliteyi teşvik etmelidir. Bu nedenle, kendinizi rahat hissetmiyorsanız, daha fazla test süresi istemekten asla çekinmeyin. Tamam, CIO’nuzla konuşuyorsanız iki kez düşünmeniz gerekir, ancak iki kez düşünmenin hiçbir zaman tek kelime etmemek anlamına gelmediğini bilmelisiniz!
Daha fazla cihaza ve ortama ihtiyacınız var — İster şirket içinde test yapın ister dış kaynak kullanın, şirket içi bir test ortamına (laboratuvar veya basit bir test yeri) sahip olmak ve yerinde bazı gerçek cihazlara sahip olmak her zaman yararlıdır. Elbette gerçek cihazlar yerine bulut çözümleri ve emülatörleri kullanabilirsiniz, ancak gerçek bir mobil cihazla hiçbir şeyin karşılaştırılamayacağını bilmelisiniz. Sistem veya kullanıcı kabul seviyelerinde testler yapıyorsanız ve cihazlar size aitse, testler giderek daha gerçek hale gelir ve daha fazla gerçek hata yakalarsınız.
Yetenekli mobil test uzmanlarına duyulan ihtiyaç — Mobil testler çok büyük ve gelecek vaat eden bir pazardır, ancak şirketler hala yetenekli insan eksikliğinden muzdariptir. Ünlü olmak istiyorsanız, şansınızı deneyebilir ve mobil testçi pozisyonuna girebilirsiniz! Geleneksel yaklaşımlar ve düzenli test yöntemleri muhtemelen kimseyi mutlu etmeyeceğinden, yaratıcı, yetenekli ve eğitimli test uzmanlarına ihtiyaç vardır.
Hareket halinde olmam gerekiyor — İnsanlar beni mobil test ortamlarına davet ettiğinde, birçok masanın mobil cihazlarla dolu olduğunu görüyorum ve testçiler koltuklarından testlerini çalıştırıyor ve sonuçlarını test yönetimi aracında işaretliyor. Çoğu zaman hareketsiz sabit bir test yaklaşımı kullanırlar! Acı gerçek şu ki, ne kaçırdıklarının farkında değiller. Mobil uygulamalar, hareket halindeki insanlar tarafından kullanılıyor. Etrafımda bir sandalyeye oturup video izlemek, tweet atmak, e-posta göndermek için yürümeyi bırakan insan görmüyorum. Bütün bunlar hareket halindeyken yapılır.
Biz mobil test kullanıcıları mobilitenin savunucuları olduğumuzdan, testlerimizin en azından bir kısmını hareket halindeyken yapmaya biraz zaman ayırmamız gerekiyor. Bir test faaliyeti herhangi bir gerçek kullanıcı davranışını yansıtmıyor, uygulamıyor veya içermiyorsa, bunun yüzde 100 gerçek test olduğu sonucuna varamayız.
Bu blog yazısını okuduktan sonra, mobil test uzmanı olmanın sizin için gerçek bir acı olacağını düşünüyorsanız, şansınızı başka birçok işte deneyebilirsiniz. Ünlü bir sözde olduğu gibi, “Başarısızlıktan korkuyorsan, başarılı olmayı hak etmiyorsun.” Alternatif olarak, daha yapıcı olabilir ve bu yazıyı ünlü bir U2 şarkısı olan “Miracle Drug”ın sözleriyle bitirebilirim:
Of science and the human heart, there is no limit
There is no failure here, sweetheart, just when you quit…