แตงกวา - คุณสมบัติ

Featureสามารถกำหนดเป็นหน่วยแบบสแตนด์อโลนหรือฟังก์ชันของโครงการ ลองมาดูตัวอย่างเว็บไซต์เครือข่ายสังคมออนไลน์ คุณลักษณะของผลิตภัณฑ์ / โครงการนี้มีลักษณะอย่างไร? คุณสมบัติพื้นฐานบางประการสามารถกำหนดได้ดังนี้ -

  • สร้างและลบผู้ใช้ออกจากไซต์เครือข่ายสังคม

  • ฟังก์ชันการเข้าสู่ระบบของผู้ใช้สำหรับไซต์เครือข่ายสังคม

  • แบ่งปันภาพถ่ายหรือวิดีโอบนเว็บไซต์เครือข่ายสังคม

  • ส่งคำขอเป็นเพื่อน

  • Logout.

ถึงตอนนี้เป็นที่ชัดเจนแล้วว่าฟังก์ชันการทำงานอิสระแต่ละอย่างของผลิตภัณฑ์ที่อยู่ระหว่างการทดสอบสามารถเรียกได้ว่าเป็นคุณลักษณะเมื่อเราพูดถึงแตงกวา เป็นแนวทางปฏิบัติที่ดีที่สุดในภายหลังเมื่อคุณเริ่มการทดสอบว่าก่อนที่จะได้รับสคริปต์ทดสอบเราควรกำหนดคุณลักษณะที่จะทดสอบ

โดยปกติแล้วคุณลักษณะจะมีรายการสถานการณ์ที่จะทดสอบสำหรับคุณลักษณะนั้น ไฟล์ที่เราจัดเก็บคุณลักษณะคำอธิบายเกี่ยวกับคุณลักษณะและสถานการณ์ที่จะทดสอบเรียกว่าไฟล์Feature File. เราจะดูเพิ่มเติมเกี่ยวกับไฟล์คุณสมบัติในบทต่อไปนี้

คำสำคัญที่ใช้แสดงคุณลักษณะที่อยู่ระหว่างการทดสอบใน Gherkins คือ“ คุณลักษณะ” แนวทางปฏิบัติที่ดีที่สุดที่แนะนำคือเขียนคำอธิบายเล็ก ๆ ของคุณลักษณะไว้ใต้ชื่อคุณลักษณะในไฟล์คุณลักษณะ สิ่งนี้จะตอบสนองความต้องการของเอกสารที่ดีเช่นกัน

ตัวอย่าง

Feature - เข้าสู่ระบบสำหรับเว็บไซต์เครือข่ายสังคม

ผู้ใช้ควรจะสามารถเข้าสู่เว็บไซต์เครือข่ายสังคมได้หากชื่อผู้ใช้และรหัสผ่านถูกต้อง

ผู้ใช้ควรจะแสดงข้อความแสดงข้อผิดพลาดหากชื่อผู้ใช้และรหัสผ่านไม่ถูกต้อง

ผู้ใช้ควรเข้าสู่โฮมเพจหากชื่อผู้ใช้และรหัสผ่านถูกต้อง

ไฟล์คุณลักษณะ

ไฟล์ที่เขียนการทดสอบแตงกวาเรียกว่าไฟล์ feature files. ขอแนะนำว่าควรมีไฟล์ฟีเจอร์แยกต่างหากสำหรับแต่ละฟีเจอร์ที่อยู่ระหว่างการทดสอบ นามสกุลของไฟล์ฟีเจอร์ต้องเป็น“ .feature”

หนึ่งสามารถสร้างไฟล์คุณสมบัติได้มากเท่าที่ต้องการ เพื่อให้มีโครงสร้างที่เป็นระเบียบแต่ละฟีเจอร์ควรมีไฟล์ฟีเจอร์เดียว

ตัวอย่างเช่น -

ซีเนียร์ No ลักษณะเฉพาะ ชื่อไฟล์คุณลักษณะ
1 เข้าสู่ระบบผู้ใช้ userLogin.feature
2 แบ่งปันโพสต์ sharePost.feature
3 สร้างบัญชี createAccount.feature
4 ลบบัญชี deleteAccount.feature

หลักการตั้งชื่อที่จะใช้สำหรับชื่อฟีเจอร์ชื่อไฟล์ฟีเจอร์ขึ้นอยู่กับตัวเลือกของแต่ละคน แตงกวาไม่มีกฎพื้นฐานเกี่ยวกับชื่อ

