แตงกวา - คุณสมบัติ
ก 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 เพื่อทำให้ขั้นตอนการทดสอบของเราเป็นไปโดยอัตโนมัติ