Skip to content

Restsharp, Allure ve Log4Net framework kullanarak birkaç senaryo üzerinden API Test projesi oluşturdum. Test sonuclarının loglanması için log4net, monitoring edilmesi için de allure yapısını kullandım.

Notifications You must be signed in to change notification settings

AksalBilal/APITestProjesi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

APITestProjesi

Restsharp, Allure ve Log4Net framework kullanarak birkaç senaryo üzerinden API Test projesi oluşturdum. Test sonuclarının loglanması için log4net, monitoring edilmesi için de allure yapısını kullandım. Bu Proje Yazılmış olan API ların girilen parametrelere göre doğru çıktıyı verip vermediğinin kontrollerinin yapıldığı ve bunların yönetilmesini sağlayan monitoring ve logging yardımıyla çok amaçlı olarak isteğe göre değiştirilebilir bir projedir.

Kullanılan Teknolojiler

  • C# (Proje de tam olarak istediğim yapıyı kurabilmem için bu dili tercih ettim);
  • Nunit3(Test Caselerin yazılması ve çıktıların kontrollerinde kullandım);
  • RestSharp (Case de yer alan API ye istek atılmak için kullandım);
  • Newton.Json (Json ların serialization-deserialization dönüşüm işlemlerinde kullandım);
  • Allure (Test Sonuclarının monitorize edilmesinde kullandım);
  • Log4Net (Hata sonuclarının loglanmasında kullandım);
  • Nunit-Console (Yazılmış olan test senaryolarını console üzerinden koşturup sonuçlarını takip etmek için kullandım);

Proje Yapısının Açıklaması

Proje de alttaki yapıyı kullandım. Her başlığın ne için açıldığını ve ne zaman kullanıldığını altta açıklıyorum.

image

  • Base: Genel olarak kod içerisinde fazla kullanılacağını düşündüğüm kod yapılarının tekrarını önlemek için tek bir yerden oluşturup yönetimi kolaylaştırdım. Suan icerisinde 'RestHttpClient' ve 'BaseClass' isimli sınıflarimiz var.

    • RestHttpClient: Yapılacak olan http isteklerini tek bir yerden yazıp yönetmek.
    • BaseClass: Sistemi ayağa kaldıracak ve kapatacak ana kontrolcü gibi düşünülebilir. Caseler koşmadan önce BaseClass tan allure yapısı tetikleniyor. Testler koştuktan sonra da log yapısı tetikleniyor. Bu yapıyı kullanarak ilerde eklemeler olunca genel sistemde değişikler yapmayıp burdan kolaylıkla yapılmasını sağlayacağını düşündüğüm için ekledim.
  • Helpers: Sistemde birden fazla yerde kullanılacağını düşündüğüm metodları bu klasör altında topladım. Böylelikle kod tekrarını önleyip okunaklığı arttırdığını düşündüm. Küçük bir proje olduğu için şuan icerisinde Logger ve JsonConverter sınıfı var.

    • Logger: Belirli bir path içerisine gönderilen mesajların eklenmesini sağlayan methodu içeriyor.
    • JsonConverter: İçerisinde serialization-deserialization dönüşümlerini yapan methodlar bulunuyor.
  • Logs: Bu klasörün normalde burda olmaması gerekiyor. Sadece log ve allure çıktılarını gösterebilmek için ekledim. İstenilen bir klasörün path i verilerek log ve allure kayıtlarını istediğiniz path e kaydedebilirsiniz.

  • Models: API ye istek atarken bu isteklerin bir sınıf biçiminde olması gerekiyor. Genel olarak bu sınıfların ve bu sınıflar ile ilgili methodların yer aldığı klasördür. Bu klasörün içerisi projeye göre genişletilmelidir. Örneğin Test Suites altında Create, Update veya Search adında klasörler açıp her başlığa göre ilgili sınıfları ilgili başlık altında açmalıyız.

    • SearchResponse: Senaryoya göre By Search yapısı kullanıldığı zaman dönen sonucların karşılığı olan sınıf yapısıdır. Search Response içerisinde dönen datalar içerisinde title a göre arama yapmamı sağlayan bir method da bulunuyor.
    • SearchResponseById: Senaryoya göre By ID or Title search yapısı kullanıldığı zaman dönen sonucların karşılığı olan sınıf yapısıdır.
  • Test Suites: Test Caselerinin yer aldığı ve yönetildiği sınıftır. Bu klasörün içerisi projeye göre genişletilmelidir. Örneğin Test Suites altında Create, Update veya Search adında klasörler açıp caseleri anlamlı isimlendirmeler ile ayırmalıyız.

    • SearchTestCases: Senaryoya göre içinde search test case lerinin bulunduğu sınıftır.
  • allureConfig.Template.json: Allure config ayarlarının bulunduğu dosyadır.

  • app.config: Proje de zaten default bulunuyor ama ben içerisine API url, API key ve allure log path gibi sabit olan değerleri ekleyerek gerektiği zaman da buradan okudum. Bu şekilde sürekli sabit olup proje çalıştığı sırada değişmeyecek olan değerleri bir yerde toplayarak gereksiz kod tekrarını önleyip kod okunaklığını ve yönetilebilirliğini arttırdım. Sürekli sabit olan değerleri bu bölüme ekleyerek devam edebiliriz.

  • Messages.resx: Proje genelinde case ler fail verdiği zaman gösterilecek olan hata mesajlarını tek bir yerden yazıp ilerde caseler çoğaldığı zaman geri dönüp düzeltilmesini kolaylaştıracağını düşündüm. image Burda da örnek olarak 2 tane hata mesajını görebilirsiniz. ilk sutün da projede cağrılan ismi, 2. sütunda içeriğini ve son sütunda da açıklamasını görebilirsiniz.

