แตงกวา - คู่มือฉบับย่อ

เพื่อให้ได้รับประโยชน์จากการทดสอบซอฟต์แวร์มากขึ้นปัจจุบันองค์กรต่างๆกำลังก้าวไปข้างหน้า พวกเขาใช้สถานการณ์จำลองการทดสอบการยอมรับที่สำคัญในขณะที่การพัฒนาอยู่ระหว่างดำเนินการ วิธีนี้เป็นที่รู้จักกันทั่วไปว่าBehavior Driven Development (BDD).

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

ตัวอย่าง

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

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

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

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

มันทำงานอย่างไร

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

มันเป็นแนวคิดที่ง่ายมาก แต่สิ่งที่เราต้องการเพื่อให้แนวคิดนี้ถูกนำไปใช้ คำตอบคือ Behavior Driven Development (BDD) Framework แตงกวาเป็นหนึ่งในเครื่องมือโอเพนซอร์สที่สนับสนุนการพัฒนาที่ขับเคลื่อนด้วยพฤติกรรม เพื่อให้แม่นยำยิ่งขึ้น Cucumber สามารถกำหนดเป็นกรอบการทดสอบโดยใช้ข้อความภาษาอังกฤษธรรมดา ทำหน้าที่เป็นเอกสารการทดสอบอัตโนมัติและตัวช่วยในการพัฒนาทั้งหมดในที่เดียว

แตงกวาทำอะไร? สามารถอธิบายได้ตามขั้นตอนต่อไปนี้ -

แตงกวาอ่านโค้ดที่เขียนด้วยข้อความภาษาอังกฤษธรรมดา (ภาษา Gherkin - ที่จะแนะนำต่อไปในบทช่วยสอนนี้) ในไฟล์คุณลักษณะ (จะแนะนำในภายหลัง)

พบการจับคู่ที่ตรงกันของแต่ละขั้นตอนในข้อกำหนดขั้นตอน (ไฟล์รหัส - รายละเอียดที่ให้ไว้ในบทช่วยสอน)

ส่วนของโค้ดที่จะดำเนินการอาจเป็นเฟรมเวิร์กซอฟต์แวร์ที่แตกต่างกันเช่น Selenium, Ruby on Railsฯลฯ ไม่ใช่ทุกเครื่องมือ BDD framework ที่รองรับทุกเครื่องมือ

นี่กลายเป็นสาเหตุที่ทำให้แตงกวาได้รับความนิยมมากกว่ากรอบอื่น ๆ เช่น JBehave, JDave, Easyb, เป็นต้น

Cucumber รองรับแพลตฟอร์มซอฟต์แวร์ที่แตกต่างกันมากกว่าโหลเช่น -

  • ทับทิมบนราง
  • Selenium
  • PicoContainer
  • กรอบสปริง
  • Watir

ข้อดีของแตงกวาเหนือเครื่องมืออื่น ๆ

  • Cucumber รองรับภาษาต่างๆเช่น Java.net และ Ruby

  • ทำหน้าที่เป็นสะพานเชื่อมระหว่างภาษาทางธุรกิจและทางเทคนิค เราทำได้โดยสร้างกรณีทดสอบเป็นข้อความภาษาอังกฤษธรรมดา

  • อนุญาตให้เขียนสคริปต์ทดสอบโดยไม่มีความรู้เกี่ยวกับโค้ดใด ๆ ทำให้สามารถมีส่วนร่วมของผู้ที่ไม่ใช่โปรแกรมเมอร์ได้เช่นกัน

  • มันตอบสนองวัตถุประสงค์ของกรอบการทดสอบ end-to-end ซึ่งแตกต่างจากเครื่องมืออื่น ๆ

  • เนื่องจากสถาปัตยกรรมสคริปต์ทดสอบที่เรียบง่าย Cucumber จึงสามารถนำโค้ดกลับมาใช้ใหม่ได้

ในบทนี้เราจะเห็นการตั้งค่าสภาพแวดล้อมสำหรับ Cucumber ด้วย Selenium WebDriver และ Java บน Windows Machine

ข้อกำหนดเบื้องต้นสำหรับการตั้งค่าสภาพแวดล้อม

ต่อไปนี้เป็นข้อกำหนดเบื้องต้นที่จำเป็นในการตั้งค่าด้วย -

Java

Why we need- Java เป็นภาษาโปรแกรมที่มีประสิทธิภาพ Cucumber รองรับแพลตฟอร์ม Java สำหรับการดำเนินการ

How to install -

Step 1 - ดาวน์โหลด jdk และ jre จากลิงค์ต่อไปนี้ http://www.oracle.com/technetwork/java/javase/downloads/index.html

Step 2 - ยอมรับข้อตกลงใบอนุญาต

Step 3 - ติดตั้ง JDK และ JRE

Step 4 - ตั้งค่าตัวแปรสภาพแวดล้อมดังที่แสดงในภาพหน้าจอต่อไปนี้

คราส

Why we need- Eclipse คือ Integrated Development Environment (IDE) ประกอบด้วยพื้นที่ทำงานพื้นฐานและระบบปลั๊กอินที่ขยายได้สำหรับการปรับแต่งสภาพแวดล้อม

How to install -

Step 1 - ตรวจสอบให้แน่ใจว่าได้ติดตั้ง JAVA บนเครื่องของคุณแล้ว

Step 2 - ดาวน์โหลด Eclipse จาก https://eclipse.org/downloads/

Step 3 - ติดตั้ง Unzip และ Eclipse แล้ว

Maven

Why we need- Maven เป็นเครื่องมือสร้างระบบอัตโนมัติที่ใช้สำหรับโปรเจ็กต์ Java เป็นหลัก มันเป็นแพลตฟอร์มทั่วไปในการทำกิจกรรมต่างๆเช่นการสร้างซอร์สโค้ดการคอมไพล์โค้ดโค้ดแพ็กเกจลงใน jar เป็นต้นหลังจากนั้นหากเวอร์ชันซอฟต์แวร์ใด ๆ มีการเปลี่ยนแปลง Maven จะให้วิธีง่ายๆในการปรับเปลี่ยนโปรเจ็กต์ทดสอบให้เหมาะสม

How to install -

Step 1 - ดาวน์โหลด Maven จากลิงค์ต่อไปนี้ - https://maven.apache.org/download.cgi

Step 2 - คลายซิปไฟล์และจำตำแหน่ง

Step 3 - สร้างตัวแปรสภาพแวดล้อม MAVEN_HOME ดังที่แสดงในภาพหน้าจอต่อไปนี้

Step 4 - แก้ไขตัวแปร Path และรวม Maven ดังที่แสดงในภาพหน้าจอต่อไปนี้

Step 5 - ดาวน์โหลดปลั๊กอิน MAVEN จาก Eclipse

Step 6 - เปิด Eclipse

Step 7 - ไปที่ Help → Eclipse Marketplace → Search Maven → Maven Integration for Eclipse → INSTALL

กำหนดค่าแตงกวาด้วย Maven

Step 1 - สร้างโครงการ Maven

  • ไปที่ไฟล์→ใหม่→อื่น ๆ → Maven → Maven Project →ถัดไป

  • ระบุรหัสกลุ่ม (รหัสกลุ่มจะระบุโครงการของคุณโดยไม่ซ้ำกันในทุกโครงการ)

  • ระบุรหัสสิ่งประดิษฐ์ (รหัสวัตถุคือชื่อของ jar ที่ไม่มีเวอร์ชันคุณสามารถเลือกชื่อใดก็ได้ซึ่งเป็นตัวพิมพ์เล็ก) คลิกที่ Finish

Step 2 - เปิด pom.xml

  • ไปที่ package explorer ทางซ้ายมือของ Eclipse

  • ขยายโครงการ CucumberTest.

  • ค้นหา pom.xml ไฟล์.

  • คลิกขวาและเลือกตัวเลือกเปิดด้วย“ Text Editor”

Step 3 - เพิ่มการพึ่งพาสำหรับซีลีเนียม: สิ่งนี้จะระบุ Maven ว่าจะดาวน์โหลดไฟล์ Selenium jar ใดจากที่เก็บส่วนกลางไปยังที่เก็บในเครื่อง

  • เปิด pom.xml อยู่ในโหมดแก้ไขสร้างแท็กการอ้างอิง (<dependencies> </dependencies>) ภายในแท็กโปรเจ็กต์

  • ภายในแท็กการอ้างอิงให้สร้างแท็กการพึ่งพา (<dependency> </dependency>)

  • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>

Step 4 - เพิ่มการพึ่งพาสำหรับ Cucumber-Java: สิ่งนี้จะระบุ Maven ซึ่งไฟล์ Cucumber จะถูกดาวน์โหลดจากที่เก็บส่วนกลางไปยังที่เก็บในเครื่อง

  • สร้างแท็กการอ้างอิงขึ้นมาอีกหนึ่งแท็ก

  • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>info.cukes</groupId>
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>

Step 5 - เพิ่มการพึ่งพาสำหรับ Cucumber-JUnit: สิ่งนี้จะระบุ Maven ซึ่งไฟล์ Cucumber JUnit จะถูกดาวน์โหลดจากที่เก็บกลางไปยังที่เก็บในเครื่อง

  • สร้างแท็กการอ้างอิงขึ้นมาอีกหนึ่งแท็ก

  • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>

Step 6 - เพิ่มการพึ่งพาสำหรับ JUnit: สิ่งนี้จะระบุ Maven ซึ่งไฟล์ JUnit จะถูกดาวน์โหลดจากที่เก็บส่วนกลางไปยังที่เก็บในเครื่อง

  • สร้างแท็กการอ้างอิงขึ้นมาอีกหนึ่งแท็ก

  • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>

Step 7 - ตรวจสอบไบนารี

  • ครั้งเดียว pom.xml แก้ไขเรียบร้อยแล้วให้บันทึก

  • ไปที่ Project → Clean - จะใช้เวลาสักครู่

คุณจะสามารถเห็นที่เก็บ Maven ดังที่แสดงในภาพหน้าจอต่อไปนี้

  • สร้างไฟล์คุณลักษณะ (จะกล่าวถึงในภายหลัง)

  • สร้างไฟล์ข้อกำหนดขั้นตอน (จะกล่าวถึงในภายหลัง)

  • สร้าง JUnit runner เพื่อเรียกใช้การทดสอบ (จะครอบคลุมในภายหลัง)

จนถึงตอนนี้เรามีความเข้าใจเกี่ยวกับแตงกวาและทำหน้าที่อะไร เรียกใช้สคริปต์ทดสอบซึ่งกำหนดไว้ในไฟล์คุณลักษณะ (จะกล่าวถึงในบทต่อ ๆ ไป) ภาษาที่เขียนไฟล์คุณลักษณะที่เรียกใช้งานได้นี้เรียกว่าGherkin. Gherkin เป็นภาษาข้อความภาษาอังกฤษธรรมดาซึ่งช่วยให้เครื่องมือ - Cucumber แปลความหมายและเรียกใช้สคริปต์ทดสอบ

อาจมีคนคิดว่ามีการพูดคุยกันหลายครั้งว่าแตงกวารองรับข้อความภาษาอังกฤษง่ายๆแล้วทำไมเราต้องใช้ภาษาแยกต่างหาก - Gherkins คำตอบอยู่ในแนวคิดของการพัฒนาพฤติกรรมที่ขับเคลื่อน

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

