EĞLENCELİ BİR DÜNYA: GAME TESTING

EĞLENCELİ BİR DÜNYA: GAME TESTING

Game testing uzun zamandır ilgilendiğim, araştırdığım ve üzerinde çalıştığım bir test alanı. Gerek test süreçleri gerekse test teknikleriyle farklılıklar gösterdiği gibi, bu alanda çalışan ya da çalışmayı arzulayan test uzmanlarından da farklı yetkinlikler beklemektedir.

Game testing, genel anlamda temel yazılım test süreçleri üzerine oturmuş olsa da, performans, stabilite ve uygunluk testleri daha detaylı ve titiz bir şekilde yürütülmektedir. Eğer game testing tanımını kitabi olarak yapmak istersek; bir video game uygulamasında, kaliteyi artırmak için hataların belirlenmesi, tutarlılık ve performans için gerekli geliştirmelerin yapılması olarak ifade edebiliriz.

Game Testing Doğuşu

Öncelikle game testing birçok tekrarlı süreçten meydana gelmektedir. Bu tekrarlı süreçler, her build sonrasında düzenli olarak mutlaka test edilmelidir. Bu anlamda regression testleri büyük önem kazanır. Bütün oyun testleri, oyunun boyutuna ve oyunu geliştirmek için gereken zamana bakılmaksızın temel bir yapıyı takip eder. Oyun testlerinde ilk olarak oyun kurallarını ve gereksinimleri net olarak anlamak çok önemlidir. Oyun mimarisini, oyun mimarisi içerisindeki bileşenleri, dosya mimarisini ve akış yapısını, dosya yapısını ve oyunla ilişkili bağımlılıklarını çıkarmak bunları anlamak çok önemlidir.Oyunun her yeni prototipinde, teknik özelliklerde herhangi bir değişiklik olup olmadığının kontrol edilmesi, yeni prototipe göre yeni test senaryolarının oluşturulması ve test süreçlerine ait dokümanların mutlaka güncellenmesi gerekmektedir.

Özetleyecek olursak, çıkan yeni bir build sonrasında var olan bugların fixlendiğinin kontrolü önemli olduğu kadar, var olan sistemin bozulmadığının kontrol edip onaylanması ve doküman güncellemesinin yapılması da bir o kadar önemlidir.

Bir game testerın, game test sürecine başlamadan önce ilk olarak fonksiyonel ve fonksiyonel olmayan gereksinimleri belirlemesi ve bu gereksinimleri proje hedef kitlesine ve proje amacına göre sınıflandırması gerekmektedir. Bunlarla birlikte kullanıcı ve sistem gereksinimlerinin tanımlanması, fonksiyonel olmayan özelliklerin çıkarılması ve etki alanlarının belirlenerek önceliklendirilmesi gerekir. Game tester tarafından test süreçlerinde yapılması beklenenleri şu şekilde özetleyebiliriz:

Fonksiyonel gereksinimlerin eksiksiz ve birbiri ile tutarlı olduğu kontrol edilmelidir. Çünkü game testing için süreç sürekli olarak uçtan uca değerlendirilmelidir. Eğer birbiri ile çelişen gereksinimler mevcutsa bunlar belirlenmeli ve gerekli kişilerle el sıkışıp, test sürecine dahil edilmeli ya da süreç dışına alınmalıdır. Aynı şekilde birbirine bağımlı gereksinimlerde belirlenerek, hazırlanan test senaryoları bu doğrultuda hazırlanmalıdır.

Peki bir game tester olmak için ne gibi özelliklere sahip olması gerekir.

  • Video oyun konsolu denetleyicilerini detaylı olarak bilmesi ve anlaması
  • Sunucu tarafında performans ve yük testlerinin yapılması ve sunucuya özel testlerle hataların loglanması
  • Kullanıcı ara yüz testleri, birim testleri veri doğrulama için komut dosyaları ve araçlar yazmaya yardımcı olma

Black-box testlerinin yanı sıra white-box testing de game testerlar için büyük öneme sahiptir. IOS ve Android platformlarda teknik gereksinimleri bilip bu doğrultuda testler gerçekleştirmelidir. Game tester, projeye ve proje içerisindeki değişimlere hızla uyum sağlayabilmeli ve proje içerisinde kullanılacak donanımsal ve yazılımsal araçları hızlı bir şekilde anlayıp sürece bunlarla birlikte adapte olmalıdır. Ve tabii ki oyunlara ve oynanabilirliğe aşinalık da bir game testerda aranan özellikler arasındadır.

