Salatalık - Senaryo Taslağı
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.