Projenin Ayağa Kaldırılması

  1. İlk olarak projede Allure monitoring tool kullanıldığı için bilgisayarınızda allure yüklü olmaldır. Buradan indirebilirsiniz.

  2. Allure çıktılarının kaydedileceği path i de kendinize göre ayarlamak için projede bulunan app.config dosyası içerisinden 'AllureLogsPath' key li değerin value sini kendi istediğiniz path ile değiştirin.

    Not: Bu path içinde "allure-results" isimli bir klasör olması gerekiyor.

  3. Log çıktılarının kaydedileceği path i de kendinize göre ayarlamak için yine projede bulunan app.config dosyası içerisinden log4net tag i içerisindeki file value yi kendinize göre ayarlayın.

  4. (Opsiyonel) Projeyi açmadan console üzerinden çalıştırmak için nunit-console indirmeniz gerekiyor. Buradan indirebilirsiniz. Bunları yaptıktan sonra clean project ardından da rebuild yaptıktan sonra test caseleri koşturduğunuz zaman bir hata almamanız gerekiyor.

Allure Monitoring Tool Kullanımı

Allure yapısı caseler her tamamlandıktan sonra belirtilen path e kaydediliyor. Bunları görüntülemek için komut satırını açıp "allure serve [config dosyasında ayarladığınız path]\allure-results" girerseniz browserda açılan pencere üzerinde detaylı inceleme yapabilirsiniz. Örnek komut:

allure serve C:\Users\bilal\OneDrive\Masaüstü\TechTestAPI\TechTestAPI\Logs\AllureLogs\allure-results

Nunit-Console Kullanımı

Nunit console kullanarak projeyi çalıştırmadan komut satırından testleri koşturup sonuçları görmek isterseniz komut satırını açıp "[nunitconsole.exe path] [test projesinin dll pathi("bin\debug" içerisinde bulunur)] --params=allureCleanUpType=false" seklinde komut girerek testleri koşturabilirsiniz.

Örnek Komut:

C:\Users\bilal\Downloads\Compressed\NUnit.Console-3.11.1\bin\net35\nunit3-console.exe C:\Users\bilal\OneDrive\Masaüstü\TechTestAPI\TechTestAPI\bin\Debug\TechTestAPI.dll --params=allureCleanUpType=false

Son bölümdeki allureCleanUpType bölümünün sebebi de her koşma başlamadan önce eski allure loglarını silmek istediğiniz zaman true yapınca eski kayıtları silerek yeniden oluşturur. Bu parametreler isteğe göre eklenip çoğaltılabilir... Komut satırına girdikten sonra caseler koşmaya başlar ve tamamlandığı zaman yine komut satırı üzerinden size sonuçları gösterir. Daha detaylı bilgi almak isterseniz de komut satırını çalıştırdığınız konuma('C:\Users\UserName' olur genelde) 'TestResult.xml' isimli bir xml dosyası oluşturur. Buradan detaylı inceleyebilirsiniz.

Örnek Ekran Çıktıları

  • Nunit console örnek ekran çıktıları

    • Succes Durumu: image
    • Fail Durumu: image
  • Log Yapısının örnek çıktıları

    image

  • Allure Yapısının Örnek çıktıları

    • Genel Sonuçları Overview bölümünden takip edebilirsiniz:image

    • TestCaseleri Suites Bazında görebilirsiniz:image

    • Testin Detaylarını Overview den görebilirsiniz:image

    • Daha önceki sonuçlarını Retries bölümünden görebilirsiniz:image

    Yukarıdaki ekranlar dışında allure tool unun daha birçok özelliği bulunmaktadır. Detaylı bilgi almak buraya bakabilirsiniz.

About

Restsharp, Allure ve Log4Net framework kullanarak birkaç senaryo üzerinden API Test projesi oluşturdum. Test sonuclarının loglanması için log4net, monitoring edilmesi için de allure yapısını kullandım.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages