Yapay zeka teknikleri kullanarak kod testini geliştirmek: Uygulamalı ve analitik bir çalışma
Enhancing code testing through artificial intelligence techniques: An applied and analytical study
Yazar: AHMED MOHAMMED JALAL RAMADAN
Danışman: DR. HUSAM YASIN
Üsküdar Üniversitesi / Fen Bilimleri Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı
Derece: Yüksek Lisans, 2024
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control

Özet:
Yazılım testi, yazılımın kalitesini ve güvenilirliğini sağlamada çok önemli bir rol oynar. Ancak geleneksel test yöntemleri, yazılım sistemlerinin artan karmaşıklığına ve gelişen doğasına ayak uydurmakta zorluk çekiyor. Yapay zeka (AI) ve makine öğrenimi (ML), kod testi verimliliğini ve etkinliğini artırmak için umut verici yollar sunar.
Bu analitik çalışma, yazılım test uygulamalarını iyileştirmede AI tekniklerinin potansiyelini araştırıyor. AI ve ML'nin temel kavramlarına kapsamlı bir genel bakışın yanı sıra, AI destekli yazılımların test edilmesiyle ilgili belirli zorluklar sağlar. Bu araştırma, yapay zekanın kod testi yöntemini nasıl geliştirebileceğini araştırıyor. Ayrıca, çeşitli ML yaklaşımlarının yazılım test sürecine nasıl entegre edilebileceğini inceleyerek bu alandaki yerleşik araştırmalardan içgörüler elde ediyor. Ayrıca makine öğreniminin modern test araçları üzerindeki etkisini de analiz ederek hem ticari hem de açık kaynak seçeneklerini değerlendiriyor.

İşte araştırmanın bulguları:
Bölüm 1: Temel Bilgiler - Bu bölümde AI ve ML'nin ne olduğu ve AI kullanan yazılımları test etmenin özel zorlukları açıklanmaktadır.
Bölüm 2: AI Çerçevelerini Anlamak - Bu bölümde, yazılımı yapay zeka ile test etmenin iki farklı yolunu temsil eder: Yazılım Testi Derneği için AI modeli ve Paul Gerrard'ın iyi bilinen Yeni Test Modeli.
Bölüm 3: Yazılımı Test Etmenin Yeni Bir Yolu - Bu bölümde, diğer araştırmacıların bulgularına dayanarak normal test sürecinde farklı ML yaklaşımlarının nasıl kullanılabileceğini gösterir.
Bölüm 4: Daha Akıllı Test Araçları - Bu bölümde en son test araçları ve ML'nin bunları nasıl daha iyi hale getirdiği ele alınmaktadır. Test uzmanlarının mevcut en iyi araçları kullanabilmesi için hem ödememiz gereken araçları hem de ücretsiz olanları kapsayacaktır.
Bu tez iki ana bölümden oluşmaktadır: teorik ve analitik bölüm ve uygulamalı bölüm. Teorik ve analitik bölümde, AI tekniklerinin yazılım test uygulamalarını iyileştirmedeki potansiyelini inceledik, AI ve ML'nin temel kavramlarına kapsamlı bir genel bakış sağladık ve AI destekli yazılımları test etmekle ilişkili zorlukları ele aldık. Ek olarak, farklı ML yaklaşımlarının yazılım test sürecine nasıl entegre edilebileceğini araştırdık.
Uygulamalı bölümde, Python kodunun kalitesini otomatik olarak sınıflandırmak ve iyileştirmek için makine öğrenimini kullanan bir araç geliştirdik. Bu araç, veri toplamayı, hataları tanımak için bir model eğitmeyi ve geliştiricilere geri bildirim sağlamayı içerir. Flake8 ve Pylint gibi araçları makine öğrenimiyle birleştirerek, bu çalışma kodlama hatalarını otomatik olarak belirlemek ve sınıflandırmak ve geliştiricilere anında geri bildirim sağlamak için yöntemler geliştirdi. Bu projenin önemi, otomatik kod kalite kontrollerine olan artan ihtiyacı karşılamak, kod incelemelerini daha hızlı ve daha doğru hale getirmek, daha iyi yazılımlara ve daha verimli geliştirmeye yol açmaktır.
Bu araştırma, yapay zekanın yazılım testinde nasıl kullanılabileceğini göstererek, potansiyel uygulamaları ve çerçeveleri keşfetmek için AI, ML ve yazılım testi üzerine mevcut araştırmaları eleştirel bir şekilde inceleyen bir literatür tarama metodolojisi kullandı. Bulgular, yazılım test uzmanlarını gelişmiş kod kalitesi, daha hızlı test döngüleri ve sonuçta daha güvenilir yazılım için yapay zekadan yararlanmak için gerekli bilgi ve araçlarla güçlendirebilir.
Anahtar Kelimeler: Analitik Çalışma, Yapay Zeka, Kod Geliştirme Testi, Makine Öğrenimi, Yazılım Testi.

Abstract:
Software testing plays a crucial role in ensuring software quality and reliability. However, traditional testing methods struggle to keep pace with software systems' growing complexity and evolving nature. Artificial intelligence (AI) and machine learning (ML) offer promising avenues to enhance code testing efficiency and effectiveness. 
This analytical study investigates the potential of AI techniques in improving software testing practices. It provides a comprehensive overview of the fundamental concepts of AI and ML, along with the specific challenges associated with testing AI-powered software. This research explores how AI can improve the way of code testing. Furthermore, it examines how various ML approaches can be integrated into the software testing process, drawing insights from established research in the field. It also analyzes the impact of ML on modern testing tools, evaluating both commercial and open-source options. 

Here's what the research found:
Part 1: The Basics - This part explains what AI and ML are, and the special challenges of testing software that uses AI.
Part 2: Making Sense of AI Frameworks - This part represents two different ways of testing software with AI: the AI for Software Testing Association's model and Paul Gerrard's well-known New Model for Testing.
Part 3: A New Way to Test Software - This part shows how different ML approaches can be used in the normal testing process, based on what other researchers have found.
Part 4: Smarter Testing Tools - This part looks at the latest testing tools and how ML is making them even better. It will cover both tools we have to pay for and free ones, so testers can use the best tools available.

This thesis consists of two main parts: a theoretical and analytical part, and an applied part. In the theoretical and analytical part, we studied the potential of AI techniques in improving software testing practices, providing a comprehensive overview of the fundamental concepts of AI and ML, along with the challenges associated with testing AI-powered software. Additionally, we explored how different ML approaches can be integrated into the software testing process.
In the applied part, we developed a tool using machine learning to automatically classify and improve the quality of Python code. This tool involves collecting data, training a model to recognize errors, and providing feedback to developers. Using tools like Flake8 and Pylint, combined with machine learning, this study developed methods to automatically identify and classify coding errors, providing immediate feedback to developers. The importance of this project lies in meeting the growing need for automated code quality checks, making code reviews faster and more accurate, leading to better software and more efficient development.
By showing how AI can be used in software testing, this research employed a literature review methodology, critically examining existing research on AI, ML, and software testing to explore the potential applications and frameworks. The findings can empower software testers with the knowledge and tools necessary to leverage AI for enhanced code quality, faster testing cycles, and ultimately, more reliable software. 

Keywords: Analytical Study, Artificial Intelligence, Enhancing Code Testing, Machine Learning, Software Testing.