กลุ่มการทดสอบ – รวมและไม่รวม (ตัวอย่าง)
TestNG เป็นกรอบการทดสอบที่ครอบคลุมการออกแบบการทดสอบประเภทต่างๆ เช่น การทดสอบหน่วย ฟังก์ชันการทำงาน จากต้นทางถึงปลายทาง UI และการทดสอบบูรณาการ
คุณสามารถรันแพ็คเกจเดียวหรือหลายแพ็คเกจได้ (แพ็คเกจในที่นี้หมายถึงการห่อหุ้มกลุ่มคลาสในรูปแบบไดเร็กทอรีที่เหมาะสม) โดยการสร้าง XML และรันผ่าน maven
TestNG กลุ่มที่มีตัวอย่าง
เราใช้กลุ่มใน ทดสอบ เมื่อไหร่,
- เราไม่ต้องการกำหนดวิธีทดสอบแยกกันในคลาสที่แตกต่างกัน (ขึ้นอยู่กับฟังก์ชันการทำงาน) และ
- ในเวลาเดียวกันต้องการละเว้น (ไม่ดำเนินการ) กรณีทดสอบบางกรณีราวกับว่าไม่มีอยู่ในโค้ด
- ในการดำเนินการนี้ เราจะต้องจัดกลุ่มข้อมูลเหล่านี้ ซึ่งทำได้โดยใช้กลไก "รวม" และ "แยก" ที่รองรับใน testNG
ในตัวอย่างด้านล่าง เราได้แสดงไวยากรณ์ของวิธีใช้กลุ่มในไฟล์ XML
@Test (groups = { "bonding", "strong_ties" })
เราใช้ชื่อกลุ่ม 2 ชื่อ คือ “bonding” และ “strong_ties” (ซึ่งเป็นชื่อตรรกะที่คุณสามารถเปลี่ยนแปลงได้ตามความต้องการ)
<groups>
แท็ก กำหนดการเริ่มต้นของกลุ่มใน XML
ปรับแต่ง XML ของคุณเพื่อเลือกกลุ่มที่กล่าวถึงจากคลาสทดสอบ ด้านล่างนี้เป็นไวยากรณ์ของวิธีการประกาศกลุ่มในไฟล์ XML เช่น
<groups> <run> <include name="bonding" /> </run> </groups>
ดังนั้น ให้เราสมมติว่ามีวิธีการทดสอบ 10 วิธีในชั้นเรียน
จากพวกเขา
- 6 วิธีการติดแท็กในกลุ่ม "พันธะ" และ
- 4 อยู่ในกลุ่ม “strong_ties”
ต่อไปเราจะมาตั้ง Maven/Java เส้นทางและการใช้งาน Eclipse IDE เพื่อสาธิตการใช้งานกลุ่มโดยใช้ไฟล์ XML Java โครงการ Maven พื้นฐาน
สร้าง XML สำหรับ TestNG พร้อมแท็ก
- ไฟล์ XML (Extensible Markup Language) ในกรอบงาน Maven มีข้อมูลของการทดสอบอย่างน้อยหนึ่งรายการและถูกกำหนดโดย แท็ก.
- ข้อมูลการทดสอบในรูปแบบ XML แสดงโดย แท็ก และสามารถมีได้ตั้งแต่หนึ่งรายการขึ้นไป TestNG ชั้นเรียน
- A Java คลาสที่ประกอบด้วย @ทดสอบ คำอธิบายประกอบเหนือวิธีการทดสอบถูกกำหนดให้เป็น TestNG วิธีการ
มีการใช้แท็กหลายแท็กในลำดับเพื่อสร้างไฟล์ testNG xml ที่ใช้งานได้ เช่น - และ
- ประการแรกคือ แท็กซึ่งถือชื่อเชิงตรรกะที่กำหนดข้อมูลเต็มรูปแบบให้กับ testNG รายงานเพื่อสร้างรายงานการดำเนินการ
- ประการที่สองคือ โปรดทราบว่าเป็นชื่อตรรกะที่เก็บข้อมูลรายงานการดำเนินการทดสอบ เช่น ผ่าน ล้มเหลว ข้ามกรณีทดสอบ และข้อมูลอื่นๆ เช่น เวลารวมในการดำเนินการและข้อมูลกลุ่ม
- ประการที่สามคือcom.group.guru99.TC_Class1” />, com.group.guru99 เป็นแพ็คเกจที่ใช้ และชื่อคลาสทดสอบคือ TC_Class1
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="Suite"> <test name="Guru 99 Smoke Test Demo"> <groups> <run> <include name="strong_ties" /> </run> </groups> <classes> <class name="com.group.guru99.TC_Class1" /> </classes> </test> </suite>
เราจะใช้ XML นี้สำหรับวิดีโอที่กำลังจะมาถึงตามที่ระบุไว้ในส่วนด้านล่าง
“ยกเว้น” หรือ “รวม” ใน XML ทดสอบ
สมมติว่าคุณกำลังมองหาการใช้งานกลไกกลุ่มแบบซับซ้อน ดังนั้น testNG XML จึงช่วยอำนวยความสะดวกในการใช้งานเพื่อไม่รวมหรือรวมการทดสอบ
Exclude Tag: Syntax for exclude tag <exclude name="${TEST_CASE_NAME}" /> Include Tag: Syntax for include tag <include name="${TEST_CASE_NAME}" />
หมายเหตุ เราสามารถรวม/ไม่รวมกรณีทดสอบหลายกรณีได้ครั้งละครั้ง ซึ่งใช้ได้กับ Groups ด้วยเช่นกัน
วิ่ง TestNG กลุ่ม รวม ไม่รวมโค้ด (วิดีโอสาธิต)
คำอธิบายของ Java รหัสและ XML ด้วย กลุ่ม ยกเว้น และรวมไว้ด้วย แท็กใน XML
สถานการณ์ทดสอบ: เปิดตัวเว็บไซต์ธนาคารสาธิต Guru99 ยืนยันบางสิ่งในหน้าเข้าสู่ระบบหลังจากนั้น ป้อนข้อมูลประจำตัว และยืนยันสิ่งใหม่บางอย่างในแอปพลิเคชันอีกครั้งเมื่อเข้าสู่ระบบ
หมายเหตุ แต่ละขั้นตอนที่คุณโค้ดควรได้รับการประกาศในวิธีที่แยกจากกัน แต่เมื่อดำเนินการแล้ว ก็จะดำเนินการวิธีทดสอบโดยขึ้นอยู่กับรายการในไฟล์ XML
- 1 วิธี: เริ่มต้นเบราว์เซอร์และ URL เปิดใช้งาน (tc01LaunchURL())
- 2 วิธี: ตรวจสอบส่วนหัวของหน้าเข้าสู่ระบบ (tc02VerifyLaunchPage())
- 3 วิธี: กรอกชื่อผู้ใช้และรหัสผ่านในแบบฟอร์มเข้าสู่ระบบ (tc03EnterCredentials())
- 4 วิธี: ตรวจสอบการมีอยู่ของ Manager ID บน User Dashboard (tc04VerifyLoggedInPage())
- 5 วิธี: ตรวจสอบลิงก์เพิ่มเติมอีกสองสามรายการบน User DashBoard (tc05VerifyHyperlinks())
รหัสสำหรับสถานการณ์ของเรา:
package com.group.guru99; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.Assert; import org.testng.annotations.Test; public class TC_Class1 { public static final WebDriver webDriver = new FirefoxDriver();; String launchPageHeading = "//h3[text()='Guru99 Bank']"; final String userName_element = "//input[@name='uid']", password_element = "//input[@name='password']", signIn_element = "//input[@name='btnLogin']"; final String userName_value = "mngr28642", password_value = "ydAnate"; final String managerID = "//td[contains(text(),'Manger Id')]"; final String newCustomer = "//a[@href='addcustomerpage.php']", fundTransfer = "//a[@href='FundTransInput.php']"; /** * This test case will initialize the webDriver */ @Test(groups = { "bonding", "strong_ties" }) public void tc01LaunchURL() { webDriver.manage().window().maximize(); webDriver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); webDriver.get("http://www.demo.guru99.com/V4/"); } /** * Will check the presence of Heading on Login Page */ @Test(groups = { "bonding" }) public void tc02VerifyLaunchPage() { Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(), "Home Page heading is not displayed"); System.out.println("Home Page heading is displayed"); } /** * This test case will enter User name, password and will then click on * signIn button */ @Test(groups = { "bonding", "strong_ties" }) public void tc03EnterCredentials() { webDriver.findElement(By.xpath(userName_element)).sendKeys(userName_value); webDriver.findElement(By.xpath(password_element)).sendKeys(password_value); webDriver.findElement(By.xpath(signIn_element)).click(); } /** * This test case will verify manger's ID presence on DashBoard */ @Test(groups = { "strong_ties" }) public void tc04VerifyLoggedInPage() { Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(), "Manager ID label is not displayed"); System.out.println("Manger Id label is displayed"); } /** * This test case will check the presence of presence of New customer link * And FundTransfer link in Left pannel */ @Test(groups = { "bonding" }) public void tc05VerifyHyperlinks() { Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(), "New customer hyperlink is not displayed"); System.out.println("New customer hyperlink is displayed"); Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(), "Fund Transfer hyperlink is not displayed"); System.out.println("Fund Transfer hyperlink is displayed"); } }
โปรดทราบ: ข้อมูลรับรองจะใช้ได้เพียง 20 วันเท่านั้น ดังนั้น หากคุณพยายามเรียกใช้โค้ดบนเครื่องของคุณ คุณอาจพบข้อผิดพลาดเกี่ยวกับข้อมูลรับรองที่ไม่ถูกต้อง
คำอธิบายของรหัส:
ตามที่กล่าวไว้ข้างต้น เราได้สร้างกรณีทดสอบ 5 กรณีสำหรับการดำเนินการแต่ละอย่างในวิธีที่เป็นอิสระ
สำหรับทุกวิธี เราได้เชื่อมโยงพารามิเตอร์กลุ่มกับค่าบางค่า
โดยพื้นฐานแล้ว นี่คือชื่อของกลุ่มที่แตกต่างกัน เช่น “strong_ties” และ “bonding”
- วิธีการแรกและที่สามถูกแท็กเป็น “bonding” และ “strong_ties” ซึ่งหมายความว่าหาก XML ได้รับการอัปเดตในกลุ่มใดกลุ่มหนึ่ง กรณีทดสอบ จะวิ่ง.
- วิธีที่สองถูกแท็กเฉพาะกลุ่ม "พันธะ" หมายความว่าหากมีการอัปเดต XML ด้วยกลุ่มพันธะ เฉพาะในกรณีนั้นกรณีการทดสอบนี้จะทำงาน
- กรณีทดสอบที่สี่ถูกแท็กเป็นกลุ่ม strong_ties ซึ่งหมายความว่ากรณีทดสอบนี้จะรันเฉพาะเมื่อมีการอัปเดต XML ด้วยชื่อกลุ่ม strong_ties เท่านั้น
- สุดท้ายแต่ไม่ใช่กรณีทดสอบที่ห้าน้อยที่สุดถูกแนบเข้ากับกลุ่มพันธะ ซึ่งหมายความว่ากรณีทดสอบนี้จะรันก็ต่อเมื่อมีการอัพเดต XML ด้วยชื่อกลุ่มพันธะ
โดยรวมแล้วเรามี 4 สถานการณ์;
สถานการณ์จำลอง 1: เราต้องการรันกรณีทดสอบทั้งหมดโดยไม่คำนึงถึงชื่อกลุ่ม ในกรณีนี้ เราจะลบแท็กกลุ่มออกจากการรัน XML
สถานการณ์จำลอง 2: เราต้องการรันการทดสอบบางอย่างที่เกี่ยวข้องกับกลุ่มใดกลุ่มหนึ่งเท่านั้น เช่น strong_ties หรือ bonding โปรดดู:
- ในวิดีโอนี้ พารามิเตอร์กลุ่มถูกแสดงความคิดเห็นจากการรัน XML ดังนั้นคุณจะเห็นกรณีทดสอบทั้งหมดถูกดำเนินการ
- ต่อจากวิดีโอ ตอนนี้เราได้รวมชื่อกลุ่มไว้ใน XML แล้ว คุณสามารถดูเฉพาะกรณีทดสอบเฉพาะสำหรับกลุ่มนั้นเท่านั้นที่ทำงานอยู่
สถานการณ์จำลอง 3: เรากำลังใช้กลไก Exclude เพื่อแยกกรณีทดสอบ โปรดดูวิดีโอ
- คุณจะเห็นว่าเราใช้กรณีทดสอบยกเว้นบางส่วน (tc02) โดยการเขียนชื่อในการรัน XML ในผลลัพธ์สุดท้าย กรณีทดสอบดังกล่าวไม่ทำงาน
สถานการณ์จำลอง 4: สุดท้ายนี้ เรากำลังใช้กลไกการทดสอบรวมเพื่อรวมกรณีการทดสอบ (tc01LaunchURL, tc03EnterCredentials และ tc05VerifyHyperlinks) โปรดดูวิดีโอ
ในวิดีโอนี้ คุณจะเห็นว่ากรณีทดสอบที่กล่าวถึงใน XML กำลังทำงานเฉพาะระหว่างการดำเนินการทดสอบเท่านั้น
กรุณาดาวน์โหลดรหัสจากรหัสสำหรับตัวอย่างข้างต้น -
สรุป
เราได้เรียนรู้วิธีที่ค่อนข้างใหม่ในการรันกรณีทดสอบโดยใช้ XML ในโครงการ Maven
เราเริ่มต้นด้วยการให้คำแนะนำสั้นๆ เกี่ยวกับ testNG และดำเนินต่อไปด้วยข้อมูลจำเพาะทางเทคนิคฉบับเต็มของกลุ่ม การไม่รวม และการรวม