Page Object Model ile C# .NET Core Test Otomasyonu

Irem Uludirik
5 min readDec 15, 2021

--

Herkese merhabalar! Bu yazımda Page Object Model ile C# .NET Core Test Otomasyonu nasıl yapılır, adım adım deneyim ve tecrübelerim ile bahsedeceğim.

Keyifli okumalar dilerim! :)

Kullanacağımız Teknolojiler ve Kurumları

DotNET Core: .NET Core, Microsoft ve .NET topluluğu tarafından geliştirilmiş ve geliştirilmeye devam eden, Github üzerinde bulunan açık kaynaklı, çapraz platform geliştirme yapmaya olanak sağlayan bir platformdur. .Net Core çapraz geliştirmeye verdiği olanak sayesinde Windows, macOS ve Linux’u destekler. Ayrıca bulut ve IoT uygulamaları oluşturulmasında kullanılabilir. Buradan bilgisayarımıza uygun sürümünü indirip, bilgisayarımıza 3.1.21 versiyonunu kuralım.

Visual Studio Code: Microsoft tarafından Windows, Linux ve MacOS için geliştirilen bir kaynak kodu düzenleyicisidir. Hata ayıklama, gömülü Git kontrolü, sözdizimi vurgulama, akıllı kod tamamlama, snippet’ler ve kod yeniden yapılandırma desteği içerir.Bunun için Visual Studio Code indirmemiz gerek. Buradan bilgisayarımıza uygun sürümünü indirip, bilgisayarımıza kuralım.

VSCode Extensions: Uzantılara VSCode içinden göz atabilir ve yükleyebilirsiniz. Sol taraftaki Extensions simgesinden ulaşabilirsiniz. Bu size VS Code Marketplace’teki en popüler VS Code uzantılarının bir listesini çıkartıcaktır. Bizim bu test için kullanacağımız bir kaç paket var onları indirelim.

  • C# → C# dilini indirelim, şuraya link bırakıyorum.
  • NuGet Package Manager → Terminali kullanarak projenizin .csproj veya .fsproj dosyalarına .NET Core 1.1+ paket başvurularını kolayca eklemenize veya kaldırmanıza olanak tanıyan bir Visual Studio Code uzantısı, şuraya link bırakıyorum.
  • .NET Core Test Explorer → C# testleriniz için bir hata ayıklama oturumu başlatmak için kullanabilirsiniz, şuraya link bırakıyorum.
  • Specflow Tools → Behavior Driven Development’ı (BDD) destekleyen bir test çerçevesidir. Gherkin adlı bir dil tarafından tanımlanan basit bir dilbilgisi kullanarak düz anlamlı ingilizce metinde uygulama davranışını tanımlamamızı sağlar, şuraya link bırakıyorum.

Burada kullanabileceğiniz bir çok farklı extensionlar mevcuttur. İstediğinizi kurabilirsiniz. Ben kullandıklarımı açıkladım :)

Selenium IDE: Selenium, web tarayıcı otomasyonunu desteklemeyi amaçlayan bir dizi araç ve kitaplık için açık kaynaklı bir şemsiye projedir. Selenium, bir test komut dosyası dili öğrenmeye gerek kalmadan işlevsel testler yazmak için bir oynatma aracı sağlar. Buradan tarayıcımıza uygun sürümünü indirip, kuralım.

Başlayalım:

  • Öncelikle kendimize bir base URL belirleyelim. Ben D&R’ı tercih ettim.
Selenium IDE’i açalım ve Record a new test in a new project diyelim.
Projemize isim verip Tamam diyelim.
URL’imizi yazalım ve kayda başlayalım.
  • Sitemiz açıldığında, neyi test etmek istiyorsak yapalım ardından Selenium IDE’ye dönüp sağ üst köşeden kaydımızı durduralım.
  • Daha sonra testimizi bir çalıştırıp kontrol edelim, herhangi bir sorun ile karşılaşmamak için.
Daha sonra, Testin isminin bulunduğu yere gelelim ve üç noktaya basıp, Export’a basalım.
Karşımıza bir ekran gelecek. C# ile çalışacağımız için, karşımıza iki seçenek çıkıyor. Buradan Test Otomasyon için daha ideal olan NUnit’i seçeceğiz. Ardından Export edebiliriz.
  • Masaüstümüzde yeni bir klasör oluşturalım, Export ettiğimiz testimizi içine atalım ve VSCode ile birlikte bu klasörümüzü açalım.
