Yazılım testi, yazılım geliştirme yaşam döngüsünün önemli ve temel bir parçasıdır. Test etme, son kullanıcılara daha kaliteli bir sistem sunmaya yardımcı olur. Fakat, süreç, sistemdeki hataları tespit etme işlemini yerine getirdiğinden emin olmak için yazılması ve sürekli güncel tutulması gerektiğinden maliyetli bir işlemdir. Test senaryolarını sürdürmedeki sorunlardan biri, testleri yazılım ürününün her bir yolunu ve kod satırını kapsayacak şekilde çalıştırmak için kullanılan girdi verileridir. Bu test verilerinin oluşturulması, herhangi bir standart otomatikleştirilmiş test verisi oluşturma aracıyla gerçekleştirilmesi gereken tipik bir faaliyettir. Rastgele test veri oluşturucuları, testler için girdi verileri oluşturmak için en yaygın kullanılan araçlar arasındadır. Ancak, veri türleri ve parametrelerin araçlara göre manuel olarak uyarlanması ve kaynak kodu veya test senaryoları değiştirildiğinde manuel olarak güncellenmesi gerekir. Bu maliyetli bir süreçtir ve bu verileri oluşturmak ve güncellemek çok zaman ve çaba gerektirir. Rastgele test verisi oluşturucu, sembolik değerlendirici, fonksiyon minimizasyon yöntemleri gibi çeşitli test verisi oluşturucu araçları mevcuttur. Son yıllarda, yazılım testine bazı daha gelişmiş iyileştirilmiş arama teknikleri uygulanmıştır. Bu çalışmada, test verisi oluşturma sürecini otomatikleştiren bir model önerilmiştir. Giriş verilerini oluşturmak için gereken süreyi önemli ölçüde azaltmaktadır. Aynı zamanda, önerilen modelde, üretilen veriler, giriş verilerinin doğruluğu ve duyarlılığı açısından rastgele oluşturulan verilerden daha iyi performans göstermiştir. Önerilen modelde en yaygın kullanılan sezgisel algoritmalara dayanan Genetik algoritma kullanılmıştır. Geliştirilen model, farklı yöntem imzası, dönüş türü ve argüman sayısı olan 6 bağımsız genel yöntemle örnek bir sınıf üzerinde çalıştırılmıştır. Ortalama standart sapma 0,15 ve en iyi aday uygunluk ortalaması 8,82 ve ortalama uygunluk 9,79 olan her bir yöntem için 10 olası girdi üretmek ortalama 5 saniye sürmüştür. Sonuçlar çalışmanın sonuçlar bölümünde detaylı bir şekilde tartışılmıştır. Anahtar Kelimeler: Yazılım Testi, Birim Testi, Test Verisi, Evrimsel Algoritma, Genetik Algoritma
Software testing is an essential and fundamental part of the software development lifecycle. Testing helps delivering a higher quality system to end users. However, it is costly as it needs to be written and updated as the process continues to ensure that it does its job in detecting faults and bugs in the system. One of the problems in maintaining test cases is the input data used to run the tests such a way that it covers each path and line of code of the software product. Generation of these test data is a typical activity which has to be accomplished through any standard automated test data generation tool. Random test data generators are among the most widely used tools to generate input data for the tests. However, the data types and parameters has to be manually tailored into the tools and needs to be updated manually once the source code or the test cases are changed. It is a costly process and takes a lot of time and effort to generate and update these data. There are various test data generator tools are available such as: random test data generator, symbolic evaluator, function minimization methods. In recent years some more advanced heuristic search techniques have been applied to software testing. In this study, we propose a model which automates the test data generation process. It significantly reduces the time required to generate the input data. At the same time, the data generated by our model outperforms the data generated randomly in terms of accuracy and sensibility of the input data. It is based on the most widely used heuristic algorithms which is genetic algorithm. We run the model on a sample class with 6 independent public methods of different method signature, return type and number of arguments. It takes 5 seconds to generate10 possible inputs for each method with a mean standard deviation of 0.15 and best candidate fitness average of 8.82 and mean fitness of 9.79. The results will be further discussed in results section of the study. Keywords: Software Testing, Unit Testing, Test Data, Evolutionary Algorithm, Genetic Algorithm