$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Sistem mimarisi ve prototip özeti:
Bu araştırma, destek sorunlarının çözümünü daha da geliştirmek için gözlemlenebilirlik verileri ve büyük dil modelleri (LLM'ler) kullanarak proaktif bir kalite mühendisliği yaklaşımı olan geliştirilmiş ve uyarlanabilir bir prototip sistem olan PreventativeTestPro'yu sunmaktadır. Sistem, anomali tespiti, kök neden analizi ve sentetik izleme, gözlemlenebilirlik verileri ve GenAI entegrasyonu kullanarak anomali tespiti, kök neden analizi ve akıllıca test vakalarının yürütülüp geliştirilmesini otomatikleştirerek modern yazılım sunum sorunlarını ele almayı amaçlamaktadır. Mimari modüler olup üç temel bileşenden oluşur: Gözlemlenebilirlik Veri Toplayıcı ve Analizörü, GenAI Odaklı Zeka Katmanı ve Şekil 1'de ayrıntılı olarak belirtildiği gibi Test Düzenleme ve Yürütme Motoru.

Şekil 1: Önerilen sistemin giriş-çıkışı. Gözlemlenebilirlik verileri, gözlemci çıktısı, test deposu ve haritalama kuralları, test vakalarının dayanıklılığını artırmak için yapay zeka tabanlı test yatakları oluşturan BHRAMARI test yatakları ile birlikte girdi olarak sağlanır. Önerilen sistem, anormalliklerin enstrümantasyonu, yapay zeka tarafından oluşturulan öneriler, ilgili test vakalarının yürütülmesi, dokümantasyon ve raporlama ile eksik test vakalarının tespit edilmesi ve oluşturulmasını sağlar. Bu figürün daha büyük bir versiyonunu görmek için lütfen buraya tıklayın.
Şekil 2, önerilen yaklaşımın mimarisini göstermektedir. Şekil, sistemin giriş, işleme ve çıkışını göstermektedir. Ayrıca sistemin kapsamlı bir tasvirini sunar ve bu açıklama altında yatan özelliklerin anlaşılmasını artırmak için bir açıklamaya çevrilir.

Şekil 2: Önerilen sistemin sistem mimarisi, gözlemlenebilirlik veri toplayıcısı ve analizörü, GenAI odaklı zeka katmanı ve test orkestrasyon ve yürütme motoru. Bu şekil, PreventativeTestPro sisteminin iç mimarisini üç katmana ayırmış olarak göstermektedir: Gözlemlenebilirlik Toplayıcı Katmanı, tarayıcı olayları, günlükler, HAR dosyaları, arka uç kayıtları, metrikler ve izler dahil olmak üzere birden fazla kaynaktan gelen verileri toplar. Üretken Yapay Zeka Katmanı, bu verileri temel neden analizi yapmak, anormallikleri önceliklendirmek ve LLM'ler aracılığıyla otonom test vakaları (UI, API, manuel kullanım) ve dokümantasyon oluşturmak için kullanır. BHARAMARI modülü ayrıca yeni test yatakları kurmaktadır. Test Orkestrasyon ve Yürütme Motoru, tutarsızlıkları test vakalarına eşler, testleri eşzamanlı yürütür, sonuçları değerlendirir ve mühendislik ekiplerini, bilet sistemlerini ve gerçek zamanlı denetim ile çözüm izleme için gösterge panellerini bilgilendirir. Bu figürün daha büyük bir versiyonunu görmek için lütfen buraya tıklayın.
Gözlemlenebilirlik Veri Toplayıcı ve Analizör modülü, platformun duyusal sistemi olarak hizmet verir ve değerlendirilen uygulamanın verilerini büyük ölçekte, çoklu yönlerle sürekli olarak toplar. Ön yüz izleme durumunda, sentetik izleme ajanları tarayıcı tarafı olaylarını izlemek için konuşlandırılır; örneğin Document Object Model (DOM) yapıları, kullanıcı eylemleri (tıklamalar, havalanmalar ve girişler) ve ağ ile API istek ve yanıt bilgilerini yakalayan HAR dosyaları. PreventativeTestPro ayrıca tarayıcıların kapasitesini artırmak için OBSERVER ile entegre edilmiştir. Arka uç izleme, sunucu tarafı gözlemlenebilirlik bilgilerinin istendiği ve işlendiği log analizini hedefler; bu bilgiler uygulama logları, hata, bilgi ve hata ayıklama mesajları, yığın izleme ve istisna günlükleri, yanıt süreleri gibi performans metrikleri ve OpenTelemetri veya New Relic gibi teknolojiler kullanılarak takip etmeyi içerir. Sistem, kullanıcı trafiği ve etkileşimini simüle eden sentetik ajanlarla çalışacak ve log toplayıcıları gelen gerçek zamanlı verileri yoğunlaştıracak. Toplanan veriler daha sonra yapılandırılmış formatlara normalleştirilir ve daha fazla analiz edilmek üzere diğer işlem birimlerine verilir.
PreventativeTestPro'nun özü, GPT gibi Büyük Dil Modellerini (LLM) kullanarak gözlemlenebilirlik verilerini okuyup analiz eden, yanıtları bağlamlandırıp üreten GenAI odaklı bir Zeka Katmanıdır. Modül, kök neden analizini üstlenir: kök neden logları ve izlerini, teknik hataları anlaşılabilir terimlerle açıklamak için yorumlama süreci; örneğin belirli bir kod satırında NullPointerException ve sorunun varsayılan nedeni, örneğin başlatılmamış bir değişken. Test vakası üretiminde, sistem istisna desenleri veya bir dizi olay dizisi çalıştırılabilir test betiklerine dönüştürülerek oluşturulan otomatik testler kullanır; örneğin Selenium veya API testleri, ayrıca Kalite Güvence personelinin çalıştırabileceği insan tarafından okunabilir test prosedürleri de üretir. API testleri, HAR ve iz loglarının beklenen iddialarla bir dizi API isteği dizisine dönüştürülmesiyle gelişmiştir ve oluşturulan tüm test vakaları, BHRAMARI ile entegre edilerek etkili test yataklarıyla daha da geliştirilmiştir. Analiz edilen sistem davranışına bağlı olarak, öneri sisteminde daha fazla iyileştirme, test kapsama iyileştirmeleri ve CI/CD entegrasyon fırsatları önerilir. AI Engine, istem mühendisliği ve bağlam zenginleştirme yoluyla yapılandırılmış gözlemlenebilirlik verilerini kullanarak log bağlamını LLM'e yapılandırılmış sorgular ileten prompt şablonlarıyla sunar ve nihayetinde kod parçaları, test vakası spesifikasyonları ve doğal dil dokümantasyonu gibi işlevsel biçimde çıktı üretir.
Test Orkestrasyon ve Yürütme Motoru modülü, test önceliği, zamanlama ve yürütmeyi yöneterek kod değişikliği kapsama detayları, etiketler ve anomali eşlemesi temelinde otomatik doğrulama sağlar. Testin eşlenmesi ve seçimi, harita veya enstrümantasyon desenlerindeki anomalilerin bilinen test vakalarıyla Eşleme Kuralları Motoru kullanılarak ilişkilendirilmesini ve ardından test vakalarının belirlenmiş eşlemeye uygun şekilde çalıştırılmasını içerir. Eşzamanlı test yürütme özellikleri, farklı ortamlarda işlevsel, performans veya güvenlik testleri gibi birçok test türünün aynı anda çalıştırılmasına ve Selenium, JMeter ve ZAP'ın otomasyon hatlarında araç olarak kullanımının koordine edilmesine olanak tanır. Geri bildirim döngüsü uygulaması, uygulama sonuçlarının kaydedilmesini sağlar ve test hatası durumunda değişiklikler Jira ve Azure DevOps dahil olmak üzere destek sistemlerine iletilir, böylece takip ve çözüm sağlanır.
Hipotez:
H1 (Operasyonel Verimlilik): Gözlemlenebilirlik verileri ile yapay zeka destekli zekanın birleşiminin, özellikle ortalama çözüm süresini (H1a), analiz için ortalama süreyi (H1b), üretim sorunlarını tespit etme süresini (H1c) ve düzeltmelerin üretimde dağıtılması için ortalama süreyi (H1d) azaltarak operasyonel metrikleri geliştireceği öne sürülmektedir. Bu değişiklikler, tespit etme, analiz ve dağıtımı hızlandırarak sistem kesinti süresini minimumda tutarken Hizmet Seviyesi Anlaşması (SLA) gereksinimlerinin (H1e) yerine getirilmesini kolaylaştıracaktır.
H2 (Test Etkinliği): Ayrıca, yazılım testinin etkinliğinin daha fazla test kapsamı (H2a), test vakalarının paralel çalıştırılması (H2b) ve akıllı test önceliklendirmesi (H2c) ile artacağına inanılmaktadır. Yapay zeka tarafından oluşturulan önerilerin (H2d) hem test hem de operasyonel iş akışlarında yardımcı olması bekleniyor. Bu, hataları daha hızlı bulmaya, geri bildirim döngülerini hızlandırmaya ve önleyici ve uzun ömürlü kalite güvence uygulamalarını desteklemeye yardımcı olur.
Kapsam ve hedef kitle:
Bu prototip, genel sistem tasarımını, ana fikri ve PreventativeTestPro çerçevesinin adım adım nasıl kurulup çalıştırılacağını gösterir. Ayrıca doğru test yataklarının/örnek girişlerinin nasıl kurulacağına dair detaylara ve sorunların nasıl çözüleceğine dair ipuçları veriliyor. İçerik, Java'nın temellerini zaten bilen ve yazılımı daha güvenilir ve verimli hale getirmek için önleyici testleri nasıl kullanacağını öğrenmek isteyen yazılım kalite mühendisleri içindir.
Ortam kurulumu:
Ek Dosya 1, PreventativeTestPro ile iletişim kurmak için gereken adım adım bir açıklama ve program içerir. Bu, gerekli ortamın kurulumu için talimatları, aracın hizmetlerinin nasıl başlatılacağı ve durdurulacağı ile aracın temel kullanımının net bir açıklamasını içerir. Daha ayrıntılı bir dokümantasyon ve gelişmiş araçların nasıl kullanılacağına dair talimatlar, kurulum talimatları ve diğer organizasyon detayları için projeye adanmış resmi GitHub kaynaklarına bakabilirsiniz: https://github.com/sohambpatel/PreventativeTests/wiki bulunduğu yerdeki özel Wiki sayfası ve https://github.com/sohambpatel/PreventativeTests?tab=readme-ov-file/readme'daki ana README.
Örnek girdiler:
Örnek giriş dosyaları GitHub deposunda bulunabilir: https://github.com/sohambpatel/PreventativeTests/tree/main/preventativetestframework/Inputs. Çerçeve, bu dosyaların önceden belirlenmiş test vakalarını ve veri setlerini hemen çalıştırabilir. Çevre kurulumunu kontrol etmek ve bu protokolde tanımlanan aynı sonuçları almak için referans girdileri olarak kullanılırlar.
Örnek çıktılar:
GitHub deposu (https://github.com/sohambpatel/PreventativeTests/tree/main/preventativetestframework/SampleOutputs), önleyici test çerçevesinin çıktı verilerinin ham formatında somut örneklerini içerir. Bu dosyalar aracılığıyla kullanıcılar, oluşturulan raporların ve metriklerin düzenini ve detaylarını doğrudan görebilir ve aracın çalışma sürecinde elde ettiği sonuçları gösterebilir. Bu rehber, veri boru hattını bilmek ve deneysel süreci yeniden oluşturmak altında beklenen çerçeve davranışını doğrulamak için önemlidir.
Uygulama prototipi:
Bu bölüm, PreventativeTestPro çerçevesinin nasıl kullanılacağına dair ayrıntılı ve adım adım bir rehber sunar. Kullanıcıların iş akışını yeniden üretmesine yardımcı olmak için her aşama sırayla tanımlanır. Bu bölüm, sonuçların yeniden üretilmesini kolaylaştırmak, önemli kontrol noktalarını işaret etmek ve PreventativeTestPro çerçevesinin farklı deneysel veya operasyonel ortamlarda tutarlı şekilde kullanılmasını sağlamak için uygulama adımlarını yapılandırılmış bir formatta sunar.
Bu adımda, PreventativeTestPro GUI kullanılarak en iyi önleyici test iş akışı seçilebilir. Şekil 3 , test sürecinde farklı bir adımı temsil eden beş seçeneği göstermektedir: testleri paralel çalıştırmak, mevcut test vakalarını önceliklendirerek çıktıyı izlemekten test paketi oluşturmak, manuel test vakaları oluşturmak, otomatik test vakaları oluşturmak ve temel nedeni bulmak. Kullanıcı bir seçim yaptığında, belirlenen iş akışı başlar. Bundan sonra, sonraki aşamalarda ek modlar (örneğin yapay zeka tabanlı test vakası oluşturma veya kök neden analizi) eklenebilir. Bu iyi organize edilmiş arayüz, tekrarlanıp daha küçük parçalara ayrılabilen önleyici test çalışmaları yapmanın bir yolunu sunar.

Şekil 3: Sistemin kullanıcı arayüzü 1. Bu şekil, önleyici test yapmak için beş farklı yoldan seçim yapma imkanı veren PreventativeTestPro kullanıcı arayüzünü göstermektedir: 1. Önleyici Test, Paralel Yürütme: Teste Başlama, 2. Önleme Testi, Sentetik Uygulama İzlemesine Dayalı Test Paketinin Sonlandırılması, 3. Önleme Testi, GenAI ile Manuel Test Vakaları Oluşturma, 4. Koruyucu Test, GenAI ile Otomatik Test Vakaları Oluşturma, 5. Koruyucu Test, GenAI kullanarak Kök Neden Analizi. Aynı anda sadece bir seçenek seçilebilir. Modüler tasarım, önleyici testleri yapmayı kolaylaştırır ve yapay zeka destekli test oluşturma ve tanı ekliyor. Bu figürün daha büyük bir versiyonunu görmek için lütfen buraya tıklayın.
Şekil 4 , framework'ün Paralel Yürütme arayüzü olarak gösterilmektedir. Bu adımda kullanıcı, test etmek istediği uygulamanın URL'sini ve yapılandırma ayarlarını içeren özellikler dosyasına giden mutlak yolu girer. Girdiler ayarlandıktan sonra, kullanıcı aynı anda Test Başlat butonuna tıklayarak testleri çalıştırmaya başlayabilir; bu buton aynı zamanda test edilen web sitesini izler ve güvenlik, performans, konsol ve JavaScript kayıtlarını oluşturur. Devam eden yürütmeyi Testi Durdur butonuna tıklayarak durdurabilirsiniz. Tavsiye Al butonu sayesinde kaydedilen loglardan yapay zeka kaynaklı içgörüler elde edebilirsiniz. Bu tasarım, birden fazla test kategorisinin (işlevsel, performans ve güvenlik) aynı anda çalışmasını sağlar ve bu da sorunları daha hızlı bulmayı kolaylaştırır.

Şekil 4: Sistemin kullanıcı arayüzü 2. Bu şekil, PreventativeTestPro çerçevesinin Paralel Yürütme modunu göstermektedir. Kullanıcı, hedef uygulama URL'sini ve yapılandırma detaylarını içeren bir özellik dosyasına giden yolu belirtir. Seçenekler arasında Teste Başla (işlevsel, güvenlik ve performans testlerini paralel çalıştırmak ve logları kaydetmek için), Stop Testing (yürütmeyi durdurmak için) ve Tavsiye Alma (loglar ve metriklerden yapay zeka tabanlı içgörüler elde etmek için) yer alır. Bu figürün daha büyük bir versiyonunu görmek için lütfen buraya tıklayın.
Şekil 5, PreventativeTestPro çerçevesinin İzleme tabanlı Test Sonlandırma arayüzünü göstermektedir. Bu adımda kullanıcı, izleme çıktı dosyası için yolu, hata veya istisna düğümlerini almak için JSON yol sorgusunu ve oluşturulan vakaları kaydetmek için test deposu yolunu ayarlar. Girdiler ayarlandıktan sonra, kullanıcı önce onlara eşlik eden sınıf ve metodun isimlerini alabilir ve test çekimindeki test vakalarını bulunan sınıf ve yönteme göre sıralayabilir. Bu önceliklendirme adımı, test vakalarını etkili şekilde sıralamak için izleme verilerinin nasıl kullanılacağını gösterir.

Şekil 5: Sistemin kullanıcı arayüzü 3. Bu şekil, sentetik izleme çıktıları kullanılarak PreventativeTestPro çerçevesinde bir test paketinin nasıl önceliklendirileceğini gösterir. Kullanıcı, izleme çıktı dosyasına giden yolu, istisnaları/hataları almak için JSON yolunu ve test deposuna giden yolu (çevrimdışı) girer. Sınıf/Yöntem Adı Alın ve Test Vakaları Alın seçenekleri, eşleme anomalilerini çalıştırılabilen test vakalarına dönüştürmek için kullanılabilir. Bu, çalışma zamanı sorunlarının test sürecine dahil edilmesini sağlar. Bu figürün daha büyük bir versiyonunu görmek için lütfen buraya tıklayın.
Şekil 6 , PreventativeTestPro'nun Manuel Test Vakası Oluşturma arayüzünü göstermektedir. Bu adımda, kullanıcı programa yığın iz dosyasını nereden bulacağını belirtir; bu dosyanın anomali gösterdiği için yığın iz dosyasına mutlak yol ve yapılandırma özellikleri dosyasına giden yolu sağlar. Girdiler ayarlandıktan sonra, Generate Test Cases seçeneği çalıştırılabilir; bu da anormaliyi yapılandırılmış manuel test vakalarına dönüştürür. Bu, daha önce yaşanan çalışma zamanı hatalarının test sürecine her zaman dahil edilmesini sağlar. Framework, süreci otomatikleştirerek test vakaları oluşturmayı kolaylaştırır. Bu, manuel çalışmayı azaltır, test kapsamını artırır, testleri daha güvenilir hale getirir ve aynı sorunun tekrar yaşanmasını engeller. Bu adım, sorunları bulma ile kalitenin iyi olduğundan emin olmak arasında çok önemli bir bağlantıdır.

Şekil 6: sistemin kullanıcı arayüzü 3. Bu şekil, PreventativeTestPro'nun test vakası oluşturma arayüzünü göstermektedir. Anomali yığını izlerini, Davranış Odaklı Geliştirme (BDD)'de manuel test vakalarına dönüştürür ve kullanılabilir. Kullanıcı, stack trace dosyasına ve özellikler dosyasına giden yolları verir ve ardından "Test Vakaları Oluştur" seçeneğine tıklayarak bulunan hatayla otomatik olarak eşleşen vakalar oluşturur. Bu, çalışma zamanı sorunlarının her zaman tekrarlanabilir regresyon testlerine dönüştürülmesini sağlar. Bu figürün daha büyük bir versiyonunu görmek için lütfen buraya tıklayın.
Şekil 7 , PreventativeTestPro'nun Otomatik Test Vakası Oluşturma arayüzünü göstermektedir. Bu adımda kullanıcı, gözlemlenebilirlik JSON çıktı dosyasına mutlak yolu ve özelliğin yapılandırma dosyasına giden yolu verir. Otomatik Test Vakaları Oluştur butonuna tıklandığında, sistem izleme verilerini işler ve aynı sorunları göstermek için çalıştırılabilen test vakaları oluşturur.

Şekil 7: Sistemin kullanıcı arayüzü 4. Bu şekil, gözlemlenebilirlik verileri kullanılarak çalıştırılabilen testler yapan PreventativeTestPro'nun otomatik test vakası oluşturma arayüzünü göstermektedir. Kullanıcı, özellikler dosyasına giden yolu ve gözlemlenebilirlik JSON çıktı dosyasını verir. Sonra, "Otomatik Test Vakaları Oluştur" tuşuna tıklayarak çalıştırılabilen betikler (Selenium ve TestNG formatında) oluşturuluyor. Bu figürün daha büyük bir versiyonunu görmek için lütfen buraya tıklayın.

Şekil 8: Sistemin kullanıcı arayüzü 5. Bu şekil, PreventativeTestPro'nun Kök Neden Analizi (RCA) için anomli enstrümantasyon arayüzünü göstermektedir. Kullanıcı, özellikler dosyasına ve yığın iz dosyasına giden yolu verir, ardından yapay zeka destekli analizi başlatmak için RCA'yı seçer. Bu adım, tespit edilen anomalileri yapılandırılmış tanısal içgörülere dönüştürür; bu da hataların tekrarlanabilir ve soruna özgü şekilde düzeltilebilmesini sağlar. Bu figürün daha büyük bir versiyonunu görmek için lütfen buraya tıklayın.
Sorun Çözümü:
Tablo 1 , yalnızca uygulama koduyla ilgili en önemli sorun giderme noktalarını gösterir. Bu noktalar, PreventativeTestPro çerçevesini çalıştırırken ortaya çıkan kod düzeyindeki sorunları nasıl düzeltileceğini hatırlamanın hızlı bir yoludur. Proje dokümantasyonu, uygulamanın genel işlevselliğini etkileyen sorunların giderilmesinde daha fazla yardım isteyen okuyucular için daha fazla bilgi ve adım adım talimatlar sunar. Tam kaynak şu bağlantıdan alınabilir: https://github.com/sohambpatel/PreventativeTests/wiki/How-to-use%3F. Bu ek referans, kullanıcıların sadece kodlama sorunlarını çözmekle kalmayıp, aynı zamanda fonksiyonların nasıl arıza gidereceğini öğrenmelerini sağlar ve böylece framework'ü daha etkili kullanmalarını sağlar.
| Hata Davranışı | Kök Neden | Nasıl Düzeltilir? |
| Uygulama başlamıyor | Java Yolu ayarlanmamıştır | Ortam değişkeninde JAVA_HOME |
| Server başlatıldığında arızalanır | 8080/9090 portu kullanımda (özellikle Docker kullanılırken) | Docker port eşlemesi güncellen |
| GenAI içeriği sıfır | Token süresi dolmuş olabilir | Token oluşturun ve config.properties dosyasını güncellemeden önce bunu giriş olarak verin |
| Çerçeve tarafından oluşturulan tarayıcı örneği ağa bağlanmıyor | Ya ZAP sunucusu çalışmıyor ya da ZAP kimlik bilgileri yanlıştır | Uygulamayı çalıştırmadan önce ZAP'i aç, eğer çalışıyorsa ve sorun devam ediyorsa, config.properties'te ZAP kimlik bilgilerini güncellemeden önce bunu giriş olarak vermeden önce güncelleyin |
Tablo 1: Yaygın önerilen sistem hataları ve hızlı çözümler. Bu tablo, yaygın uygulama spesifik hataları, sorun giderme ve hızlı çözümleri göstermektedir.