VSCode içerisinde, yukarıdaki bardan Terminale basıp New Terminal açalım. Ve terminalimize aşağıdaki komutları girelim:
  • dotnet new nunit: yazıp enterlayalım. Klasörümüzün içerisine çeşitli, gerekli dosyaların eklendiğini göreceksiniz.
  • dotnet restore: yazıp enterlayalım. Bu komut bizim, csproj dosyamızın içerisindeki dosyaları, paketleri bilgisayarımıza indirmemize yardımcı olur. VSCode tarafından zaten eklenmiş oluyor paketlerimiz, fakat biz bir dosyayı veya pakedi unutursak eğer bu komutu girebiliriz.
  • dotnet build: yazıp enterlayalım. Bu komut bizim, kodumuzun düzenlenebilirliği açısından önem arz ediyor. Fakat, bunu yazmak zorunda değiliz. Çünkü testi koştuğumuz zaman zaten build oluyor :)
  • dotnet test: testi çalıştırmamızı sağlar.

NuGet Package Manager

Kurulumunu yukarıda açıkladığım üzere, bu eklenti paketi üzerinden de kuracağımız bir kaç paket mevcut.
Yukarıdaki bardan: View → Commant Palete diyelim, Nuget Package üzerinden Add Package diyelim. Bizden Pakedin ismini isteyecek;

  • Selenium Web Driver: Selenium yazalım. Bize Selenium’un tüm paketlerini gösterecek.
    Ardından Selenium Web Driver’ı seçelim (Latest version’u seçiyoruz.).
    Garanti olsun isterseniz, hangi browser’ı kullanacaksanız, ona göre de bir web driver seçebilirsiniz. Ben chrome kullandığım için şu şekilde örnek verebilirim: Selenium.WebDriver.ChromeDriver
  • TestPlatform: TestPlatform diyelim ve enterlayalım.
    Ardından → Microsoft.TestPlatform.TestHost’a basalım. → karşımıza çıkan listeden release olan en son sürümü seçiyoruz. Ve kuruyoruz.
  • Restore etmeyi unutmayalım! :)
csproj dosyamızın içine eklendiğini görebilirsiniz :)

Kodumuza Dönelim

UnitTest1.cs klasörü içerisinden namespace dotNET_Test’i alalım ve, Export ettiğimiz dosyamızın içine yapıştıralım
Kodumuzu namespace dotNET_Test içerisine aldık, en sonda, } ile kapatmayı unutmayalım

Kodumuzda bulunan; [SetUp] ilk başta çalışır, daha sonra [Test] çalışır, en son [TearDown]’a gelir.

Run test diyelim ve bakalım sonucumuz ne olacak?

Test annotation’ımız kodumuzda bulunduğu için buradan kolaylıkla testimizi koşabiliriz
Evet testimiz başarı ile geçti :)

Page Object Model

Page Object Model, yani kısaca POM, kod tekrarını azaltmada faydalıdır ve test senaryosu bakımını iyileştirir. Bir uygulamanın her web sayfasını bir sınıf dosyası olarak düşünebiliriz.

Verdiğim örnekten devam edecek olursak, basit bir örnekle açıklamaya çalışayım, öncelikle:

  • Projemizin içinde, PageObject diye bir klasör oluşturalım.
  • Klasörümüzün içinde, bir BasePage.cs dosyası oluşturalım. Bu dosyamızın içine: driver bilgilerini, setup ve teardown bilgilerini koyalım. (Publicte kullanmayı unutmayalım).
  • Kullanacağımız paketleri de, kodumuzun en başında using ifadesiyle çağıralım.
BasePage dosyamızın içindeki kodlarımız
  • Ana test dosyamıza gelirsek, buradan artık BasePage’e çektiğimiz verileri silebiliriz. Ve BasePage’den importlayalım:
Testimizin isminden sonra TAB!a basalım : koyalım ve tekrardan TAB’a basarak nereden import yapacaksak (BasePage) o dosyanın ismini girelim.
  • Böylece kodumuz daha derli toplu duracaktır.

Site içerisinde ne kadar çok farklı sayfa üzerinde çalışacağınıza göre, kodunuzu o kadar çok sayfalara bölebilirsiniz.

Ayrıca:

Sol tarafta bulunan, şişe imgesine de basarak testlerimizi koşabiliriz :)

Bu yazımda Page Object Model ile C# .NET Core Test Otomasyonu nasıl yapılır, adım adım deneyim ve tecrübelerim ile bahsetmeye çalıştım.

VS code ve extensionları (NuGet Package Manager .NetCore Test Explorer, Specflow Tools) , .NetCore, Selenium IDE gibi kullanacağımız teknoloji ve paketlerden bahsedip kurulumlarını açıkladım.

Selenium IDE üzerinden bir Base URL belirleyip testimizi yaptık. C# nunit olarak exportumuzu aldık. VSCode üzerinden C# .NetCore ile çalışmak için gerekli komutları, extensionları ve paketleri tanımlayıp yükledik. Page Object Model ile küçük bir çalışma yaptık.

Umarım faydası olur. İyi çalışmalar dilerim :)

--

--