Gherkin จัดเตรียมชุดคำหลักทั่วไปในข้อความภาษาอังกฤษซึ่งผู้คนในชุมชนต่าง ๆ สามารถใช้ได้และยังได้ผลลัพธ์เดียวกันในรูปแบบของสคริปต์ทดสอบ

ตัวอย่าง

Feature - เข้าสู่ระบบสำหรับเว็บไซต์เครือข่ายสังคม Given ฉันเป็นผู้ใช้ไซต์เครือข่ายสังคม When ฉันป้อนชื่อผู้ใช้เป็นชื่อผู้ใช้ 1 And ฉันป้อนรหัสผ่านเป็นรหัสผ่าน 1. Then ฉันควรถูกเปลี่ยนเส้นทางไปที่หน้าแรกของไซต์

สถานการณ์ดังกล่าวข้างต้นเป็นคุณลักษณะที่เรียกว่าการเข้าสู่ระบบของผู้ใช้ คำทั้งหมดที่เน้นเป็นตัวหนาคือคีย์เวิร์ด Gherkin

ตัวอย่างคำหลักอื่น ๆ -

  • Background
  • But
  • *
  • เค้าโครงสถานการณ์
  • Examples

Gherkin จะแยกวิเคราะห์แต่ละขั้นตอนที่เขียนในไฟล์การกำหนดขั้นตอน (จะกล่าวถึงในภายหลัง) ดังนั้นขั้นตอนที่กล่าวถึงในไฟล์คุณลักษณะและไฟล์ข้อกำหนดขั้นตอน (ที่จะกล่าวถึงในภายหลัง) ควรตรงกัน

คุณสามารถค้นหาขวด Gherkin ในโฟลเดอร์ Maven Dependency ใน Package Explorer มันจะดาวน์โหลดพร้อมกับขวดแตงกวาอื่น ๆ จะมีลักษณะเหมือนภาพหน้าจอต่อไปนี้ -

ข้อเท็จจริงที่น่าสนใจอีกประการหนึ่งเกี่ยวกับ Gherkin ก็คือไม่เพียง แต่รองรับภาษาอังกฤษเท่านั้น แต่ยังมีภาษาพื้นเมืองอื่น ๆ อีกมากมายเช่นฝรั่งเศสฟินแลนด์ชาวอินโดนีเซียฮังการีฮินดีอูรดูคุชราตเป็นต้น

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

Scenarioเป็นหนึ่งในโครงสร้างหลักของ Gherkin ทุกสถานการณ์เริ่มต้นด้วยคำหลัก“ สถานการณ์:” (หรือแปลเป็นภาษาท้องถิ่น) และตามด้วยชื่อสถานการณ์ที่เป็นทางเลือก แต่ละคุณลักษณะสามารถมีหนึ่งสถานการณ์ขึ้นไปและทุกสถานการณ์ประกอบด้วยหนึ่งขั้นตอนหรือมากกว่านั้น ตัวอย่างง่ายๆของสถานการณ์สามารถ -

Scenario - ตรวจสอบการทำงานของวิธีใช้

กำหนดให้ผู้ใช้ไปที่ Facebook

เมื่อผู้ใช้คลิกที่วิธีใช้หน้าวิธีใช้จะเปิดขึ้น

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

โครงร่างสถานการณ์คล้ายกับโครงสร้างสถานการณ์ ข้อแตกต่างเพียงอย่างเดียวคือการจัดหาอินพุตหลายตัว ดังที่คุณเห็นในตัวอย่างต่อไปนี้กรณีทดสอบยังคงเหมือนเดิมและไม่สามารถทำซ้ำได้ ที่ด้านล่างเราได้ระบุค่าอินพุตหลายค่าสำหรับตัวแปร“ ชื่อผู้ใช้” และ“ รหัสผ่าน” ในขณะที่ทำการทดสอบจริงแตงกวาจะแทนที่ตัวแปรด้วยค่าอินพุตที่ให้มาและจะดำเนินการทดสอบ เมื่อดำเนินการผ่าน -1 แล้วการทดสอบจะรันซ้ำสำหรับการทำซ้ำครั้งที่สองพร้อมกับค่าอินพุตอื่น ตัวแปรหรือตัวยึดตำแหน่งดังกล่าวสามารถแสดงด้วย "<>" ในขณะที่กล่าวถึงด้วยข้อความสีเหลือง

ตัวอย่าง

Scenario Outline- เข้าสู่ระบบสำหรับเว็บไซต์เครือข่ายสังคม ผู้ใช้ที่ระบุไปที่ Facebook

เมื่อผู้ใช้เข้าสู่ระบบโดยใช้ชื่อผู้ใช้เป็น "<username>" และรหัสผ่านเป็น "<password>" การเข้าสู่ระบบจะสำเร็จ

| username | password  | 
| user1    | password1 | 
| user2    | password2 |

มีเคล็ดลับและเทคนิคบางประการในการกำหนดสถานการณ์แตงกวาอย่างชาญฉลาด

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

  • อย่าทำซ้ำสถานการณ์ทดสอบหากจำเป็นให้ใช้โครงร่างสถานการณ์เพื่อใช้การทำซ้ำ

  • พัฒนาขั้นตอนการทดสอบในลักษณะที่สามารถใช้ได้ภายในสถานการณ์และโครงร่างสถานการณ์ต่างๆ

  • เท่าที่จะทำได้ให้แต่ละขั้นตอนเป็นอิสระอย่างสมบูรณ์ ตัวอย่างเช่น“ ให้ผู้ใช้เข้าสู่ระบบ” ซึ่งสามารถแบ่งออกเป็นสองขั้นตอน

    • กำหนดให้ผู้ใช้ป้อนชื่อผู้ใช้
    • คลิกที่เข้าสู่ระบบ

Annotationเป็นข้อความที่กำหนดไว้ล่วงหน้าซึ่งมีความหมายเฉพาะ ช่วยให้คอมไพเลอร์ / ล่ามทราบสิ่งที่ควรทำเมื่อดำเนินการ แตงกวามีคำอธิบายประกอบสองสามข้อต่อไปนี้ -

  • Given -

    • อธิบายถึงข้อกำหนดเบื้องต้นสำหรับการทดสอบที่จะดำเนินการ

    • ตัวอย่าง - GIVEN ฉันเป็นผู้ใช้ Facebook

  • When -

    • เป็นการกำหนดจุดทริกเกอร์สำหรับการดำเนินการในสถานการณ์ทดสอบใด ๆ

    • ตัวอย่าง - เมื่อฉันป้อน "<username>"

  • Then -

    • จากนั้นเก็บผลลัพธ์ที่คาดไว้สำหรับการทดสอบที่จะดำเนินการ

    • ตัวอย่าง - จากนั้นการเข้าสู่ระบบควรจะสำเร็จ

  • And -

    • มีเงื่อนไขและตรรกะระหว่างสองคำสั่งใด ๆ และสามารถใช้ร่วมกับคำสั่ง GIVEN, WHEN และ THEN ได้

    • ตัวอย่าง - เมื่อฉันป้อน "<username>" ของฉันและฉันป้อน "<password>" ของฉัน

  • But -

    • หมายถึงตรรกะหรือเงื่อนไขระหว่างสองคำสั่งใด ๆ หรือสามารถใช้ร่วมกับคำสั่ง GIVEN, WHEN และ THEN ได้

    • ตัวอย่าง - จากนั้นการเข้าสู่ระบบควรจะสำเร็จ แต่ไม่ควรพลาดโฮมเพจ

  • Scenario -

    • ต้องบันทึกรายละเอียดเกี่ยวกับสถานการณ์จำลองภายใต้การทดสอบหลังคำหลัก "สถานการณ์:"

    • ตัวอย่าง -

      สถานการณ์:

      GIVEN ฉันเป็นผู้ใช้ Facebook

      เมื่อฉันป้อนไฟล์

      และฉันป้อนไฟล์

      จากนั้นการเข้าสู่ระบบควรจะสำเร็จ

      แต่ไม่ควรพลาดโฮมเพจ

  • Scenario Outline - (จะกล่าวถึงภายหลัง)

  • Examples - (จะกล่าวถึงภายหลัง)

  • Background -

    • พื้นหลังโดยทั่วไปมีคำแนะนำเกี่ยวกับสิ่งที่ต้องตั้งค่าก่อนที่แต่ละสถานการณ์จะดำเนินไป อย่างไรก็ตามมันจะถูกดำเนินการหลังจากขอเกี่ยว "ก่อน" (จะครอบคลุมในภายหลัง) ดังนั้นจึงเหมาะอย่างยิ่งที่จะใช้เป็นรหัสเมื่อเราต้องการตั้งค่าเว็บเบราว์เซอร์หรือเราต้องการสร้างการเชื่อมต่อฐานข้อมูล

      • ตัวอย่าง -

        พื้นหลัง:

        ไปที่หน้าแรกของ Facebook

สถานการณ์ตัวอย่าง

มาสร้างสถานการณ์โดยอัตโนมัติเพื่อให้เข้าใจคำอธิบายประกอบได้ดีขึ้น

Step 1

สร้างโครงการทดสอบ Maven ที่มีชื่อว่า AnnotationTest.

  • ไปที่ไฟล์→ใหม่→อื่น ๆ → Maven → Maven Project →ถัดไป

  • ระบุรหัสกลุ่ม (รหัสกลุ่มจะระบุโครงการของคุณโดยไม่ซ้ำกันในทุกโครงการ)

  • ระบุรหัสสิ่งประดิษฐ์ (รหัสวัตถุคือชื่อของ jar ที่ไม่มีเวอร์ชันคุณสามารถเลือกชื่อใดก็ได้ที่เป็นตัวพิมพ์เล็ก)

  • คลิกที่ Finish

  • เปิด pom.xml −

    • ไปที่ package explorer ทางซ้ายมือของ Eclipse

    • ขยายโครงการ AnnotationTest

    • ค้นหาไฟล์ pom.xml

    • คลิกขวาและเลือกตัวเลือกเปิดด้วย“ โปรแกรมแก้ไขข้อความ”

  • เพิ่มการพึ่งพาสำหรับ Selenium - สิ่งนี้จะระบุ Maven ซึ่งจะต้องดาวน์โหลดไฟล์ Selenium jar จากที่เก็บส่วนกลางไปยังที่เก็บในเครื่อง

    • เปิด pom.xml อยู่ในโหมดแก้ไขสร้างแท็กการอ้างอิง (<dependencies> </dependencies>) ภายในแท็กโปรเจ็กต์

    • ภายในแท็กการอ้างอิงให้สร้างแท็กการพึ่งพา (<dependency> </dependency>)

    • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>
  • เพิ่มการพึ่งพาสำหรับ Cucumber-Java - สิ่งนี้จะระบุ Maven ซึ่งไฟล์ Cucumber จะถูกดาวน์โหลดจากที่เก็บส่วนกลางไปยังที่เก็บในเครื่อง

    • สร้างแท็กการอ้างอิงขึ้นมาอีกหนึ่งแท็ก

    • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • เพิ่มการพึ่งพาสำหรับ Cucumber-JUnit - สิ่งนี้จะระบุ Maven ซึ่งจะต้องดาวน์โหลดไฟล์ Cucumber JUnit จากที่เก็บกลางไปยังที่เก็บในเครื่อง

    • สร้างแท็กการอ้างอิงขึ้นมาอีกหนึ่งแท็ก

    • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • เพิ่มการพึ่งพาสำหรับ JUnit - สิ่งนี้จะระบุ Maven ซึ่งไฟล์ JUnit จะถูกดาวน์โหลดจากที่เก็บส่วนกลางไปยังที่เก็บในเครื่อง

    • สร้างแท็กการอ้างอิงขึ้นมาอีกหนึ่งแท็ก

    • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • ตรวจสอบไบนารี

    • เมื่อแก้ไข pom.xml สำเร็จแล้วให้บันทึก

    • ไปที่ Project → Clean - จะใช้เวลาสักครู่

Step 2

สร้างแพ็คเกจชื่อ Annotation ภายใต้ src/test/java

  • เลือกโครงการที่สร้างขึ้นใหม่

  • คลิกขวาและเลือก 'ใหม่'

  • เลือกตัวเลือกเป็น 'แพ็คเกจ'

  • ตั้งชื่อเป็น "คำอธิบายประกอบ"

  • บันทึกไว้

Step 3

สร้างไฟล์ฟีเจอร์ชื่อ annotation.feature.

  • เลือกและคลิกขวาที่โครงร่างแพ็คเกจ

  • คลิกที่ไฟล์ 'New'

  • ตั้งชื่อไฟล์เช่น outline.feature.

  • เขียนข้อความต่อไปนี้ภายในไฟล์และบันทึก

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

สร้างไฟล์ข้อกำหนดขั้นตอน

  • เลือกและคลิกขวาที่โครงร่างแพ็คเกจ

  • คลิกที่ไฟล์ 'New'

  • ตั้งชื่อไฟล์เป็น annotation.java

  • เขียนข้อความต่อไปนี้ภายในไฟล์และบันทึก

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

สร้างไฟล์คลาสนักวิ่ง

  • เลือกและคลิกขวาที่โครงร่างแพ็คเกจ

  • คลิกที่ไฟล์ 'New'

  • ตั้งชื่อไฟล์เช่น runTest.java

  • เขียนข้อความต่อไปนี้ภายในไฟล์และบันทึก

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

ทำการทดสอบโดยใช้ตัวเลือก -

  • เลือกไฟล์ runTest.java จาก package explorer

  • คลิกขวาและเลือกตัวเลือก ‘Run as’

  • เลือก JUnit test

คุณจะสังเกตสิ่งต่อไปนี้เมื่อคุณเรียกใช้ไฟล์คลาสนี้ -

  • Facebook เปิดในอินสแตนซ์เว็บเบราว์เซอร์ Firefox ใหม่

  • TOM จะถูกส่งเป็นอินพุตไปยังฟิลด์ชื่อผู้ใช้

  • JERRY จะถูกส่งเป็นอินพุตไปยังฟิลด์รหัสผ่าน

  • เข้าสู่ระบบจะคลิก

  • ข้อความจะแสดงบนเบราว์เซอร์เกี่ยวกับการเข้าสู่ระบบที่ไม่สำเร็จ

  • ในคอนโซลคุณจะเห็น“ Test Pass” พิมพ์อยู่

  • ผลลัพธ์ขั้นที่ 1. ถึง 5. จะถูกเรียกใช้งานอีกครั้งสำหรับชื่อผู้ใช้เป็น "" และรหัสผ่านเป็น ""

Scenario outlineโดยทั่วไปจะแทนที่ตัวแปร / คำหลักด้วยค่าจากตาราง แต่ละแถวในตารางถือเป็นสถานการณ์สมมติ

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

Scenario:

กำหนดให้ผู้ใช้ไปที่ Facebook

เมื่อฉันป้อนชื่อผู้ใช้และรหัสผ่านที่ถูกต้อง

จากนั้นเข้าสู่ระบบควรจะสำเร็จ

Scenario:

กำหนดให้ผู้ใช้ไปที่ Facebook

เมื่อฉันป้อนที่อยู่อีเมลและรหัสผ่านที่ถูกต้อง

จากนั้นเข้าสู่ระบบควรจะสำเร็จ

Scenario:

กำหนดให้ผู้ใช้ไปที่ Facebook

เมื่อฉันป้อนหมายเลขโทรศัพท์และรหัสผ่านที่ถูกต้อง

จากนั้นเข้าสู่ระบบควรจะสำเร็จ

ที่นี่หากเราเห็นอย่างใกล้ชิดสำหรับสามสถานการณ์ข้างต้น: คำสั่งเหมือนกันเฉพาะพารามิเตอร์การป้อนข้อมูล (ชื่อผู้ใช้ / ที่อยู่อีเมล / หมายเลขโทรศัพท์) เท่านั้นที่เปลี่ยนแปลง นั่นคือจุดที่สำคัญของเค้าโครงสถานการณ์มาเป็นภาพ

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

ตัวอย่าง

มาสร้างตัวอย่างโครงร่างสถานการณ์ -

Step 1 - สร้างโครงการทดสอบ Maven ที่มีชื่อว่า ScenarioOutlineTest

  • ไปที่ไฟล์→ใหม่→อื่น ๆ → Maven → Maven Project →ถัดไป

  • ระบุรหัสกลุ่ม (รหัสกลุ่มจะระบุโครงการของคุณโดยไม่ซ้ำกันในทุกโครงการ)

  • ระบุรหัสสิ่งประดิษฐ์ (รหัสวัตถุคือชื่อของ jar ที่ไม่มีเวอร์ชันคุณสามารถเลือกชื่อใดก็ได้ที่เป็นตัวพิมพ์เล็ก)

  • คลิกที่ Finish

  • เปิด pom.xml -

    • ไปที่ package explorer ทางซ้ายมือของ Eclipse

    • ขยายโครงการ CucumberTest

    • ค้นหาไฟล์ pom.xml

    • คลิกขวาและเลือกตัวเลือกเปิดด้วย“ โปรแกรมแก้ไขข้อความ”

  • เพิ่มการพึ่งพาสำหรับ Selenium - สิ่งนี้จะระบุ Maven ซึ่งจะต้องดาวน์โหลดไฟล์ Selenium jar จากที่เก็บส่วนกลางไปยังที่เก็บในเครื่อง

    • เปิด pom.xml อยู่ในโหมดแก้ไขสร้างแท็กการอ้างอิง (<dependencies> </dependencies>) ภายในแท็กโปรเจ็กต์

    • ภายในแท็กการอ้างอิงให้สร้างแท็กการพึ่งพา (<dependency> </dependency>)

    • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>
  • เพิ่มการพึ่งพาสำหรับ Cucumber-Java: สิ่งนี้จะระบุ Maven ซึ่งไฟล์ Cucumber จะถูกดาวน์โหลดจากที่เก็บส่วนกลางไปยังที่เก็บในเครื่อง

    • สร้างแท็กการอ้างอิงขึ้นมาอีกหนึ่งแท็ก

    • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • เพิ่มการพึ่งพาสำหรับ Cucumber-JUnit: สิ่งนี้จะระบุ Maven ซึ่งไฟล์ Cucumber JUnit จะถูกดาวน์โหลดจากที่เก็บส่วนกลางไปยังที่เก็บในเครื่อง

    • สร้างแท็กการอ้างอิงขึ้นมาอีกหนึ่งแท็ก

    • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • เพิ่มการพึ่งพาสำหรับ JUnit - สิ่งนี้จะระบุ Maven ซึ่งไฟล์ JUnit จะถูกดาวน์โหลดจากที่เก็บส่วนกลางไปยังที่เก็บในเครื่อง

    • สร้างแท็กการอ้างอิงขึ้นมาอีกหนึ่งแท็ก

    • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • เพิ่มการพึ่งพาสำหรับ JUnit - สิ่งนี้จะระบุ Maven ซึ่งไฟล์ JUnit จะถูกดาวน์โหลดจากที่เก็บส่วนกลางไปยังที่เก็บในเครื่อง

    • สร้างแท็กการอ้างอิงขึ้นมาอีกหนึ่งแท็ก

    • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • ตรวจสอบไบนารี

    • เมื่อแก้ไข pom.xml สำเร็จแล้วให้บันทึก

    • ไปที่ Project → Clean - จะใช้เวลาสักครู่

Step 2 - สร้างแพ็คเกจชื่อ "โครงร่าง" ภายใต้ src/test/java

Step 3 - สร้างไฟล์คุณสมบัติชื่อ “outline.feature”

  • เลือกและคลิกขวาที่โครงร่างแพ็คเกจ

  • คลิกที่ไฟล์ 'New'

  • ตั้งชื่อไฟล์เช่น “outline.feature”

    • เขียนข้อความต่อไปนี้ภายในไฟล์และบันทึก

      Feature - เค้าโครงสถานการณ์

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

      กำหนดให้ผู้ใช้ไปที่ Facebook

      เมื่อฉันป้อนชื่อผู้ใช้เป็น "<username>" และรหัสผ่านเป็น "<password>"

      จากนั้นการเข้าสู่ระบบจะไม่สำเร็จ

Example -

| username  | password  | 
| username1 | password1 | 
| username2 | password2 |

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

Step 4 - สร้างไฟล์นิยามขั้นตอน

  • เลือกและคลิกขวาที่โครงร่างแพ็คเกจ

  • คลิกที่ไฟล์ 'New'

  • ตั้งชื่อไฟล์เป็น stepdefinition.java

  • เขียนข้อความต่อไปนี้ภายในไฟล์และบันทึก

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- ในโค้ดด้านบนเราต้องกำหนดฟังก์ชันที่มีอาร์กิวเมนต์อินพุตสองตัว: ชื่อผู้ใช้หนึ่งชื่อและอื่น ๆ จะเป็นรหัสผ่าน ดังนั้นสำหรับชุดข้อมูลแต่ละชุดที่มีให้ในแท็กตัวอย่างชุดของ GIVEN เมื่อไหร่และแล้วจะถูกดำเนินการ

Step 5 - สร้างไฟล์คลาสนักวิ่ง

  • เลือกและคลิกขวาที่โครงร่างแพ็คเกจ

  • คลิกที่ไฟล์ 'New'

  • ตั้งชื่อไฟล์เช่น runTest.java

  • เขียนข้อความต่อไปนี้ภายในไฟล์และบันทึก

package Outline; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})

public class runTest { }
  • ทำการทดสอบโดยใช้ตัวเลือก -

    • เลือก runTest.java ไฟล์จาก package explorer

    • คลิกขวาและเลือกตัวเลือก ‘Run as’.

    • เลือก JUnit test

คุณจะสังเกตสิ่งต่อไปนี้เมื่อคุณเรียกใช้ไฟล์คลาสนี้

  • Facebook เปิดในอินสแตนซ์เว็บเบราว์เซอร์ Firefox ใหม่

  • ชื่อผู้ใช้ 1 และรหัสผ่าน 1 จะถูกส่งไปเป็นช่องป้อนชื่อผู้ใช้และรหัสผ่าน

  • เข้าสู่ระบบจะคลิก

  • ข้อความจะแสดงบนเบราว์เซอร์เกี่ยวกับการเข้าสู่ระบบที่ไม่สำเร็จ

  • ในคอนโซลคุณจะเห็น“ Test Pass” พิมพ์อยู่

  • ผลลัพธ์ขั้นที่ 1 ถึง 5 จะถูกเรียกใช้งานอีกครั้งสำหรับชื่อผู้ใช้ 2 และรหัสผ่าน 2

โดยสรุปเมื่อสถานการณ์ไม่เปลี่ยนแปลง แต่มีการเปลี่ยนแปลงเฉพาะค่าข้อมูลขอแนะนำให้ใช้ตารางข้อมูลเค้าร่างสถานการณ์

