Test durumu önceliklendirme
Test case prioritization
Yazar: ZAFER CAN DEMİR
Danışman: PROF. DR. ŞAHİN EMRAH
Ankara Üniversitesi / Fen Bilimleri Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı
Derece: Yüksek Lisans, 2021
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control
Dizin: Yazılım testi = Software test

Özet:
Yazılım yaşam döngüsüne göre bir yazılım geliştirilirken planlama, analiz ve tasarım aşamalarından sonra test aşaması başlar. Test aşamasında yazılımın istenen işlevsellikleri içermesi, içerdiği işlevsellikleri ise doğru bir şekilde yerine getirmesi gibi başlıklar incelenir. Böylece yazılımda hatalı bir kısım var ise düzeltilebilir ve ürün aşamasına gelen yazılım, müşterinin istekleri doğrultusunda teslim edilebilir. Ürün teslimi yapıldıktan sonra ise bakım aşaması başlar. Bu aşamada sonradan fark edilen hatalar, müşteriden gelen geri bildirimler veya yeni bir özellik ekleme gibi sebeplerden dolayı yazılım güncellemesi yapılabilir. Yapılan yazılım güncellemelerinin diğer yazılım işlevselliklerini etkilemediğine emin olmak için ise regresyon testleri kullanılır. Regresyon testleri sürecinde yazılım testi için daha önceden kullanılan testler tekrar koşturulur. Ancak var olan tüm testleri koşturmak zaman ve iş gücü kaybına yol açacağı için maliyetli bir süreçtir. Bu nedenle kullanılan testlere belirli kriterlere göre öncelik değeri vererek ve öncelik değeri yüksek olan testleri daha önce koşarak bir optimizasyon yapılabilir. Böylece gereksiz testlerin yarattığı yük azaltılır ve regresyon testleri amacına daha çabuk ulaşır. Yapılan bu çalışmada bahsedilen probleme dair araştırmalar yapılmış ve problemin çözümü için kullanılan algoritmalar incelenmiştir. Ayrıca hakim küme yöntemi kullanılarak 3 algoritma geliştirilmiş ve bu algoritmaların metasezgisel algoritmalar ile karşılaştırmalı analizleri yapılmıştır.

Abstract:
When developing a software according to the software lifecycle, the testing phase begins after the planning, analysis and design phases. In the test phase, the topics such as the software to include the desired functionality and the functionality it contains to work correctly are examined. Thus, if there is a faulty part in the software, it can be corrected and delivered according to the customer's wishes as a product. After the delivery of the product, the maintenance phase begins. At this stage, software updates can be made for reasons such as subsequent errors, customer feedback or adding a new feature. Regression tests are used to ensure that software updates do not affect other software functionality. In the process of regression tests, the tests previously used for software testing are run again. However, running all existing tests is a costly process as it will cause time and labor loss. Therefore, an optimization can be made by giving priority to the tests according to certain criteria and running the tests with high priority values first. This reduces the burden of unnecessary tests and regression tests reach their goals more quickly. In this study, researches are made about the problem and algorithms used to solve the problem are examined. In addition, 3 algorithms were introduced using the dominating set method and these algorithms were analyzed comparatively with metaheuristic algorithms.