Ομάδες δοκιμής – Συμπερίληψη & Εξαίρεση (Παράδειγμα)

TestNG είναι ένα πλαίσιο δοκιμών που καλύπτει διαφορετικούς τύπους σχεδίων δοκιμών, όπως δοκιμές μονάδας, λειτουργικότητας, από άκρο σε άκρο, διεπαφή χρήστη και δοκιμές ενοποίησης.

Μπορείτε να εκτελέσετε μεμονωμένα ή πολλαπλά πακέτα (το πακέτο εδώ σημαίνει την ενθυλάκωση μιας ομάδας κλάσεων σε μια σωστή μορφή διευθυντή) δημιουργώντας XML και εκτελώντας το μέσω του maven.

TestNG Ομάδες με Παράδειγμα

Χρησιμοποιούμε ομάδες σε Testng πότε,

  • Δεν θέλουμε να ορίσουμε τις μεθόδους δοκιμής ξεχωριστά σε διαφορετικές κλάσεις (ανάλογα με τη λειτουργικότητα) και
  • Ταυτόχρονα θέλετε να αγνοήσετε (όχι να εκτελέσετε) κάποιες περιπτώσεις δοκιμής σαν να μην υπάρχουν στον κώδικα.
  • Οπότε για να γίνει αυτό πρέπει να τους Ομαδοποιήσουμε. Αυτό γίνεται με τη χρήση των μηχανισμών "include" και "exclude" που υποστηρίζονται στο testNG.

Στο παρακάτω παράδειγμα, δείξαμε τη σύνταξη του τρόπου χρήσης ομάδων στο αρχείο XML.

@Test (groups = { "bonding", "strong_ties" })

Εδώ χρησιμοποιούμε 2 ονόματα ομάδων, π.χ. "bonding" και "strong_ties" (αυτά είναι τα λογικά ονόματα που μπορούν να τροποποιηθούν σύμφωνα με την επιθυμία σας).

<groups> Η ετικέτα ορίζει την έναρξη των ομάδων σε XML.

Προσαρμόστε την XML σας για να επιλέξετε την αναφερόμενη ομάδα από τις δοκιμαστικές τάξεις. Παρακάτω αναφέρεται η σύνταξη του τρόπου δήλωσης ομάδων σε ένα αρχείο XML, π.χ

 <groups>		
   <run>		
    <include name="bonding" />		
   </run>		
  </groups>		

Έτσι, ας υποθέσουμε ότι υπάρχουν 10 μέθοδοι δοκιμής σε μια τάξη.

Από αυτούς,

  • 6 μέθοδοι επισημαίνονται στην ομάδα "bonding" και
  • 4 είναι στην ομάδα «δυνατοί_δεσμοί».

Προχωρώντας προς τα εμπρός, θα στήσουμε το 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}" />

Σημείωση: Μπορούμε να συμπεριλάβουμε/εξαιρέσουμε πολλαπλές περιπτώσεις δοκιμών μία φορά τη φορά, κάτι που λειτουργεί και με τις Ομάδες.

τρέξιμο TestNG Ομαδοποίηση, συμπερίληψη, εξαίρεση κώδικα (βίντεο επίδειξης)

Επεξήγηση του Java Κώδικας και XML με το ομάδα, εξαίρεση και συμπερίληψη την ετικέτα σε XML.

Σενάριο δοκιμής: Εκκινήστε τον ιστότοπο Guru99 demo Banking, επαληθεύστε ότι υπάρχουν λίγα πράγματα στη σελίδα σύνδεσης μετά από αυτό, εισαγάγετε διαπιστευτήρια και επαληθεύστε ξανά μερικά νέα πράγματα στην εφαρμογή όταν συνδεθείτε.

τρέξιμο TestNG Κωδικός Ομάδας, Συμπερίληψης, Εξαίρεσης

Σημείωση: Κάθε βήμα που κωδικοποιείτε θα πρέπει να δηλώνεται σε ξεχωριστές μεθόδους, αλλά όταν εκτελείται, θα εκτελεί μεθόδους δοκιμής ανάλογα με τις καταχωρήσεις στο αρχείο XML.

  • Μέθοδος 1: Εκκίνηση του προγράμματος περιήγησης και εκκίνηση διεύθυνσης URL (tc01LaunchURL())
  • Μέθοδος 2: Επαλήθευση της επικεφαλίδας σελίδας σύνδεσης (tc02VerifyLaunchPage())
  • Μέθοδος 3: Εισαγάγετε όνομα χρήστη και κωδικό πρόσβασης στη φόρμα σύνδεσης (tc03EnterCredentials())
  • Μέθοδος 4: Επαληθεύστε την παρουσία του αναγνωριστικού διαχειριστή στον Πίνακα ελέγχου χρήστη (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 δοκιμαστικές περιπτώσεις για την εκτέλεση κάθε ενέργειας σε ανεξάρτητες μεθόδους.

Για κάθε μέθοδο, έχουμε συσχετίσει μια παράμετρο ομάδας με κάποια τιμή.

Βασικά, αυτές είναι οι ονομασίες των διαφοροποιητικών ομάδων π.χ. «δυνατοί_δεσμοί» και «δέσιμο».

  • Η πρώτη και η τρίτη μέθοδος επισημαίνονται με την ετικέτα "bonding", "strong_ties" που σημαίνει ότι εάν η XML ενημερωθεί σε οποιαδήποτε ομάδα, αυτό Δοκιμαστική θήκη θα τρέξει.
  • Η δεύτερη μέθοδος επισημαίνεται μόνο στην ομάδα "bonding" σημαίνει ότι εάν η XML ενημερωθεί με την ομάδα bonding. Μόνο σε αυτήν την περίπτωση θα εκτελεστεί αυτή η δοκιμαστική περίπτωση.
  • Η τέταρτη περίπτωση δοκιμής έχει επισημανθεί στην ομάδα strong_ties, πράγμα που σημαίνει ότι αυτή η δοκιμαστική περίπτωση θα εκτελεστεί μόνο εάν το XML ενημερωθεί με το όνομα ομάδας strong_ties.
  • Η τελευταία αλλά όχι λιγότερο σημαντική πέμπτη περίπτωση δοκιμής είναι συνδεδεμένη με την ομάδα συγκόλλησης, πράγμα που σημαίνει ότι αυτή η δοκιμαστική περίπτωση θα εκτελεστεί μόνο εάν η XML ενημερωθεί με το όνομα της ομάδας συγκόλλησης.

Άρα συνολικά, έχουμε 4 σενάρια.

Σενάριο 1: Θέλουμε να εκτελέσουμε όλες τις δοκιμαστικές περιπτώσεις ανεξάρτητα από το όνομα της ομάδας. Σε αυτήν την περίπτωση, θα αφαιρέσουμε την ετικέτα ομάδας από την εκτέλεση XML.

Σενάριο 2: Θέλουμε να εκτελέσουμε μερικά τεστ που σχετίζονται μόνο με οποιαδήποτε από τις ομάδες, π.χ. δυνατούς_δεσμούς ή δεσμούς. Ανατρέξτε:

  • Σε αυτό το βίντεο, η παράμετρος ομάδας σχολιάζεται από την εκτέλεση XML. Ως εκ τούτου, θα δείτε ότι όλες οι δοκιμαστικές περιπτώσεις εκτελέστηκαν.
  • Στη συνέχεια του βίντεο, τώρα έχουμε συμπεριλάβει το όνομα ομάδας σε XML, μπορείτε να δείτε μόνο τις δοκιμαστικές περιπτώσεις που εκτελούνται ειδικά για αυτήν την ομάδα.

Σενάριο 3: Χρησιμοποιούμε τον μηχανισμό Εξαίρεσης για να αποκλείσουμε την περίπτωση δοκιμής. Ανατρέξτε στο βίντεο

  • Βλέπετε ότι χρησιμοποιήσαμε την εξαίρεση λίγων δοκιμαστικών περιπτώσεων (tc02) γράφοντας το όνομά τους σε εκτέλεση XML. Στο τελικό αποτέλεσμα, οι αναφερόμενες περιπτώσεις δοκιμών δεν εκτελέστηκαν.

Σενάριο 4: Τέλος, χρησιμοποιούμε τον μηχανισμό δοκιμής συμπερίληψης για να συμπεριλάβουμε τις δοκιμαστικές περιπτώσεις (tc01LaunchURL, tc03EnterCredentials και tc05VerifyHyperlinks). Ανατρέξτε στο βίντεο

Σε αυτό το βίντεο, θα δείτε ότι οι περιπτώσεις δοκιμών που αναφέρονται στην XML εκτελούνται μόνο κατά την εκτέλεση της δοκιμής.

Κάντε λήψη του κώδικα από τον κώδικα για το παραπάνω παράδειγμα-

Κατεβάστε τον παραπάνω Κώδικα

Συμπέρασμα

Μάθαμε εδώ έναν σχετικά νέο τρόπο εκτέλεσης δοκιμαστικών περιπτώσεων χρησιμοποιώντας XML στο έργο Maven.

Ξεκινήσαμε παρέχοντας μια σύντομη εισαγωγή στο testNG και συνεχίσαμε με τις πλήρεις τεχνικές προδιαγραφές των Ομάδων, εξαιρέστε και συμπεριλάβαμε.