มันดูเรียบง่ายเมื่อเรามีหนึ่งสองหรืออาจจะห้าสถานการณ์ในไฟล์ฟีเจอร์ อย่างไรก็ตามในชีวิตจริงไม่ได้เกิดขึ้น สำหรับแต่ละคุณลักษณะที่อยู่ระหว่างการทดสอบเราอาจมี 10, 20 หรืออาจมากกว่าจำนวนสถานการณ์ในไฟล์คุณลักษณะเดียว อาจเป็นตัวแทนของวัตถุประสงค์ที่แตกต่างกัน (การทดสอบควัน / การทดสอบการถดถอย) ผู้มุ่งหวังที่แตกต่างกัน (ผู้พัฒนา / QA / BA) สถานะที่แตกต่างกัน (พร้อมสำหรับการดำเนินการ / กำลังดำเนินการ) ฯลฯ จะจัดการการดำเนินการสำหรับมวลดังกล่าวได้อย่างไร?

สำหรับสิ่งนี้แตงกวาได้จัดเตรียมวิธีการจัดระเบียบการดำเนินการสถานการณ์ของคุณโดยใช้แท็กในไฟล์ฟีเจอร์ เราสามารถกำหนดแต่ละสถานการณ์ด้วยแท็กที่มีประโยชน์ ต่อมาในไฟล์นักวิ่งเราสามารถตัดสินใจได้ว่าแท็กใด (และเป็นไปตามสถานการณ์) ที่เราต้องการให้ Cucumber ดำเนินการ แท็กเริ่มต้นด้วย“ @” หลังจาก“ @” คุณสามารถมีข้อความที่เกี่ยวข้องเพื่อกำหนดแท็กของคุณ มาทำความเข้าใจกับตัวอย่างนี้

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

Step 1 - สร้างโครงการ Maven ชื่อ cucumberTag.

Step 2- สร้างแพ็คเกจชื่อ cucumberTag ภายใต้ src/test/java

Step 3- สร้างไฟล์คุณสมบัติชื่อ cucumberTag.feature.

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

Feature - แท็กแตงกวา

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

กำหนดให้ผู้ใช้ไปที่ Facebook

เมื่อฉันป้อนชื่อผู้ใช้เป็น "<username>" และรหัสผ่านเป็น "<password>"

จากนั้นการเข้าสู่ระบบจะไม่สำเร็จ

ตัวอย่าง

| username  | password  | 
| username1 | password1 | 
| username2 | password2 |

# สถานการณ์ต่อไปนี้ถูกแท็กเป็น SmokeTest และสิ่งนี้ควรได้รับการดำเนินการ @SmokeTest

Scenario:

กำหนดให้ผู้ใช้ไปที่ Facebook

เมื่อฉันป้อนชื่อผู้ใช้เป็น "<>" และรหัสผ่านเป็น "<>"

จากนั้นควรเปลี่ยนเส้นทางผู้ใช้เพื่อเข้าสู่ระบบลองใหม่

Step 4 - สร้างไฟล์นิยามขั้นตอน

  • เลือกและคลิกขวาที่โครงร่างแพ็คเกจ

  • คลิกที่ไฟล์ 'New'

  • ตั้งชื่อไฟล์เช่น cucumberTag.java

  • เขียนข้อความต่อไปนี้ภายในไฟล์และบันทึก

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 - สร้างไฟล์คลาสนักวิ่ง

  • สร้างคลาสนักวิ่งชื่อ runTest.java ภายในบรรจุภัณฑ์

  • เขียนรหัสต่อไปนี้

  • บันทึกไฟล์

package cucumberTag; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}) 

public class runTest { }
  • เรียกใช้ตัวเลือกการทดสอบ

  • คลิกขวาและเลือกตัวเลือก ‘Run as’.

  • เลือก JUnit test

คุณจะสังเกตสิ่งต่อไปนี้เมื่อคุณเรียกใช้ไฟล์คลาสนี้

  • Facebook เปิดในอินสแตนซ์เว็บเบราว์เซอร์ Firefox ใหม่

  • จะไม่มีการระบุค่าให้กับฟิลด์ชื่อผู้ใช้และรหัสผ่าน

  • เข้าสู่ระบบจะคลิก

  • หน้าลองเข้าสู่ระบบอีกครั้งจะถูกโหลด

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

ส่วนใหญ่มีแท็กสองประเภท -

  • Default tag- แท็กเริ่มต้นมีความหมายที่กำหนดไว้ล่วงหน้า ตัวอย่าง @ Dev, @ ละเว้น

  • Custom tag - แท็กที่กำหนดเองช่วยให้คุณมีความยืดหยุ่นเต็มที่ในการเลือกข้อความที่เหมาะสมสำหรับการกำหนดแท็กของคุณ

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

แตงกวายังมีวิธีในการผกผันการเลือกแท็ก พิจารณาว่าจากสถานการณ์ที่กำหนดไว้จาก 25 สถานการณ์ 10 รายการถูกทำเครื่องหมายว่าเป็นการทดสอบควัน เราจำเป็นต้องดำเนินการเฉพาะสถานการณ์ทดสอบการถดถอย

สำหรับสิ่งนี้เราสามารถใช้“ ~” ในคลาส JUnit runner เพื่อยกเว้นสถานการณ์ทดสอบควัน จะมีลักษณะดังต่อไปนี้

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}, 
   tags = {"~@SmokeTest"})
	
public class runTest { }

ในขณะที่กำหนดหลายแท็กเรายังสามารถกำหนดตรรกะหรือ / และตรรกะและการดำเนินการได้

  • การกำหนดตรรกะหรือในคลาสรองชนะเลิศ - @dev,@wip - มันบอกว่าต้องดำเนินการสถานการณ์ที่ตรงกับแท็กนี้

  • การกำหนดตรรกะหรือในคลาสรองชนะเลิศ - [@dev,~@wip] − มันบอกว่าต้องดำเนินการสถานการณ์ที่ตรงกับแท็กทั้งสองนี้

ในขณะที่ทำงานกับระบบอัตโนมัติเราอาจเผชิญกับสถานการณ์ต่างๆ แต่ละสถานการณ์มีความหมายและความต้องการที่แตกต่างกัน

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

  • ชื่อผู้ใช้
  • ที่อยู่อีเมล
  • Password
  • ป้อนรหัสผ่านอีกครั้ง
  • Birthdate
  • Gender
  • หมายเลขโทรศัพท์

Feature - การลงทะเบียนผู้ใช้ใหม่

ตรวจสอบว่าการลงทะเบียนผู้ใช้ใหม่ไม่สำเร็จหลังจากส่งอินพุตที่ไม่ถูกต้อง

เนื่องจากฉันอยู่ในหน้าลงทะเบียนผู้ใช้ใหม่

เมื่อฉันป้อนชื่อผู้ใช้และที่อยู่อีเมลเป็นที่อยู่อีเมลและรหัสผ่านและป้อนรหัสผ่านอีกครั้งในฐานะและวันเกิดเป็นและเพศเป็นและหมายเลขโทรศัพท์เนื่องจากการลงทะเบียนผู้ใช้จะไม่สำเร็จ

มันดูยุ่งเล็กน้อยในตอนแรก ดังนั้นมีวิธีใดที่ดีกว่าในการจัดการปัจจัยการผลิตดังกล่าวหรือไม่? คำตอบอาจเป็น "ตารางข้อมูล" ตารางข้อมูลคือชุดข้อมูลเข้าที่มีให้สำหรับแท็กเดียว แท็กนี้สามารถเป็น GIVEN เมื่อไหร่หรือแล้วก็ได้

ลองเขียนสถานการณ์ข้างต้นด้วยความช่วยเหลือของตารางข้อมูลและจะมีลักษณะดังต่อไปนี้ -

เนื่องจากฉันอยู่ในหน้าลงทะเบียนผู้ใช้ใหม่

เมื่อฉันป้อนข้อมูลที่ถูกต้องบนหน้า

| Fields                 | Values              |
| First Name             | Tom                 |
| Last Name              | Kenny               |
| Email Address          | [email protected] |
| Re-enter Email Address | [email protected] |
| Password               | Password1           |
| Birthdate              | 01                  |

จากนั้นการลงทะเบียนผู้ใช้ควรจะสำเร็จ

ตัวอย่าง

มาทำตัวอย่างตารางข้อมูลโดยอัตโนมัติ

Step 1 - สร้างโครงการทดสอบ Maven ชื่อ“ DataTableTest”

  • ไปที่ไฟล์→ใหม่→อื่น ๆ → Maven → Maven Project →ถัดไป

  • ให้ group Id (รหัสกลุ่มจะระบุโครงการของคุณโดยไม่ซ้ำกันในทุกโครงการ)

  • ให้ artifact Id (artifact Id คือชื่อของ jar ที่ไม่มีเวอร์ชันคุณสามารถเลือกชื่อใดก็ได้ที่เป็นตัวพิมพ์เล็ก)

  • คลิกที่ Finish

  • เปิด pom.xml -

    • ไปที่ package explorer ทางซ้ายมือของ Eclipse

    • ขยายโครงการ CucumberTest

    • ค้นหาไฟล์ pom.xml

    • คลิกขวาและเลือกตัวเลือกเปิดด้วย“ โปรแกรมแก้ไขข้อความ”

  • เพิ่มการพึ่งพาสำหรับ Selenium: สิ่งนี้จะระบุ Maven ซึ่งจะต้องดาวน์โหลดไฟล์ Selenium jar จากที่เก็บส่วนกลางไปยังที่เก็บในเครื่อง

    • เปิด pom.xml อยู่ในโหมดแก้ไขสร้างแท็กการอ้างอิง (<dependencies> </dependencies>) ภายในแท็กโปรเจ็กต์

    • ภายในแท็กการอ้างอิงให้สร้างแท็กการอ้างอิง (<dependency> </dependency>)

    • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>
  • เพิ่มการพึ่งพาสำหรับ Cucumber-Java - สิ่งนี้จะระบุ Maven ซึ่งไฟล์ Cucumber จะถูกดาวน์โหลดจากที่เก็บส่วนกลางไปยังที่เก็บในเครื่อง

    • สร้างแท็กการอ้างอิงขึ้นมาอีกหนึ่งแท็ก

    • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • เพิ่มการพึ่งพาสำหรับ Cucumber-JUnit - สิ่งนี้จะระบุ Maven ซึ่งจะต้องดาวน์โหลดไฟล์ Cucumber JUnit จากที่เก็บกลางไปยังที่เก็บในเครื่อง

    • สร้างแท็กการอ้างอิงขึ้นมาอีกหนึ่งแท็ก

    • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • เพิ่มการพึ่งพาสำหรับ JUnit - สิ่งนี้จะระบุ Maven ซึ่งไฟล์ JUnit จะถูกดาวน์โหลดจากที่เก็บส่วนกลางไปยังที่เก็บในเครื่อง

    • สร้างแท็กการอ้างอิงขึ้นมาอีกหนึ่งแท็ก

    • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • ตรวจสอบไบนารี

    • เมื่อแก้ไข pom.xml สำเร็จแล้วให้บันทึก

    • ไปที่ Project → Clean - จะใช้เวลาสักครู่

Step 2 - สร้างแพ็คเกจชื่อ dataTable ภายใต้ src/test/java

Step 3 - สร้างไฟล์ฟีเจอร์

  • สร้างไฟล์ฟีเจอร์ชื่อ dataTable.feature ภายใน dataTable แพ็คเกจ (ดูโครงร่างสถานการณ์ส่วนสำหรับขั้นตอนโดยละเอียดเพิ่มเติม)

  • เขียนข้อความต่อไปนี้

    Feature - ตารางข้อมูล

    ตรวจสอบว่าการลงทะเบียนผู้ใช้ใหม่ไม่สำเร็จหลังจากส่งอินพุตที่ไม่ถูกต้อง

    Scenario:

    ให้ฉันอยู่ในหน้าลงทะเบียนผู้ใช้ใหม่

    เมื่อฉันป้อนข้อมูลที่ไม่ถูกต้องในหน้า

| Fields                 | Values              |
| First Name             | Tom                 |
| Last Name              | Kenny               |
| Email Address          | [email protected] |
| Re-enter Email Address | [email protected] |
| Password               | Password1           |
| Birthdate              | 01                  |

จากนั้นการลงทะเบียนผู้ใช้จะไม่สำเร็จ

  • บันทึกไฟล์

Step 4 - สร้างไฟล์กำหนดขั้นตอน

  • สร้างไฟล์ข้อกำหนดขั้นตอนที่มีชื่อว่า 'dataTable.java' ภายในแพ็คเกจ dataTable (ดูโครงร่างสถานการณ์ส่วนสำหรับขั้นตอนโดยละเอียดเพิ่มเติม)

  • เขียนรหัสต่อไปนี้

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(); 
   } 
}
  • บันทึกไฟล์

Step 5 - สร้างไฟล์คลาสนักวิ่ง

  • สร้างคลาสนักวิ่งชื่อ runTest.java ภายในแพ็คเกจ

  • เขียนรหัสต่อไปนี้

package dataTable; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
 
public class runTest { }
  • บันทึกไฟล์

  • ทำการทดสอบโดยใช้ตัวเลือก

    • เลือกไฟล์ runTest.java จาก package explorer

    • คลิกขวาและเลือกตัวเลือก Run as

    • เลือก JUnit test

คุณอาจสังเกตสิ่งต่อไปนี้เมื่อดำเนินการสำเร็จ

  • เว็บไซต์ Facebook ถูกโหลด

  • ข้อมูลจะถูกป้อนในหน้าลงทะเบียน

  • ปุ่มส่งจะถูกคลิก

  • เราจะเห็นว่าโฮมเพจจะไม่ปรากฏขึ้นและ“ Test Pass” จะถูกเขียนบนคอนโซล

Commentโดยพื้นฐานแล้วเป็นรหัสที่มีไว้เพื่อวัตถุประสงค์ในการจัดทำเอกสารไม่ใช่เพื่อการดำเนินการ ไม่ว่าจะเป็นไฟล์ข้อกำหนดขั้นตอนหรือไฟล์คุณลักษณะเพื่อให้อ่านและเข้าใจได้ง่ายขึ้น ดังนั้นจึงเป็นเรื่องสำคัญที่จะต้องใช้ / แสดงความคิดเห็นในตำแหน่งที่เหมาะสมในไฟล์ นอกจากนี้ยังช่วยในขณะที่ดีบักโค้ด ไฟล์ฟีเจอร์แตงกวาสามารถแสดงความคิดเห็นได้ทุกที่ ในการแสดงความคิดเห็นเราต้องขึ้นต้นข้อความด้วยเครื่องหมาย“ #”

ภาษาโปรแกรมต่างๆมีบรรทัดฐานที่แตกต่างกันในการกำหนดความคิดเห็น เรามาดูกันดีกว่าว่าแตงกวาเกี่ยวข้องกับมันอย่างไร

  • ไฟล์คำจำกัดความขั้นตอน - หากคุณใช้ Java เป็นแพลตฟอร์มให้ทำเครื่องหมายความคิดเห็นของคุณด้วย“ //”

  • ไฟล์ฟีเจอร์ - ในกรณีของไฟล์ฟีเจอร์เราต้องใส่ # ก่อนเริ่มความคิดเห็นของคุณ

ตัวอย่าง

ข้อความที่ไฮไลต์ในโปรแกรมอ้างถึงความคิดเห็นในโค้ด

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

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

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

ส่วนที่ไฮไลต์ในคำสั่งที่ระบุทำหน้าที่ในการตั้งค่า webdriver และสิ้นสุดเซสชัน webdriver ดังนั้นจึงไม่เกี่ยวข้องกับสาระสำคัญของ“ คำแถลงที่ได้รับ” และเป็นเหมือนการตั้งค่าสำหรับการทดสอบ นอกจากนี้หากเราคิดกับผู้มีโอกาสเป็นลูกค้าในวงกว้างจากนั้นในกรณีที่มีหลายสถานการณ์สำหรับคุณลักษณะนี้การตั้งค่าและการล้างข้อมูลบนเว็บนี้จะทำงานกับแต่ละคำสั่งที่กำหนด ตามเหตุผลแล้วการตั้งค่าและการล้างข้อมูลจะดำเนินการเพียงครั้งเดียวเท่านั้น

ดังนั้นเพื่อให้เกิดการเพิ่มประสิทธิภาพสามารถใช้ตะขอได้ บ่อยครั้งที่เราใช้ตะขอสองประเภท: ตะขอ "ก่อน" และตะขอ "หลัง" วิธีการ / ฟังก์ชัน / ชิ้นส่วนของโค้ดที่กำหนดไว้ในก่อนและหลัง hooks รันเสมอแม้ว่าสถานการณ์จะผ่านหรือล้มเหลว

ตามชื่อที่แนะนำก่อนที่ hook จะดำเนินการได้ดีก่อนสถานการณ์ทดสอบอื่น ๆ และหลังจากที่ hook ถูกเรียกใช้งานหลังจากเรียกใช้สถานการณ์ทั้งหมด

Hooks ถูกกำหนดไว้ภายในไฟล์ข้อกำหนดขั้นตอนเท่านั้น

มาดูตัวอย่างก่อนและหลังแบบอัตโนมัติกัน

Step 1 - สร้างโครงการ Maven เป็น hookTest เพิ่มการพึ่งพาที่จำเป็นใน pom.xml

Step 2 - สร้างแพ็คเกจ Java ที่มีชื่อว่า hookTest ภายใต้ src/test/java

Step 3 - สร้างไฟล์ข้อกำหนดขั้นตอนที่ชื่อเป็น hookTest.java ภายใต้แพ็คเกจ

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 - สร้างไฟล์ฟีเจอร์ชื่อ“ hookTest.feature” ภายใต้แพ็คเกจ

Feature - เค้าโครงสถานการณ์

Scenario Outline - การทดสอบตะขอ

กำหนดให้ผู้ใช้ไปที่ Facebook

เมื่อฉันป้อนชื่อผู้ใช้เป็น "<username>" และรหัสผ่านเป็น "<password>"

จากนั้นการเข้าสู่ระบบจะไม่สำเร็จ

ตัวอย่าง

| username  | password  | 
| username1 | password1 |

Step 5 - สร้างไฟล์คลาสนักวิ่ง

  • สร้างคลาสรันเนอร์เป็น runTest.java ภายในแพ็คเกจ dataTable (ดูโครงร่างสถานการณ์ส่วนสำหรับขั้นตอนโดยละเอียด)

  • เขียนรหัสต่อไปนี้

package hookTest; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})  

public class runTest { }
  • บันทึกไฟล์

  • ทำการทดสอบโดยใช้ตัวเลือก -

    • เลือกไฟล์ runTest.java จาก package explorer

    • คลิกขวาและเลือกตัวเลือก Run as

    • เลือก JUnit test

ตอนนี้เมื่อเราเรียกใช้สิ่งนี้ต่อไปนี้จะเป็นลำดับของการดำเนินการ

  • ก่อนที่จะเชื่อมต่อ - ตั้งค่า Webdriver และข้อกำหนดเบื้องต้นอื่น ๆ เพื่อเรียกใช้การทดสอบ

  • ให้คำสั่ง

  • เมื่อคำสั่ง

  • แล้วคำสั่ง

  • After hook - ปิด webdriver และทำตามขั้นตอนการล้างข้อมูล

ติดแท็ก Hooks

นอกจากนี้เรายังสามารถระบุได้ว่าเราต้องการให้ hooks ก่อนและหลังดำเนินการด้วยแท็กเฉพาะหรือไม่ Example- @Before ('@ เว็บ') แนวคิดเดียวกันของแท็กตรรกะและ / หรือสามารถใช้กับ hooks ได้เช่นกันExample - @Before (@ dev, @ wip), @Before (@ dev, ~ @ wip)

แตงกวาสามารถใช้ทดสอบระบบคอมพิวเตอร์ได้เกือบทุกชนิด จนถึงตอนนี้เราได้เห็นวิธีเรียกใช้การทดสอบโดยใช้ Eclipse IDE มีอีกวิธีหนึ่งที่เราสามารถเรียกใช้การทดสอบแตงกวาผ่านอินเทอร์เฟซบรรทัดคำสั่ง แล้วข้อดีของการทำคืออะไร?

การเรียกใช้กรอบการทดสอบจาก Terminal มีข้อดีในตัวเองเช่นการลบล้างการกำหนดค่าการรันที่กล่าวถึงในโค้ด

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

Step 1- สร้างโครงการทดสอบ Maven ชื่อ commandLine.

  • ไปที่ไฟล์→ใหม่→อื่น ๆ → Maven → Maven Project →ถัดไป

  • ระบุรหัสกลุ่ม (รหัสกลุ่มจะระบุโครงการของคุณโดยไม่ซ้ำกันในทุกโครงการ)

  • ระบุรหัสสิ่งประดิษฐ์ (รหัสวัตถุคือชื่อของ jar ที่ไม่มีเวอร์ชันคุณสามารถเลือกชื่อใดก็ได้ที่เป็นตัวพิมพ์เล็ก)

  • คลิกที่ Finish

  • เปิด pom.xml -

    • ไปที่ package explorer ทางซ้ายมือของ Eclipse

    • ขยายโครงการ CucumberTest

    • ค้นหา pom.xml ไฟล์.

    • คลิกขวาและเลือกตัวเลือกเปิดด้วย“ โปรแกรมแก้ไขข้อความ”

  • เพิ่มการพึ่งพาสำหรับ Selenium - สิ่งนี้จะระบุ Maven ซึ่งจะต้องดาวน์โหลดไฟล์ Selenium jar จากที่เก็บส่วนกลางไปยังที่เก็บในเครื่อง

    • เปิด pom.xml อยู่ในโหมดแก้ไขสร้างแท็กการอ้างอิง (<dependencies> </dependencies>) ภายในแท็กโปรเจ็กต์

    • ภายในแท็กการอ้างอิงให้สร้างแท็กการอ้างอิง (<dependency> </dependency>)

    • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>
  • เพิ่มการพึ่งพาสำหรับ Cucumber-Java - สิ่งนี้จะระบุ Maven ซึ่งไฟล์ Cucumber จะถูกดาวน์โหลดจากที่เก็บส่วนกลางไปยังที่เก็บในเครื่อง

    • สร้างแท็กการอ้างอิงขึ้นมาอีกหนึ่งแท็ก

    • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • เพิ่มการพึ่งพาสำหรับ Cucumber-JUnit - สิ่งนี้จะระบุ Maven ซึ่งจะต้องดาวน์โหลดไฟล์ Cucumber JUnit จากที่เก็บกลางไปยังที่เก็บในเครื่อง

    • สร้างแท็กการอ้างอิงขึ้นมาอีกหนึ่งแท็ก

    • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • เพิ่มการพึ่งพาสำหรับ JUnit - สิ่งนี้จะระบุ Maven ซึ่งไฟล์ JUnit จะถูกดาวน์โหลดจากที่เก็บส่วนกลางไปยังที่เก็บในเครื่อง

    • สร้างแท็กการอ้างอิงขึ้นมาอีกหนึ่งแท็ก

    • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • ตรวจสอบไบนารี

    • เมื่อแก้ไข pom.xml สำเร็จแล้วให้บันทึก

    • ไปที่ Project → Clean - จะใช้เวลาไม่กี่นาที

Step 2 - สร้างแพ็คเกจชื่อ "outline" ภายใต้ src / test / java

Step 3 - สร้างไฟล์ฟีเจอร์ชื่อ“ commandLine.feature”

  • เลือกและคลิกขวาที่โครงร่างแพ็คเกจ

  • คลิกที่ไฟล์ 'New'

  • ตั้งชื่อไฟล์เช่น“ commandLine.feature”

  • เขียนข้อความด้านล่างภายในไฟล์และบันทึก

    Feature - เค้าโครงสถานการณ์

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

    กำหนดให้ผู้ใช้ไปที่ Facebook

    เมื่อฉันป้อนชื่อผู้ใช้เป็น "<username>" และรหัสผ่านเป็น "<password>"

    จากนั้นการเข้าสู่ระบบจะไม่สำเร็จ

ตัวอย่าง

| username  | password  | 
| username1 | password1 | 
| username2 | password2 |

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

Step 4 - สร้างไฟล์นิยามขั้นตอน

  • เลือกและคลิกขวาที่โครงร่างแพ็คเกจ

  • คลิกที่ไฟล์ 'New'

  • ตั้งชื่อไฟล์เป็น commandLine.java

  • เขียนข้อความต่อไปนี้ภายในไฟล์และบันทึก

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- ในโค้ดเราต้องกำหนดฟังก์ชันที่มีอาร์กิวเมนต์อินพุตสองตัว: ชื่อผู้ใช้หนึ่งชื่อและอื่น ๆ จะเป็นรหัสผ่าน ดังนั้นสำหรับการป้อนข้อมูลแต่ละชุดที่มีให้ในแท็กตัวอย่างชุดของ GIVEN เมื่อไหร่และแล้วจะถูกดำเนินการ

Step 5 - สร้างไฟล์คลาสนักวิ่ง

  • เลือกและคลิกขวาที่โครงร่างแพ็คเกจ

  • คลิกที่ไฟล์ 'New'

  • ตั้งชื่อไฟล์เช่น, runTest.java

  • เขียนข้อความต่อไปนี้ภายในไฟล์และบันทึก

package Outline; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}) 

public class runTest { }
  • เปิดพรอมต์คำสั่ง

  • ไปที่ไดเร็กทอรีที่มีแพ็กเกจ“ commandLine” อยู่ e: \ Workspace \ LoginTest \ src> cd test \ java

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

ผลลัพธ์

This describes the total test run, along with failure if any.

คำสั่งก่อนหน้านี้รันทุกอย่างตามที่กล่าวไว้ในคลาส JUnit Runner อย่างไรก็ตามหากเราต้องการลบล้างการกำหนดค่าที่กล่าวถึงใน Runner ต่อไปนี้เป็นตัวอย่างบางส่วนที่ต้องทำ

  • ตอนนี้รันคำสั่ง mvn test - Dcucumber.options = "- help" ใน command prompt การรันสิ่งนี้จะพิมพ์ตัวเลือกที่มีทั้งหมด

  • ในการรันแท็กเฉพาะให้รันคำสั่ง mvn test -Dcucumber.options = "- tags @SmokeTest" บนพร้อมรับคำสั่ง จะเรียกใช้เฉพาะแท็กซึ่งมีเครื่องหมาย @SmokeTest

  • ในการเปลี่ยนรูปแบบของผลลัพธ์ให้รันคำสั่ง E: \ Workspace \ LoginTest> mvn test -Dcucumber.options = "- plugin junit: target / cucumber-junit-report.xml" บน command prompt มันจะเปลี่ยนรายงาน จัดรูปแบบเป็นตัวสร้างรายงาน JUnit

สิ่งสำคัญคือต้องทำความเข้าใจว่า Junit คืออะไรก่อนที่เราจะเริ่มการสนทนาเรื่อง Cucumber JUnit Runner JUnitเป็นกรอบการทดสอบหน่วยโอเพ่นซอร์สสำหรับภาษาโปรแกรม Java JUnit มีความสำคัญในการพัฒนาการพัฒนาที่ขับเคลื่อนด้วยการทดสอบและเป็นหนึ่งในตระกูลของกรอบการทดสอบหน่วยซึ่งเรียกรวมกันว่า xUnit ที่มาพร้อมกับ SUnit

ประโยชน์ของการใช้ JUnit

  • หน่วยมี Graphical User Interface (GUI) ทำให้สามารถเขียนและทดสอบซอร์สโค้ดได้อย่างรวดเร็วและง่ายดาย

  • JUnit ช่วยให้นักพัฒนาสามารถสร้างชุดทดสอบเพิ่มขึ้นเพื่อวัดความคืบหน้าและตรวจจับผลข้างเคียงที่ไม่ได้ตั้งใจ

  • การทดสอบสามารถทำงานได้อย่างต่อเนื่อง

  • JUnit แสดงความคืบหน้าของการทดสอบในแถบที่ปกติจะเป็นสีเขียว แต่จะเปลี่ยนเป็นสีแดงเมื่อการทดสอบล้มเหลว

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

JUnit ทำหน้าที่เป็นสะพานเชื่อมระหว่างสองสิ่งนี้ ดังนั้นขั้นตอนการดำเนินการจะมีลักษณะดังต่อไปนี้ -

  • ผู้มีส่วนได้ส่วนเสียจดไฟล์คุณลักษณะ

  • ไฟล์ข้อกำหนดขั้นตอนจะถูกสร้างขึ้นตามนั้น

  • ระบุคลาส JUnit runner เพื่อรันชุดกรณีทดสอบ

  • เมื่อเราเรียกใช้คลาส JUnit runner -

    • มันจะแยกวิเคราะห์ไฟล์ฟีเจอร์ Gherkin

    • มันจะเรียกใช้ฟังก์ชันที่เขียนในไฟล์ข้อกำหนดขั้นตอนตามคำสั่งไฟล์คุณลักษณะ

    • JUnit จะรวมผลกรณีทดสอบ

    • จะสร้างรายงานการทดสอบในรูปแบบที่กำหนด (ซึ่งอาจเป็น html / JSON)

ประเด็นสำคัญคือจะกำหนดค่า JUnit ให้ทำสิ่งเหล่านี้ได้อย่างไร? ต่อไปนี้เป็นขั้นตอน -

Step 1 - ติดตั้ง Java

  • ดาวน์โหลด jdk และ jre จากลิงค์ http://www.oracle.com/technetwork/java/javase/downloads/index.html

  • ยอมรับข้อตกลงใบอนุญาต

  • ติดตั้ง JDK และ JRE

  • ตั้งค่าตัวแปรสภาพแวดล้อมดังที่แสดงในภาพหน้าจอต่อไปนี้

Step 2 - ติดตั้ง Eclipse

  • Why we need- Eclipse คือ Integrated Development Environment (IDE) ประกอบด้วยพื้นที่ทำงานพื้นฐานและระบบปลั๊กอินที่ขยายได้สำหรับการปรับแต่งสภาพแวดล้อม

  • How to install -

    • ตรวจสอบให้แน่ใจว่าได้ติดตั้ง JAVA ในเครื่องของคุณแล้ว

    • ดาวน์โหลด Eclipse จาก http://www.eclipse.org/downloads

    • ติดตั้ง Unzip และ Eclipse แล้ว

Step 3 - ติดตั้ง Maven

  • Why we need- Maven เป็นเครื่องมือสร้างระบบอัตโนมัติที่ใช้สำหรับโปรเจ็กต์ Java เป็นหลัก มันมีแพลตฟอร์มทั่วไปในการทำกิจกรรมต่างๆเช่นการสร้างซอร์สโค้ดการคอมไพล์โค้ดโค้ดแพ็กเกจลงใน jar และอื่น ๆ ในภายหลังหากเวอร์ชันซอฟต์แวร์ใด ๆ มีการเปลี่ยนแปลง Maven จะมอบวิธีง่ายๆในการแก้ไขโปรเจ็กต์ทดสอบ

  • How to install -

    • ดาวน์โหลด Maven - https://maven.apache.org/download.cgi

    • แตกไฟล์และจำตำแหน่ง

    • สร้างตัวแปรสภาพแวดล้อม MAVEN_HOME ดังที่แสดงในภาพหน้าจอต่อไปนี้

  • แก้ไขตัวแปรเส้นทางและรวม Maven ดังที่แสดงในภาพหน้าจอต่อไปนี้

  • ดาวน์โหลดปลั๊กอิน MAVEN จาก Eclipse

    • เปิด Eclipse

    • ได้รับความช่วยเหลือ→ Eclipse Marketplace →ค้นหา maven → Maven Integration for Eclipse → INSTALL

Step 4 - วิธีกำหนดค่าแตงกวาด้วย Maven

  • สร้างโครงการ Maven ใน Eclipse

    • ไปที่ไฟล์→ใหม่→อื่น ๆ → Maven → Maven Project →ถัดไป

    • ระบุรหัสกลุ่ม (รหัสกลุ่มจะระบุโครงการของคุณโดยไม่ซ้ำกันในทุกโครงการ)

    • ระบุรหัสสิ่งประดิษฐ์ (รหัสวัตถุคือชื่อของ jar ที่ไม่มีเวอร์ชันคุณสามารถเลือกชื่อใดก็ได้ที่เป็นตัวพิมพ์เล็ก)

    • คลิกที่ Finish

  • เปิด pom.xml

    • ไปที่ package explorer ทางซ้ายมือของ Eclipse

    • ขยายโครงการ CucumberTest

    • ค้นหาไฟล์ pom.xml

    • คลิกขวาและเลือกตัวเลือกเปิดด้วย“ โปรแกรมแก้ไขข้อความ”

  • เพิ่มการพึ่งพาสำหรับ Selenium - สิ่งนี้จะระบุ Maven ซึ่งจะต้องดาวน์โหลดไฟล์ Selenium jar จากที่เก็บส่วนกลางไปยังที่เก็บในเครื่อง

    • เปิด pom.xml อยู่ในโหมดแก้ไขสร้างแท็กการอ้างอิง (<dependencies> </dependencies>) ภายในแท็กโปรเจ็กต์

    • ภายในแท็กการอ้างอิงให้สร้างแท็กการอ้างอิง (<dependency> </dependency>)

    • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>
  • เพิ่มการพึ่งพาสำหรับ Cucumber-Java - สิ่งนี้จะระบุ Maven ซึ่งไฟล์ Cucumber จะดาวน์โหลดจากที่เก็บส่วนกลางไปยังที่เก็บในเครื่อง

    • สร้างแท็กการอ้างอิงขึ้นมาอีกหนึ่งแท็ก

    • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • เพิ่มการพึ่งพาสำหรับ Cucumber-JUnit: สิ่งนี้จะระบุ Maven ซึ่งไฟล์ Cucumber JUnit จะถูกดาวน์โหลดจากที่เก็บส่วนกลางไปยังที่เก็บในเครื่อง

    • สร้างแท็กการอ้างอิงขึ้นมาอีกหนึ่งแท็ก

    • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • เพิ่มการพึ่งพาสำหรับ JUnit - สิ่งนี้จะระบุ Maven ซึ่งไฟล์ JUnit จะถูกดาวน์โหลดจากที่เก็บส่วนกลางไปยังที่เก็บในเครื่อง

    • สร้างแท็กการอ้างอิงขึ้นมาอีกหนึ่งแท็ก

    • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • ตรวจสอบไบนารี

    • ครั้งเดียว pom.xml แก้ไขเรียบร้อยแล้วให้บันทึก

    • ไปที่ Project → Clean - จะใช้เวลาสักครู่

    • หลังจากนั้นคุณจะสามารถเห็นที่เก็บ Maven เหมือนภาพหน้าจอต่อไปนี้

