Uygulama programlama arayüzü testlerinin java rest assured ile otomatize edilmesi
Automating api tests with java rest assured
Yazar: SİNAN AY
Danışman: PROF. DR. SARP ERTÜRK
Kocaeli Üniversitesi / Fen Bilimleri Enstitüsü / Elektronik ve Haberleşme Mühendisliği Ana Bilim Dalı / Elektronik ve Haberleşme Mühendisliği Bilim Dalı
Derece: Yüksek Lisans, 2023
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control

Özet:
Günümüzde birçok sektör, yazılım sistemlerini temel bileşen olarak kullanmaktadır. Yazılım üretmenin en önemli rolü, beklenen işlevselliğin sağlanabilmesi için gereksinimlerin doğru anlaşılması ve testlerin hatasız yapılmasıdır. Yazılımın kalitesinden emin olmak için gerçekleştirilen manuel test sürecinde zaman kaybı, hata oranı ve test süresi artabilmektedir. Bu tip senaryoları en aza indirmek için yazılım test otomasyon çalışmaları yapılmaktadır. Yazılım testlerinin hızlı ve verimli gerçekleşmesi, yazılım geliştirme süreçlerinde önemli bir katkı sağlamaktadır. Yazılım testi konusunda en önemli alanlardan biri de API testleridir. API testi, uygulama programlama arayüzlerini doğrulayan bir yazılım testi şeklidir. API testinin amacı, uygulama programlama arayüzlerinin işlevselliğini, güvenilirliğini, performansını ve güvenliğini kontrol etmektir. 
Bu çalışmada, aktif olarak kullanılan bir araç takip ve akıllı taksi yönetim sisteminin backend otomasyonu Java Rest Assured ile gerçekleştirilmiştir. Test otomasyonu Java programına açık kaynak bir java kütüphanesi olan Rest Assured eklenerek gerçekleştirilmiştir. Gerçekleştirilen otomasyon ile sistemin denetimi sürekli ve manuel test sürecine göre daha kaliteli bir şekilde sürdürülebilmektedir. Ayrıca oluşturulan test otomasyona, Allure test rapor aracı eklenerek sistemin test sonucu raporlanabilmektedir. Bu sayede manuel test süreçlerinde oluşabilecek kullanıcı hataları ve süre kayıpları en aza indirilerek sistemin doğru bir şekilde çalıştığı, daha kolay raporlanabilir duruma getirildiği görülmüştür. Gerçekleştirilen test otomasyonu ile uygulama güncelleme ve hata tespit süreçleri manuel test sürecine göre daha kısa ve minimum hata ile tamamlanabilmektedir. Bu durum geliştirilen sistemin kalitesini arttırarak son kullanıcıya üründen beklenen girdi ve çıktıları sağlamayı hedeflemektedir.

Abstract:
Today, many industries use software systems as a basic component. In order to realize the quality, which is the most critical criterion of software production, the requirements must be understood correctly and the tests must be carried out without errors. Time loss, error rate and test time may increase in the manual testing process performed to ensure software quality. Software test automation studies are carried out to minimize such scenarios. Fast and efficient software testing makes an important contribution to software development processes.
One of the most important areas in software testing is API testing. API testing is a form of software testing that validates application programming interfaces. The purpose of API testing is to check the functionality, reliability, performance and security of programming interfaces.
In this study, the backend automation of an actively used vehicle tracking and smart taxi management system was implemented with Java Rest Assured. Test automation was carried out by adding Rest Assured, an open source java library, to the Java program. With the automation realized, the control of the system can be maintained in a higher quality way than the continuous and manual test process. In addition, the test result of the system can be reported by adding the Allure test report tool to the test automation created. In this way, it has been seen that the system works correctly and can be reported more easily by minimizing user errors and time losses that may occur in manual testing processes. With the test automation carried out, application update and defect detection processes can be completed in a shorter time and with minimum error compared to the manual test process. This situation aims to increase the quality of the developed system and to provide the end user with the expected inputs and outputs from the product.