Tüm bunların dışında bir test uzmanında olmazsa olmaz özellikler bir game tester içinde geçerli özellikler arasındadır. Bunları ise şu şekilde özetleyebiliriz;

  • Yazılım geliştirme süreçlerine hâkim olmak
  • Yazılım test süreçlerine hâkim olmak ve bu süreçleri etkili bir biçimde uygulamak
  • Test kalite süreçlerine ve test metodolojisinin iyileştirilmesinde katkı sağlamak
  • Kalite ölçütlerinin, KPI’ların hedeflerin ve hedef kriterlerin izlenmesine ve uygulanmasına katkı sağlamak
  • Yüksek iletişim becerilerine sahip olmak
  • Gerekli teknik donanıma sahip olmak

Popüler game testing tekniklerinden bahsedecek olursak mobil test teknikleriyle ya da web test teknikleriyle önemli benzerlikleri olduğu gibi sadece kendine özgü test teknikleri de mevcuttur.

Game test tekniklerinden biri olan “Functional Testing”, oyun içerisindeki genel problemleri, kullanıcı arayüzü ve grafik problemleri gibi önemli önyüz problemlerinin bulunmasında kullandığımız test tekniğidir. Burada asıl amaç, kullanıcıya sunulan oyunun, kullanıcı dostu bir arayüze sahip olmasıdır. Örneğin functional testingde, renk ve temalar kontrol edilir, menü yapıları, ekran yönü, ekran boyutu, ekran çözünürlüğü, loading time, timeout süresi, oyun kuralları gibi sistem navigasyonları test edilir.

Compability Testing”de ise, test edeceğimiz oyunun farklı cihazlarda, farklı donanım ve yazılım konfigürasyonlarıyla uyumlu olup olmadığının testidir. Bu anlattıklarım sizlere hiç yabancı gelmedi biliyorum. Mobile testingde farklı cihazlarda, farklı versionlarda farklı işletim sistemlerinde, farklı ekran boyutu ve çözünürlüklerinde testlerimizi zaten titizlikle gerçekleştiriyorduk. Ya da bir web testinde farklı browserlarda, farklı hızlarda testlerimizi gerçekleştiriyorduk. Tüm bunları game testing özelinde yaptığımızda ise bu karşımıza compability testing ismiyle çıkıyor.

Performance Testing”de ise oyunun genel performansı kontrol edilir ve oyun hızını optimize etmek için performans ayarları yapılır. Performans testinde mutlaka kontrol edilmesi gereken bazı parametreler mevcuttur. Bunlar;

  • Client ve server için ayrı ayrı response timelar mutlaka kontrol edilir. Transaction tamamlanma süreleri, düşük hafıza ve pil, oyunun indirilme süresi, oyunun güvenilebilirliği ve ölçülebilirliği test edilir.
  • Pil tüketimi ve grafik performansı mutlaka performans testlerine dahil edilir.
  • İşlemci ve bellek kısıtlamaları performans testi kapsamında kontrol edilir.
  • Network bağlantılarının test edilmesi de performans testleri kapsamında kontrol edilmesi gereken önemli bir faktördür. Burada uygulamanın Wi-fi, 2G, 3G, 4G bağlantı durumlarındaki performansları kontrol edilir.

Conformance / Compliance Testing”de ise; uygulamanın (yani oyunun) marketplace uygunluğu test edilir. Burada oyunun Apple Store ya da Play Store’da tabii olduğu politikalar kontrol edilir. Uyumluluk, PEGI ve ESRB gibi düzenleyici kurumlara atıflarda bulunulur. Yasaklanmış içerikler gibi kurumsal politika uyumluluğu test edilir. Yasaklı ya da sakıncalı içerikler varsa bunlar belirlenip raporlanır. Lisans onayına sunulurken, tek bir ihlal bile oyunun reddedilmesine neden olabilir. Bu durum da fazla test ve ekstra maliyetlere yol açacaktır. Örneğin Avrupa ülkelerinde sunulacak fakat Amerika için yazılan bir oyun için, PAL dönüşüm testlerinin ve NTSC dönüşüm testlerinin dikkatli yapılması gerekmektedir.

 

Eğer yazmış olduğumuz oyun, küresel pazar için hedefleniyorsa “Localization Testing” önemi kat be kat artarak karşımıza çıkacaktır. Oyun başlıkları, içerik ve metinlerin gerekli dillere uygun bir şekilde çevrilmesi ve tüm bunların birden çok dilde ve cihazda test edilmesi gerekecektir. Localization testlerine örnek olarak Orta Doğu/Kuzey Afrika bölgelerine özel yerelleştirmelerin test edilmesi, Arapça için sağdan sola metin desteği ve çift yönlü ekran testleri, Pseudo localization testleri, Doğu Asya dilleri için double-byte character testleri, yerel saat/tarih, para birimi, adres ve diğer oyun gereksinimlerinin testleri verilebilir.

Soak Testing” oyunun çeşitli çalışma modlarında, uzun süre çalışılabilirliğinin test edilmesini içerir. Soak test ile memory leak ve rounding hatalara odaklanırız. Örneğin bir oyun çalışırken, oyun konsolu aniden restart edilir ve veri bütünlüğünün bozulmadığı kontrol edilir.