Step 5 - สร้างไฟล์คุณสมบัติ (จะกล่าวถึงในภายหลัง)

Step 6 - สร้างไฟล์ข้อกำหนดขั้นตอน (จะกล่าวถึงในภายหลัง)

Step 7 - สร้าง Junit runner เพื่อทำการทดสอบ (จะกล่าวถึงภายหลัง)

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

เพื่อให้บรรลุเป้าหมายนี้เราต้องรวม Cucumber เข้ากับเครื่องมือโอเพนซอร์สอื่น ๆ เช่น Ant / Junit ในที่นี้เราจะนำตัวอย่างของ JUnit เพิ่มเติมเนื่องจากมีการสนับสนุนภาษา Java

มาดูรายละเอียดของรูปแบบรายงานต่างๆซึ่งพร้อมใช้งานและใช้งานง่าย -

รูปแบบสวย (รายงาน HTML)

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

  • Local Directory - เราสามารถระบุไดเร็กทอรีเป้าหมายสำหรับรายงานเป็นไดเร็กทอรีโลคัลของเครื่องที่จะทำการทดสอบ

  • Server Directory- นอกจากนี้เรายังมีข้อกำหนดในการระบุไดเร็กทอรีเป้าหมายเป็นไดเร็กทอรีใด ๆ บนเซิร์ฟเวอร์ซึ่งสามารถเข้าถึงได้โดยสาธารณะ โดยทั่วไปจะช่วยได้เมื่อเราต้องการให้ลูกค้า / ผู้มีส่วนได้ส่วนเสียดูผลการทดสอบ ณ เวลาใดเวลาหนึ่ง

ตัวอย่าง

มาดูตัวอย่างรูปแบบที่สวยงามโดยอัตโนมัติ

Step 1 - สร้างโครงการ Maven ชื่อ cucumberReport ใน Eclipse

Step 2 - สร้างแพ็คเกจชื่อ CucumberReport ภายใต้ src/test/java

Step 3 - สร้างไฟล์คุณสมบัติชื่อ cucumberReport.feature

เขียนข้อความต่อไปนี้ภายในไฟล์และบันทึก

Feature - รายงานแตงกวา

# นี่คือการตรวจสอบผลการทดสอบ Pass test case

Scenario: มีฟังก์ชันการเข้าสู่ระบบ

เนื่องจากฉันได้เปิดเบราว์เซอร์

เมื่อเปิดเว็บไซต์ Facebook

จากนั้นปุ่มเข้าสู่ระบบควรมีอยู่

# นี่คือการตรวจสอบผลการทดสอบสำหรับกรณีทดสอบที่ล้มเหลว

Scenario: ลืมรหัสผ่านอยู่

ให้ฉันเปิดเบราว์เซอร์

เมื่อเปิดเว็บไซต์ Facebook

จากนั้นลิงก์ลืมรหัสผ่านควรมีอยู่

Note- นี่คือสถานการณ์แรกจะผ่านไปในขณะที่สถานการณ์ที่สองจะล้มเหลว เพื่อให้เราได้เห็นว่ารายงานผ่านและรายงานล้มเหลวมีลักษณะอย่างไร

Step 4 - สร้างไฟล์นิยามขั้นตอน

  • เลือกและคลิกขวาที่โครงร่างแพ็คเกจ

  • คลิกที่ไฟล์ 'New'

  • ตั้งชื่อไฟล์เป็น cucumberReport.java

  • เขียนข้อความต่อไปนี้ภายในไฟล์และบันทึก

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 - สร้างไฟล์คลาสนักวิ่ง

  • สร้างคลาสนักวิ่งชื่อ runTest.java ภายในบรรจุภัณฑ์

  • เขียนรหัสต่อไปนี้ บันทึกไฟล์

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 { }
  • ทำการทดสอบโดยใช้ตัวเลือก

    • เลือก runTest.java ไฟล์จาก package explorer

    • คลิกขวาและเลือกตัวเลือก Run as.

    • เลือก JUnit test

คุณจะสังเกตสิ่งต่อไปนี้เมื่อคุณเรียกใช้ไฟล์คลาสนี้

ทั้งสองสถานการณ์จะถูกดำเนินการทีละคน

โฟลเดอร์ชื่อ Destination จะถูกสร้างขึ้นภายในไดเร็กทอรีเป้าหมาย

รายงานจะมีชื่อว่า“ Index.html”

เปิด Index.html ด้วยเว็บเบราว์เซอร์

คุณจะเห็นรายงานที่กล่าวถึงในภาพต่อไปนี้ -

มันเน้นสีของสถานการณ์ที่ล้มเหลว นอกจากนี้คุณจะเห็นไฮไลต์สำหรับขั้นตอนที่ล้มเหลวในสถานการณ์นั้น ทำให้การดีบักทำได้ง่ายมาก

รายงาน JSON

ตอนนี้เราได้เห็นแล้วว่ารายงาน HTML นั้นง่ายเพียงใด อย่างไรก็ตามหากเราต้องการส่งต่อข้อมูลรายงานนี้ไปยังแอปพลิเคชันอื่น ๆ นั่นเป็นเรื่องยุ่งยากในกรณีของรายงาน HTML นี่คือความต้องการรูปแบบการรายงานอื่น สัญกรณ์ออบเจ็กต์สคริปต์ JSON-Java เป็นอีกรูปแบบหนึ่งสำหรับการสร้างรายงานการทดสอบ Cucumber JSON เป็นวัตถุที่มีข้อมูลจำนวนมากที่จัดเก็บในรูปแบบข้อความ รายงาน JSON นำค่าที่แตกต่างไปจากตาราง รายงาน JSON ยังสามารถใช้เป็นเพย์โหลดของข้อมูลที่จะถ่ายโอนระหว่างเซิร์ฟเวอร์ต่างๆ นอกจากนี้ยังสามารถใช้เพื่อแสดงเป็นหน้าเว็บ โดยสรุปแอปพลิเคชันอื่นสามารถใช้รายงาน JSON ได้

What is payload information?เมื่อข้อมูลถูกส่งผ่านอินเทอร์เน็ตแต่ละหน่วยที่ส่งจะมีทั้งข้อมูลส่วนหัวและข้อมูลจริงที่กำลังส่ง ส่วนหัวระบุต้นทางและปลายทางของแพ็กเก็ตในขณะที่ข้อมูลจริงเรียกว่าเพย์โหลด ในการสร้างรายงาน JSON เราต้องทำการเปลี่ยนแปลงในไฟล์นักวิ่ง

  • เปลี่ยนตัวเลือกรูปแบบในไฟล์นักวิ่งดังนี้

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 {}
  • ทำการทดสอบโดยใช้ตัวเลือก -

    • เลือก runTest.java ไฟล์จาก package explorer

    • คลิกขวาและเลือกตัวเลือก Run as.

    • เลือก JUnit test

  • คุณจะสังเกตสิ่งต่อไปนี้เมื่อคุณเรียกใช้ไฟล์คลาสนี้

    • ทั้งสองสถานการณ์จะถูกดำเนินการทีละคน

  • รายงานจะมีชื่อเป็น cucumber.json (ตามที่ระบุไว้ในคลาสนักวิ่ง)

  • เปิด cucumber.json ไฟล์ด้วยโปรแกรมแก้ไขข้อความ

  • คุณจะเห็นรายงานที่กล่าวถึงในภาพหน้าจอต่อไปนี้หลังจากวางเส้นแบ่ง -

Note - JSON อ่านได้น้อยกว่าเมื่อเทียบกับรูปแบบรายงาน HTML

เป็นไปได้มากว่าการทดสอบของคุณอาจล้มเหลวเนื่องจากไม่ทราบสาเหตุ การระบุสาเหตุของความล้มเหลวและการแก้ไขเป็นสิ่งสำคัญมาก กระบวนการนี้เรียกว่าdebugging. ต่อไปนี้เป็นเคล็ดลับและเทคนิคบางประการซึ่งทำให้การแก้ไขจุดบกพร่องของแตงกวาเป็นเรื่องง่าย

อ็อพชันการดีบักสามารถใช้ได้กับ Eclipse วางจุดพัก. คลิกไฟล์และแก้ไขข้อบกพร่องโดยใช้ขั้นตอนต่อไปนี้ -

Step 1 - วางจุดแบ่งด้วยตนเองในไฟล์ข้อกำหนดขั้นตอน Ruby

ตัวอย่าง

require 'ruby-debug' 
Then /^the process should exit cleanly$/ do 
breakpoint 
assert @exited_cleanly, "Process did not exit cleanly: #{@stdout}" 
end

Step 2 - เรายังสามารถกำหนดขั้นตอนการดีบักแยกต่างหากเช่นต่อไปนี้ในไฟล์ข้อกำหนดขั้นตอน

Then /^I debug$/ do 
breakpoint 
0 
end

Step 3 - Webratเป็นเครื่องมือเริ่มต้นสำหรับการทดสอบแตงกวาด้วย Rails ช่วยให้คุณทำสิ่งต่างๆเช่นลิงก์คลิกพิมพ์และส่งแบบฟอร์มเป็นต้น

จะมีหลายครั้งที่คุณพยายามคลิกบางสิ่งบางอย่างและไม่มี คุณจะได้รับ HTML หยดใหญ่ ๆ กลับมาและการหาว่าหมายความว่าอะไรคือการลากจริง

save_and_open_page

Webrat มีวิธีการ save_and_open_page ซึ่งรวบรวม HTML ปัจจุบันบันทึกไว้จากนั้นจะเปิดในเบราว์เซอร์ให้คุณ มีประโยชน์อย่างยิ่ง

When /^I follow "(.*)"$/ do |link| 
save_and_open_page 
click_link(link) 
end

ในการรัน Cucumber test ด้วย Java ให้ทำตามขั้นตอนต่อไปนี้

Step 1 - ติดตั้ง Java -

  • ดาวน์โหลด jdk และ jre จาก

    http://www.oracle.com/technetwork/java/javase/downloads/index.html

  • ยอมรับข้อตกลงใบอนุญาต

  • ติดตั้ง JDK และ JRE

  • ตั้งค่าตัวแปรสภาพแวดล้อมดังแสดงในภาพต่อไปนี้

Step 2 - ติดตั้ง Eclipse IDE -

  • ตรวจสอบให้แน่ใจว่าได้ติดตั้ง JAVA ในเครื่องของคุณแล้ว

  • ดาวน์โหลด Eclipse จาก https://eclipse.org/downloads/

  • ติดตั้ง Unzip และ Eclipse แล้ว

