C# ile Selenium WebDriver’da Veri Güdümlü Test

Bu yazımda C# programlama dilini kullanarak Selenium WebDriver’da Veri Güdümlü test tekniğini anlatmaya çalışacağım. Öncelikle Veri Güdümlü Test kavramını açıklamak istiyorum.

Veri Güdümlü Test Nedir ?

Test verilerinin bir excel tablosunda tutulduğu ve testler yürütülürken test verilerinin bu excel tablosundan rastgele seçilerek uygulamanın test edildiği bir test tekniğidir. Veri girişi fazla olan ekranlarda kullanılması işinizi ciddi anlamda kolaylaştıracaktır.

Kütüphanelerin Projeye Dahil Edilmesi

Selenium WebDriver’da POM makalemizde kullandığımız kodların üzerine veri güdümlü test tekniğini de ekliyor olacağız. Excel dosyasından veri okuyabilmek için Microsoft.Office.Interop.Excel kütüphanesini projemize dahil etmemiz gerekiyor. Bunun için Solution Explorer penceresinde yer alan References seçeneğini sağ tıklayın Manage NuGet Packages‘a tıklayın. Arama kısmına Microsoft.Office.Interop.Excel yazarak ilgili kütüphaneyi kurun. Kurumlar sonucunda References kısmı aşağıdaki gibi olmalıdır.

References

ExcelReader.cs Sınıfının Oluşturulması

Bu projemizde oturum açma senaryosunu canlandırıyor olacağız. ExcelReader.cs sınıfının içerisinde örnek excel dosyasında yer alan kullanıcı adı ve parola verilerini okuyacak olan methodu ve rastgele kullanıcı adı ve parola seçecek methodu yazıyor olacağız. Örnek excel dosyasını projemizin içerisinde yer alan bin / Debug klasörünün içerisine atmayı unutmayın. Örnek excel dosyasının görünümü de aşağıdaki gibi olacaktır.

login-data.xlsx
using Microsoft.Office.Interop.Excel;
using System;
using System.IO;
using System.Reflection;

namespace PomProject
{
    public class ExcelReader
    {

        #region Excel dosyasını okuyan method
        public static System.Data.DataTable ExcelDataRead(string excelFileName)
        {
            object rowIndex = 2;
            int index = 0;
            ApplicationClass app = new ApplicationClass();
            Workbook workbook = app.Workbooks.Open(excelFileName, 0, true, 4, "", "", true, XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
            Worksheet worksheet = (Worksheet)workbook.ActiveSheet;
            System.Data.DataTable dataTable = new System.Data.DataTable();
            
            // Okunacak kolon adları belirtiliyor.
            dataTable.Columns.Add("KULLANICI_ADI");
            dataTable.Columns.Add("PAROLA");

            // Dosyanın içerisinde yer alan satırlar teker teker dolaşılarak veriler alınıyor.
            System.Data.DataRow dataRow;
            while (((Microsoft.Office.Interop.Excel.Range)worksheet.Cells[rowIndex, 1]).Value2 != null)
            {
                rowIndex = 2 + index;
                dataRow = dataTable.NewRow();
                dataRow[0] = Convert.ToString(((Microsoft.Office.Interop.Excel.Range)worksheet.Cells[rowIndex, 1]).Value2);
                dataRow[1] = Convert.ToString(((Microsoft.Office.Interop.Excel.Range)worksheet.Cells[rowIndex, 2]).Value2);
                index++;

                // Alınan veriler dataTable nesnesinin içerisine atılıyor.
                dataTable.Rows.Add(dataRow);
            }
            app.Workbooks.Close();
            return dataTable; 
        }
        #endregion

        #region Rastgele kullanıcı adı ve parola veren method
        public void RandomUsernamePassGenerate()
        {
            // Okunacak excel dosyasının yolu belirtiliyor (login-data.xlsx)
            DirectoryInfo directoryInfo = new DirectoryInfo(Assembly.GetExecutingAssembly().Location);
            System.Data.DataTable dt = ExcelReader.ExcelDataRead(directoryInfo.Parent.FullName + "\\" + "login-data.xlsx");

            //Rastgele kullanıcı adı ve parola seçimi yapılıyor.
            Random random = new Random();
            int Index = random.Next(0, 3); ;
            var username = dt.Rows[Index][0].ToString();
            var password = dt.Rows[Index][1].ToString();

            // SignIn methoduna seçilen kullanıcı adı ve parola gönderiliyor.
            Pages.LoginPage loginPage = new Pages.LoginPage();
            loginPage.SignIn(username, password);

            //Gönderilen kullanıcı adı ve parola output ekranına yazdırılıyor.
            Console.WriteLine("Kullanıcı Adı: {0}", username);
            Console.WriteLine("Parola: {0}", password);
        }
        #endregion
    }
}

LoginPageTest.cs sınıfına ait test kodları aşağıdaki gibidir.

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using PomProject.Pages;

namespace PomProject.Tests
{
    [TestClass]
    public class LoginPageTest
    {
        // TestInitialize anatasyonu test kodu yürütülmeden önce yapılacakları belirtmektedir.
        [TestInitialize]
        public void SetUp()
        {
            BaseCollection.webDriver = new ChromeDriver();
            BaseCollection.webDriver.Manage().Window.Maximize();
            BaseCollection.webDriver.Navigate().GoToUrl(LoginCollection.loginUrl);
            string title = BaseCollection.webDriver.Title;
            Console.WriteLine("Sayfa başlığı {0} olan sayfa için test otomasyonu başlatıldı.", title);
        }


        [TestMethod]
        public void LoginTest()
        {
            ExcelReader excelReader = new ExcelReader();
            excelReader.RandomUsernamePassGenerate();
        }


        //TestCleanup anatasyonu test kodu yürütüldükten sonra yapılacakları belirtmektedir.
        [TestCleanup]
        public void TearDown()
        {
            BaseCollection.webDriver.Quit();
            Console.WriteLine("Test otomasyonu sonlandırıldı...");
        }
    }
}

Test kodunu yazdıktan sonra Test Explorer’dan çalıştıralım. Sonuç aşağıdaki gibi olacaktır. Bu mantıkla diğer sayfalar için de test kodlarınızı yazabilirsiniz.

Test Explorer

Faydalı olması dileğiyle…