Android Uygulamaları için Kötü Huylu Test Yaratımı

Benzer belgeler
Model-Tabanlı ve Rastgele Karma Yöntem

Android Uygulamaları için Kötü Huylu Test Yaratımı. Bad Behaving Test Generation for Android Applications

SolidWorks Macro, SolidWorks API. Yusuf MANSUROĞLU Mühendislik Hizmetleri Müdür Yardımcısı

UYGULAMA YARDIM DOKÜMANI

DS150E Kullanıcı El Kitabı. Dangerfield June V3.0 Delphi PSS

Model No : IP610 IP Kamera Kurulum/Kullanım Kılavuzu

Türk Telekom Güvenlik Güvenli Aile(Safe Family) Ürünü Kurulum Kılavuzu

VERİ YAPILARI. GRAPH LAR Düzce Üniversitesi Teknoloji Fakültesi ÖĞR.GÖR.GÜNAY TEMÜR 1

Boğaziçi Üniversitesi Bilgi İşlem Merkezi. Web Yönetimi Birimi. Drupal Kullanım Kılavuzu

ASP.NET ile Bir Web Sitesi Oluşturma

SİGORTACILIK İÇİN FARKLI BİR GELECEK TASARIMI

KULLANICI PORTALI KOLAY KULLANIM KLAVUZU

. ROBOTİK VE KODLAMA EĞİTİMİ ÇERÇEVESİNDE ÖĞRETİM YILI BİLİŞİM TEKNOLOJİLERİ DERSİ ÜNİTELENDİRİLMİŞ YILLIK DERS PLANI

Android Ders Notları

TS EN ISO KONTROL LİSTESİ ŞABLONU

MOBİL UYGULAMA GELİŞTİRME

Hızlı Başlangıç: Ses ve Görüntüyü kullanma

YZM 2116 Veri Yapıları

Pencereler Pencere Özellikleri

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

MapCodeX MapLand Kullanım Kılavuzu

PRUSA İSG KULLANIM KILAVUZU

TS EN ISO EŞLEŞTİRME LİSTESİ

Önsöz. İçindekiler Algoritma Algoritma Nasıl Hazırlanır? Yazılımda Algoritma Mantığı Nedir? 1.2. Algoritma Örnekleri ve Sorular

ANDROID İŞLETİM SİSTEMLERİ İÇİN KURULUM. Kurulum Ön Hazırlık (Tamamını Okumadan Lütfen KURULUMA BAŞLAMAYIN )

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi KULLANICI ARAYÜZ. BLM401 Dr.Refik SAMET

Course Online. Güncelleme: Haziran 24, 2013

Ecza Depolarına Ait E-Fatura Aktarım Modülü

AGÜ UIS ÖĞRENCİ DERS PROGRAMI HAZIRLAMA KILAVUZU

YZM 2105 Nesneye Yönelik Programlama

COPA TOUCH LINE SPLİT KLİMA WiFi UYGULAMASI KULLANIM KILAVUZU. WiFi Klima Uygulamasını cep telefonunuza indirmek için QR kodu okutun.

dmags Türkiye nin En Büyük Dijital Dergi Mağazası

KALDIRAÇLI ALIM SATIM İŞLEMLERİ HALKFX META TRADER 4 MOBİL UYGULAMALAR KULLANIM KILAVUZU

Ev aletinizi geleceğe bağlayın. Quick Start Guide

Kanal Ziyaret Sonuçlandırma Ekranı Kullanım Kılavuzu

Görev Çubuğu Özellikleri

OPNET PROJECT EDİTÖRDE. Doç. Dr. Cüneyt BAYILMIŞ

KOD PARÇACIKLARI 1 / 5

Kullanıcı Kılavuzu. Ürün : Değişiklik tarihi: Versiyon: 1,0 Özet: TradeMasterFX Android. TradeMasterFX Android Kullanıcı Kılavuzu

Uzaktan Eğitim Programlarına Giriş Kılavuzu

XMail. Kurulum ve Senkronizasyon Ayarları Rehberi

ARTIK EKİPLERİNİZLE. SINIRLARIN ÖTESİNDE... DAHA KOLAY ve DAHA

PALET TEYİT EKRANI EĞİTİM NOTU

Ecat 8. Hakbim Bilgi İşlem A.Ş. Versiyon

1. Prestigio MultiPad 2. AC Adaptör 3. Taşıma Kılıfı 4. USB Kablosu 5. Hızlı Başlangıç Klavuzu 6. Garanti Kartı 7. Yasal Güvenlik Uyarıları

UZAKTAN EĞİTİM YÖNETİM SİSTEMİ (MMYO)EĞİTMEN YARDIM KILAVUZU

HASTA ORDER İŞLEMLERİ

NB Macro Kullanımı Hakkında Genel Bilgiler

SAP ÜRETİM TEYİT EKRANI EĞİTİM NOTU

Horoz Programlanabilir Zaman Rölesi

Android de Çökme Tespitini İyileştirme Amaçlı Model-Tabanlı ve Rastgele Karma Yöntem

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

Temel Bilgi Teknlolojileri 1. Ders notları 5. Öğr.Gör. Hüseyin Bilal MACİT 2017

MUĞLA SITKI KOÇMAN ÜNİVERSİTESİ. ECTS Info Pack. ECTS Bilgi Paketi Çalışmaları. Bilgi İşlem Daire Başkanlığı YAZILIM-WEB GRUBU

Groupama Sigorta dan 7/24 Doktorum

SP-1101W/SP-2101W Hızlı Kurulum Kılavuzu

T.C GAZİOSMANPAŞA ÜNİVERSİTESİ

Linux Kurulumu (Sürüm 1.52) İçindekiler

KALDIRAÇLI ALIM SATIM İŞLEMLERİ HALKFX META TRADER 4 MOBİL UYGULAMALAR KULLANIM KILAVUZU

Metin İşlemleri, Semboller

AKOFİS.NET - PRATİK BİLGİLER. Bu sunum; siz değerli müşterilerimizin web sitemizi kolay kullanmanız için pratik bilgiler vermeyi amaçlamaktadır.

MENÜLER. Powerpoint 2007 de yedi temel menü vardır. Bunlar;

GW420. Kurutma Makinesi Bilgisayar Kullanım Klavuzu. Lütfen kurulumdan önce dikkatle okuyunuz.

SÜSBİR PORTAL. SÜS BİTKİLERİ ÜRÜN ANONS ve SATIŞ PORTALI.

STK6 KURUTMA KONTROL ÜNİTESİ KULLANMA KLAVUZU V1.1

EDOWEB (EK DERS OTOMASYONU) Mutemet İşlemleri BİLGİ İŞLEM DAİRE BAŞKANLIĞI 2018

İntegral Analiz Mobil Uygulama Kullanım Kılavuzu V1.0.1

1. Prestigio MultiPad 2. Sarj Adaptörü 3. Taşıma Kılıfı 4. USB Kablosu 5. Hızlı Başlangıç Klavuzu 6. Garanti Belgesi 7. Yasal ve Güvenlik Uyarıları

Akıllı Ortamlarda Sensör Kontrolüne Etmen Tabanlı Bir Yaklaşım: Bir Jadex Uygulaması

EĞİTİM-ÖĞRETİM YILI BİLİŞİM TEKNOLOJİLERİ VE YAZILIM DERSİ 6. SINIF 2. DÖNEM 2. SINAV ÇALIŞMA NOTLARI

KULUÇKA PRG. VERSION KULLANMA KLAVUZU

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

İSTATİSTİK EXCEL UYGULAMA

AGÜ UIS ÖĞRENCİ DERS PROGRAMI HAZIRLAMA KILAVUZU

Ipad,Ipone ve Android Mobil Aygıtlar İçin İş Zekası Mobil Uygulaması Kullanıcı Kılavuzu

AGSoft Çocuk Gelişim Takip Programı Kullanım Kılavuzu

Krm.MobilTapu Uygulaması Kullanımı

K12 Uzantılı E Posta Kullanım Ve Kurulum Klavuzu

ELEKTRONİK BELGE YÖNETİM SİSTEMİ (EBYS)

İletişim.

Sedna Mobile TourSale

Ver Kullanıcı Dokümanı

Kopyalama ve Taşıma konularıyla ilgili daha değişik uygulamalar yaparak bu konunun pekiştirilmesini sağlamanız yararınıza olacaktır.

Bireysel İnternet Şubesi

MATLAB a GİRİŞ. Doç. Dr. Mehmet İTİK. Karadeniz Teknik Üniversitesi Makine Mühendisliği Bölümü

E-UYGULAMALAR VE DOKÜMAN YÖNETİM SİSTEMİ PROJESİ (EUP) ECZANE İŞLEMLERİ KULLANIM KILAVUZU

1) HĐZMET TAKĐP EŞLEŞTĐRME

TEMEL BİLGİ TEKNOLOJİLERİ SORU-CEVAP ÇALIŞMA NOTLARI

ecyber Kullanıcı Kılavuzu 1 / 1 1. ecyber hakkında Sistem gereksinimleri:... 2 Donanım:... 2 Yazılım: Kullanım Rehberi...

ÜNİTE TEMEL BİLGİ TEKNOLOJİLERİ İÇİNDEKİLER HEDEFLER POWERPOINT Asıl Slayt ile Çalışma Animasyonlar Geçişler Eylemler

LOGO 3 SERİSİ: KULLANICI DENEYİMİNİN BİTMEYEN YOLCULUĞU

SAP Sisteme Kayıtlı Personel Fotoğrafını Dışarı Alma

Microsoft Office Access Ders İçeriği 25 Saat. Access Temel 10 saat

SLCM Program Müfredatlarının (Gereksinim Kataloğu) yaratılması

Cihazınızın İnternet ayarlarını yapabilmek için lütfen aşağıdaki adımları takip ediniz;

Unitech PA 690 ve Unitech PA 692 El Terminallerinde Bluetooth Bağlantısı Yapmak

Dokümanlar Ekranı Kullanım Kılavuzu


Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Transkript:

Android Uygulamaları için Kötü Huylu Test Yaratımı Yavuz Köroğlu Alper Şen Bilgisayar Mühendisliği Bölümü Boğaziçi Üniversitesi, İstanbul/Türkiye yavuz.koroglu@boun.edu.tr depend.cmpe.boun.edu.tr 12. Ulusal Yazılım Mühendisliği Sempozyumu (UYMS 18)

Günümüzde Android Kullanımı Ortalama her günümüzün 3 saati yukarıdaki gibi geçiyor!

Günümüzde Android Kullanımı Ortalama her günümüzün 3 saati yukarıdaki gibi geçiyor! Sürekli hata mesajları alıyoruz.

Günümüzde Android Kullanımı Ortalama her günümüzün 3 saati yukarıdaki gibi geçiyor! Sürekli hata mesajları alıyoruz.

Günümüzde Android Kullanımı Ortalama her günümüzün 3 saati yukarıdaki gibi geçiyor! Sürekli hata mesajları alıyoruz.

Günümüzde Android Kullanımı Ortalama her günümüzün 3 saati yukarıdaki gibi geçiyor! Sürekli hata mesajları alıyoruz.

Otomatik Android Grafik Kullanıcı Arayüzü (GKA) Test Araçları Monkey: Rastgele (Random) A 3 E: Derinlik-Öncelikli (Depth-First) SwiftHand: Model Tabanlı Derinlik-Öncelikli DynoDroid: Yanlı-Rastgele (Biased-Random) Sapienz: Arama-Tabanlı (Search-Based) Q-Öğrenme Tabanlı (QBE): Makine Öğrenmesi Tabanlı (Koroglu et. al Yayınlandığı Yer: ICST 18) Yukarıdaki Bütün Araçlar Az Sayıda Çökme Bulabiliyor Çözüm: Kötü Huylu Test Yaratımı na odaklanmak.

Kötü Huylu Test Yaratımı (KHTY) Aracının Bulduğu Bir Hata Otomatik Yaratılmış Test

Kötü Huylu Test Yaratımı (KHTY) Aracının Bulduğu Bir Hata Mutasyona Uğratılmış Test

Kötü Huylu Test Yaratımı (KHTY) Test Altındaki Uygulama Test Yaratım Aracı (QBE) Kötü Huylu Test Yaratımı (KHTY) Yeniden Çalıştırma Test Sonuçları İyi Huylu Test Kümesi + GKA Modeli Kötü Huylu Test Kümesi Test Sonuçları Şekil: Kötü Huylu Test Yaratımı (KHTY) Ana Fikir Ana Akış Var olan testleri mutasyona uğratarak test kümesini zenginleştirmek. 1 Test Kümesi ve GKA Modeli yaratımı. 2 Test Kümesi nin mutasyonu. 3 Test Kümesi nin tekrar çalıştırılması.

GKA Modeli (M) Genel olarak, Çoğu uygulamanın bir modeli bulunmamaktadır. Uygulama modelinin dinamik olarak üretilmesi. Bu model Genişletilmiş Etiketli Durum-Geçiş Sistemi (GEDGS) dir. Bu modelde, 1 Düğümler (nodes) GKA durumlarını temsil eder. 2 Ayrıtlar (edges) GKA eylemlerini temsil eder.

GKA Durumu (v) 1 Java Paket İsmi 2 Aktivite İsmi (Bir aktivite yaklaşık olarak bir Android ekranına karşılık gelir) 3 Bağlamsal Özellikler (WiFi, Oryantasyon vb.) 4 Ekrandaki GKA Bileşenleri

GKA Eylemi (z) Kullanıcının tetiklediği olaylar: metin, tıklama, kaydırma vb. } {{ } text } {{ } click } {{ } swipe

Otomatik Test Yaratım Platformu Q-Öğrenme Yardımlı Test Yaratımı (QBE) Tam-Otomatik, Kara-Kutu, Model Öğrenme, ve Makine Öğrenmesi ile yönlendirilen bir tekrarlanabilir test yaratım platformudur. Önemli KHTY aracını QBE üzerine inşa ettik. _ yenidenbaşlatmak v1 tıklama tıklama v2 metin1 metin2 v1' tıklama tıklama v2' v1'' tıklama tıklama v2'' metin1 metin2 v1''' tıklama v3 Şekil: Örnek Yahtzee Uygulaması Modeli

KHTY için Tanımlar İşleç (Mutation Operator - δ) Bir test örneği alan ve yeni bir test örneği dönen aşağıdaki gibi bir fonksiyondur. δ(t) = t

KHTY için Tanımlar İşleç (Mutation Operator - δ) Bir test örneği alan ve yeni bir test örneği dönen aşağıdaki gibi bir fonksiyondur. δ(t) = t Test Örneği (Test Case - t) GKA modelinin ilk durumundan (v 0 ) başlayan bir durum-geçişler dizisidir.

KHTY için Tanımlar İşleç (Mutation Operator - δ) Bir test örneği alan ve yeni bir test örneği dönen aşağıdaki gibi bir fonksiyondur. δ(t) = t Test Örneği (Test Case - t) Durum-Geçiş (Transition - v i, v i+1, z i, d i ) 1 v i : Önceki Durum 2 v i+1 : Sonraki Durum 3 z i : Eylem 4 d i : Süre (saniye) GKA modelinin ilk durumundan (v 0 ) başlayan bir durum-geçişler dizisidir.

KHTY için Tanımlar Örnek Durum-Geçiş (Transition - v i, v i+1, z i, d i ) 1 v i : Önceki Durum 2 v i+1 : Sonraki Durum 3 z i : Eylem 4 d i : Süre (saniye) Örnek 1 (_, v1, y.başlat, 15)

KHTY için Tanımlar Örnek Durum-Geçiş (Transition - v i, v i+1, z i, d i ) 1 v i : Önceki Durum 2 v i+1 : Sonraki Durum 3 z i : Eylem 4 d i : Süre (saniye) Örnek 1 (_, v1, y.başlat, 15) 2 (v1, v1, metin1, 1)

KHTY için Tanımlar Örnek Durum-Geçiş (Transition - v i, v i+1, z i, d i ) 1 v i : Önceki Durum 2 v i+1 : Sonraki Durum 3 z i : Eylem 4 d i : Süre (saniye) Örnek 1 (_, v1, y.başlat, 15) 2 (v1, v1, metin1, 1) 3 (v1, v2, tıkla, 2)

İşleçler M1 Döngü Stresleme: Tüm döngüsel eylemleri tekrarlamak. M2 Durdur-Başlat: Bütün ardışık eylem ikililerinin arasına durdur-başlat eklemek. M3 Yazı Değiştirme: Rastgele bir metin eylemini anormal bir metinle değiştirmek. M4 Bağlamsal Durum Değiştirme: Rastgele ardışık eylem ikilileri arasında bağlamsal durumu değiştirmek. (Toggle WiFi, GPS, Bluetooth etc.) M5 Beklemeleri Kaldırma: Tüm süreleri sıfıra eşitlemek. M6 Hızla Kaydırmak: Tüm kaydırma eylemlerini olabildiğince hızlandırmak.

İşleçler M1 Döngü Stresleme: Tüm döngüsel eylemleri tekrarlamak.

İşleçler M1 Döngü Stresleme: Tüm döngüsel eylemleri tekrarlamak. Örnek: t = (_, v1, y.başlat, 15), (v1, v1, tıkla, 2), (v1, v2, kaydır "500", 2), (v2, v2, geri, 2)

İşleçler M1 Döngü Stresleme: Tüm döngüsel eylemleri tekrarlamak. Örnek: t = (_, v1, y.başlat, 15), (v1, v1, tıkla, 2), (v1, v2, kaydır "500", 2), (v2, v2, geri, 2) δ(t) = (_, v1, y.başlat, 15), (v1, v1, tıkla, 1) m, (v1, v2, kaydır "500", 2), (v2, v2, geri, 1) m

İşleçler M1 Döngü Stresleme: Tüm döngüsel eylemleri tekrarlamak. M2 Durdur-Başlat: Bütün ardışık eylem ikililerinin arasına durdur-başlat eklemek.

İşleçler M1 Döngü Stresleme: Tüm döngüsel eylemleri tekrarlamak. M2 Durdur-Başlat: Bütün ardışık eylem ikililerinin arasına durdur-başlat eklemek. Örnek: t =..., (v1, v2, tıkla, 2), (v2, v3, sürükle "500", 2)

İşleçler M1 Döngü Stresleme: Tüm döngüsel eylemleri tekrarlamak. M2 Durdur-Başlat: Bütün ardışık eylem ikililerinin arasına durdur-başlat eklemek. Örnek: t =..., (v1, v2, tıkla, 2), (v2, v3, sürükle "500", 2) δ(t) =..., (v1, v2, tıkla, 2, ), (v2, _, uyku kapa, 2), (_, v2, uyku aç, 2), (v2, v3, kaydır "500", 2)

İşleçler M1 Döngü Stresleme: Tüm döngüsel eylemleri tekrarlamak. M2 Durdur-Başlat: Bütün ardışık eylem ikililerinin arasına durdur-başlat eklemek. M3 Yazı Değiştirme: Rastgele bir metin eylemini anormal bir metinle değiştirmek.

İşleçler M1 Döngü Stresleme: Tüm döngüsel eylemleri tekrarlamak. M2 Durdur-Başlat: Bütün ardışık eylem ikililerinin arasına durdur-başlat eklemek. M3 Yazı Değiştirme: Rastgele bir metin eylemini anormal bir metinle değiştirmek. Örnek: t =..., (v1, v1, metin "www.url.com", 4),...

İşleçler M1 Döngü Stresleme: Tüm döngüsel eylemleri tekrarlamak. M2 Durdur-Başlat: Bütün ardışık eylem ikililerinin arasına durdur-başlat eklemek. M3 Yazı Değiştirme: Rastgele bir metin eylemini anormal bir metinle değiştirmek. Örnek: t =..., (v1, v1, metin "www.url.com", 4),... δ(t) =..., (v1, v1, metin ".", 4),...

İşleçler M1 Döngü Stresleme: Tüm döngüsel eylemleri tekrarlamak. M2 Durdur-Başlat: Bütün ardışık eylem ikililerinin arasına durdur-başlat eklemek. M3 Yazı Değiştirme: Rastgele bir metin eylemini anormal bir metinle değiştirmek. M4 Bağlamsal Durum Değiştirme: Rastgele ardışık eylem ikilileri arasında bağlamsal durumu değiştirmek. (Toggle WiFi, GPS, Bluetooth etc.)

İşleçler M1 Döngü Stresleme: Tüm döngüsel eylemleri tekrarlamak. M2 Durdur-Başlat: Bütün ardışık eylem ikililerinin arasına durdur-başlat eklemek. M3 Yazı Değiştirme: Rastgele bir metin eylemini anormal bir metinle değiştirmek. M4 Bağlamsal Durum Değiştirme: Rastgele ardışık eylem ikilileri arasında bağlamsal durumu değiştirmek. (Toggle WiFi, GPS, Bluetooth etc.) Örnek: t =..., (v1, v2, tıkla, 2), (v2, v3, kaydır "500", 2),...

İşleçler M1 Döngü Stresleme: Tüm döngüsel eylemleri tekrarlamak. M2 Durdur-Başlat: Bütün ardışık eylem ikililerinin arasına durdur-başlat eklemek. M3 Yazı Değiştirme: Rastgele bir metin eylemini anormal bir metinle değiştirmek. M4 Bağlamsal Durum Değiştirme: Rastgele ardışık eylem ikilileri arasında bağlamsal durumu değiştirmek. (Toggle WiFi, GPS, Bluetooth etc.) Örnek: t =..., (v1, v2, tıkla, 2), (v2, v3, kaydır "500", 2),... δ(t) =..., (v1, v2, tıkla, 2), (v2, v2, GPS değiştir, 2), (v2, v3, kaydır "500", 2),...

İşleçler M1 Döngü Stresleme: Tüm döngüsel eylemleri tekrarlamak. M2 Durdur-Başlat: Bütün ardışık eylem ikililerinin arasına durdur-başlat eklemek. M3 Yazı Değiştirme: Rastgele bir metin eylemini anormal bir metinle değiştirmek. M4 Bağlamsal Durum Değiştirme: Rastgele ardışık eylem ikilileri arasında bağlamsal durumu değiştirmek. (Toggle WiFi, GPS, Bluetooth etc.) M5 Beklemeleri Kaldırma: Tüm süreleri sıfıra eşitlemek.

İşleçler M1 Döngü Stresleme: Tüm döngüsel eylemleri tekrarlamak. M2 Durdur-Başlat: Bütün ardışık eylem ikililerinin arasına durdur-başlat eklemek. M3 Yazı Değiştirme: Rastgele bir metin eylemini anormal bir metinle değiştirmek. M4 Bağlamsal Durum Değiştirme: Rastgele ardışık eylem ikilileri arasında bağlamsal durumu değiştirmek. (Toggle WiFi, GPS, Bluetooth etc.) M5 Beklemeleri Kaldırma: Tüm süreleri sıfıra eşitlemek. Örnek: t =..., (v1, v2, kaydır "500", 2),...

İşleçler M1 Döngü Stresleme: Tüm döngüsel eylemleri tekrarlamak. M2 Durdur-Başlat: Bütün ardışık eylem ikililerinin arasına durdur-başlat eklemek. M3 Yazı Değiştirme: Rastgele bir metin eylemini anormal bir metinle değiştirmek. M4 Bağlamsal Durum Değiştirme: Rastgele ardışık eylem ikilileri arasında bağlamsal durumu değiştirmek. (Toggle WiFi, GPS, Bluetooth etc.) M5 Beklemeleri Kaldırma: Tüm süreleri sıfıra eşitlemek. Örnek: t =..., (v1, v2, kaydır "500", 2),... δ(t) =..., (v1, v2, kaydır "500", 0),...

İşleçler M1 Döngü Stresleme: Tüm döngüsel eylemleri tekrarlamak. M2 Durdur-Başlat: Bütün ardışık eylem ikililerinin arasına durdur-başlat eklemek. M3 Yazı Değiştirme: Rastgele bir metin eylemini anormal bir metinle değiştirmek. M4 Bağlamsal Durum Değiştirme: Rastgele ardışık eylem ikilileri arasında bağlamsal durumu değiştirmek. (Toggle WiFi, GPS, Bluetooth etc.) M5 Beklemeleri Kaldırma: Tüm süreleri sıfıra eşitlemek. M6 Hızla Kaydırmak: Tüm kaydırma eylemlerini olabildiğince hızlandırmak.

İşleçler M1 Döngü Stresleme: Tüm döngüsel eylemleri tekrarlamak. M2 Durdur-Başlat: Bütün ardışık eylem ikililerinin arasına durdur-başlat eklemek. M3 Yazı Değiştirme: Rastgele bir metin eylemini anormal bir metinle değiştirmek. M4 Bağlamsal Durum Değiştirme: Rastgele ardışık eylem ikilileri arasında bağlamsal durumu değiştirmek. (Toggle WiFi, GPS, Bluetooth etc.) M5 Beklemeleri Kaldırma: Tüm süreleri sıfıra eşitlemek. M6 Hızla Kaydırmak: Tüm kaydırma eylemlerini olabildiğince hızlandırmak. Örnek: t =..., (v1, v2, kaydır "500", 2),...

İşleçler M1 Döngü Stresleme: Tüm döngüsel eylemleri tekrarlamak. M2 Durdur-Başlat: Bütün ardışık eylem ikililerinin arasına durdur-başlat eklemek. M3 Yazı Değiştirme: Rastgele bir metin eylemini anormal bir metinle değiştirmek. M4 Bağlamsal Durum Değiştirme: Rastgele ardışık eylem ikilileri arasında bağlamsal durumu değiştirmek. (Toggle WiFi, GPS, Bluetooth etc.) M5 Beklemeleri Kaldırma: Tüm süreleri sıfıra eşitlemek. M6 Hızla Kaydırmak: Tüm kaydırma eylemlerini olabildiğince hızlandırmak. Örnek: t =..., (v1, v2, kaydır "500", 2),... δ(t) =..., (v1, v2, kaydır "0", 2),...

İşleçler M1 Döngü Stresleme: Tüm döngüsel eylemleri tekrarlamak. M2 Durdur-Başlat: Bütün ardışık eylem ikililerinin arasına durdur-başlat eklemek. M3 Yazı Değiştirme: Rastgele bir metin eylemini anormal bir metinle değiştirmek. M4 Bağlamsal Durum Değiştirme: Rastgele ardışık eylem ikilileri arasında bağlamsal durumu değiştirmek. (Toggle WiFi, GPS, Bluetooth etc.) M5 Beklemeleri Kaldırma: Tüm süreleri sıfıra eşitlemek. M6 Hızla Kaydırmak: Tüm kaydırma eylemlerini olabildiğince hızlandırmak.

Vaka Çalışmaları Tuşlara tıklandığında ses çıkarmaktadır. (M1) Döngü-Stresleme uygulanmıştır. audioflinger kütüphanesini çökertmiştir. Sonuç: Sistem ses çıkaramaz hale gelmiştir. Şekil: Soundboard

Vaka Çalışmaları Şekil: A2DPVol Bluetooth Uygulaması. Normalde bluetooth kapalı. (M4) Bağlamsal Durum Değiştirme uygulanmıştır. Sonuç: "Find Devices" tuşu uygulamayı çökertmiştir.

Vaka Çalışmaları Şekil: A2DPVol Bluetooth Uygulaması. Normalde bluetooth kapalı. (M4) Bağlamsal Durum Değiştirme uygulanmıştır. Sonuç: "Find Devices" tuşu uygulamayı çökertmiştir.

Vaka Çalışmaları Orjinal test örneği bir uyarı mesajı açığa çıkarmıştır. (ÇÖKME DEĞİL) (M2) Durdur-Başlat uygulanmıştır. Sonuç: Çökme. Şekil: Import Contacts

Vaka Çalışmaları Orjinal test örneği bir uyarı mesajı açığa çıkarmıştır. (ÇÖKME DEĞİL) (M2) Durdur-Başlat uygulanmıştır. Sonuç: Çökme. Şekil: Import Contacts

Vaka Çalışmaları Orjinal test örneği bir uyarı mesajı açığa çıkarmıştır. (ÇÖKME DEĞİL) (M2) Durdur-Başlat uygulanmıştır. Sonuç: Çökme. Şekil: Import Contacts

Vaka Çalışmaları Orjinal test örneği bir uyarı mesajı açığa çıkarmıştır. (ÇÖKME DEĞİL) (M2) Durdur-Başlat uygulanmıştır. Sonuç: Çökme. Şekil: Import Contacts

Vaka Çalışmaları Takvim uygulaması. URL kutucuğu bir web sitesi adresi beklemektedir. (M3) Yazı Değiştirme uygulanmıştır. Sonuç: Çökme. Şekil: acal

Vaka Çalışmaları Takvim uygulaması. URL kutucuğu bir web sitesi adresi beklemektedir. (M3) Yazı Değiştirme uygulanmıştır. Sonuç: Çökme. Şekil: acal

Vaka Çalışmaları Takvim uygulaması. URL kutucuğu bir web sitesi adresi beklemektedir. (M3) Yazı Değiştirme uygulanmıştır. Sonuç: Çökme. Şekil: acal

Vaka Çalışmaları Haber uygulaması. WiFi kapalı. Uygulama uyarı vermektedir. (M4) Bağlamsal Durum Değiştirme uygulanmıştır. Sonuç: Herhangi bir başlık seçildiğinde çökmüştür. Şekil: Mirrored

Vaka Çalışmaları Haber uygulaması. WiFi kapalı. Uygulama uyarı vermektedir. (M4) Bağlamsal Durum Değiştirme uygulanmıştır. Sonuç: Herhangi bir başlık seçildiğinde çökmüştür. Şekil: Mirrored

Vaka Çalışmaları Haber uygulaması. WiFi kapalı. Uygulama uyarı vermektedir. (M4) Bağlamsal Durum Değiştirme uygulanmıştır. Sonuç: Herhangi bir başlık seçildiğinde çökmüştür. Şekil: Mirrored

Açıklayıcı Örnek _ başlat v1 geri tıkla geri menü geri v2 v3 QBE, soldaki modeli öğrenirken bir İyi Huylu test yaratmıştır.

Açıklayıcı Örnek _ başlat v1 geri tıkla geri menü geri v2 v3 Bu test örneğine rastgele mutasyonlar uygulanmıştır.

Açıklayıcı Örnek _ başlat v1 geri tıkla geri menü geri v2 v3 Kötü huylu test örneklerinin ikisi de çökmüştür.

Deney Ortamı 14 x Android-x86 VirtualBox (Android 4.4.r5 kurulu) F-Droid uygulamaları arasından rastgele seçilmş 100 Android uygulması. Zaman içinde değişen farklı çökme sayısı gözlemlenmiştir. Yöntem: Çökmelerin farklılığını yığın izlerine (stack trace) bakarak otomatik belirleme. Her araçla her uygulma için 20 şer dakika. KHTY, QBE, Sapienz, Monkey, PUMA, ve A 3 E. KHTY için, 1 10 dakika, QBE ile test örneği yaratımı. 2 10 dakika, KHTY ile yaratılmış kötü huylu testlerin çalıştırılması.

Deneyler # Çökmeler 0 5 10 15 20 25 30 KHTY : 29 çökme QBE : 18 çökme SAPIENZ : 12 çökme MONKEY : 10 çökme PUMA : 6 çökme A3E : 4 çökme 0 200 400 600 800 1000 1200 Süre (saniye) Şekil: 20 Dakika İçinde Tespit Edilmiş Farklı Çökme Sayısı

Sonuç Özet Kötü Huylu Test Yaratımı yöntemi. Android GKA testi için 6 işleç ile mutasyon. Orjinal test örnekleri QBE kullanılarak otomatik bir şekilde elde edilmesi. Vaka çalışmaları ve deneylerle KHTY nin etkililiğinin gösterilmesi. Gelecek Çalışmalar Daha fazla GKA eylemi (rotasyon, çift-tıklama vb.). Rastgele yerine çökme sıklıklarına bağlı mutasyon seçimi. QBE ve KHTY için en uygun zamanlamaları bulmak.

Teşekkürler...

Ek A: GKA Eylemleri Listesi (List of GUI Actions) Tablo: GKA Eylemleri Listesi Bağlamsal olmayan Param1 Param2 Param3 Param4 Param5 tıklama x y - - - uzuntıklama x y - - - metin x y yazı - - kaydırma x1 y1 x2 y2 süre menü - - - - - geri - - - - - Bağlamsal bağlanırlık bluetooth konum uçuşmodu uyku Parametre açık/kapalı/değiştir açık/kapalı/değştir gps/gps&ağ/kapalı/değiştir açık/kapalı/değiştir açık/kapalı/değiştir Özel Param1 Param2 Param3 Param4 Param5 yenidenbaşlatmak paket aktivite - - -

Ek B: Model Öğrenme Eylem: yenidenbaşlatmak com.tum.yahtzee MainActivity _ yenidenbaşlatmak v1

Ek B: Model Öğrenme Eylem: tıklama 200 390 (tıklama play) _ yenidenbaşlatmak v1 tıklama v2

Ek B: Model Öğrenme Eylem: tıklama 200 410 (tıklama ok) _ yenidenbaşlatmak v1 tıklama tıklama v2

Ek B: Model Öğrenme Eylem: metin 200 270 12345 (metin1) _ yenidenbaşlatmak v1 tıklama tıklama v2 metin1

Ek B: Model Öğrenme Eylem: yenidenbaşlatmak com.tum.yahtzee MainActivity _ yenidenbaşlatmak v1 tıklama tıklama v2 metin1

Ek B: Model Öğrenme Eylem: metin 200 270 12345 (metin1) _ yenidenbaşlatmak v1 tıklama tıklama v2 metin1

Ek B: Model Öğrenme Eylem: metin 200 330 12345 (metin2) _ yenidenbaşlatmak v1 tıklama tıklama v2 metin1,metin2

Ek B: Model Öğrenme Eylem: tıklama 200 390 (tıklama play) _ yenidenbaşlatmak tıklama v1 tıklama tıklama v2 v3 metin1,metin2

Ek B: Model Öğrenme Eylem: tıklama 200 390 (tıklama play) _ yenidenbaşlatmak v1 tıklama tıklama v2 v3 metin1 metin2 tıklama v1'