Step 3 - ติดตั้ง Maven -

  • ดาวน์โหลด Maven -https://maven.apache.org/download.cgi

  • แตกไฟล์และจำตำแหน่ง

  • สร้างตัวแปรสภาพแวดล้อม MAVEN_HOME ดังแสดงในภาพต่อไปนี้

  • แก้ไขตัวแปรเส้นทางและรวม Maven

  • ดาวน์โหลดปลั๊กอิน MAVEN จาก Eclipse

    • เปิด Eclipse

    • ได้รับความช่วยเหลือ→ Eclipse Marketplace →ค้นหา maven → Maven Integration for Eclipse → INSTALL

Step 4 - กำหนดค่าแตงกวาด้วย Maven

  • สร้างโครงการ Maven

    • ไปที่ไฟล์→ใหม่→อื่น ๆ → Maven → Maven Project →ถัดไป

    • ระบุรหัสกลุ่ม (รหัสกลุ่มจะระบุโครงการของคุณโดยไม่ซ้ำกันในทุกโครงการ)

    • ระบุรหัสสิ่งประดิษฐ์ (รหัสวัตถุคือชื่อของ jar ที่ไม่มีเวอร์ชันคุณสามารถเลือกชื่อใดก็ได้ที่เป็นตัวพิมพ์เล็ก)

    • คลิกที่ Finish

Step 5 - เปิด pom.xml -

  • ไปที่ package explorer ทางซ้ายมือของ Eclipse

  • ขยายโครงการ CucumberTest

  • ค้นหาไฟล์ pom.xml

  • คลิกขวาและเลือกตัวเลือกเปิดด้วย“ โปรแกรมแก้ไขข้อความ”

Step 6 - เพิ่มการพึ่งพาสำหรับ Selenium - สิ่งนี้จะระบุ Maven ซึ่งจะต้องดาวน์โหลดไฟล์ Selenium jar จากที่เก็บส่วนกลางไปยังที่เก็บในเครื่อง

  • เปิด pom.xml อยู่ในโหมดแก้ไขสร้างแท็กการอ้างอิง (<dependencies> </dependencies>) ภายในแท็กโปรเจ็กต์

  • ภายในแท็กการอ้างอิงให้สร้างแท็กการอ้างอิง (<dependency> </dependency>)

  • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>

Step 7 - เพิ่มการพึ่งพาสำหรับ Cucumber-Java - สิ่งนี้จะระบุ Maven ซึ่งไฟล์ Cucumber จะถูกดาวน์โหลดจากที่เก็บส่วนกลางไปยังที่เก็บในเครื่อง

  • สร้างแท็กการอ้างอิงขึ้นมาอีกหนึ่งแท็ก

  • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>

Step 8 - เพิ่มการพึ่งพาสำหรับ Cucumber-JUnit - สิ่งนี้จะระบุ Maven ซึ่งไฟล์ Cucumber JUnit จะถูกดาวน์โหลดจากที่เก็บกลางไปยังที่เก็บในเครื่อง

  • สร้างแท็กการอ้างอิงขึ้นมาอีกหนึ่งแท็ก

  • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>

Step 9- เพิ่มการพึ่งพาสำหรับ JUnit - สิ่งนี้จะระบุ Maven ซึ่งไฟล์ JUnit จะถูกดาวน์โหลดจากที่เก็บส่วนกลางไปยังที่เก็บในเครื่อง

  • สร้างแท็กการอ้างอิงขึ้นมาอีกหนึ่งแท็ก

  • ระบุข้อมูลต่อไปนี้ภายในแท็กการอ้างอิง

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>

Step 10 - ตรวจสอบไบนารี

  • เมื่อแก้ไข pom.xml สำเร็จแล้วให้บันทึก

  • ไปที่ Project → Clean - จะใช้เวลาสักครู่

  • คุณจะสามารถเห็นที่เก็บ Maven

Step 11 - สร้างแพ็คเกจภายใต้ src/test/java ตั้งชื่อเป็น cucumberJava.

Step 12 - สร้างไฟล์คุณสมบัติ

  • เลือกและคลิกขวาที่โครงร่างแพ็คเกจ

  • คลิกที่ไฟล์ 'New'

  • ตั้งชื่อไฟล์เช่น cucumberJava.feature.

  • เขียนข้อความต่อไปนี้ภายในไฟล์และบันทึก

    Feature: แตงกวา Java

    Scenario: มีฟังก์ชันการเข้าสู่ระบบ

    ให้ฉันเปิดเบราว์เซอร์

    เมื่อเปิดเว็บไซต์ Facebook

    จากนั้นปุ่มเข้าสู่ระบบควรออก

Step 13 - สร้างไฟล์กำหนดขั้นตอน -

  • เลือกและคลิกขวาที่โครงร่างแพ็คเกจ

  • คลิกที่ไฟล์ 'New'

  • ตั้งชื่อไฟล์เช่น annotation.java.

  • เขียนข้อความต่อไปนี้ภายในไฟล์และบันทึก

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 - สร้างไฟล์คลาสนักวิ่ง

  • เลือกและคลิกขวาที่โครงร่างแพ็คเกจ

  • คลิกที่ไฟล์ 'New'

  • ตั้งชื่อไฟล์เป็น runTest.java.

  • เขียนข้อความต่อไปนี้ภายในไฟล์และบันทึก

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 - ทำการทดสอบโดยใช้ตัวเลือก -

  • เลือกไฟล์ runTest.java จาก package explorer

  • คลิกขวาและเลือกตัวเลือก Run as.

  • เลือก JUnit test

คุณจะสังเกตสิ่งต่อไปนี้เมื่อดำเนินการ -

  • เว็บเบราว์เซอร์ Firefox จะเปิดขึ้น

  • มันจะเปิดหน้าล็อกอิน Facebook บนเบราว์เซอร์

  • จะตรวจพบปุ่มล็อกอิน

  • เบราว์เซอร์จะปิด

  • ในหน้าต่าง JUnit คุณจะเห็นสถานการณ์ที่มีเครื่องหมายถูกสีเขียวซึ่งแสดงถึงความสำเร็จของการดำเนินการทดสอบ

ภาษา Ruby มีข้อดีดังต่อไปนี้ -

  • เป็นเรื่องง่ายที่จะเข้าใจ

  • มันเป็นภาษาเชิงวัตถุ

  • เป็นไลบรารีคลาสที่มีประสิทธิภาพ

  • มีการสนับสนุนออนไลน์จำนวนมาก

ต่อไปนี้เป็นกระบวนการทีละขั้นตอนในการทำงานของแตงกวากับ Ruby

Step 1 - ติดตั้ง Ruby

  • ไปที่หน้าดาวน์โหลด RubyInstaller

  • ดาวน์โหลดเวอร์ชันที่เหมาะสมที่สุดสำหรับระบบปฏิบัติการของคุณ (เช่น 32 หรือ 64 บิต)

  • เรียกใช้ exe ที่ดาวน์โหลดมา

  • ระหว่างการติดตั้งให้เลือกตัวเลือก“ Add Ruby …” และ“ Associate …” ดังที่แสดงในภาพต่อไปนี้

Step 2 - ดาวน์โหลดและแยกชุด Dev

  • ไปที่หน้าดาวน์โหลด RubyInstaller

  • ดาวน์โหลดเวอร์ชัน Devkit ที่เหมาะสมที่สุดสำหรับระบบปฏิบัติการของคุณ (เช่น 32 หรือ 64 บิต)

  • แตกไฟล์ devkit ที่โฟลเดอร์ c: \ Ruby \ Devkit

  • เปิดพรอมต์คำสั่ง

  • ภายใน Ruby devkit ให้รันคำสั่งต่อไปนี้

C:\Ruby\devkit> ruby dk.rb init 
C:\Ruby\devkit> ruby dk.rb install

Step 3 - ติดตั้งแตงกวาและอัญมณีทับทิมอื่น ๆ

  • ในการติดตั้ง Cucumber ให้อัปเดตการตั้งค่าอัญมณีปัจจุบันก่อน

C:\Users\Admin> gem update –system
  • จากนั้นติดตั้งอัญมณีที่คุณต้องการสำหรับการทดสอบเว็บ Cucumber

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
  • เรียกใช้แตงกวา

C:\Users\Admin\Documents>cucumber –init 
C:\Users\Admin\Documents>cucumber

Step 4 - ติดตั้ง IDE - KOMODO

  • ไปที่หน้า http://www.activestate.com/komodo-ide/downloads

  • ดาวน์โหลดตัวติดตั้งทดลองใช้ฟรี

  • ดับเบิลคลิกที่ exe ที่ดาวน์โหลดมา

  • ทำตามขั้นตอนการติดตั้ง

  • เสร็จสิ้นการติดตั้งและเปิด IDE

Step 5 - ติดตั้ง Watir - ไปที่พรอมต์คำสั่งและเรียกใช้คำสั่งต่อไปนี้ "gem install watir"

Step 6 - ติดตั้ง rspec - ไปที่พรอมต์คำสั่งและเรียกใช้คำสั่งต่อไปนี้ "gem install rspec"

Step 7 - สร้างไฟล์คุณสมบัติ

  • เปิดโปรแกรมแก้ไข KOMODO

  • คลิกที่ไอคอนไฟล์ใหม่

  • เขียนข้อความต่อไปนี้

    Feature: ผู้ใช้ต้องสามารถค้นหาเนื้อหาโดยใช้ Google

    Scenario: ค้นหาคำ

    ระบุว่าฉันได้ป้อน "watir" ลงในแบบสอบถาม

    เมื่อฉันคลิก "search"

    จากนั้นฉันควรจะเห็นผลลัพธ์บางอย่าง

  • คลิก save ไอคอน.

  • ตั้งชื่อให้ว่า CucumberRuby.feature

  • เลือกโฟลเดอร์ใด ๆ ตัวอย่างเช่น: “e:\WithRuby”

  • บันทึกไฟล์

Step 8 - สร้างไฟล์กำหนดขั้นตอน

  • เปิดโปรแกรมแก้ไข KOMODO

  • คลิกไอคอนไฟล์ "ใหม่"

  • เขียนรหัสต่อไปนี้

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
  • คลิกไอคอนบันทึก

  • ให้ชื่อเป็น CucumberRuby.rb

  • เลือกโฟลเดอร์ใด ๆ เช่น: “e:\WithRuby”

  • บันทึกไฟล์

Step 9 - สร้างไฟล์ทดสอบ

  • เปิดโปรแกรมแก้ไข KOMODO

  • คลิกที่ไอคอนไฟล์ "ใหม่"

  • เขียนรหัสต่อไปนี้

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
  • คลิกไอคอนบันทึก

  • ตั้งชื่อไฟล์เป็น test.rb และเลือกโฟลเดอร์ใด ๆ เช่น“ e: \ WithRuby”

  • บันทึกไฟล์

Step 10 - เรียกใช้ไฟล์คุณสมบัติ

  • ไปที่พรอมต์คำสั่ง

  • ไปที่ไดเรกทอรี e:\WithRuby

  • รันคำสั่งต่อไปนี้

e:\With Ruby>ruby test.rb

คุณจะสังเกตสิ่งต่อไปนี้เมื่อดำเนินการ -

  • อินสแตนซ์ของเว็บเบราว์เซอร์จะเปิดขึ้น

  • หน้าเว็บ Google.com จะโหลดขึ้นมา

  • ค้นหาข้อความ watir จะถูกป้อน

  • ปุ่มค้นหาจะถูกวางไว้

  • ผลการค้นหาจะแสดงบนหน้าเว็บ

  • อินสแตนซ์ของเบราว์เซอร์จะถูกปิด