Gerçek zamanlı veri toplayarak otomatik birim test oluşturma yazılımı
Automatic unit test generator software software by collecting real-time data
Yazar: SEVDANUR GENÇ
Danışman: PROF. DR. ECİR UĞUR KÜÇÜKSİLLE
Süleyman Demirel Üniversitesi / Fen Bilimleri Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı
Derece: Doktora, 2022
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control
Dizin: Gerçek zamanlı yazılım = Real time software ; Java = Java ; Yazılım testi = Software test

Özet:
Yazılımda kalite ve verimlilik ihtiyaçları bir arada düşünülmektedir. Bu sebeple, var olan bir yazılımın bu kriterlere uyguluğunun test edilebilmesi için bazı faktörlere ihtiyaç duyulmaktadır. Bu faktörleri yerine getirebilmek için test alanına yüklenen ciddi sorumluluklar bulunmaktadır. Testlerin hem hızlı bir şekilde yapılması hem de sonuçlarının verimli olması yazılım geliştirmede fark yaratan bir faktördür. Bu faktörü gerçekleştirebilmek için ihtiyaç duyulan bir yazılım test otomasyonudur. Yazılım test otomasyonları, yazılım test aktivitelerinin otomatikleştirilmiş halidir. Sürekli manuel yazılan testlerin otomatik hale getirilmesi ise zaman açısından tasarruf edilmesi, hata oranlarının azaltılması, daha kaliteli bir yazılım ortaya çıkması ve maliyetin düşürülmesi gibi sonuçları ortaya çıkarmaktadır. 
Bu çalışmada, ürünler üzerinde gerçek zamanlı bir şekilde çalışması planlanan birim testlerin otomatik olarak üretilmesi amaçlanmıştır. Geliştirilen bu uygulama, istenilen ürün üzerinde birim test dönüşümlerini gerçekleştirmektedir. Tüm bu dönüşümlerin temelinde java ajanları (java agent) kullanılmıştır. Üzerinde çalışılacak olan örnek java sınıflarının nesne, metot ve değişkenlerine ait tüm bilgiler byte code kullanılarak gerçek zamanlı bir şekilde veri haline dönüştürülmektedir. Bu dönüşüm esnasında, bilgiler hem veri tabanına kaydedilmekte hem de şablon motor aracılığıyla birim testleri otomatik bir şekilde oluşturulmaktadır. Literatürde otomatik birim test üretimi üzerine geliştirilen ürünlere kıyasla, bu çalışmada opcode ayrıştırma yöntemi geliştirilmiştir. Bu yöntem, bir byte code'u çalışma zamanında okuyarak, ait olduğu java sınıfının özelliklerini kullanır ve otomatik bir şekilde birim test sınıfını ve test metotlarını oluşturur. Çalışma aynı zamanda, bir metot içerisindeki farklı nesne tanımlamaları ile şart ve döngü yapılarını inceleyip, alternatif test senaryolarını üretebilmektedir. Üretilen otomatik birim test senaryosu çalışma zamanında en az hatayla karşılaşabilecek esnek bir çerçeve haline getirilmiştir. 
Ulusal yazılım testi alanında yapılan çalışmaların azlığı göz önüne alındığında; bu çalışma kapsamında geliştirilen, byte code kullanılarak otomatik birim test üretim ürününün çalışma alanına ciddi katkıda bulunacağı düşünülmüktedir.

Abstract:
Quality and productivity needs are considered together in software. For this reason, some factors are needed in order to test the compliance of an existing software with these criteria. In order to fulfill these factors, there are serious responsibilities imposed on the test area. The fact that the tests are carried out quickly and the results are efficient is a factor that makes a difference in software development. A software test automation is needed to realize this factor. Software test automations are automated software testing activities. Automating constantly manually written tests, on the other hand, saves time, reduces error rates, produces better quality software and reduces costs.
In this study, it is aimed to automatically produce unit tests that are planned to work on products in real time. This developed application performs unit test transformations on the desired product. Java agents are used as the basis of all these transformations. All information about the objects, methods and variables of the sample java classes to be worked on is converted into data in real time using byte code. During this transformation, information is both saved in the database and unit tests are created automatically through the template engine. Compared to the products developed on automatic unit test generation in the literature, the opcode parsing method was developed in this study. This method reads a byte code at runtime, uses the properties of the java class it belongs to, and automatically creates the unit test class and test methods. The study can also examine different object definitions and conditional and loop structures within a method and produce alternative test scenarios. The automatic unit test scenario produced has been turned into a flexible framework that can encounter minimum errors at runtime.
Considering the scarcity of studies in the field of national software testing; It is thought that the automatic unit test generation product developed within the scope of this study, using byte code, will make a serious contribution to the field of study.