Salatalık - Hızlı Kılavuz
Yazılım testinden daha iyi yararlanmak için kuruluşlar günümüzde bir adım öne çıkıyor. Geliştirme devam ederken önemli kabul testi senaryoları uygularlar. Bu yaklaşım genellikle şu adla bilinir:Behavior Driven Development (BDD).
Davranış Odaklı Geliştirme bize hem geliştiricinin hem de müşterinin bakış açısından test komut dosyaları oluşturma fırsatı verir. Yani başlangıçta, geliştiriciler, proje yöneticileri, QA'lar, kullanıcı kabul testi uzmanları ve ürün sahibi (hissedar), bu yazılımı / uygulamayı başarılı olarak adlandırmak için hangi test senaryolarının geçilmesi gerektiği konusunda beyin fırtınası yaparlar. Bu şekilde bir dizi test senaryosu oluştururlar. Tüm bu test komut dosyaları basit İngilizce dilindedir, dolayısıyla dokümantasyon amacına da hizmet eder.
Misal
Bir kullanıcı kimlik doğrulama özelliği geliştiriyorsak, başarılı olarak adlandırmak için geçilmesi gereken birkaç anahtar test senaryosu aşağıdakiler olabilir.
Kullanıcı, doğru kullanıcı adı ve doğru şifre ile giriş yapabilmelidir.
Kullanıcı, yanlış kullanıcı adı ve doğru şifre ile giriş yapamamalıdır.
Kullanıcı, doğru kullanıcı adı ve yanlış şifre ile giriş yapamamalıdır.
Nasıl çalışır
Kod hazır olduğunda, test komut dosyaları da hazırdır. Kod, BDD'de tanımlanan test komut dosyalarını geçmelidir. Olmazsa, kod yeniden düzenleme gerekecektir. Kod, ancak tanımlanan test komut dosyalarının başarılı bir şekilde yürütülmesinden sonra donar.
Bu çok basit bir fikir ama bu kavramı hayata geçirmek için ihtiyacımız olan şey. Cevap, Davranış Odaklı Geliştirme (BDD) Çerçevesidir. Hıyar, davranış odaklı geliştirmeyi destekleyen böyle açık kaynaklı bir araçtır. Daha kesin olmak gerekirse, Hıyar düz İngilizce metinle yönlendirilen bir test çerçevesi olarak tanımlanabilir. Hepsi bir arada dokümantasyon, otomatik testler ve geliştirme yardımı olarak hizmet eder.
Peki Salatalık ne yapar? Aşağıdaki adımlarda açıklanabilir -
Cucumber, özellik dosyasında (daha sonra tanıtılacak) düz İngilizce metinle (Dil Turşusu - bu öğreticide daha sonra tanıtılacak) yazılmış kodu okur.
Adım tanımındaki her adımın tam eşleşmesini bulur (bir kod dosyası - öğreticide daha sonra sağlanan ayrıntılar).
Yürütülecek kod parçası, aşağıdaki gibi farklı yazılım çerçeveleri olabilir Selenium, Ruby on Rails, vb. Her BDD çerçeve aracı her aracı desteklemez.
Bu, Cucumber'ın diğer çerçevelere göre popülaritesinin nedeni haline geldi. JBehave, JDave, Easyb, vb.
Cucumber, aşağıdakiler gibi bir düzineden fazla farklı yazılım platformunu destekler:
- raylar üzerinde yakut
- Selenium
- PicoContainer
- Bahar Çerçevesi
- Watir
Salatalığın Diğer Aletlere Göre Avantajları
Hıyar, Java.net ve Ruby gibi farklı dilleri destekler.
İş dili ile teknik dil arasında bir köprü görevi görür. Bunu, düz İngilizce metinle bir test senaryosu oluşturarak başarabiliriz.
Test komut dosyasının herhangi bir kod bilgisi olmadan yazılmasına izin verir, programcı olmayanların da katılımına izin verir.
Diğer araçların aksine uçtan uca test çerçevesi amacına hizmet eder.
Basit test komut dosyası mimarisi sayesinde, Cucumber kodun yeniden kullanılabilirliğini sağlar.
Bu bölümde, Windows Makinesinde Selenium WebDriver ve Java ile Cucumber için ortam kurulumunu göreceğiz.
Ortam Kurulumu için Ön Koşullar
Aşağıdakiler, kurulum için gerekli önkoşullardır -
Java
Why we need- Java, sağlam bir programlama dilidir. Cucumber, uygulama için Java platformunu destekler.
How to install -
Step 1 - Aşağıdaki bağlantıdan jdk ve jre'yi indirin http://www.oracle.com/technetwork/java/javase/downloads/index.html
Step 2 - Lisans sözleşmesini kabul edin.
Step 3 - JDK ve JRE'yi yükleyin.
Step 4 - Ortam değişkenini aşağıdaki ekran görüntülerinde gösterildiği gibi ayarlayın.
Tutulma
Why we need- Eclipse bir Entegre Geliştirme Ortamıdır (IDE). Bir temel çalışma alanı ve ortamı özelleştirmek için genişletilebilir bir eklenti sistemi içerir.
How to install -
Step 1 - Makinenizde JAVA'nın kurulu olduğundan emin olun.
Step 2 - Eclipse'i buradan indirin https://eclipse.org/downloads/
Step 3 - Unzip ve Eclipse kurulur.
Uzman
Why we need- Maven, öncelikle Java projeleri için kullanılan bir derleme otomasyon aracıdır. Kaynak kodu üretmek, kodu derlemek, kodu bir kavanozda paketlemek vb. Gibi faaliyetleri gerçekleştirmek için ortak bir platform sağlar. Daha sonra yazılım sürümlerinden herhangi biri değişirse, Maven, test projesini buna göre değiştirmek için kolay bir yol sağlar.
How to install -
Step 1 - Aşağıdaki bağlantıdan Maven'i indirin - https://maven.apache.org/download.cgi
Step 2 - Dosyayı açın ve konumu hatırlayın.
Step 3 - Aşağıdaki ekran görüntüsünde gösterildiği gibi MAVEN_HOME ortam değişkenini oluşturun.
Step 4 - Aşağıdaki ekran görüntüsünde gösterildiği gibi Yol değişkenini düzenleyin ve Maven'i dahil edin.
Step 5 - Eclipse'den MAVEN eklentisini indirin.
Step 6 - Eclipse'i açın.
Step 7 - Yardım → Eclipse Marketplace → Maven Ara → Eclipse için Maven Entegrasyonu → YÜKLE'ye gidin.
Salatalığı Maven ile Yapılandırın
Step 1 - Bir Maven projesi oluşturun.
Dosya → Yeni → Diğerleri → Maven → Maven Projesi → İleri'ye gidin.
Grup kimliği sağlayın (grup kimliği, projenizi tüm projelerde benzersiz bir şekilde tanımlar).
Yapı kimliği sağlayın (yapı kimliği, sürümsüz kavanozun adıdır. Küçük harfli herhangi bir adı seçebilirsiniz). Finish'e tıklayın.
Step 2 - pom.xml dosyasını açın.
Eclipse'in sol tarafındaki paket gezginine gidin.
Projeyi genişletin CucumberTest.
Bul pom.xml dosya.
Sağ tıklayın ve seçeneği seçin, “Metin Düzenleyici” ile açın.
Step 3 - Selenyum için bağımlılık ekle: Bu, Maven'i hangi Selenium jar dosyalarının merkezi depodan yerel depoya indirileceğini gösterecektir.
Açık pom.xml düzenleme modunda, proje etiketinin içinde bağımlılıklar etiketi (<dependencies> </dependencies>) oluşturun.
Bağımlılıklar etiketinin içinde bağımlılık etiketi oluşturun (<dependency> </dependency>).
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın.
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.47.1</version>
</dependency>
Step 4 - Cucumber-Java için bağımlılık ekle: Bu, hangi Cucumber dosyalarının merkezi depodan yerel depoya indirileceğini Maven'i gösterecektir.
Bir tane daha bağımlılık etiketi oluşturun.
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
Step 5 - Cucumber-JUnit için bağımlılık ekle: Bu, merkezi depodan yerel depoya hangi Cucumber JUnit dosyalarının indirileceğini Maven'i gösterecektir.
Bir tane daha bağımlılık etiketi oluşturun.
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
Step 6 - JUnit için bağımlılık ekle: Bu, merkezi depodan yerel depoya hangi JUnit dosyalarının indirileceğini Maven'i gösterecektir.
Bir tane daha bağımlılık etiketi oluşturun.
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın.
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
Step 7 - İkili dosyaları doğrulayın.
bir Zamanlar pom.xml başarıyla düzenlendi, kaydedin.
Projeye Git → Temizle - Birkaç dakika sürecektir.
Aşağıdaki ekran görüntüsünde gösterildiği gibi bir Maven deposunu görebileceksiniz.
Bir özellik dosyası oluşturun (daha sonra ele alınacak).
Bir adım tanım dosyası oluşturun (daha sonra ele alınacaktır).
Testi çalıştırmak için bir JUnit çalıştırıcısı oluşturun (daha sonra ele alınacaktır).
Şimdiye kadar, Salatalık ve ne işe yaradığı hakkında bir anlayışa sahibiz. Özellik dosyasında tanımlanan test komut dosyalarını yürütür (sonraki bölümlerde ele alınacaktır). Bu çalıştırılabilir özellik dosyalarının yazıldığı dil şu şekilde bilinir:Gherkin. Kornişon, aracın test komut dosyalarını yorumlamasına ve yürütmesine yardımcı olan düz bir İngilizce metin dilidir.
Cucumber'ın basit İngilizce metinleri desteklediği ve neden ayrı bir dile ihtiyacımız olduğu birçok kez tartışıldığı düşünülebilir - Kornişonlar. Cevap, Davranış Odaklı Geliştirme konseptinde yatmaktadır.
Daha önce tartışıldığı gibi, BDD'nin test komut dosyaları oluştururken farklı olasılıklar içerdiğini gördük. Geliştirme beklentisi, iş beklentisi vb. Olabilir. Bununla birlikte, test komut dosyalarını geliştirirken geliştiriciler, proje yöneticileri, ürün sahipleri ve test uzmanları gibi farklı topluluklardan insanlara ihtiyacımız olacak. Bu kişiler aynı kategoriye ait olmadıklarından, test komut dosyasını kavramsallaştırmak için ortak dili kullanmama riski vardır. Bu, Kornişon turşusu için evrim noktasıydı.
Kornişon, farklı topluluklardaki insanlar tarafından kullanılabilen ve yine de aynı çıktıyı test komut dosyaları biçiminde alabilen İngilizce metinde ortak anahtar kelime kümesi sağlar.
Misal
Feature - Bir sosyal ağ sitesi için oturum açma işlevi. Given Ben bir sosyal ağ sitesi kullanıcısıyım. When Kullanıcı adını kullaniciadi1 olarak giriyorum. And Şifre olarak şifre 1 giriyorum. Then Sitenin ana sayfasına yönlendirilmeliyim.
Yukarıda bahsedilen senaryo, kullanıcı girişi adı verilen bir özelliktir. Kalın olarak vurgulanan tüm kelimeler Kornişon anahtar kelimelerdir.
Diğer birkaç anahtar kelime örneği -
- Background
- But
- *
- Senaryo Özeti
- Examples
Kornişon, adım tanımlama dosyasında yazılan her adımı ayrıştıracaktır (daha sonra ele alınacaktır). Bu nedenle, özellik dosyasında ve adım tanımlama dosyasında belirtilen adımlar (daha sonra ele alınacak) eşleşmelidir.
Paket Gezgini'ndeki Maven Bağımlılığı klasöründe Kornişon turşusu kavanozlarını bulabilirsiniz. Diğer Salatalık kavanozlarıyla birlikte indirilir. Aşağıdaki ekran görüntüsü gibi görünecek -
Gherkin ile ilgili bir başka ilginç gerçek ise, sadece İngilizce'yi değil, Fransızca, Fince, Endonezce, Macarca, Hintçe, Urduca, Gujarati vb. Gibi diğer birçok ana dili desteklemesidir.
Bir Featurebağımsız bir birim veya bir projenin işlevselliği olarak tanımlanabilir. Çok yaygın bir sosyal ağ sitesi örneğini ele alalım. Bu ürünün / projenin özelliği nasıl görünüyor? Birkaç temel özellik şu şekilde belirlenebilir:
Kullanıcıyı sosyal ağ sitesinden oluşturun ve kaldırın.
Sosyal ağ sitesi için kullanıcı oturum açma işlevi.
Sosyal paylaşım sitesinde fotoğraf veya video paylaşmak.
Bir arkadaşlık isteği gönderme.
Logout.
Şimdiye kadar, test edilen ürünün her bağımsız işlevinin Salatalık hakkında konuştuğumuzda bir özellik olarak adlandırılabileceği açıktır. Daha sonra test etmeye başladığınızda, test komut dosyalarını türetmeden önce test edilecek özellikleri belirlememiz en iyi uygulamadır.
Bir özellik, genellikle o özellik için test edilecek senaryoların bir listesini içerir. Test edilecek özellikler ve senaryolar hakkında özellikleri, açıklamaları depoladığımız bir dosyaFeature File. Aşağıdaki bölümde özellik dosyaları hakkında daha fazlasını göreceğiz.
Kornişon turşusunda test edilen bir özelliği temsil eden anahtar kelime "Özellik" dir. Önerilen en iyi uygulama, özellik dosyasındaki özellik başlığının altına özelliğin küçük bir açıklamasını yazmaktır. Bu aynı zamanda iyi bir dokümantasyon ihtiyacını da karşılayacaktır.
Misal
Feature - Bir sosyal ağ sitesi için oturum açma işlevi.
Kullanıcı adı ve şifre doğruysa, kullanıcı sosyal ağ sitesine giriş yapabilmelidir.
Kullanıcı adı ve şifre yanlışsa kullanıcıya hata mesajı gösterilmelidir.
Kullanıcı adı ve şifre doğruysa, kullanıcı ana sayfaya yönlendirilmelidir.
Özellik Dosyaları
Salatalık testlerinin yazıldığı dosya şu adla bilinir: feature files. Test edilen her özellik için ayrı bir özellik dosyası olması tavsiye edilir. Özellik dosyasının uzantısının ".feature" olması gerekir.
Gerektiği kadar çok özellik dosyası oluşturulabilir. Organize bir yapıya sahip olmak için her özelliğin bir özellik dosyası olması gerekir.
Örneğin -
Sr.No | Özellik | Özellik Dosyası adı |
---|---|---|
1 | Kullanıcı Girişi | userLogin.feature |
2 | Gönderiyi Paylaşın | sharePost.feature |
3 | Hesap oluştur | createAccount.feature |
4 | Hesabı sil | deleteAccount.feature |
Özellik adı, özellik dosyası adı için kullanılacak adlandırma kuralı, kişinin seçimine bağlıdır. Hıyar'da isimler konusunda temel bir kural yoktur.
Basit bir özellik dosyası aşağıdaki anahtar sözcüklerden / bölümlerden oluşur -
Feature - Test edilen özelliğin adı.
Description (isteğe bağlı) - Test edilen özellik hakkında açıklama yapın.
Scenario - Test senaryosu nedir?
Given - Test adımları uygulanmadan önce ön koşul.
When - Bir sonraki adımı yürütmek için eşleşmesi gereken belirli koşul.
Then - NE ZAMAN'da belirtilen durum karşılanırsa ne olmalıdır.
Misal
Feature - Sosyal ağ sitesinde kullanıcı girişi.
Kullanıcı adı ve şifre doğru olduğunda kullanıcı sosyal paylaşım sitesine giriş yapabilmelidir.
Kullanıcı adı ve şifre yanlış olduğunda kullanıcıya bir hata mesajı gösterilmelidir.
Kullanıcı adı ve şifre doğruysa kullanıcı ana sayfaya yönlendirilmelidir.
Outline - Bir sosyal ağ sitesi için oturum açma işlevi.
Verilen kullanıcı Facebook'a gider. Kullanıcı adını "<kullanıcı adı>" ve Parolayı "<parola>" olarak girdiğimde. Ardından, oturum açma başarısız olmalıdır.
| username | password |
| username1 | password1 |
* AND anahtar kelime, iki koşul arasındaki birleşimi göstermek için kullanılır. AND gibi diğer anahtar kelimelerle kullanılabilir GIVEN, WHEN ve THEN.
Özellik dosyasında yazılı mantık ayrıntısı yok.
Adım Tanımları
Özellik dosyamızı tanımlanan test senaryoları ile hazır hale getirdik. Ancak bu, yapılan işin tamamı değildir. Salatalık, bir özellik dosyasında ana hatları verilen herhangi bir özel senaryo için hangi kod parçasının çalıştırılacağını gerçekten bilmiyor.
Bu, bir ara - Adım Tanımlama dosyası ihtiyacını çağırır. Adım tanımlama dosyası, özellik dosyasında tanımlanan senaryonun her adımı arasındaki eşleştirmeyi yürütülecek bir fonksiyon koduyla birlikte depolar.
Şimdi, Cucumber, özellik dosyasında bahsedilen senaryonun bir adımını yürüttüğünde, adım tanımlama dosyasını tarar ve hangi fonksiyonun çağrılacağını belirler.
Adım Tanım Dosyası Örneği
public void goToFacebook() {
driver = new FirefoxDriver();
driver.navigate().to("https://www.facebook.com/");
}
@When "^user logs in using Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$" public void I_enter_Username_as_and_Password_as(String arg1, String arg2) { driver.findElement(By.id("email")).sendKeys(arg1); driver.findElement(By.id("pass")).sendKeys(arg2); driver.findElement(By.id("u_0_v")).click(); } @Then"^login should be unsuccessful$"
public void validateRelogin() {
if(driver.getCurrentUrl().equalsIgnoreCase(
"https://www.facebook.com/login.php?login_attempt=1&lwv=110")){
System.out.println("Test Pass");
} else {
System.out.println("Test Failed");
}
driver.close();
}
Dolayısıyla, her bir işlevle, her test adımında yürütmek istediğiniz kod ne olursa olsun (yani VERİLEN / SONRA / ZAMAN), Adım Tanımlama dosyası içine yazabilirsiniz. Adımların her biri için kodun / işlevin tanımlandığından emin olun.
Bu işlev, test adımlarımızı otomatikleştirmek için hem Java hem de Selenium komutlarını kullanabileceğimiz Java işlevleri olabilir.
Scenariotemel Kornişon yapılarından biridir. Her senaryo "Senaryo:" (veya yerelleştirilmiş olan) anahtar kelimesiyle başlar ve ardından isteğe bağlı bir senaryo başlığı gelir. Her özelliğin bir veya daha fazla senaryosu olabilir ve her senaryo bir veya daha fazla adımdan oluşur. Çok basit bir senaryo örneği şöyle olabilir:
Scenario - Yardım İşlevselliğini Doğrulayın.
Verilen kullanıcı Facebook'a gider.
Kullanıcı Yardım'ı tıkladığında, Yardım sayfası açılır.
Bir test senaryosunu birden fazla kez yürütmemiz gereken bir durumu düşünün. Diyelim ki, oturum açma işlevinin tüm abonelik sahibi türleri için çalıştığından emin olmamız gerekiyor. Bu, oturum açma işlevselliği senaryosunun birçok kez yürütülmesini gerektirir. Kodu tekrar çalıştırmak için aynı adımları kopyalayıp yapıştırın, akıllıca bir fikir gibi görünmüyor. Bunun için Gherkin, senaryo taslağı olan bir yapı daha sağlar.
Senaryo taslağı, senaryo yapısına benzer; tek fark, çoklu girdilerin sağlanmasıdır. Aşağıdaki örnekte görebileceğiniz gibi, test senaryosu aynı kalır ve tekrar edilemez. En altta, "Kullanıcı Adı" ve "Şifre" değişkenleri için birden fazla giriş değeri sağladık. Gerçek testi çalıştırırken, Cucumber değişkeni sağlanan giriş değerleriyle değiştirecek ve testi yürütecektir. Pass-1 yürütüldüğünde, test başka bir giriş değeri ile ikinci yineleme için yeniden çalıştırılacaktır. Bu tür değişken veya yer tutucular, kornişon ifadeleri ile bahsedilirken "<>" ile temsil edilebilir.
Misal
Scenario Outline- Bir sosyal ağ sitesi için oturum açma işlevi. Verilen kullanıcı Facebook'a gider.
Kullanıcı Kullanıcı Adı'nı "<kullanıcı adı>" ve Parolayı "<parola>" olarak kullanarak oturum açtığında, oturum açma başarılı olmalıdır.
| username | password |
| user1 | password1 |
| user2 | password2 |
Salatalık senaryolarını akıllıca tanımlamak için birkaç ipucu ve püf noktası var.
Okuyucu için herhangi bir kafa karışıklığı yaratmaması için her adım açıkça tanımlanmalıdır.
Test senaryosunu tekrar etmeyin, gerekirse tekrarı uygulamak için senaryo taslağını kullanın.
Birden fazla senaryo ve senaryo taslağı içinde kullanılabilecek şekilde bir test adımı geliştirin.
Mümkün olduğunca her adımı tamamen bağımsız tutun. Örneğin: "Kullanıcının oturum açtığı belirtilir". Bu iki adıma bölünebilir
- Verilen kullanıcı, kullanıcı adını girer.
- Giriş tıklamaları.
Annotationbelirli bir anlamı olan önceden tanımlanmış bir metindir. Derleyicinin / yorumlayıcının çalıştırıldığında ne yapılması gerektiğini bilmesini sağlar. Salatalık aşağıdaki birkaç ek açıklamaya sahiptir -
Given -
Uygulanacak testin ön koşulunu açıklar.
Örnek - VERİLEN Facebook kullanıcısıyım
When -
Herhangi bir test senaryosu yürütmesi için tetikleme noktasını tanımlar.
Örnek - "<kullanıcı adı>" girdiğimde
Then -
Ardından, yürütülecek test için beklenen sonucu tutar.
Örnek - SONRA oturum açma başarılı olmalıdır.
And -
Herhangi iki ifade arasındaki mantıksal AND koşulunu sağlar. AND, GIVEN, WHEN ve THEN ifadesiyle birlikte kullanılabilir.
Örnek - "<kullanıcı adı>" adımı girdiğimde VE "<parola>" adımı girdiğimde
But -
Herhangi iki ifade arasındaki mantıksal VEYA koşulunu belirtir. VEYA, GIVEN, WHEN ve THEN ifadesiyle birlikte kullanılabilir.
Örnek - SONRA oturum açma başarılı olmalıdır. ANCAK ana sayfa eksik olmamalıdır.
Scenario -
Test kapsamındaki senaryoyla ilgili ayrıntıların, "Senaryo:" anahtar kelimesinden sonra alınması gerekir.
Örnek -
Senaryo:
VERİLEN Facebook kullanıcısıyım
Ne zaman girersem
Ve ben giriyorum
SONRA oturum açma başarılı olmalıdır.
ANCAK ana sayfa eksik olmamalıdır.
Scenario Outline - (Daha sonra ele alınacak)
Examples - (Daha sonra ele alınacak)
Background -
Arka planda genellikle her senaryo çalışmadan önce neyin kurulacağına dair talimat vardır. Ancak, "Önce" kancasından sonra yürütülür (daha sonra ele alınacaktır). Bu nedenle, web tarayıcısını kurmak istediğimizde veya veritabanı bağlantısını kurmak istediğimizde kod için kullanmak idealdir.
Örnek -
Arka fon:
Facebook ana sayfasına gidin.
Örnek Senaryo
Ek açıklamaları daha iyi anlamak için bir senaryoyu otomatikleştirelim.
Step 1
Adlı bir Maven Test Projesi oluşturun AnnotationTest.
Dosya → Yeni → Diğerleri → Maven → Maven Projesi → İleri'ye gidin.
Grup kimliği sağlayın (grup kimliği, projenizi tüm projelerde benzersiz bir şekilde tanımlar).
Yapı Kimliği sağlayın (yapı kimliği, sürümsüz kavanozun adıdır. Küçük harfli herhangi bir adı seçebilirsiniz).
Finish'e tıklayın.
Açık pom.xml −
Eclipse'in sol tarafındaki paket gezginine gidin.
AnnotationTest projesini genişletin.
Pom.xml dosyasını bulun.
Sağ tıklayın ve "Metin Düzenleyici" ile Aç seçeneğini seçin.
Selenium için bağımlılık ekle - Bu, hangi Selenium jar dosyalarının merkezi depodan yerel depoya indirileceğini Maven'i gösterecektir.
Açık pom.xml düzenleme modunda, proje etiketinin içinde bağımlılıklar etiketi (<dependencies> </dependencies>) oluşturun.
Bağımlılıklar etiketinin içinde bağımlılık etiketi oluşturun (<dependency> </dependency>).
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın.
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.47.1</version>
</dependency>
Cucumber-Java için bağımlılık ekle - Bu, hangi Cucumber dosyalarının merkezi depodan yerel depoya indirileceğini Maven'i gösterecektir.
Bir tane daha bağımlılık etiketi oluşturun.
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın.
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
Cucumber-JUnit için bağımlılık ekle - Bu, merkezi depodan yerel depoya hangi Cucumber JUnit dosyalarının indirileceğini Maven'i gösterecektir.
Bir tane daha bağımlılık etiketi oluşturun.
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın.
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
JUnit için bağımlılık ekle - Bu, merkezi depodan yerel depoya hangi JUnit dosyalarının indirileceğini Maven'i gösterecektir.
Bir tane daha bağımlılık etiketi oluşturun.
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın.
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
İkili dosyaları doğrulayın.
Pom.xml başarıyla düzenlendikten sonra kaydedin.
Projeye Git → Temizle - Birkaç dakika sürecektir.
Step 2
Altında Ek Açıklama adlı bir paket oluşturun src/test/java
Yeni oluşturulan projeyi seçin.
Sağ tıklayın ve 'Yeni'yi seçin.
'Paket' olarak seçeneği seçin.
'Ek Açıklama' olarak adlandırın.
Onu kurtar.
Step 3
Adlı bir özellik dosyası oluşturun annotation.feature.
Paket taslağını seçin ve sağ tıklayın.
'Yeni' dosyaya tıklayın.
Dosyaya şöyle bir ad verin: outline.feature.
Aşağıdaki metni dosyanın içine yazın ve kaydedin.
Feature: annotation
#This is how background can be used to eliminate duplicate steps
Background:
User navigates to Facebook Given
I am on Facebook login page
#Scenario with AND
Scenario:
When I enter username as "TOM"
And I enter password as "JERRY"
Then Login should fail
#Scenario with BUT
Scenario:
When I enter username as "TOM"
And I enter password as "JERRY"
Then Login should fail
But Relogin option should be available
Step 4
Bir adım tanım dosyası oluşturun.
Paket taslağını seçin ve sağ tıklayın.
'Yeni' dosyaya tıklayın.
Dosya adını şu şekilde verin: annotation.java
Aşağıdaki metni dosyanın içine yazın ve kaydedin.
package Annotation;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import cucumber.annotation.en.Given;
import cucumber.annotation.en.Then;
import cucumber.annotation.en.When;
public class annotation {
WebDriver driver = null;
@Given("^I am on Facebook login page$") public void goToFacebook() { driver = new FirefoxDriver(); driver.navigate().to("https://www.facebook.com/"); } @When("^I enter username as \"(.*)\"$")
public void enterUsername(String arg1) {
driver.findElement(By.id("email")).sendKeys(arg1);
}
@When ("^I enter password as \"(.*)\"$") public void enterPassword(String arg1) { driver.findElement(By.id("pass")).sendKeys(arg1); driver.findElement(By.id("u_0_v")).click(); } @Then("^Login should fail$")
public void checkFail() {
if(driver.getCurrentUrl().equalsIgnoreCase(
"https://www.facebook.com/login.php?login_attempt=1&lwv=110")){
System.out.println("Test1 Pass");
} else {
System.out.println("Test1 Failed");
}
driver.close();
}
@Then("^Relogin option should be available$")
public void checkRelogin() {
if(driver.getCurrentUrl().equalsIgnoreCase(
"https://www.facebook.com/login.php?login_attempt=1&lwv=110")){
System.out.println("Test2 Pass");
} else {
System.out.println("Test2 Failed");
}
driver.close();
}
}
Step 5
Bir koşucu sınıf dosyası oluşturun.
Paket taslağını seçin ve sağ tıklayın.
'Yeni' dosyaya tıklayın.
Dosyaya aşağıdaki gibi bir ad verin: runTest.java
Aşağıdaki metni dosyanın içine yazın ve kaydedin.
package Annotation;
import org.junit.runner.RunWith;
import cucumber.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
public class runTest {
}
Step 6
Seçeneği kullanarak testi çalıştırın -
Paket gezgininden runTest.java dosyasını seçin.
Sağ tıklayın ve seçeneği seçin ‘Run as’
JUnit testini seçin.
Bu sınıf dosyasını çalıştırdığınızda aşağıdaki şeyleri gözlemleyeceksiniz -
Facebook, yeni bir Firefox web tarayıcısı örneğinde açılır.
TOM, kullanıcı adı alanına bir girdi olarak aktarılacaktır.
JERRY, şifre alanına giriş olarak geçirilecektir.
Giriş tıklanacaktır.
Başarısız oturum açma ile ilgili olarak tarayıcıda mesaj görüntülenecektir.
Konsolda, "Test Geçişi" nin yazdırıldığını göreceksiniz
1. ila 5. adım sonucu, kullanıcı adı için "" ve şifre "" olarak yeniden yürütülecektir.
Scenario outlinetemelde değişkenleri / anahtar kelimeleri tablodaki değerle değiştirir. Tablodaki her satır bir senaryo olarak kabul edilir.
Aynı Facebook giriş özelliği örneğiyle devam edelim. Şimdiye kadar bir senaryo yürütüyoruz: Doğru kullanıcı adı sağlandıktan sonra oturum açma başarılı oldu. Şimdi, kullanıcı adı, e-posta adresi veya telefon numarası gibi üç olası giriş türü için de oturum açmanın başarılı olup olmadığını kontrol etmek istediğimizi varsayalım. Bunu başarmak için, her senaryonun girdi türüne göre değişeceği, oturum açma başarılı olduğu üç farklı senaryo yazmamız gerekecek. Bu durumda senaryolar aşağıdaki gibi görünecektir.
Scenario:
Verilen kullanıcı Facebook'a gidiyor
Doğru kullanıcı adı ve şifreyi girdiğimde
O zaman giriş başarılı olmalı
Scenario:
Verilen kullanıcı Facebook'a gidiyor
Doğru e-posta adresini ve şifreyi girdiğimde
O zaman giriş başarılı olmalı
Scenario:
Verilen kullanıcı Facebook'a gidiyor
Doğru telefon numarasını ve şifreyi girdiğimde
O zaman giriş başarılı olmalı
Burada, yukarıdaki üç senaryoyu yakından görürsek: ifadeler aynıdır, yalnızca giriş parametresi (kullanıcı adı / e-posta adresi / telefon numarası) değişmektedir. Senaryo taslağının önemi burada ortaya çıkıyor.
Herhangi bir senaryoyu senaryo taslağı ile tanımladığımızda, bir test senaryosu belirleyebiliriz ve bunun altında bir dizi girdi sağlayabiliriz. Senaryo, sağlanan girdi sayısı kadar çalıştırılacaktır.
Misal
Bir senaryo taslağı örneği oluşturalım -
Step 1 - adlı bir Maven Test Projesi oluşturun ScenarioOutlineTest
Dosya → Yeni → Diğerleri → Maven → Maven Projesi → İleri'ye gidin.
Grup kimliği sağlayın (grup kimliği, projenizi tüm projelerde benzersiz bir şekilde tanımlar).
Yapı Kimliği sağlayın (yapı kimliği, sürümsüz kavanozun adıdır. Küçük harfli herhangi bir adı seçebilirsiniz).
Finish'e tıklayın.
Açık pom.xml -
Eclipse'in sol tarafındaki paket gezginine gidin.
CucumberTest projesini genişletin.
Pom.xml dosyasını bulun.
Sağ tıklayın ve "Metin Düzenleyici" ile Aç seçeneğini seçin.
Selenium için bağımlılık ekle - Bu, hangi Selenium jar dosyalarının merkezi depodan yerel depoya indirileceğini Maven'i gösterecektir.
Açık pom.xml düzenleme modunda, proje etiketinin içinde bağımlılıklar etiketi (<dependencies> </dependencies>) oluşturun.
Bağımlılıklar etiketinin içinde bağımlılık etiketi oluşturun (<dependency> </dependency>).
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın.
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.47.1</version>
</dependency>
Cucumber-Java için bağımlılık ekleyin: Bu, hangi Cucumber dosyalarının merkezi depodan yerel depoya indirileceğini Maven'i gösterecektir.
Bir tane daha bağımlılık etiketi oluşturun.
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın.
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
Cucumber-JUnit için bağımlılık ekle: Bu, merkezi depodan yerel depoya hangi Cucumber JUnit dosyalarının indirileceğini Maven'i gösterecektir.
Bir tane daha bağımlılık etiketi oluşturun.
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın.
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
JUnit için bağımlılık ekle - Bu, merkezi depodan yerel depoya hangi JUnit dosyalarının indirileceğini Maven'i gösterecektir.
Bir tane daha bağımlılık etiketi oluşturun.
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın.
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
JUnit için bağımlılık ekle - Bu, merkezi depodan yerel depoya hangi JUnit dosyalarının indirileceğini Maven'i gösterecektir.
Bir tane daha bağımlılık etiketi oluşturun.
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın.
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
İkili dosyaları doğrulayın.
Pom.xml başarıyla düzenlendikten sonra kaydedin.
Projeye Git → Temizle - Birkaç dakika sürecektir.
Step 2 - Altında "anahat" adlı bir paket oluşturun src/test/java
Step 3 - adlı bir özellik dosyası oluşturun “outline.feature”
Paket taslağını seçin ve sağ tıklayın.
'Yeni' dosyaya tıklayın.
Dosya adını verin, örneğin “outline.feature”
Aşağıdaki metni dosyanın içine yazın ve kaydedin.
Feature - Senaryo Taslağı
Scenario Outline - Bir sosyal ağ sitesi için oturum açma işlevi.
Verilen kullanıcı Facebook'a gidiyor
Kullanıcı adını "<kullanıcı adı>" ve Parolayı "<parola>" olarak girdiğimde
O zaman giriş başarısız olmalı
Example -
| username | password |
| username1 | password1 |
| username2 | password2 |
Note- Burada, örnek ek açıklama, senaryo çalıştırıldığında sağlanacak girdi aralığını açıklamaktadır. Sağlanan girdilerin her biri için test senaryosu yürütülecektir. Dolayısıyla verilen örnekte test senaryosu üç kez yürütülecektir.
Step 4 - Bir adım tanımlama dosyası oluşturun.
Paket taslağını seçin ve sağ tıklayın.
'Yeni' dosyaya tıklayın.
Dosya adını şu şekilde verin: stepdefinition.java
Aşağıdaki metni dosyanın içine yazın ve kaydedin.
package Outline;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import cucumber.annotation.en.Given;
import cucumber.annotation.en.Then;
import cucumber.annotation.en.When;
public class stepdefinition {
WebDriver driver = null;
@Given("^user navigates to facebook$")
public void goToFacebook() {
driver = new FirefoxDriver();
driver.navigate().to("https://www.facebook.com/");
}
@When("^I enter Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$") public void I_enter_Username_as_and_Password_as(String arg1, String arg2) { driver.findElement(By.id("email")).sendKeys(arg1); driver.findElement(By.id("pass")).sendKeys(arg2); driver.findElement(By.id("u_0_v")).click(); } @Then("^login should be unsuccessful$")
public void validateRelogin() {
if(driver.getCurrentUrl().equalsIgnoreCase(
"https://www.facebook.com/login.php?login_attempt=1&lwv=110")){
System.out.println("Test Pass");
} else {
System.out.println("Test Failed");
}
driver.close();
}
}
Note- Yukarıdaki kodda, iki giriş argümanına sahip bir işlev tanımlamamız gerekir: biri kullanıcı adı ve diğeri şifre için olacaktır. Bu nedenle, örnek etiketinde sağlanan her girdi kümesi için GIVEN, WHEN ve THEN kümesi çalıştırılacaktır.
Step 5 - Bir koşucu sınıfı dosyası oluşturun.
Paket taslağını seçin ve sağ tıklayın.
'Yeni' dosyaya tıklayın.
Dosya adını verin, örneğin runTest.java
Aşağıdaki metni dosyanın içine yazın ve kaydedin.
package Outline;
import org.junit.runner.RunWith;
import cucumber.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
public class runTest { }
Seçeneği kullanarak testi çalıştırın -
Seçiniz runTest.java paket gezgininden dosya.
Sağ tıklayın ve seçeneği seçin ‘Run as’.
JUnit testini seçin.
Bu sınıf dosyasını çalıştırdığınızda aşağıdaki şeyleri gözlemleyeceksiniz
Facebook, yeni bir Firefox web tarayıcısı örneğinde açılır.
Kullanıcı adı1 ve parola1, kullanıcı adı ve parola alanına giriş olarak geçirilecektir.
Giriş tıklanacaktır.
Başarısız oturum açma ile ilgili olarak tarayıcıda mesaj görüntülenecektir.
Konsolda, "Test Geçişinin" yazdırıldığını göreceksiniz.
Kullanıcı adı2 ve şifre2 için 1'den 5'e kadar olan adım sonucu yeniden yürütülecektir.
Özetle, senaryo değişmediğinde, sadece veri değeri değiştiğinde, senaryo taslak veri tablolarının kullanılması tavsiye edilir.
Bir özellik dosyasında sadece bir, iki veya belki beş senaryoya sahip olduğumuzda basit görünüyor. Ancak, gerçek hayatta bu olmaz. Test edilen her özellik için, tek bir özellik dosyasında 10, 20 veya daha fazla sayıda senaryomuz olabilir. Farklı amaçları (Duman testi / Gerileme testi), farklı olasılıkları (Geliştirici / QA / BA), farklı durumu (Yürütmeye hazır / Devam eden çalışma) vb. Temsil edebilirler. Böyle bir kitle için yürütme nasıl yönetilir?
Bunun için Cucumber, özellik dosyasındaki etiketleri kullanarak senaryo yürütmenizi organize etmenin bir yolunu zaten sağlamıştır. Her senaryoyu kullanışlı bir etiketle tanımlayabiliriz. Daha sonra, koşucu dosyasında, Salatalığın hangi belirli etiketi (ve senaryo (lar) da olduğu gibi) yürütmesini istediğimize karar verebiliriz. Etiket "@" ile başlar. "@" İşaretinden sonra etiketinizi tanımlamak için ilgili herhangi bir metne sahip olabilirsiniz. Bunu bir örnekle anlayalım.
Bir özellik dosyasında iki veya daha fazla senaryo olduğunu varsayalım. Duman testinin bir parçası olarak sadece bir senaryo yürütmek istiyoruz. Yani ilk şey o senaryoyu tanımlamak, ikincisi ise senaryonun başında “@SmokeTest” metni ile etiketlemek. Hadi derinlemesine bir bakalım -
Step 1 - adlı bir Maven projesi oluşturun cucumberTag.
Step 2- adlı bir paket oluşturun cucumberTag altında src/test/java
Step 3- adlı bir özellik dosyası oluşturun cucumberTag.feature.
Aşağıdaki metni dosyanın içine yazın ve kaydedin. Bu özellik dosyası, yalnızca birinin işaretlendiği iki senaryo içerir.SmokeTest etiket.
Feature - Salatalık Etiketi
Scenario Outline - Bir sosyal ağ sitesi için oturum açma işlevi.
Verilen kullanıcı Facebook'a gidiyor
Kullanıcı adını "<kullanıcı adı>" ve Parolayı "<parola>" olarak girdiğimde
O zaman giriş başarısız olmalı
Örnekler
| username | password |
| username1 | password1 |
| username2 | password2 |
#following senaryosu SmokeTest olarak etiketlendi ve bunun yürütülmesi gerekiyor. @Sigara testi
Scenario:
Verilen kullanıcı Facebook'a gidiyor
Kullanıcı adını "<>" ve Parolayı "<>" olarak girdiğimde
Ardından kullanıcı yeniden oturum açma denemesine yönlendirilmelidir.
Step 4 - Bir adım tanımlama dosyası oluşturun.
Paket taslağını seçin ve sağ tıklayın.
'Yeni' dosyaya tıklayın.
Dosyaya şöyle bir ad verin: cucumberTag.java
Aşağıdaki metni dosyanın içine yazın ve kaydedin.
package cucumberTag;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import cucumber.annotation.en.Given;
import cucumber.annotation.en.Then;
import cucumber.annotation.en.When;
public class cucumberTag {
WebDriver driver = null;
@Given("^user navigates to facebook$") public void goToFacebook() { driver = new FirefoxDriver(); driver.navigate().to("https://www.facebook.com/"); } @When("^I enter Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$")
public void I_enter_Username_as_and_Password_as(String arg1, String arg2) {
driver.findElement(By.id("email")).sendKeys(arg1);
driver.findElement(By.id("pass")).sendKeys(arg2);
driver.findElement(By.id("u_0_v")).click();
}
@Then("^login should be unsuccessful$") public void validateRelogin() { if(driver.getCurrentUrl().equalsIgnoreCase( "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ System.out.println("Test Pass"); } else { System.out.println("Test Failed"); } driver.close(); } @Then("^User should be redirected to login retry$")
public void loginRetry() {
if(driver.getCurrentUrl().equalsIgnoreCase(
"https://www.facebook.com/login.php?login_attempt=1&lwv=110")){
System.out.println("Test Pass");
} else {
System.out.println("Test Failed");
}
driver.close();
}
}
Step 5 - Bir koşucu sınıfı dosyası oluşturun.
Adlı bir koşucu sınıfı oluşturun runTest.java paketin içinde.
Aşağıdaki kodu yazın.
Dosya 'yı kaydet.
package cucumberTag;
import org.junit.runner.RunWith;
import cucumber.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
public class runTest { }
Test seçeneğini çalıştırın.
Sağ tıklayın ve seçeneği seçin ‘Run as’.
JUnit testini seçin.
Bu sınıf dosyasını çalıştırdığınızda aşağıdaki şeyleri gözlemleyeceksiniz.
Facebook, yeni bir Firefox web tarayıcısı örneğinde açılır.
Kullanıcı adı ve şifre alanına hiçbir değer verilmeyecektir.
Giriş tıklanacaktır.
Giriş yeniden deneme sayfası yüklenecektir.
Özellik dosyası içinde etiketlerin tanımlanmasında herhangi bir sınır yoktur. İhtiyaçlarınıza bağlı olarak kullanılacak etiketleri ve yürütülecek senaryoları türetebilirsiniz.
Esas olarak iki tür etiket vardır -
Default tag- Varsayılan etiketin önceden tanımlanmış anlamları vardır. Örnek @ Dev, @ Ignore
Custom tag - Özel etiket, etiketinizi tanımlamak için uygun metni seçmeniz için size tam esneklik sağlar.
Etiket ayrıca bir özellik seviyesinde de tanımlanabilir. Özellik düzeyinde bir etiket tanımladığınızda, bu özellik dosyasındaki tüm senaryoların bu etiketi devralmasını sağlar. Senaryonun niteliğine bağlı olarak, tek özellik için birden fazla etiket kullanabiliriz. Cucumber uygun bir çağrı bulduğunda, belirli bir senaryo yürütülecektir.
Salatalık ayrıca etiket seçimini tersine çevirmenin bir yolunu sağlar. Tanımlanmış 25 senaryodan 10'unun duman testi olarak işaretlendiğini düşünün. Yalnızca regresyon testi senaryolarını yürütmemiz gerekiyor.
Bunun için, duman testi senaryosunu hariç tutmak için JUnit runner sınıfında "~" kullanabiliriz. Aşağıdaki gibi görünecek.
@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty", "html:target/cucumber"},
tags = {"~@SmokeTest"})
public class runTest { }
Birden çok etiketi tanımlarken, mantıksal ve / veya mantıksal ve işlemi de tanımlayabiliriz.
Mantıksal veya koşucu sınıfında tanımlama - @dev,@wip - Bu etiketlerin herhangi biriyle eşleşen senaryoların yürütülmesi gerektiğini söylüyor.
Mantıksal veya koşucu sınıfında tanımlama - [@dev,~@wip] − Her iki etiketle eşleşen senaryoların yürütülmesi gerektiğini söylüyor.
Otomasyon üzerinde çalışırken çeşitli senaryolarla karşılaşabiliriz. Her senaryo farklı bir anlam ve ihtiyaçlar taşır.
Başından beri, bir sosyal ağ sitesi için, geçilecek iki giriş parametresine sahip olduğumuz bir oturum açma işlevi örneği alıyoruz. Biraz daha olasılık düşünelim. Peki ya "Yeni kullanıcı kaydı" işlevi? Tipik olarak, bir sosyal ağ sitesine yeni bir kullanıcı kaydederken girdi parametreleri ne olabilir? Aşağıdakine benzer bir şey -
- Kullanıcı adı
- E
- Password
- Şifreyi yeniden gir
- Birthdate
- Gender
- Telefon numarası
Feature - Yeni kullanıcı kaydı.
Yanlış girişleri geçtikten sonra yeni kullanıcı kaydının başarısız olduğunu doğrulayın.
Yeni bir kullanıcı kayıt sayfasındayım.
Kullanıcı adını ve e-posta adresini e-posta adresi ve şifre olarak girdiğimde ve şifreyi olarak ve Doğum tarihi olarak ve Cinsiyet olarak ve telefon numarasını tekrar girdiğimde kullanıcı kaydı başarısız oluyor.
İlk bakışta biraz dağınık görünüyor. Öyleyse, bu tür girdileri yönetmenin daha iyi bir yolu var mı? Cevap "Veri Tablosu" olabilir. Veri tablosu, tek bir etiket için sağlanacak bir girdi kümesidir. Bu etiket VERİLEN, NE ZAMAN veya SONRA olabilir.
Yukarıdaki senaryoyu veri tablosu yardımı ile yazalım ve aşağıdaki gibi görünecektir -
Yeni bir kullanıcı kayıt sayfasında olduğum için
Sayfaya geçerli veriler girdiğimde
| Fields | Values |
| First Name | Tom |
| Last Name | Kenny |
| Email Address | [email protected] |
| Re-enter Email Address | [email protected] |
| Password | Password1 |
| Birthdate | 01 |
Daha sonra kullanıcı kaydı başarılı olmalıdır.
Misal
Bir veri tablosu örneğini otomatikleştirelim.
Step 1 - "DataTableTest" adlı bir Maven Test Projesi oluşturun.
Dosya → Yeni → Diğerleri → Maven → Maven Projesi → İleri'ye gidin.
Sağlamak group Id (grup kimliği, projenizi tüm projelerde benzersiz olarak tanımlayacaktır).
Sağlamak artifact Id (yapı kimliği, sürümsüz kavanozun adıdır. Küçük harfli herhangi bir adı seçebilirsiniz).
Finish'e tıklayın.
Pom.xml dosyasını açın -
Eclipse'in sol tarafındaki paket gezginine gidin.
CucumberTest projesini genişletin.
Pom.xml dosyasını bulun.
Sağ tıklayın ve "Metin Düzenleyici" ile Aç seçeneğini seçin.
Selenium için bağımlılık ekle: Bu, hangi Selenium jar dosyalarının merkezi depodan yerel depoya indirileceğini Maven'i gösterecektir.
Açık pom.xml düzenleme modunda, proje etiketinin içinde bağımlılıklar etiketi (<dependencies> </dependencies>) oluşturun.
Bağımlılıklar etiketinin içinde bağımlılık etiketi oluşturun. (<dependency> </dependency>).
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın.
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.47.1</version>
</dependency>
Cucumber-Java için bağımlılık ekle - Bu, hangi Cucumber dosyalarının merkezi depodan yerel depoya indirileceğini Maven'i gösterecektir.
Bir tane daha bağımlılık etiketi oluşturun.
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın.
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
Cucumber-JUnit için bağımlılık ekle - Bu, merkezi depodan yerel depoya hangi Cucumber JUnit dosyalarının indirileceğini Maven'i gösterecektir.
Bir tane daha bağımlılık etiketi oluşturun.
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın.
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
JUnit için bağımlılık ekle - Bu, merkezi depodan yerel depoya hangi JUnit dosyalarının indirileceğini Maven'i gösterecektir.
Bir tane daha bağımlılık etiketi oluşturun.
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
İkili dosyaları doğrulayın.
Pom.xml başarıyla düzenlendikten sonra kaydedin.
Projeye Git → Temizle - Birkaç dakika sürecektir.
Step 2 - adlı bir paket oluşturun dataTable altında src/test/java
Step 3 - Bir Özellik dosyası oluşturun.
Adlı bir özellik dosyası oluşturun dataTablepaket dataTable içinde .feature (daha ayrıntılı adımlar için senaryo taslağına bakın).
Aşağıdaki metni yazın.
Feature - Veri tablosu
Yanlış girişleri geçtikten sonra yeni kullanıcı kaydının başarısız olduğunu doğrulayın.
Scenario:
Yeni kullanıcı kayıt sayfasındayım.
Sayfaya geçersiz veri girdiğimde
| Fields | Values |
| First Name | Tom |
| Last Name | Kenny |
| Email Address | [email protected] |
| Re-enter Email Address | [email protected] |
| Password | Password1 |
| Birthdate | 01 |
O zaman kullanıcı kaydı başarısız olmalı
Dosya 'yı kaydet.
Step 4 - Adım tanımlama dosyası oluşturun.
DataTable paketinin içinde 'dataTable.java' adlı adım tanımlama dosyasını oluşturun (daha ayrıntılı adımlar için bölüm senaryo taslağına bakın).
Aşağıdaki kodu yazın.
package dataTable;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
import cucumber.annotation.en.Given;
import cucumber.annotation.en.Then;
import cucumber.annotation.en.When;
import cucumber.table.DataTable;
public class stepdefinition {
WebDriver driver = null;
@Given("^I am on new user registration page$") public void goToFacebook() { //Intiate web browser instance. driver = new FirefoxDriver(); driver.navigate().to("https://www.facebook.com/"); } @When("^I enter invalid data on the page$")
public void enterData(DataTable table){
//Initialize data table
List<list> data = table.raw();
System.out.println(data.get(1).get(1));
//Enter data
driver.findElement(By.name("firstname")).sendKeys(data.get(1).get(1));
driver.findElement(By.name("lastname")).sendKeys(data.get(2).get(1));
driver.findElement(By.name("reg_email__")).sendKeys(data.get(3).get(1));
driver.findElement(By.name("reg_email_confirmation__")).
sendKeys(data.get(4).get(1));
driver.findElement(By.name("reg_passwd__")).sendKeys(data.get(5).get(1));
Select dropdownB = new Select(driver.findElement(By.name("birthday_day")));
dropdownB.selectByValue("15");
Select dropdownM = new Select(driver.findElement(By.name("birthday_month")));
dropdownM.selectByValue("6");
Select dropdownY = new Select(driver.findElement(By.name("birthday_year")));
dropdownY.selectByValue("1990");
driver.findElement(By.className("_58mt")).click();
// Click submit button driver.findElement(By.name("websubmit")).click();
}
@Then("^User registration should be unsuccessful$")
public void User_registration_should_be_unsuccessful() {
if(driver.getCurrentUrl().equalsIgnoreCase("https://www.facebook.com/")){
System.out.println("Test Pass");
} else {
System.out.println("Test Failed");
}
driver.close();
}
}
Dosya 'yı kaydet.
Step 5 - Bir koşucu sınıfı dosyası oluşturun.
Paketin içinde runTest.java adlı runner sınıfı oluşturun.
Aşağıdaki kodu yazın.
package dataTable;
import org.junit.runner.RunWith;
import cucumber.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
public class runTest { }
Dosya 'yı kaydet.
Seçeneği kullanarak testi çalıştırın
Paket gezgininden runTest.java dosyasını seçin.
Sağ tıklayın ve Farklı çalıştır seçeneğini seçin.
JUnit testini seçin.
Başarılı bir uygulama sonrasında aşağıdaki hususları gözlemleyebilirsiniz.
Facebook web sitesi yükleniyor.
Veriler kayıt sayfasına girilecektir.
Gönder düğmesi tıklanacaktır.
Ana sayfanın görüntülenmeyeceğini ve konsolda “Test Pass” yazılacağını göreceğiz.
Commenttemelde yürütme için değil belgeleme amaçlı bir kod parçasıdır. Daha okunaklı ve anlaşılır hale getirmek için bir adım tanım dosyası veya bir özellik dosyası olabilir. Bu nedenle dosyada uygun yerlere yorumların kullanılması / yerleştirilmesi önemlidir. Bu, kodda hata ayıklarken de yardımcı olur. Salatalık özellik dosyalarının herhangi bir yerde yorumları olabilir. Yorum yazmak için ifadeye "#" işaretiyle başlamamız yeterlidir.
Farklı programlama dillerinin yorumları tanımlamak için farklı normları vardır. Bakalım Salatalık bununla nasıl başa çıkacak.
Adım tanımlama dosyası - Platform olarak Java kullanıyorsanız, yorumlarınızı "//" ile işaretleyin.
Özellik Dosyası - Özellik dosyası durumunda, yorumunuza başlamadan önce sadece # koymamız gerekir.
Misal
Programda vurgulanan metin, koddaki yorumlara atıfta bulunur.
Feature: annotation
#This is how background can be used to eliminate duplicate steps
Background:
User navigates to Facebook
Given I am on Facebook login page
#Scenario with AND
Scenario:
When I enter username as "TOM"
And I enter password as "JERRY"
Then Login should fail
#Scenario with BUT
Scenario:
When I enter username as "TOM"
And I enter password as "JERRY"
Then Login should fail
But Relogin option should be available
Salatalık hookkod iş akışını daha iyi yönetmemizi sağlar ve kod fazlalığını azaltmamıza yardımcı olur. Senaryolarımızı veya testleri yapmamızı sağlayan görünmeyen bir adım olduğunu söyleyebiliriz.
Bu kavramı daha iyi anlamak için, bir özellik dosyası ve bir adım tanımlama dosyası örneği alalım.
Verilen ifadede vurgulanan kısım aslında web sürücüsünü kurma ve webdriver oturumunu sonlandırma işini yapar. Yani, aslında "Verilen ifade" nin özüyle alakalı değildir ve daha çok test için bir kurulum gibidir. Ayrıca, daha geniş bir olasılıkla düşünürsek, bu özellik için birden fazla senaryo olması durumunda, bu web sürücüsü kurulumu ve temizleme, verilen her ifade ile çalışacaktır. Mantıksal olarak, kurulum ve temizlemenin yalnızca bir kez yürütülmesi mantıklıdır.
Dolayısıyla optimizasyonu sağlamak için kancalar kullanılabilir. Daha sık olarak iki tür kanca kullanırız: "Önce" ve "Sonra" kanca. Önce ve Sonra kancalarında tanımlanan yöntem / işlev / kod parçası, senaryo geçse veya başarısız olsa bile her zaman çalışır.
Adından da anlaşılacağı gibi, hook diğer test senaryolarından çok önce yürütülmeden önce ve tüm senaryoları çalıştırdıktan sonra hook çalıştırıldıktan sonra.
Kancalar, yalnızca adım tanımlama dosyasında tanımlanır.
Kanca öncesi ve sonrası örneğini otomatikleştirelim.
Step 1 - hookTest olarak Maven projesi oluşturun, pom.xml'de gerekli bağımlılığı ekleyin.
Step 2 - altında hookTest olarak adlandırılan bir Java paketi oluşturun src/test/java
Step 3 - olarak adlandırılan bir adım tanım dosyası oluşturun hookTest.java paketin altında.
package hookTest;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import cucumber.annotation.en.Given;
import cucumber.annotation.en.Then;
import cucumber.annotation.en.When;
public class hookTest {
WebDriver driver = null;
@Before public void setUp(){
driver = new FirefoxDriver();
}
@Given("^user navigates to facebook$")
public void goToFacebook() {
driver.navigate().to("https://www.facebook.com/");
}
@When("^I enter Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$") public void I_enter_Username_as_and_Password_as(String arg1, String arg2) { driver.findElement(By.id("email")).sendKeys(arg1); driver.findElement(By.id("pass")).sendKeys(arg2); driver.findElement(By.id("u_0_v")).click(); } @Then("^login should be unsuccessful$")
public void validateRelogin() {
if(driver.getCurrentUrl().equalsIgnoreCase(
"https://www.facebook.com/login.php?login_attempt=1&lwv=110")){
System.out.println("Test Pass");
} else {
System.out.println("Test Failed");
}
driver.close();
}
@After public void cleanUp(){
driver.close();
}
}
Step 4 - Paketin altında "hookTest.feature" adlı bir özellik dosyası oluşturun.
Feature - Senaryo Taslağı.
Scenario Outline - Kanca Testi
Verilen kullanıcı Facebook'a gidiyor
Kullanıcı adını "<kullanıcı adı>" ve Parolayı "<parola>" olarak girdiğimde
O zaman giriş başarısız olmalı
Örnekler
| username | password |
| username1 | password1 |
Step 5 - Bir koşucu sınıfı dosyası oluşturun.
Runner sınıfını dataTable paketinin içinde runTest.java olarak oluşturun (daha ayrıntılı adımlar için bölüm senaryo taslağına bakın).
Aşağıdaki kodu yazın.
package hookTest;
import org.junit.runner.RunWith;
import cucumber.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
public class runTest { }
Dosya 'yı kaydet.
Seçeneği kullanarak testi çalıştırın -
Paket gezgininden runTest.java dosyasını seçin.
Sağ tıklayın ve Farklı çalıştır seçeneğini seçin.
JUnit testini seçin.
Şimdi bunu çalıştırdığımızda, aşağıdaki yürütme sırası gelecektir.
Kancadan önce - Testi çalıştırmak için web sürücüsünü ve diğer ön koşulları ayarlayın.
Verilen ifade
Ne zaman ifadesi
Sonra ifade
Bağlantıdan sonra - Web sürücüsünü kapatın ve temizleme işlemini yapın.
Etiketli Kancalar
Kancalardan önce ve sonra sadece belirli bir etiketle çalıştırılmasını isteyip istemediğimizi de belirtebiliriz. Example- @Before ('@ Web'). Aynı mantıksal etiket kavramı ve / veya kancalarla da uygulanabilir.Example - @Before (@ dev, @ wip), @Before (@ dev, ~ @ wip)
Salatalık hemen hemen her bilgisayar sistemini test etmek için kullanılabilir. Şimdiye kadar Eclipse IDE kullanarak nasıl test çalıştırılacağını gördük. Hıyar testini komut satırı arayüzünden çalıştırmanın bir yolu daha var. Peki bunu yapmanın avantajı nedir?
Herhangi bir test çerçevesini Terminal'den çalıştırmanın, kodda belirtilen çalıştırma yapılandırmalarını geçersiz kılmak gibi kendi avantajları vardır.
Hıyar testini komut istemi ile yürütmek için, sistem konfigürasyonundan sonra aşağıdaki adımları kullanın.
Step 1- adlı bir Maven Test Projesi oluşturun commandLine.
Dosya → Yeni → Diğerleri → Maven → Maven Projesi → İleri'ye gidin.
Grup kimliği sağlayın (grup kimliği, projenizi tüm projelerde benzersiz bir şekilde tanımlar).
Yapı Kimliği sağlayın (yapı kimliği, sürümsüz kavanozun adıdır. Küçük harfli herhangi bir adı seçebilirsiniz).
Finish'e tıklayın.
Pom.xml dosyasını açın -
Eclipse'in sol tarafındaki paket gezginine gidin.
CucumberTest projesini genişletin.
Bul pom.xml dosya.
Sağ tıklayın ve "Metin Düzenleyici" ile Aç seçeneğini seçin.
Selenium için bağımlılık ekle - Bu, hangi Selenium jar dosyalarının merkezi depodan yerel depoya indirileceğini Maven'i gösterecektir.
Açık pom.xml düzenleme modunda, proje etiketinin içinde bağımlılıklar etiketi (<dependencies> </dependencies>) oluşturun.
Bağımlılıklar etiketinin içinde bağımlılık etiketi oluşturun. (<dependency> </dependency>).
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın.
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.47.1</version>
</dependency>
Cucumber-Java için bağımlılık ekle - Bu, hangi Cucumber dosyalarının merkezi depodan yerel depoya indirileceğini Maven'i gösterecektir.
Bir tane daha bağımlılık etiketi oluşturun.
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın.
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
Cucumber-JUnit için bağımlılık ekle - Bu, merkezi depodan yerel depoya hangi Cucumber JUnit dosyalarının indirileceğini Maven'i gösterecektir.
Bir tane daha bağımlılık etiketi oluşturun.
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın.
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
JUnit için bağımlılık ekle - Bu, merkezi depodan yerel depoya hangi JUnit dosyalarının indirileceğini Maven'i gösterecektir.
Bir tane daha bağımlılık etiketi oluşturun.
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın.
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
İkili dosyaları doğrulayın.
Pom.xml başarıyla düzenlendikten sonra kaydedin.
Projeye Git → Temizle - Birkaç dakika sürecektir.
Step 2 - src / test / java altında "anahat" adlı bir paket oluşturun
Step 3 - "commandLine.feature" adlı bir özellik dosyası oluşturun.
Paket taslağını seçin ve sağ tıklayın.
'Yeni' dosyaya tıklayın.
Dosyaya "commandLine.feature" gibi bir ad verin
Metnin altına dosya içinde yazın ve kaydedin.
Feature - Senaryo Taslağı
Scenario Outline - Bir sosyal ağ sitesi için oturum açma işlevi.
Kullanıcının Facebook'a gitmesi durumunda
Kullanıcı adını "<kullanıcı adı>" ve Parolayı "<parola>" olarak girdiğimde
O zaman giriş başarısız olmalı
Örnekler
| username | password |
| username1 | password1 |
| username2 | password2 |
Note- Burada, örnek ek açıklama, senaryo çalıştırıldığında sağlanacak girdi aralığını açıklamaktadır. Sağlanan girdilerin her biri için test senaryosu yürütülecektir. Dolayısıyla verilen örnekte test senaryosu üç kez yürütülecektir.
Step 4 - Bir adım tanımlama dosyası oluşturun.
Paket taslağını seçin ve sağ tıklayın.
'Yeni' dosyaya tıklayın.
Dosyayı şu şekilde adlandırın: commandLine.java
Aşağıdaki metni dosyanın içine yazın ve kaydedin.
package Outline;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import cucumber.annotation.en.Given;
import cucumber.annotation.en.Then; i
import cucumber.annotation.en.When;
public class stepdefinition {
WebDriver driver = null;
@Given("^user navigates to facebook$") public void goToFacebook() { driver = new FirefoxDriver(); driver.navigate().to("https://www.facebook.com/"); } @When("^I enter Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$")
public void I_enter_Username_as_and_Password_as(String arg1, String arg2) {
driver.findElement(By.id("email")).sendKeys(arg1);
driver.findElement(By.id("pass")).sendKeys(arg2);
driver.findElement(By.id("u_0_v")).click();
}
@Then("^login should be unsuccessful$")
public void validateRelogin() {
if(driver.getCurrentUrl().equalsIgnoreCase(
"https://www.facebook.com/login.php?login_attempt=1&lwv=110")){
System.out.println("Test Pass");
} else {
System.out.println("Test Failed");
}
driver.close();
}
}
Note- Kodda, iki girdi argümanına sahip bir işlev tanımlamamız gerekir: biri kullanıcı adı ve diğeri şifre için olacaktır. Bu nedenle, örnek etiketinde sağlanan her girdi kümesi için GIVEN, WHEN ve THEN kümesi çalıştırılacaktır.
Step 5 - Bir koşucu sınıfı dosyası oluşturun.
Paket taslağını seçin ve sağ tıklayın.
'Yeni' dosyaya tıklayın.
Dosyaya şunun gibi bir ad verin: runTest.java
Aşağıdaki metni dosyanın içine yazın ve kaydedin.
package Outline;
import org.junit.runner.RunWith;
import cucumber.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
public class runTest { }
Bir komut istemi açın.
Bu paket “commandLine” ın bulunduğu dizine gidin. e: \ Çalışma Alanı \ LoginTest \ src> cd testi \ java
Mvn test komutunu çalıştırın: Özellik dosyasında açıklanan tüm senaryonun yürütüldüğünü göreceksiniz (herhangi bir hata yoksa). Son olarak, altta aşağıdaki bilgileri bulacaksınız.
Sonuç
This describes the total test run, along with failure if any.
Önceki komut, JUnit Runner sınıfında belirtildiği gibi her şeyi çalıştırır. Bununla birlikte, Runner'da belirtilen konfigürasyonları geçersiz kılmak istiyorsak, bunu yapmak için birkaç örnek aşağıdadır.
Şimdi komut isteminde mvn test - Dcucumber.options = "- help" komutunu çalıştırın. Bunu çalıştırmak tüm mevcut seçenekleri yazdıracaktır.
Yalnızca belirli etiketleri çalıştırmak için, komut isteminde mvn test -Dcucumber.options = "- tags @SmokeTest" komutunu çalıştırın. Yalnızca @ SmokeTest ile işaretlenmiş etiketleri çalıştıracaktır.
Sonucun formatını değiştirmek için komut isteminde E: \ Workspace \ LoginTest> mvn test -Dcucumber.options = "- plugin junit: target / cucumber-junit-report.xml" komutunu çalıştırın. Raporu değiştirir JUnit rapor oluşturucu formatı.
Cucumber JUnit Runner için tartışmamıza başlamadan önce Junit'in ne olduğunu anlamak önemlidir. JUnitJava programlama dili için açık kaynaklı bir birim test çerçevesidir. JUnit, test güdümlü geliştirmenin geliştirilmesinde önemli olmuştur ve SUnit ile ortaya çıkan topluca xUnit olarak bilinen birim test çerçevelerinden biridir.
JUnit Kullanmanın Faydaları
Birimde Graphical User Interface (GUI), kaynak kodunu hızlı ve kolay bir şekilde yazmayı ve test etmeyi mümkün kılar.
JUnit, geliştiricinin ilerlemeyi ölçmek ve istenmeyen yan etkileri tespit etmek için aşamalı olarak test paketleri oluşturmasına olanak tanır.
Test sürekli olarak çalıştırılabilir.
JUnit, normalde yeşil olan ancak bir test başarısız olduğunda kırmızıya dönen bir çubukta test ilerlemesini gösterir.
Şimdiye kadar, JUnit kullanmanın faydalarını gördük, ancak şu anda bunu tartışmamızın nedeni Hıyar çerçevesi. Bir yandan Cucumber, teknik bilgisi olmayan bir kişinin bir ürün için test senaryoları tanımlaması için bir yol sağlarken, diğer yandan beklentimiz bu tür test durumlarının sorunsuz ve zamanında yürütülmesidir.
JUnit, bu ikisi arasında bir köprü görevi görür. Dolayısıyla, yürütme akışı aşağıdaki gibi görünecek -
Paydaşlar özellik dosyasını yazarlar.
Buna göre adım tanımlama dosyası oluşturulacaktır.
Test senaryoları serisini çalıştırmak için JUnit runner sınıfını belirtin.
JUnit runner sınıfını çalıştırdığımızda -
Gherkin özellik dosyasını ayrıştıracaktır.
Adım tanımlama dosyasında yazılan işlevleri özellik dosyası ifadelerine göre çalıştıracaktır.
JUnit, test senaryosu sonucunu birleştirecektir.
Test raporunu belirtilen formatta (html / JSON olabilir) oluşturacaktır.
Buradaki önemli nokta, JUnit'in tüm bunları yapması için nasıl yapılandırılacağıdır? Adımlar aşağıdadır -
Step 1 - Java'yı yükleyin.
Bağlantıdan jdk ve jre'yi indirin http://www.oracle.com/technetwork/java/javase/downloads/index.html
Lisans sözleşmesini kabul edin.
JDK ve JRE'yi yükleyin.
Ortam değişkenini aşağıdaki ekran görüntüsünde gösterildiği gibi ayarlayın.
Step 2 - Eclipse'i yükleyin.
Why we need- Eclipse bir Entegre Geliştirme Ortamıdır (IDE). Bir temel çalışma alanı ve ortamı özelleştirmek için genişletilebilir bir eklenti sistemi içerir.
How to install -
Makinenizde JAVA'nın kurulu olduğundan emin olun.
Eclipse'i buradan indirin http://www.eclipse.org/downloads
Unzip ve Eclipse kurulur.
Step 3 - Maven'i kurun.
Why we need- Maven, öncelikle Java projeleri için kullanılan bir derleme otomasyon aracıdır. Kaynak kodu üretmek, kod derlemek, kodu bir kavanozda paketlemek vb. Gibi faaliyetleri gerçekleştirmek için ortak bir platform sağlar. Ayrıca daha sonra yazılım sürümlerinden herhangi biri değişirse, Maven test projesini buna göre değiştirmek için kolay bir yol sağlar.
How to install -
Maven'i indirin - https://maven.apache.org/download.cgi
Dosyayı açın ve konumu hatırlayın.
Aşağıdaki ekran görüntüsünde gösterildiği gibi, MAVEN_HOME ortam değişkenini oluşturun.
Yol değişkenini düzenleyin ve aşağıdaki ekran görüntüsünde gösterildiği gibi Maven'i ekleyin.
Eclipse'den MAVEN eklentisini indirin.
Eclipse'i açın.
Yardıma git → Eclipse Marketplace → Arama maven → Eclipse için Maven Entegrasyonu → YÜKLE.
Step 4 - Maven ile Salatalık nasıl yapılandırılır
Eclipse'de bir Maven projesi oluşturun.
Dosya → Yeni → Diğerleri → Maven → Maven Projesi → İleri'ye gidin.
Grup kimliği sağlayın (grup kimliği, projenizi tüm projelerde benzersiz bir şekilde tanımlar).
Yapı Kimliği sağlayın (yapı kimliği, sürümsüz kavanozun adıdır. Küçük harfli herhangi bir adı seçebilirsiniz).
Finish'e tıklayın.
Pom.xml dosyasını açın
Eclipse'in sol tarafındaki paket gezginine gidin.
CucumberTest projesini genişletin.
Pom.xml dosyasını bulun.
Sağ tıklayın ve "Metin Düzenleyici" ile Aç seçeneğini seçin.
Selenium için bağımlılık ekle - Bu, hangi Selenium jar dosyalarının merkezi depodan yerel depoya indirileceğini Maven'i gösterecektir.
Açık pom.xml düzenleme modunda, proje etiketinin içinde bağımlılıklar etiketi (<dependencies> </dependencies>) oluşturun.
Bağımlılıklar etiketinin içinde bağımlılık etiketi oluşturun. (<dependency> </dependency>).
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın.
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.47.1</version>
</dependency>
Cucumber-Java için bağımlılık ekle - Bu, merkezi depodan yerel depoya hangi Cucumber dosyalarının indirileceğini Maven'i gösterecektir.
Bir tane daha bağımlılık etiketi oluşturun.
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın.
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
Cucumber-JUnit için bağımlılık ekle: Bu, merkezi depodan yerel depoya hangi Cucumber JUnit dosyalarının indirileceğini Maven'i gösterecektir.
Bir tane daha bağımlılık etiketi oluşturun.
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın.
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
JUnit için bağımlılık ekle - Bu, merkezi depodan yerel depoya hangi JUnit dosyalarının indirileceğini Maven'i gösterecektir.
Bir tane daha bağımlılık etiketi oluşturun.
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın.
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
İkili dosyaları doğrulayın
bir Zamanlar pom.xml başarıyla düzenlendi, kaydedin.
Projeye Git → Temizle - Birkaç dakika sürecektir.
Bundan sonra aşağıdaki ekran görüntüsü gibi bir Maven deposunu görebileceksiniz.
Step 5 - Özellik dosyası oluşturun (daha sonra ele alınacak).
Step 6 - Adım tanımlama dosyası oluşturun (daha sonra ele alınacaktır).
Step 7 - Testi çalıştırmak için Junit koşucusu oluşturun (daha sonra ele alınacaktır).
Bir ürünün stabilitesini anlamak için test yürütme yapıyoruz, bu nedenle manuel test veya otomatik test, bir ürünün stabilitesini tasvir edebilecek kısa bir rapor oluşturmak çok önemlidir. Bu nedenle, test senaryomuzu Hıyar ile otomatikleştirirken, Salatalık test raporlarımızı nasıl daha iyi oluşturabileceğimizi bilmek çok önemlidir. Cucumber'ın bir BDD çerçevesi olduğunu bildiğimiz için süslü bir raporlama mekanizmasına sahip değil.
Bunu başarmak için Cucumber'ı Ant / Junit gibi diğer açık kaynaklı araçlarla entegre etmemiz gerekiyor. Burada JUnit örneklerini biraz daha ele alacağız çünkü Java dili için destek sağlıyor.
Mevcut ve kullanımı kolay olan farklı rapor formatlarının ayrıntılarına bakalım -
Güzel Biçim (HTML Raporu)
Pretty Format, Hıyar test raporunu HTML biçiminde, yani bir HTML dosyası biçiminde oluşturur. En okunabilir rapor formatıdır. Raporu bir özellik dosyasıyla aynı şekilde oluşturur, böylece izleme de kolaylaşır. Ayrıca, testin yürütülmesinden sonra bu raporun yerleştirilmesini istediğiniz konumu da belirtebilirsiniz. Olabilir -
Local Directory - Rapor için hedef dizini, testin çalışacağı makinenin herhangi bir yerel dizini olarak belirleyebiliriz.
Server Directory- Ayrıca, genel erişime açık olan sunucudaki herhangi bir dizin olarak bir hedef dizini belirtmek için bir koşulumuz var. Bu genellikle, müşterilerimizin / paydaşlarımızın herhangi bir zamanda test sonuçlarını görüntülemesini istediğimizde yardımcı olur.
Misal
Güzel bir format örneğini otomatikleştirelim.
Step 1 - adlı bir Maven projesi oluşturun cucumberReport Eclipse'de.
Step 2 - adlı bir paket oluşturun CucumberReport altında src/test/java
Step 3 - adlı bir özellik dosyası oluşturun cucumberReport.feature
Aşağıdaki metni dosyanın içine yazın ve kaydedin.
Feature - Salatalık Raporu
# Bu, Başarılı test senaryosu için test sonucunu kontrol etmek içindir
Scenario: Oturum açma işlevi mevcuttur
Tarayıcıyı açtığım için
Facebook web sitesini açtığımda
O zaman Giriş düğmesi bulunmalıdır
# Bu, Başarısız test durumu için test sonucunu kontrol etmek içindir
Scenario: Şifremi unuttum
Tarayıcıyı açtığım için
Facebook web sitesini açtığımda
Ardından Şifremi unuttum bağlantısı olmalıdır
Note- Burada ilk senaryo geçecek, ikinci senaryo başarısız olacak. Böylece geçti ve kaldı raporunun nasıl göründüğüne şahit olabiliriz.
Step 4 - Bir adım tanımlama dosyası oluşturun.
Paket taslağını seçin ve sağ tıklayın.
'Yeni' dosyaya tıklayın.
Dosya adını şu şekilde verin: cucumberReport.java
Aşağıdaki metni dosyanın içine yazın ve kaydedin.
package CucumberReport;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import cucumber.annotation.en.Given;
import cucumber.annotation.en.Then;
import cucumber.annotation.en.When;
public class cucumberReport {
WebDriver driver = null;
@Given("^I have open the browser$")
public void openBrowser() {
driver = new FirefoxDriver();
}
@When("^I open Facebook website$") public void goToFacebook() { driver.navigate().to("https://www.facebook.com/"); } @Then("^Login button should exits$")
public void loginButton() {
if(driver.findElement(By.id("u_0_v")).isEnabled()) {
System.out.println("Test 1 Pass");
} else {
System.out.println("Test 1 Fail");
}
}
@Then("^Forgot password link should exist$")
public void forgotPWD() {
if(driver.findElement(By.id("")).isEnabled()) {
System.out.println("Test 1 Pass");
} else {
System.out.println("Test 1 Fail");
}
}
}
Step 5 - Bir koşucu sınıfı dosyası oluşturun.
Adlı bir koşucu sınıfı oluşturun runTest.java paketin içinde.
Aşağıdaki kodu yazın. Dosya 'yı kaydet.
package CucumberReport;
import org.junit.runner.RunWith;
import cucumber.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options(
format = {"pretty", "html:target/Destination"} )
//Specifying pretty as a format option ensure that HTML report will be generated.
//When we specify html:target/Destination - It will generate the HTML report
inside the Destination folder, in the target folder of the maven project.
public class runTest { }
Seçeneği kullanarak testi çalıştırın
Seçiniz runTest.java paket gezgininden dosya.
Sağ tıklayın ve seçeneği seçin, Run as.
JUnit testini seçin.
Bu sınıf dosyasını çalıştırdığınızda aşağıdaki şeyleri gözlemleyeceksiniz.
Her iki senaryo da birer birer uygulanacaktır.
Hedef dizinin içinde Hedef adlı bir klasör oluşturulacaktır.
Rapor orada “Index.html” olarak adlandırılacaktır.
Index.html'yi web tarayıcısı ile açın.
Aşağıdaki resimde bahsedilen raporu göreceksiniz -
Başarısız senaryonun rengini tam olarak vurgular. Ayrıca, bu senaryoda başarısız adım için vurgu göreceksiniz. Bu, hata ayıklamayı çok kolaylaştırır.
JSON Raporu
Şimdiye kadar HTML raporunun ne kadar kolay olduğunu gördük. Bununla birlikte, bu rapor bilgilerini başka herhangi bir uygulamaya aktarmak istiyorsak, bu HTML raporları durumunda biraz yanıltıcıdır. İşte başka bir raporlama formatına ihtiyaç var. JSON-Java komut dosyası nesne gösterimi, Salatalık test raporları oluşturmak için başka bir biçimdir. JSON, metin biçiminde depolanan birçok bilgi içeren bir nesnedir. JSON raporları, tabloya farklı bir değer getirir. JSON raporu, farklı sunucular arasında aktarılacak bilgi yükü olarak da kullanılabilir. Ayrıca, bir web sayfası olarak görüntülenmek için kullanılabilir. Özetle, JSON raporları diğer uygulamalar tarafından kullanılabilir.
What is payload information?Veriler İnternet üzerinden gönderildiğinde, iletilen her birim hem başlık bilgisini hem de gönderilen gerçek verileri içerir. Başlık, paketin kaynağını ve hedefini tanımlar, gerçek veriler ise yük olarak adlandırılır. JSON raporu oluşturmak için sadece runner dosyasında bir değişiklik yapmamız gerekiyor.
Runner dosyasındaki format seçeneğini aşağıdaki gibi değiştirin.
package CucumberReport;
import org.junit.runner.RunWith;
import cucumber.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options( format={"json:target/Destination/cucumber.json"})
//When we specify json:target/Destination/cucumber.json - It will generate the JSON
report inside the Destination folder, in the target folder of the maven project.
public class runTest {}
Seçeneği kullanarak testi çalıştırın -
Seçiniz runTest.java paket gezgininden dosya.
Sağ tıklayın ve seçeneği seçin Run as.
JUnit testini seçin.
Bu sınıf dosyasını çalıştırdığınızda aşağıdaki şeyleri gözlemleyeceksiniz.
Her iki senaryo da birer birer uygulanacaktır.
Rapor orada şöyle adlandırılacaktır cucumber.json (koşucu sınıfında verildiği gibi).
Açık cucumber.json metin düzenleyiciyle dosya.
Satır sonlarını yerleştirdikten sonra aşağıdaki ekran görüntüsünde belirtilen raporu göreceksiniz -
Note - JSON, HTML rapor formatına kıyasla daha az okunabilir.
Bilinmeyen nedenlerden dolayı testinizin başarısız olma ihtimali çok yüksektir. Arızanın nedenini belirlemek ve düzeltmek çok önemlidir. Bu süreç olarak bilinirdebugging. Aşağıda, Salatalık hata ayıklamasını biraz kolaylaştıran birkaç ipucu ve püf noktası bulunmaktadır.
Eclipse ile hata ayıklama seçeneği mevcuttur. Kırılma noktasını yerleştirin. Dosyayı tıklayın ve aşağıdaki adımları kullanarak hata ayıklayın -
Step 1 - Manuel kesme noktalarını Ruby adım tanım dosyasına yerleştirin.
Misal
require 'ruby-debug'
Then /^the process should exit cleanly$/ do
breakpoint
assert @exited_cleanly, "Process did not exit cleanly: #{@stdout}"
end
Step 2 - Adım tanımlama dosyasında aşağıdaki gibi ayrı bir hata ayıklama adımı da tanımlayabiliriz.
Then /^I debug$/ do
breakpoint
0
end
Step 3 - WebratRails ile salatalık testi için varsayılan araçtır. Bağlantılara tıklama, form yazma ve gönderme gibi şeyler yapmanızı sağlar.
Örneğin, bir şeyi tıklamaya çalıştığınız zamanlar olacaktır ve o orada değildir. Geri fırlatılan büyük bir HTML bloğu elde edeceksiniz ve bunun tam olarak ne anlama geldiğini bulmak gerçek bir engel olabilir.
save_and_open_page
Webrat, geçerli HTML'yi yakalayan, kaydeden ve sonra sizin için bir tarayıcıda açan bir save_and_open_page yöntemi sağlar. Son derece kullanışlı.
When /^I follow "(.*)"$/ do |link|
save_and_open_page
click_link(link)
end
Java ile Salatalık testini çalıştırmak için aşağıdaki adımlar verilmiştir.
Step 1 - Java'yı yükle -
Jdk ve jre'yi şuradan indirin:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Lisans sözleşmesini kabul edin.
JDK ve JRE'yi yükleyin.
Ortam değişkenini aşağıdaki resimde gösterildiği gibi ayarlayın.
Step 2 - Eclipse IDE'yi yükleyin -
Makinenizde JAVA'nın kurulu olduğundan emin olun.
Eclipse'i buradan indirin https://eclipse.org/downloads/
Unzip ve Eclipse yüklendi.
Step 3 - Maven'i yükleyin -
Maven'i indirin -https://maven.apache.org/download.cgi
Dosyayı açın ve konumu hatırlayın.
Aşağıdaki görüntüde gösterildiği gibi ortam değişkenini MAVEN_HOME oluşturun.
Yol değişkenini düzenleyin ve Maven'i dahil edin.
Eclipse'den MAVEN eklentisini indirin
Eclipse'i açın.
Got to Help → Eclipse Marketplace → Search maven → Maven Integration for Eclipse → YÜKLE
Step 4 - Maven ile Salatalığı yapılandırın.
Bir Maven projesi oluşturun.
Dosya → Yeni → Diğerleri → Maven → Maven Projesi → İleri'ye gidin.
Grup kimliği sağlayın (grup kimliği, projenizi tüm projelerde benzersiz bir şekilde tanımlar).
Yapı Kimliği sağlayın (yapı kimliği, sürümsüz kavanozun adıdır. Küçük harfli herhangi bir adı seçebilirsiniz).
Finish'e tıklayın.
Step 5 - pom.xml dosyasını açın -
Eclipse'in sol tarafındaki paket gezginine gidin.
CucumberTest projesini genişletin.
Pom.xml dosyasını bulun.
Sağ tıklayın ve "Metin Düzenleyici" ile Aç seçeneğini seçin.
Step 6 - Selenium için bağımlılık ekle - Bu, hangi Selenium jar dosyalarının merkezi depodan yerel depoya indirileceğini Maven'i gösterecektir.
Açık pom.xml düzenleme modunda, proje etiketinin içinde bağımlılıklar etiketi (<dependencies> </dependencies>) oluşturun.
Bağımlılıklar etiketinin içinde bağımlılık etiketi oluşturun. (<dependency> </dependency>)
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın.
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.47.1</version>
</dependency>
Step 7 - Cucumber-Java için bağımlılık ekle - Bu, merkezi depodan yerel depoya hangi Cucumber dosyalarının indirileceğini Maven'i gösterecektir.
Bir tane daha bağımlılık etiketi oluşturun.
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın.
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
Step 8 - Cucumber-JUnit için bağımlılık ekle - Bu, Maven'i, hangi Cucumber JUnit dosyalarının merkezi depodan yerel depoya indirileceğini gösterecektir.
Bir tane daha bağımlılık etiketi oluşturun.
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın.
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
Step 9- JUnit için bağımlılık ekle - Bu, merkezi depodan yerel depoya hangi JUnit dosyalarının indirileceğini Maven'i gösterecektir.
Bir tane daha bağımlılık etiketi oluşturun.
Bağımlılık etiketi içinde aşağıdaki bilgileri sağlayın.
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
Step 10 - İkili dosyaları doğrulayın.
Pom.xml başarıyla düzenlendikten sonra kaydedin.
Projeye Git → Temizle - Birkaç dakika sürecektir.
Bir Maven deposunu görebileceksiniz.
Step 11 - altında bir paket oluşturun src/test/java Olarak adlandırılan cucumberJava.
Step 12 - Özellik dosyası oluşturun
Paket taslağını seçin ve sağ tıklayın.
'Yeni' dosyaya tıklayın.
Dosyaya şöyle bir ad verin: cucumberJava.feature.
Aşağıdaki metni dosyanın içine yazın ve kaydedin.
Feature: SalatalıkJava
Scenario: Oturum açma işlevi mevcuttur
Tarayıcıyı açtığım için
Facebook web sitesini açtığımda
Ardından Giriş düğmesi çıkmalıdır
Step 13 - Adım tanımlama dosyası oluşturun -
Paket taslağını seçin ve sağ tıklayın.
'Yeni' dosyaya tıklayın.
Dosya adına aşağıdaki gibi bir ad verin: annotation.java.
Aşağıdaki metni dosyanın içine yazın ve kaydedin.
package CucumberJava;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import cucumber.annotation.en.Given;
import cucumber.annotation.en.Then;
import cucumber.annotation.en.When;
public class cucumberJava {
WebDriver driver = null;
@Given("^I have open the browser$") public void openBrowser() { driver = new FirefoxDriver(); } @When("^I open Facebook website$")
public void goToFacebook() {
driver.navigate().to("https://www.facebook.com/");
}
@Then("^Login button should exits$")
public void loginButton() {
if(driver.findElement(By.id("u_0_v")).isEnabled()) {
System.out.println("Test 1 Pass");
} else {
System.out.println("Test 1 Fail");
}
driver.close();
}
}
Step 14 - Bir koşucu sınıfı dosyası oluşturun.
Paket taslağını seçin ve sağ tıklayın.
'Yeni' dosyaya tıklayın.
Dosya adını şu şekilde verin: runTest.java.
Aşağıdaki metni dosyanın içine yazın ve kaydedin.
package cucumberJava;
import org.junit.runner.RunWith;
import cucumber.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
public class runTest {
}
Step 15 - Seçeneği kullanarak testi çalıştırın -
Paket gezgininden runTest.java dosyasını seçin.
Sağ tıklayın ve seçeneği seçin, Run as.
JUnit testini seçin.
İcra edildikten sonra aşağıdaki hususları gözlemleyeceksiniz -
Bir Firefox web tarayıcısı örneği açılacaktır.
Tarayıcıda Facebook giriş sayfasını açacaktır.
Giriş düğmesini algılayacaktır.
Tarayıcı kapanacak.
JUnit penceresinde, test yürütmenin başarısını gösteren yeşil onay işaretli bir senaryo göreceksiniz.
Ruby dilinin aşağıdaki avantajları vardır -
Anlaması kolay.
Nesne yönelimli bir dildir.
Güçlü bir sınıf kitaplığıdır.
Büyük bir çevrimiçi desteğe sahiptir.
Aşağıda, Cucumber'ın Ruby ile nasıl çalıştığına dair adım adım süreç anlatılmaktadır.
Step 1 - Ruby'yi kurun.
RubyInstaller indirme sayfasına gidin.
İşletim sisteminize en uygun sürümü indirin (yani 32 veya 64 bit).
İndirilen exe'yi çalıştırın.
Kurulum sırasında, aşağıdaki görüntüde gösterildiği gibi “Ruby Ekle…” ve “İlişkilendir…” seçeneğini işaretleyin.
Step 2 - Dev kitini indirin ve çıkarın.
RubyInstaller indirme sayfasına gidin.
İşletim sisteminize en uygun Devkit sürümünü indirin (yani 32 veya 64 bit).
Devkit'i c: \ Ruby \ Devkit klasöründen çıkarın.
Komut istemini açın.
Ruby devkit içinde aşağıdaki komutu çalıştırın.
C:\Ruby\devkit> ruby dk.rb init
C:\Ruby\devkit> ruby dk.rb install
Step 3 - Salatalık ve diğer Yakut mücevherlerini yükleyin.
Hıyar'ı kurmak için önce mevcut mücevher kurulumunu güncelleyin
C:\Users\Admin> gem update –system
Ardından, Salatalık web testi için ihtiyacınız olan mücevherleri kurun.
C:\Users\Admin> gem install --no-ri --no-rdoc rspec
C:\Users\Admin> gem install --no-ri --no-rdoc win32console
C:\Users\Admin> gem install --no-ri --no-rdoc watir-webdriver
C:\Users\Admin> gem install --no-ri --no-rdoc cucumber
Salatalık çalıştırın
C:\Users\Admin\Documents>cucumber –init
C:\Users\Admin\Documents>cucumber
Step 4 - IDE - KOMODO'yu kurun.
Sayfaya git http://www.activestate.com/komodo-ide/downloads
Ücretsiz deneme yükleyicisini indirin.
İndirilen exe'ye çift tıklayın.
Kurulum adımlarını takip edin.
Kurulumu tamamlayın ve IDE'yi açın.
Step 5 - Kur Watir - Komut istemine gidin ve aşağıdaki komutu çalıştırın, "gem install watir"
Step 6 - Kur rspec - Komut istemine gidin ve aşağıdaki komutu çalıştırın, "gem install rspec"
Step 7 - Özellik dosyası oluşturun.
KOMODO düzenleyiciyi açın.
Yeni dosya simgesine tıklayın.
Aşağıdaki metni yazın.
Feature: Kullanıcılar, Google'ı kullanarak içerik arayabilmelidir.
Scenario: Bir terim arayın.
Girdiğim için "watir" sorguya.
Tıkladığımda "search"
O zaman bazı sonuçlar görmeliyim
Tıklayın save simgesi.
Adı CucumberRuby.feature olarak verin.
Herhangi bir klasör seçin, örneğin: “e:\WithRuby”
Dosya 'yı kaydet.
Step 8 - Adım tanımlama dosyası oluşturun.
KOMODO düzenleyiciyi açın.
'Yeni' dosya simgesini tıklayın.
Aşağıdaki kodu yazın.
require "watir-webdriver"
require "rspec/expectations"
Given /^I have entered "([^"]*)" into the query$/ do |term|
@browser ||= Watir::Browser.new :firefox
@browser.goto "google.com"
@browser.text_field(:name => "q").set term
end
When /^I click "([^"]*)"$/ do |button_name| @browser.button.click end Then /^I should see some results$/ do
@browser.div(:id => "resultStats").wait_until_present
@browser.div(:id => "resultStats").should exist
@browser.close
End
Kaydet simgesini tıklayın.
Adı şu şekilde verin CucumberRuby.rb
Örneğin herhangi bir klasör seçin: “e:\WithRuby”
Dosya 'yı kaydet.
Step 9 - Test dosyasını oluşturun.
KOMODO düzenleyiciyi açın.
'Yeni' dosya simgesine tıklayın.
Aşağıdaki kodu yazın.
require "rubygems"
require "test/unit"
require "watir-webdriver"
class GoogleSearch < Test::Unit::TestCase
def setup
@browser ||= Watir::Browser.new :firefox
end
def teardown
@browser.close
end
def test_search
@browser.goto "google.com"
@browser.text_field(:name => "q").set "watir"
@browser.button.click
@browser.div(:id => "resultStats").wait_until_present assert
@browser.title == "watir - Google Search"
end
end
Kaydet simgesini tıklayın.
Dosyayı şu şekilde adlandırın: test.rb ve herhangi bir klasör seçin, örneğin: "e: \ WithRuby"
Dosya 'yı kaydet.
Step 10 - Özellik dosyasını çalıştırın.
Komut istemine gidin.
Dizine git e:\WithRuby
Aşağıdaki komutu çalıştırın.
e:\With Ruby>ruby test.rb
İcra edildikten sonra aşağıdaki hususları gözlemleyeceksiniz -
Bir web tarayıcısı örneği açılacaktır.
Google.com web sayfası yüklenecek.
Arama metni watir girilecek.
Ara butonu yerleştirilecektir.
Arama sonuçları web sayfasında görüntülenecektir.
Tarayıcı örneği kapatılacak.