“Recovery Testing” tekniğinde ise uygulamanın çöktüğü, uygulamaya ait donanımsal arızaların benzer problemlerin en kısa süre içerisinde, en iyi şekilde ve nasıl kurtarılacağına dair senaryolarla uygulama test edilir ve bu soruların cevabı aranır. Uygulama başarısız senaryolar için zorlanır ve bu başarısız senaryolarda uygulamanın nasıl ve ne kadar sürede kurtarıldığı kontrol edilir. Örneğin bir oyun çalışırken, oyun konsolunun aniden kapatılıp tekrar açılması gibi bir senaryoda uygulamanın (oyunun) veri bütünlüğünün sağlandığı kontrol edilir.

 

“Security Testing” yazılımın dış tehditlere karşı ne kadar güvenilir çalıştığını kontrol etmek için yapılır. Uygulamaya karşı tehdit oluşturabilecek dış etkenler veri koruması, kontrolsüz sistem erişim kısıtlamaları, veri ihlali, işletim sistemi gibi başlıklar detaylı olarak kontrol edilir. Örneğin web üzerinden bir oyun sitesine giriş yapılıp /login url’i,  /play olarak değiştirildiğinde oyunlara direk erişim izni vermemelidir.

“Other Game Testing” de ise gerçek veya sanal karakterlerin test edilmesi söz konusudur. Çok oyunculu bir video oyununda sunucuya bağlantı ve oyun durumunun oyuncular arasında ve sistemle senkronizasyonu için test edilmesi gereken kritik alanlardır.

 

Ve her Game Tester’ın bilmesi gereken bazı test metrikleri vardır;

DAU/MAU yani “Daily Active Users – Monthly Active Users” yani “Günlük – Aylık Active Kullanıcı Sayısı” 😀 . Üzerinde çalıştığımız uygulamayı (oyunu) hergün oynayan aktif kullanıcıların aylık aktif kullanıcılara oranıdır.

Session, kullanıcının uygulamayı her açtığı an session – oturum olarak adlandırılır. Burada önemli nokta, günlük aktif kullanıcı sayısı başına düşen oturum sayısıdır.

Download Rank, aylık oyun indirme rakamlarına göre belirli bir store’da (iOS, Android Play) oyunun kaçıncı sırada olduğu.

Retention, özellikle Android Game Tester’lar için, ücretsiz oyunlar çok önemlidir. Rentention oranını hesaplamak için kullanıcıları uygulamanın indirildiği güne göre gruplara ayrılır.

Performans metriklerinde ise, çevrimiçi oyunların veya kalıcı oyunların performansını izlemek için kullanılan bir metriktir. Performans ölçümleri, değişen özellikleri ve güncellemeleri izlemek için kullanılır.

 

Son olarak sizlere Game Testing’deki temel risklerden bahsetmek istiyorum,

  • Test esnasında oyunla ilgili, hedeflenen kitle için zorlayıcı case’ler oluşturulmamış olabilir. Bu durumda farklı case’lerin göz ardı edilmesi anlamına gelecektir.
  • Test edilen oyunun, kullanıcı dostu bir ara yüzü olmayabilir.
  • Oyundaki teknik sorunlar, kritik hatalar, kötü video gibi durumlardan dolayı oyunun başarısız olma yüzdesi çok yüksektir. Sonuç olarak tüm projenin fail olmasıyla yüz yüze bile gelinebilinir.
  • Oyun, geliştirme maliyeti bütçesini aşması, oluşabilecek en kritik riskler arasındadır. Böyle bir durumla karşılaşıldığında tüm sürecin uçtan uca incelenmesi, revize edilmesi gerekecektir.
  • Eğer oyun basit ve estetik bir tasarıma sahip değilse, oyunun oynanma yüzdesinde ciddi düşüşler meydana gelir, bu durumda aktif kullanıcıdan, maliyete kadar ciddi sorunlara yol açacaktır.

Gördüğünüz üzere keyifli, insana haz veren bir test süreci daha. Umarım bu keyifli dünya ile ilgili birazcık da olsa bilgi sahibi olmuşsunuzdur. Belli mi olur belki geleceğin game tester’larından biri bu yazıyı okuma fırsatı bulur.

yazı

Ben Göknur BATI. Farklı projelerde test uzmanı, test analist ve test otomasyon uzmanı pozisyonlarında çalışıyorum. Şu anda bir finans projesinde test otomasyon uzmanı olarak çalışmaya devam ediyorum. Teste aşkla bağlı olduğumdan her konuyu testle birleştirip, harmanlayıp, araştırmak incelemek en büyük zevkim. Psikolojiye karşı özel bir ilgim var. Fırsat buldukça tiyatro ve müzik yapmayı çok seviyorum.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir