Maymun ve Goril Testi Nedir? Örnekler, Fark

⚡ Akıllı Özet

Maymun testi, çalışan bir uygulamaya rastgele, planlanmamış girdiler vererek uygulamanın çalışmaya devam edip etmediğini gözlemler; böylece çökmeler, donmalar ve ele alınmayan durumlar, önceden tanımlanmış herhangi bir test senaryosu yazılmadan çok önce ortaya çıkarılır.

  • ???? Temel fikir: Rastgele tıklamalar, tuş vuruşları ve hareketler, beklenen sonuçlar yerine sistemin çökme noktalarını araştırır.
  • 🦍 Goril zıtlığı: Gorilla testi bir modülü tekrar tekrar zorlarken, monkey testi uygulamanın tamamında dolaşır.
  • ???? Üç sınıf: Aptal, zeki ve parlak maymunlar, test edilen sistem hakkında ne kadar bilgi sahibi oldukları bakımından farklılık gösterirler.
  • 🇧🇷 Dürüst bir uzlaşma: Ucuz ve hızlı çalıştırılabilir, ancak kusurların tekrarlanması zordur ve kapsama alanı garanti edilemez.
  • takım: Android UI/Uygulama Test Aracı Monkey, MonkeyRunner ve benzeri araçlar otomatik olarak olay akışları oluşturur.
  • 🎯 En uygun: Erken sürümler, etkileşimli arayüzler ve kararlılık testleri, her zaman betik tabanlı ve keşifsel testlerle birlikte yürütülür.

Yazılım testinde maymun testi ve goril testinin karşılaştırılması

Maymun testi nedir?

Maymun testi Maymun testi, test uzmanının önceden tanımlanmış test senaryoları olmadan bir uygulamaya rastgele girdiler girerek uygulamanın nasıl davrandığını, özellikle de çöküp çökmediğini kontrol ettiği bir yazılım test tekniğidir. Maymun testinin amacı, deneysel, senaryosuz etkileşim yoluyla hataları ve kusurları bulmaktır.

İsmi, aşağıda gösterilen basit bir resimden geliyor.

Maymun testi sırasında rastgele girdiler giren, maymun rolünü üstlenen test uzmanı.

  • Maymun testi yönteminde, test eden kişi (ve bazen geliştirici) "maymun" olarak kabul edilir.
  • Bir maymun bilgisayar kullansaydı, sistemi anlamadan rastgele görevler yerine getirirdi.
  • Benzer şekilde, test uzmanı da önceden herhangi bir test senaryosu tanımlamadan, test edilen sisteme rastgele girdiler uygulayarak hataları bulur.
  • Bazı durumlarda maymunlar üzerinde yapılan deneylerin amacı şudur: birim testi or GUI testi.

Goril Testi Nedir?

Goril testi Yazılım test etme tekniğinde, programın bir modülü, doğru çalıştığını ve herhangi bir kusur içermediğini doğrulamak için tekrar tekrar test edilir.

Tek bir modül, tamamen aynı şekilde yüz veya daha fazla kez çalıştırılabilir; bu nedenle gerilla testi "sinir bozucu test" olarak da bilinir. Maymun testi uygulamaya rastgele yayılırken, gerilla testi tek bir noktayı, bozulana veya sağlam olduğu kanıtlanana kadar derinlemesine inceler.

Maymun Testi Türleri

Maymun testi, test edenin sistem hakkında ne kadar bilgi sahibi olduğuna göre kategorilere ayrılır. Aşağıdaki diyagram üç türü özetlemektedir.

Aptal, zeki ve parlak maymun test türleri

  • Ahmak maymun: Testi yapan kişinin sistem veya işleyişi hakkında hiçbir fikri yoktur ve girilen herhangi bir bilginin geçerli olduğuna dair hiçbir güvence bulunmamaktadır.
  • Akıllı maymun: Test eden kişi, sistem, amacı ve işlevselliği hakkında net bir fikre sahiptir, sistemde gezinir ve geçerli girdiler sağlar.
  • Zeki maymun: Test uzmanı gerçek kullanıcı davranışlarından yola çıkarak hataların nerede ortaya çıkma olasılığının yüksek olduğunu belirleyebilir.

Maymun Testi, Goril Testi ve Ad-hoc Test Karşılaştırması

Maymunlar üzerinde yapılan testler, goril üzerinde yapılan testler ve geçici testler Doğaçlama bir havaya sahip oldukları için sıklıkla karıştırılırlar. Aşağıdaki iki tablo onları birbirinden ayırıyor.

Maymun Deneyi vs. Goril Deneyi

Maymun Testi Goril Testi
Önceden tanımlanmış özel test senaryoları olmaksızın, rastgele gerçekleştirildi. Ne önceden tanımlanmış ne de rastgele; aynı kontroller tekrar tekrar yapılıyor.
Sistemin tamamında gerçekleştirilir ve birçok test senaryosunu içerebilir. Az sayıda test senaryosuyla, seçilen birkaç modül üzerinde gerçekleştirildi.
Amaç, sistem çökmesini kontrol etmektir. Amaç, modülün düzgün çalışıp çalışmadığını kontrol etmektir.

Maymun Testi vs. Ad-hoc Test

Maymun Testi Geçici Test
Önceden tanımlanmış özel test senaryoları olmaksızın, rastgele gerçekleştirildi. Planlama veya dokümantasyon yapılmadan gerçekleştirildiği için test senaryoları veya SRS hazırlanmamıştır.
Test edenler sistemin ne olduğunu veya ne işe yaradığını bilmeyebilirler. Test işlemine başlamadan önce test uzmanının sistemi iyice anlaması gerekir.
Amaç, sistem çökmesini kontrol etmektir. Amaç, sistemi rastgele alt parçalara ayırmak ve işlevselliklerini kontrol etmektir.

Maymun Deneylerinin Avantajları ve Dezavantajları

Bu teknik, planlamayı hız uğruna feda ettiği için, avantajları ve dezavantajları aynı özellikten kaynaklanmaktadır.

Maymun Deneylerinin Avantajları

  • Yeni türdeki hatalar: Test uzmanı, önceden belirtilen senaryoların dışında çalışmakta özgürdür; bu da kimsenin senaryoya eklemeyi düşünmediği hataları ortaya çıkarır.
  • Yürütülmesi kolay: Rastgele verileri rastgele eylemlerle eşleştirmek, sistemi çalıştırmanın hızlı bir yoludur.
  • Less Nitelikli kişiler: Maymunlar üzerinde yapılan testler genellikle çok deneyimli test uzmanlarına ihtiyaç duyulmadan gerçekleştirilebilir.
  • Less pahalı: Yazılım tabanlı bir yazılım paketine kıyasla kurulumu ve çalıştırılması çok daha az masraf gerektirir.

Maymun Deneylerinin Dezavantajları

  • Hataların tekrarlanması zor olabilir: Girişler rastgele olduğundan, kaydedilmiş bir başlangıç ​​değeri olmadan bir hatayı yeniden oluşturmak mümkün olmayabilir.
  • Less doğruluk, kesinlik: Testi yapan kişi kesin bir senaryo tanımlayamaz ve kapsanan konuların doğruluğunu garanti edemez.
  • Teknik uzmanlık hâlâ yardımcı oluyor: Bulguların anlamlı kalabilmesi için test uzmanlarının ilgili alanda iyi bilgiye sahip olmaları gerekir.
  • Verime göre yavaş: Çalıştırma süreçleri uzun süre devam edebilir ve yine de az sayıda hata döndürebilir, bu da sistemde boşluklar bırakabilir.

Maymun Testi Nasıl Yapılır?

Bir araç tarafından yönlendirildiğinde maymun testi çok daha verimli hale gelir ve bu test bir araç karşısında çalıştırılabilir. Android Hem masaüstü hem de web uygulamalarının geliştirilmesi. Genel süreç şu şekildedir:

  1. Test edilecek uygulamayı, onu çalıştıracak araç veya özel sunucuya kaydedin.
  2. Test paketini oluşturmak için aracın ihtiyaç duyduğu referansları ve yapılandırmayı hazırlayın.
  3. Oluşturulan test paketini çalıştırın.
  4. Aracın günlük kaydını tutmasına izin verin; "maymun testi" günlük dosyası, oluşturulan her olayı ve sonuçlarını kaydeder.
  5. Sistem çökme noktasına ulaşana kadar çalıştırmaya devam edin; bu noktada hatalı işlem günlüğe kaydedilir.
  6. Raporu ilgili ekiple paylaşın ve test verilerini ileride başvurmak üzere saklayın.

Her kaydı saklayın. Rastgele bir çalıştırma, ancak olay dizisi ve onu üreten tohum kaydedilmişse daha sonra işe yarar. kusur yönetimi Çökmenin nedenini tekrarlanabilir bir girdiye bağlayabiliriz.

Maymun Testi Araçları

Maymun testi genellikle otomatiktir, çünkü bir makine bir kişinin birkaç düzine olay üretmesi süresince binlerce olay üretebilir. Yaygın olarak kullanılan seçenekler şunlardır:

  • Kullanıcı Arayüzü/Uygulama Eğitmeni Maymun: yerleşik bir komut satırı aracı Android içinde çalışan adb kabuk ve dokunma, hareket ve tuş basma gibi kullanıcı olaylarının yanı sıra sistem düzeyindeki olayların da rastgele oluşturulmuş akışlarını bir cihaza veya öykünme yazılımına gönderir.
  • Maymun Koşucusu: ayrı Python API Bu, bir iş istasyonundan aygıtları ve emülatörleri çalıştıran, belirli komutlar gönderen ve ekran görüntüleri yakalayan bir araçtır. İsmine rağmen, egzersiz maymunu ile aynı araç değildir.
  • UI Otomasyoncusu ve Appium: genel mobil test Derleme sırasında yarı rastgele olay dizilerini tetiklemek üzere programlanabilen çerçeveler.
  • AFL gibi fuzzing araçları: Aynı rastgele girdi fikri, jestler yerine verilere uygulandığında da ele alınmıştır. tüy testi.

Maymun testi için araç desteği, betik tabanlı testlere göre daha sınırlıdır. otomasyon testiBu nedenle çoğu ekip, özel bir ürün satın almak yerine, mevcut çerçeveleriyle birlikte genel bir olay oluşturucu kullanmayı tercih ediyor.

Maymun Testi Ne Zaman Kullanılır?

Maymun testi, planlı testin genel bir alternatifi olmaktan ziyade, belirli durumlarda yerini hak etmektedir.

Şu durumlarda kullanın:

  • Erken aşamadaki bir sürüm, resmi test senaryoları oluşturulmadan önce basit bir kararlılık kontrolüne ihtiyaç duyar.
  • Arayüz oldukça etkileşimli; oyunlar, çizim araçları, medya oynatıcılar içeriyor ve gerçek kullanıcı davranışını tahmin etmek zor.
  • Islanmak mı istiyorsunuz yoksa... stres Sistem çökmelerini, bellek sızıntılarını ve ele alınmayan durumları saatlerce araştıran bir çalıştırma işlemi.
  • Yayınlanan sürüm, önceden belirlenmiş kontrollerden geçti ve siz, senaryonun hiç dokunmadığı her şey için bağımsız bir tarama yapmak istiyorsunuz.

Şu durumlarda bundan kaçının:

  • Bir gerekliliğin yerine getirildiğine dair tekrarlanabilir kanıtlara ihtiyacınız var; yazılı bir belgenin görevi de budur. test durumu.
  • Derleme o kadar kararsız ki, her çalıştırma anında çöküyor ve bu da her şeyi ilk hatanın arkasına gizliyor.
  • Zaman kısıtlı, çünkü rastgele bir koşu herhangi bir şey bulma garantisi vermiyor.

Pratikte en iyi sonuçlar yaklaşımların birleştirilmesinden elde edilir: senaryo tabanlı testler bilinen akışları kapsar, keşifsel test Bilinmeyeni kasıtlı olarak araştırır ve maymun testi, ikisinin de asla olmayacağını varsaydığı her şeye saldırır.

SSS

Bu isim, sonsuz maymun imgesinden esinlenmiştir: Bir maymunun yeterince uzun süre rastgele tuşlara basması sonunda anlamlı bir şey üretmesine yol açar. Yazılıma uygulandığında, rastgele girdi sonunda hiçbir tasarımcının tahmin etmediği durumlara ulaşır.

Keşifsel testler kasıtlıdır: bir test uzmanı bir hipotez oluşturur, bunu araştırır ve uyum sağlar. Maymun testleri ise tasarım gereği yönlendirilmemiş testlerdir. Biri yargıya, diğeri ise hacme ve rastgeleliğe bağlıdır.

Rastgele girdi prensibini paylaşırlar ancak hedefleri farklıdır. Maymun testi, bir arayüzde kullanıcı olaylarını tetikler. Fuzzing ise genellikle güvenlik açıklarını aramak için ayrıştırıcılara ve API'lara hatalı veri besler.

Chaos Monkey, kaos mühendisliğine ait bir projedir: dayanıklılığı test etmek için rastgele hizmetleri devre dışı bırakır veya altyapıyı bozar. Ortak fikir rastgeleliktir, ancak hedef kullanıcı arayüzü değil, çalışan platformdur.

Modeller, olay akışını gerçek kullanıcıların izlediği yollara doğru yönlendirebilir ve aptal bir maymunu daha akıllı bir maymuna dönüştürebilir. Ayrıca, yinelenen çökme günlüklerini kümelendirir ve hangi rastgele hataların bir geliştiricinin önce dikkatini hak ettiğini sıralar.

GitHub Yardımcı Pilotu Olay üreteçleri, tohum işleme, günlük ayrıştırıcıları ve çökme sınıflandırma komut dosyaları gibi unsurları içeren test ortamını hızla tasarlar. Rastgelelik stratejisi ve geçme kriterlerinin ise bir test uzmanı tarafından tanımlanması gerekmektedir.

Faydalı ölçümler arasında bin üretilen işlem başına çökme sayısı, bulunan benzersiz hata sayısı, çalıştırma sırasında ulaşılan kod kapsamı ve ilk hataya kadar geçen süre yer almaktadır. Bunları tek bir çalıştırmayı okumak yerine, derlemeler genelinde eğilim olarak inceleyin.

Rastgele tohum değerini ve olay günlüğünü kaydedin. Tohum değerini kabul eden araçlar aynı diziyi tekrar oynatacak, böylece hata kısa ve tekrarlanabilir bir duruma indirgenerek normal bir hata olarak kaydedilebilecektir.

Bu yazıyı şu şekilde özetleyin: