how develop test scripts using top 5 most popular test automation frameworks
Test otomasyonu hakkında bilgi edinmeye başladığınızda, 'test otomasyonu çerçevesi' terimiyle karşılaşmalısınız. Belki bazılarınız bu terimden rahatsız olur ve bunun anlaşılması ve uygulanması daha da zor bir şey olduğunu hissetmeye başlarsınız.
Bu eğitim, test otomasyon çerçevelerini olabildiğince basit bir şekilde anlamanıza yardımcı olmak amacıyla yazılmıştır. Buradaki tüm öğreticileri okuyun ' Otomasyon Testi Eğiticileri dizisi burada .
Test otomasyonu çerçevesi (çok basit bir dilde) 'kurallar dizisi' dir. Kurallar, 'daha az bakım' ile sonuçlanacak şekilde komut dosyaları yazmamıza yardımcı olur.
Çerçeve kavramını tam olarak anlamak için, önce basit betikleri nasıl yazacağımızı ve sonra bunlara nasıl bir çerçeve uygulayacağımızı öğrenmeliyiz.
Test otomasyonunda betikler yazıyoruz. Komut dosyası oluşturma temelde üç 'A' ile ilgilidir:
youtube to wav dönüştürücü ücretsiz indirme
- ARANJMAN
- AKSİYON
- İDDİA
Aşağıda örneklerle birlikte her bir A'nın ayrıntıları verilmiştir:
# 1.ARANJMANveya Nesne Tanımlama
Nesneleri (düğmeler, açılır menüler vb.) Kimlikleri, adları veya Pencere Başlıkları vb. İle tanımlarız.
Web uygulaması durumunda, kullanıcı kimliğiyle veya XPath ile veya CSS ile veya Sınıf Adıyla vb. Tanımlarız. Hiçbir şey işe yaramazsa, nesneleri fare koordinatlarını kullanarak belirleriz (Ancak bu güvenilir bir nesne tanımlama yöntemi değildir)
İd kullanarak nesneleri tanımladığımız Selenium WebDriver örneğini (C # ile) ele alalım. (Web uygulaması)
IWebElement txtServer = _webDriver.FindElement(By.Id('tfsServerURL'));
MS Coded UI'den başka bir örnek (masaüstü uygulaması)
WinButton btnAdd = new WinButton(calWindow); btnAdd.SearchProperties(WinButton.PropertyNames.Name) = 'Add';
Tanımlamadan sonra, bu nesneleri komut dosyalarımızda yeniden kullanmak için UIMaps veya Object Repository'de düzenler veya saklarız. Bu nedenle bu adıma DÜZENLEME denir.
#iki.AKSİYONTanımlanmış Nesnede
Nesneler belirlendiğinde, üzerinde fare veya klavye ile bir takım eylemler gerçekleştiriyoruz.Örneğinya tıklarız ya da çift tıklarız ya da fareyi üzerine getiririz ya da bazen sürükleyip bırakırız. Bazen metin kutularına yazıyoruz. Dolayısıyla, bu nesneler üzerinde gerçekleştirdiğimiz her türlü eylem bu ikinci adımda ele alınmaktadır.
örnek 1 : (C # özellikli Selenium WebDriver)
txtServer.Clear(); txtServer.SendKeys(“Some sample text”);
Örnek 2 : (C # ile MS Kodlu UI)
Mouse.Click(buttonAdd);
# 3.İDDİA
İddia temelde nesneyi bazı beklenen sonuçlarla kontrol etmektir. Örneğin, hesap makinesinde 2 + 3 tuşlarına basarsak ekranda 5 gösterilmelidir. Bu durumda beklenen sonucumuz 5'tir. Bu kavram zaten ilk dersimizde açıklanmıştır.
Burada bir iddia örneği veriyoruz:
Assert.AreEqual('5', txtResult.DisplayText);
Test otomasyonunda yazılan neredeyse her komut dosyası şu üç şeyi içerir: Düzenleme, Eylem ve Onaylama.
Şimdi tüm bu adımları içeren eksiksiz bir komut dosyasına bir göz atın. Komut dosyası bir hesap makinesi açar, 1 + 6 tuşlarına basın ve ardından ekranın 7'yi gösterip göstermediğini kontrol edin.
Örnek A:
(TestMethod) (TestMethod) public void TestCalculator() { var app = ApplicationUnderTest.Launch('C:\Windows\System32\calc.exe'); //Object identification part (ARRANGEMENT) //----*Calculator Window----*// WinWindow calWindow = new WinWindow(app); calWindow.SearchProperties(WinWindow.PropertyNames.Name) = 'Calculator'; calWindow.SearchProperties(WinWindow.PropertyNames.ClassName) = 'CalcFrame'; //----*Button1 ----*// WinButton btn1 = new WinButton(calWindow); btn1.SearchProperties(WinButton.PropertyNames.Name) = '1'; //----*Button Add ----*// WinButton btnAdd = new WinButton(calWindow); btnAdd.SearchProperties(WinButton.PropertyNames.Name) = 'Add'; //----*Button 6 ----*// WinButton btn6 = new WinButton(calWindow); btn6.SearchProperties(WinButton.PropertyNames.Name) = '6'; //----*Button Equals ----*// WinButton btnEquals = new WinButton(calWindow); btnEquals.SearchProperties(WinButton.PropertyNames.Name) = 'Equals'; //----*Text Box Results----*// WinText txtResult = new WinText(calWindow); txtResult.SearchProperties(WinText.PropertyNames.Name) = 'Result'; //(ACTIONS Part) // Click '1' button Mouse.Click(btn1); // Click 'Add' button Mouse.Click(btnAdd); // Click '6' button Mouse.Click(btn6); // Click 'Equals' button Mouse.Click(btnEquals); //evaluate the results (ASSERTIONS) Assert.AreEqual('7', txtResult.DisplayText, “Screen is not displaying 7); //close the application app.Close(); }
Ne öğreneceksin:
- Bu senaryonun nesi var?
- Test otomasyonunda beş popüler çerçeve vardır:
- # 1. Doğrusal Çerçeve:
- # 2. Modülerlik Çerçevesi:
- # 3. Veriye Dayalı Çerçeve:
- # 4. Anahtar Kelime Odaklı Çerçeve:
- # 5. Hibrit Test Otomasyon Çerçevesi:
- Sonuç
- Önerilen Kaynaklar
Bu senaryonun nesi var?
Senaryoyu anlamak kolaydır ve umarım yukarıdaki örnekte üç 'A' kavramını alırsınız. Ama bu senaryoda her şey yolunda değil.
Bu komut dosyası, kolay bakıma izin vermez. Hesap makinesi örneğini tekrar ele alalım, hesap makinesinin her bir fonksiyonunun test senaryolarını yazmamız gerekirse, birçok test senaryosu olacaktır. 10 test durumu varsa ve her testte aynı nesneyi tanımlamalıyız, o zaman nesnenin adında veya kimliğinde herhangi bir değişiklik olursa, 10 test durumunda nesne tanımlama kısmını değiştirmemiz gerekir.
Örneğin, komut dosyasındaki EKLE düğmesi örneğini alın.
WinButton btnAdd = new WinButton(calWindow); btnAdd.SearchProperties(WinButton.PropertyNames.Name) = 'Add';
Diyelim ki bu hat 10 test durumunda kullanılıyor. Şimdi hesap makinesinin bir sonraki sürümünde, geliştirici düğmenin adını 'Ekle' den 'Artı' ya değiştirdi. Şimdi test senaryolarımızı çalıştırdığımızda, başarısız olacaklar ve yukarıdaki satırı 10 test durumunda buna değiştirmemiz gerekiyor.
btnAdd.SearchProperties(WinButton.PropertyNames.Name) = 'Plus';
Bu yüzden bu test durumunu iyileştirmeliyiz. Kodlamamızda meşhur KURU prensibini takip etmeliyiz. KURU, “Kendinizi Tekrar Etmeyin” anlamına gelir. Nesne tanımlama kısmını öyle yazmalıyız ki nesne yalnızca tek bir yerde tanımlanmalı ve her yere çağrılmalıdır.
Geliştirilmiş komut dosyasına bir göz atın.
Örnek B:
//defining the objects outside the script and only once. ApplicationUnderTest app = null; public WinWindow calWindow { get { WinWindow _calWindow = new WinWindow(app); _calWindow.SearchProperties(WinWindow.PropertyNames.Name) = 'Calculator'; _calWindow.SearchProperties(WinWindow.PropertyNames.ClassName) = 'CalcFrame'; return _calWindow; } } public WinText txtResult { get { WinText _txtResult = new WinText(calWindow); _txtResult.SearchProperties(WinText.PropertyNames.Name) = 'Result'; return _txtResult; } } //making functions for similar kind of tasks public void ClickButton(string BtnName) { WinButton button = new WinButton(calWindow); button.SearchProperties(WinButton.PropertyNames.Name) = BtnName ; Mouse.Click(button); } public void AddTwoNumbers(string number1, string number2) { ClickButton(number1); ClickButton('Add'); ClickButton(number2); ClickButton('Equals'); } //Test case becomes simple and easy to maintain. (TestMethod) public void TestCalculatorModular() { app = ApplicationUnderTest.Launch('C:\Windows\System32\calc.exe'); //do all the operations AddTwoNumbers('6', '1'); //evaluate the results Assert.AreEqual('7', txtResult.DisplayText, “screen is not displaying 7”); //close the application app.Close(); }
Yukarıdaki örnekte, calWindow ve txtResult nesneler ve bunları en üste taşıyın, böylece farklı test yöntemlerinde kullanılabilirler. Bunları yalnızca bir kez tanımladık ve bunları istediğimiz kadar test senaryosunda kullanabiliriz.
Windows 10 için en iyi sanal makine yazılımı
Ayrıca iki işlev oluşturduk. ClickButton () bir düğme adını kabul eder ve üzerine tıklar ve AddTwoNumber () herhangi iki sayıyı alır ve bunları kullanarak tıklama düğmesi içindeki işlevi.
Kodumuzu 'geliştirmeye' ve yeniden kullanılabilir ve bakımını yapılabilir hale getirmeye başladığımız an, bu, herhangi bir otomasyon çerçevesinden yararlanmakta olduğumuz anlamına gelir. Şimdi ilginçleşiyor.
Ayrıca bakınız=> Test otomasyonu için neden çerçeveye ihtiyacımız var?
Var test otomasyonunda beş popüler çerçeve :
- Doğrusal
- Modülerlik
- Veri tabanlı
- Anahtar Kelime Odaklı
- Hibrit
Şimdi her bir çerçeveyi özelliklerinin yardımıyla açıklayacağız.
# 1. Doğrusal Çerçeve:
Özellikler
- Bir betikle ilgili her şey betiklerin içinde tanımlanır.
- Soyutlama ve kod kopyalamaya aldırış etmez
- Kayıt ve oynatma normalde doğrusal kod oluşturur
- Başlaması kolay
- Bakım Kabusu.
Doğrusal Çerçevenin yukarıdaki 5 özelliğini okuyarak, Örnek A'yı bunlarla kolayca ilişkilendirebiliriz. Bu örnek temelde Doğrusal çerçeve kullanmaktadır, bir komut dosyasıyla ilgili her şey komut dosyasının içinde tanımlanır. çağrı penceresi ve TxtResult komut dosyası içinde tanımlanır. Komut dosyası, soyutlama ve kod kopyalamayla ilgilenmez. Aynı zamanda daha önce açıkladığım gibi bir bakım kabusu.
Öyleyse neden bu çerçeveyi kullanmalıyız?
Bu çerçeve, çok sayıda UI ekranının olmadığı küçük ölçekli projelerde kullanılabilir. Ayrıca, herhangi bir otomasyon aracını ilk kez kullandığımızda, normalde Doğrusal Formda kod üretir. Böylece, belirli eylemler için Otomasyon aracı tarafından hangi kodun oluşturulduğunu öğrenebiliriz. Bu nedenlerin dışında, komut dosyası yazarken bu çerçeveden kaçınılmalıdır.
=> Burada, QTP örneği ile Doğrusal ve Anahtar Kelime Çerçevesi örneğine bakın.
# 2. Modülerlik Çerçevesi:
Özellikler
- Nesneler bir kez tanımlanır ve tüm test yöntemlerinde yeniden kullanılabilir.
- Bireysel işlevler için küçük ve noktasal yöntemler oluşturulur
- Test senaryosu, bu küçük yöntemlerin ve yeniden kullanılabilir nesnelerin koleksiyonudur
- Bu, sürdürülebilir kod yazmamızı sağlar.
Yukarıdaki özellikleri okuyarak, Örnek B'mizi bu özelliklerle ilişkilendirebiliriz. Bu örnekte, bir soyutlama oluşturduk. calWindow en üste çıkarın ve her yerde kullanılabilecek bir özellik içinde tanımlayın. Adında iki küçük ve bağımsız işlev oluşturduk ClickButton () ve AddTwoNumber () . Hesap makinesinin 'Ekle' işlevini test eden son betiğimizi oluşturmak için bu iki küçük işlevi birleştiriyoruz.
Bu, daha kolay bakım sağlar. Hesap makinesi kullanıcı arayüzünde herhangi bir değişiklik olursa, yalnızca işlevleri değiştirmemiz gerekir. Komut dosyalarımız değişmeden kalacaktır. Bu çerçeve, otomasyonda oldukça kullanılmaktadır. Ünlü Sayfa Nesne Çerçevesi (Selenium ile birlikte kullanılan) da bir tür modülerlik çerçevesidir. Web uygulamasının tamamını ayrı sayfalara dağıtıyoruz. Her sayfanın düğmeleri, açılır menüleri ve onay kutuları, o sayfanın sınıfı içinde tanımlanmıştır. Web sitesinde herhangi bir değişiklik olursa, yalnızca o sayfa sınıfında değişiklik yapmalıyız ve diğer sayfalar bozulmadan kalacaktır. Bu, komut dosyalarının daha iyi bakımı ve daha kolay okunabilirliği ile sonuçlanır.
Bu çerçevenin tek dezavantajı, iyi Nesne Yönelimli kavramlar ve güçlü geliştirme becerileri gerektirmesidir. Bunlara sahipseniz, bu çerçeve şiddetle tavsiye edilir.
# 3. Veriye Dayalı Çerçeve:
Özellikler:
- Test Verileri (giriş ve çıkış değerleri) koddan ayrılır ve Harici Dosyalarda saklanır. Bu bir CSV dosyası, bir Excel elektronik tablosu veya bir Veritabanı olabilir.
- Komut dosyası yürütüldüğünde, bu değerler harici dosyalardan alınır, değişkenlerde saklanır ve varsa sabit kodlanmış değerleri değiştirir.
- Aynı test senaryosunun farklı girdilerle çalıştırılması gereken yerlerde gerçekten kullanışlıdır.
Örnek C:
Üç farklı girişle test senaryosu eklemek istiyoruz.
Veriler
7 + 2 = 9
5 + 2 = 7
3 + 2 = 5
Bu verileri (hem girdi hem de çıktı) harici bir CSV dosyasında sakladık.
(DataSource('Microsoft.VisualStudio.TestTools.DataSource.CSV', '|DataDirectory|\data.csv', 'data#csv', DataAccessMethod. Sequential ), DeploymentItem('TestCalc\data.csv'), TestMethod) public void TestCalculatorDataDrivsen() { app = ApplicationUnderTest.Launch('C:\Windows\System32\calc.exe'); //do all the operations AddTwoNumbers(FromCSV.ADD1, FromCSV.ADD2); //evaluate the results Assert.AreEqual(FromCSV.Sum, txtResult.DisplayText); //close the application app.Close(); }
Yukarıdaki komut dosyasında, veri kaynağımızı bir .csv dosyası olan komut dosyasının en üstünde tanımlıyoruz.
Bu CSV dosyasının yolunu verdik ve komut dosyasına onu 'Sıralı olarak' ayrıştırmasını söyledik. Bu, komut dosyasının CSV dosyasında bulunan satırlar kadar çalıştırılacağı anlamına gelir. Bizim durumumuzda, komut dosyası 3 kez çalışacaktır. Her çalışmada, ilk iki sütunda tanımlanan iki sayıyı ekleyecek ve bu iki sayının toplamının üçüncü sütunda bulunan sayı ile eşleştiğini doğrulayacaktır.
Bu çerçevenin çeşitli avantajları vardır. Tüm değerler komut dosyasının dışında saklanır, bu nedenle bir sonraki derlemede herhangi bir değişiklik olursa, sadece harici dosyadaki verileri değiştirmemiz gerekir ve komut dosyası bozulmadan kalır.
İkinci avantaj, aynı betiğin farklı girdiler için çalıştırılabilmesidir. 100 çalışanın kaydını test etmeniz gereken bir ERP örneğini ele alalım. Bir komut dosyası yazabilir ve çalışanlarla ilgili isimleri ve diğer verileri harici bir dosyada saklayabilirsiniz. Bir komut dosyası çalıştıracaksınız ve bu 100 kez çalışacaktır. Her seferinde farklı çalışanın verileriyle. Komut dosyasının çalışanı kaydetmekte başarısız olduğu verileri kolayca tespit edebilirsiniz. Negatif test yaparken ek bir avantaj olacaktır.
=> Burada QTP örneğiyle Veriye dayalı ve Karma çerçeve örneğine bakın.
# 4. Anahtar Kelime Odaklı Çerçeve:
Özellikler:
- Hem veriler hem de eylemler kodun dışında tanımlanır.
- Farklı eylem türleri için anahtar kelimelerin geliştirilmesini gerektiriyordu.
- Test etmemiz gereken işlevsellik, geliştirdiğimiz anahtar kelimeler ve test verileri kullanılarak tablo şeklinde adım adım yazılır. Bu tabloyu, veriye dayalı çerçevede olduğu gibi harici dosyalarda saklıyoruz.
- Komut dosyası bu tabloyu ayrıştıracak ve ilgili eylemleri gerçekleştirecektir.
- Kodlamayı bilmeyen manuel test uzmanının bir dereceye kadar otomasyonun parçası olmasını sağlar.
Örnek D:
Verileri (ör. 1 + 3 = 4) ve eylemleri (ör. Tıkla, Temizle vb.) Tablo halinde bir excel dosyasında tanımladık.
virüslerden kurtulmak için en iyi program
Komut dosyası böyle bir şey olacaktır (aşağıdaki kod sadece anlamak amacıyla yazılmıştır)
(TestMethod) public void TestCalculator() { app = ApplicationUnderTest.Launch('C:\Windows\System32\calc.exe'); Table tb = ReadFromExcel(); Foreach(WinRow row in tb) { WinCell Window = row.Cells(“Window”); WinCell Control = row.Cells(“Control”); WinCell Action = row.Cells(“Action”); WinCell Arguments = row.Cells(“Arguments”); UITestControl c = GetControl(Control.Text,Window.Text); If(Action.Text == “Click”) Mouse.Click (c); If (Action.Text == “Clear”) c.Clear(); if(Action.Text == “Verify Result”) Assert.AreEqual(c.Text, Arguments.Text) //….and so on } }
Yukarıdaki komut dosyası, excel dosyasının yalnızca bir ayrıştırıcısıdır. Excel dosyasını satır satır ayrıştırır ve ilgili eylemleri gerçekleştirmek için anahtar sözcükleri arar. 'Tıkla' anahtar kelimesini bulursa, tanımlanan nesneye tıklar. 'Sonucu Doğrula' bulursa, onaylamayı gerçekleştirecektir.
Anahtar kelime odaklı çerçeveyi kullanmanın çeşitli avantajları vardır.
İlk avantaj, bu çerçevenin test senaryolarında büyük değişiklik olasılığının olduğu senaryolarda çok yararlı olmasıdır. Bir test senaryosunda herhangi bir adım değişirse, koda dokunmamız gerekmez. Sadece excel dosyasını güncellememiz gerekiyor ve komut dosyası güncellenecek.
Tüm komut dosyalarınızı bir excel dosyasında tanımlayabilir ve bu excel dosyasını yeni komut dosyaları eklemek veya mevcut olanları güncellemek için manuel test uzmanlarına teslim edebilirsiniz. Bu şekilde, manuel test uzmanları da test otomasyonunun bir parçası olabilir çünkü hiçbir şeyi kodlamaları gerekmez. Sadece ihtiyaç duyulduğunda bu excel dosyasını güncelleyecekler ve komut dosyaları otomatik olarak güncellenecektir.
İkinci avantaj, betiğinizin araçtan bağımsız hale gelmesidir. Komut dosyalarınızı bir excel dosyasında tutabilir ve bir noktada otomasyon aracınızı değiştirmeniz gerekirse, başka bir araçta bir excel ayrıştırıcı yazarak kolayca değiştirebilirsiniz.
Bu çerçevenin dezavantajı, çeşitli eylem türleri için anahtar kelimeler icat etmeniz gerekmesidir. Büyük ölçekli projelerde, komut dosyalarınızı ve anahtar kelimelerinizi hatırlamanız ve düzenlemeniz gereken o kadar çok anahtar kelime olacaktır. Bu, bir noktada külfetli bir görev haline gelir.
Nesnelerin kolayca tanımlanamadığı ve fare koordinatlarını ve diğer teknikleri kullanmamız gereken bazı karmaşık senaryolarda, bu çerçeve pek yardımcı olmuyor.
Anahtar kelimeye dayalı, birçok otomasyon test edicisi için hala favori bir çerçevedir. Robot çerçevesi by Google, aktif bir topluluk tarafından desteklenen, anahtar kelime odaklı popüler bir çerçevedir.
# 5. Hibrit Test Otomasyon Çerçevesi:
Özellikler:
- Yukarıdaki tekniklerden iki veya daha fazlasının kombinasyonu, güçlü yönlerinden alınarak ve zayıf yönlerini en aza indirir.
- Çerçeve, modüler yaklaşımı veriye dayalı veya anahtar kelimeye dayalı çerçeveyle birlikte kullanabilir.
- Çerçeve, salt anahtar kelime odaklı bir yaklaşımda uygulanması çok zor olabilecek bazı görevleri gerçekleştirmek için komut dosyalarını kullanabilir.
Basit bir deyişle, Hibrit çerçeve, yukarıda belirtilen tekniklerin kombinasyonunu kullanın. Doğası gereği modüler olan veriye dayalı bir çerçeve kullanabiliriz. Bazı test senaryoları için anahtar kelimeye dayalı yaklaşımı kullanabiliriz ve geri kalanlar için modüler kullanabiliriz. Bu nedenle, bu makalede bahsedilen iki veya daha fazla tekniği karıştırdığımızda, aslında bir Hibrit yaklaşım kullanıyoruz.
Sonuç
Umarım test otomasyonu çerçevesi artık sizin için korkutucu bir terim değildir. En popüler çerçeveleri olabildiğince basit bir şekilde açıklamaya çalıştım.
Çerçeveler hayatınızı kolaylaştırmak için burada. Sürdürülebilir ve güvenilir komut dosyaları yazmanıza yardımcı olurlar. Çerçeveler kullanmadan, test otomasyon alanı bir kabustur. Uygulamadaki her küçük değişiklik için kodunuzu yüzlerce yerde değiştirmeniz gerekiyor.
Dolayısıyla, bu çerçevelerin anlaşılması, test otomasyonunun tadına bakmak isteyen her test uzmanı için bir zorunluluktur.
Bizim sonraki eğitim Bu seride, 'Test Otomasyonunun yürütülmesi ve raporlanması' nı öğreneceğiz.
Bu makaledeki herhangi bir şeyi kaçırdıysam veya herhangi bir soru sormanız gerekiyorsa, lütfen yorumlar bölümünde sormaktan çekinmeyin.
ÖNCEKİ Eğitici # 4 | SONRAKİ Eğitim # 6
Önerilen Kaynaklar
- QTP Çerçeveleri - Test Otomasyon Çerçeveleri - Anahtar Kelime Odaklı ve Doğrusal Çerçeve Örnekleri - QTP Eğitimi # 17
- SeeTest Otomasyon Komutları: Örneklerle Ayrıntılı Bir Açıklama
- 2021'de En Popüler 10 Robotik Süreç Otomasyonu RPA Aracı
- Manuel ve Otomasyon Projeleri için Test Planlama Nasıl Farklıdır?
- Her birinin Artıları ve Eksileri ile En Popüler Test Otomasyon Çerçeveleri - Selenium Tutorial # 20
- Komut Dosyasız Test Otomasyon Çerçevesi: Araçlar ve Örnekler
- Test Otomasyonu - Uzmanlaşmış Bir Kariyer mi? Normal Test Uzmanları Otomasyonu da Yapabilir mi?
- Otomasyon Testi için En İyi 25 Java Test Çerçevesi ve Araçları (Bölüm 3)