ไฟล์คุณสมบัติอย่างง่ายประกอบด้วยคำสำคัญ / ส่วนต่างๆต่อไปนี้ -

  • Feature - ชื่อของคุณสมบัติที่อยู่ระหว่างการทดสอบ

  • Description (ไม่บังคับ) - อธิบายเกี่ยวกับคุณลักษณะที่อยู่ระหว่างการทดสอบ

  • Scenario - สถานการณ์ทดสอบคืออะไร

  • Given - ข้อกำหนดเบื้องต้นก่อนดำเนินการขั้นตอนการทดสอบ

  • When - เงื่อนไขเฉพาะที่ควรตรงกันเพื่อดำเนินการขั้นต่อไป

  • Then - จะเกิดอะไรขึ้นถ้าเงื่อนไขที่กล่าวถึงเมื่อพอใจ

ตัวอย่าง

Feature - ผู้ใช้เข้าสู่ระบบบนเว็บไซต์เครือข่ายสังคม

ผู้ใช้ควรสามารถเข้าสู่เว็บไซต์เครือข่ายสังคมได้เมื่อชื่อผู้ใช้และรหัสผ่านถูกต้อง

ผู้ใช้ควรจะแสดงข้อความแสดงข้อผิดพลาดเมื่อชื่อผู้ใช้และรหัสผ่านไม่ถูกต้อง

ผู้ใช้ควรถูกนำทางไปยังโฮมเพจหากชื่อผู้ใช้และรหัสผ่านถูกต้อง

Outline - เข้าสู่ระบบสำหรับเว็บไซต์เครือข่ายสังคม

ผู้ใช้ที่ระบุไปที่ Facebook เมื่อฉันป้อนชื่อผู้ใช้เป็น "<username>" และรหัสผ่านเป็น "<password>" จากนั้นการเข้าสู่ระบบจะไม่สำเร็จ

| username  | password  |
| username1 | password1 |

* AND คำสำคัญใช้เพื่อแสดงการเชื่อมโยงระหว่างสองเงื่อนไข AND สามารถใช้กับคำหลักอื่น ๆ เช่น GIVEN, WHEN และ THEN.

ไม่มีรายละเอียดตรรกะที่เขียนไว้ในไฟล์คุณลักษณะ

คำจำกัดความของขั้นตอน

เรามีไฟล์คุณลักษณะของเราพร้อมสำหรับสถานการณ์การทดสอบที่กำหนดไว้ อย่างไรก็ตามนี่ไม่ใช่งานที่เสร็จสมบูรณ์ แตงกวาไม่รู้จริงๆว่าจะใช้โค้ดส่วนไหนสำหรับสถานการณ์เฉพาะใด ๆ ที่ระบุไว้ในไฟล์ฟีเจอร์

สิ่งนี้เรียกความต้องการของไฟล์ระดับกลาง - คำจำกัดความขั้นตอน ไฟล์ข้อกำหนดขั้นตอนจะจัดเก็บการแม็ประหว่างแต่ละขั้นตอนของสถานการณ์จำลองที่กำหนดไว้ในไฟล์คุณลักษณะพร้อมด้วยรหัสของฟังก์ชันที่จะดำเนินการ

ดังนั้นเมื่อ Cucumber ดำเนินการตามขั้นตอนของสถานการณ์ที่กล่าวถึงในไฟล์คุณลักษณะจะสแกนไฟล์ข้อกำหนดขั้นตอนและดูว่าจะเรียกใช้ฟังก์ชันใด

ตัวอย่างไฟล์นิยามขั้นตอน

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(); 
}

ดังนั้นด้วยแต่ละฟังก์ชั่นรหัสใดก็ตามที่คุณต้องการดำเนินการกับแต่ละขั้นตอนการทดสอบ (เช่น GIVEN / THEN / WHEN) คุณสามารถเขียนได้ในไฟล์ Step Definition ตรวจสอบให้แน่ใจว่ามีการกำหนดรหัส / ฟังก์ชันสำหรับแต่ละขั้นตอน

ฟังก์ชันนี้สามารถเป็นฟังก์ชัน Java ซึ่งเราสามารถใช้ทั้งคำสั่ง Java และ Selenium เพื่อทำให้ขั้นตอนการทดสอบของเราเป็นไปโดยอัตโนมัติ