Εξαιρετικά σημαντική λίστα 43+ ερωτήσεων και απαντήσεων συνέντευξης TestNg

Σε αυτό το σεμινάριο θα συζητήσουμε τα εξαντλητικά σύνολα του Critical TestNg ερωτήσεις και απαντήσεις συνέντευξης και διανέμεται ανάλογα με το επίπεδο δυσκολίας, όπου μπορείτε καλύτερα να εξοπλιστείτε γρήγορα στο TestNg και θα πρέπει να μπορείτε να καθαρίσετε οποιοδήποτε TestNg Συνέντευξη ερωτήσεις και απαντήσεις γύρους.

Αυτά τα σετ ερωτήσεων συνέντευξης Testng διανέμονται στις ακόλουθες ενότητες ή σετ:

Ερωτήσεις και απαντήσεις στη συνέντευξη TestNg
Ερωτήσεις και απαντήσεις στη συνέντευξη TestNg

Ερωτήσεις συνέντευξης TestNg - Βασικές

Ερωτήσεις συνέντευξης TestNg - Ενδιάμεσος

Ερωτήσεις συνέντευξης TestNg - Εκ των προτέρων

Testng Συνέντευξη ερωτήσεις και απαντήσεις || Σετ 1

Τι είναι το TestNG;

Το TestNg αντιπροσωπεύει βασικά «Δοκιμή επόμενης γενιάς"Είναι ένα πλαίσιο δοκιμών μονάδας που ελέγχει τη ροή και τη σειρά των σεναρίων αυτοματισμού και αυτοματισμού δοκιμών παρέχοντας διάφορους σχολιασμούς με τις λειτουργίες τους.

Ποια είναι τα πλεονεκτήματα του TestNg;

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

            Β. Μέθοδοι δοκιμών ή μέθοδοι δοκιμαστικού σεναρίου Παράλληλη εκτέλεση μπορεί να επιτευχθεί με το TestNg

           C. Το TestNg μπορεί εύκολα να ενσωματωθεί με διαφορετικά εργαλεία κατασκευής όπως το Maven, το Gradle. Επίσης, μπορεί να ενσωματωθεί σε εργαλεία CICD όπως το Jenkins.

           D. Το TestNG παρέχει λεπτομέρειες σχετικά με τη δυνατότητα αναφοράς HTML και ενσωματώνεται εύκολα με άλλες πλατφόρμες αναφοράς δοκιμών, όπως Allure, Extent Report με δυνατότητες του TestNG Listeners.

          Ε. Όλες οι δοκιμές μπορούν να ενεργοποιηθούν από το αρχείο testng.xml όπου μπορείτε να αναφέρετε το όνομα Test class / Test / Test Package που θα εκτελεστεί.

          F. Ο έλεγχος βάσει δεδομένων μπορεί να γίνει με τον σχολιασμό TestNg DataProvider. Επίσης, οι δοκιμές παραμετροποίησης μπορούν να γίνουν και μέσω Testng.xml, όπως κατά την εκτέλεση δοκιμών μεταξύ προγραμμάτων περιήγησης, μπορείτε να παραμετροποιήσετε τα διαφορετικά προγράμματα περιήγησης για διαφορετικές δοκιμές. Αυτή η δυνατότητα βοηθά στη δημιουργία του πλαισίου βάσει δεδομένων με το TestNG.

         G. TestNg Παρέχει έναν τρόπο συμπερίληψης / εξαίρεσης ενός συνόλου δοκιμής από το tesngNg.xml με το χαρακτηριστικό include and exclude.

         H. Με το TestNg, μπορείτε να ομαδοποιήσετε τις δοκιμές και την ένεση εξάρτησης μεταξύ των δοκιμών.

         I. Το TestNg παρέχει σε πολλούς ακροατές αυτούς που μπορείτε να πετύχετε πολλά πράγματα όπως μπορείτε να κάνετε προσαρμοσμένες αναφορές (IReporter), ενοποίηση με διαφορετικά εργαλεία (ITestListener), Αλλαγή της συμπεριφοράς του σχολιασμού TestNG Test στο χρόνο εκτέλεσης με IAnnotationTransformer και πολλά άλλα.

        J. Μπορείτε να παραλείψετε τη συγκεκριμένη δοκιμή, να δώσετε προτεραιότητα στη δοκιμαστική σας σειρά, να δημιουργήσετε μια δοκιμασία με χρονικό περιορισμό με σχολιασμούς TestNg Test

        K. Μπορείτε να χρησιμοποιήσετε το Hard Assertion καθώς και το Soft Assertion με το TestNg για τη σύνταξη δήλωσης Assert.

        Το L. TestNg δημιουργεί το TestNG-fail.xml μετά από κάθε εκτέλεση της δοκιμής, οπότε μπορείτε να κάνετε το ίδιο παραγόμενο TestNG-fail.xml για να εκτελέσετε ξανά τα αποτυχημένα σενάρια δοκιμής σας.

       Το M. TestNg παρέχει διάφορα σχόλια δοκιμής, όπως @BeforeMethod, @AfterMethod, @BeforeTest, @ AfterTest. @BeforeSuite,@AfterSuite.

       Ν. Μπορείτε να εκτελέσετε την αναμενόμενη εξαίρεση Δοκιμή με το TestNg.

       O. Μπορείτε να εκτελέσετε ξανά την αποτυχημένη δοκιμή με το IretryAnalyzer of Testng 

Πως εσύ ενεργοποιήστε και εκτελέστε το TestNg Test Script?

Μπορείτε να εκτελέσετε το σενάριο TestNg Test με διάφορους τρόπους: 

      Α. Κάντε δεξί κλικ στο Test Class και "run as" και επιλέξτε την επιλογή "TestNg Test."

      Β. Δημιουργήστε testng.xml και δεξιά στο αρχείο και εκτελέστε το αρχείο xml.

      Γ. Εάν ενσωματώσετε το testNg.xml με το εργαλείο κατασκευής όπως το Maven / Gradle, τότε μπορείτε να τρέξετε και από το maven ή το Gradle.

      D. Εάν το εργαλείο κατασκευής όπως το Maven / Gradle είναι ενσωματωμένο στο CICD, τότε μπορείτε να εκτελέσετε το CICD, δηλαδή από το Jenkins.

Δηλώστε τους σχολιασμούς Testng που είναι διαθέσιμοι;

Οι σχολιασμοί Testng Test που χρησιμοποιούνται κυρίως είναι:

@BeforeSuite

@AfterSuite

@BeforeTest

@AfterTest

@Πριν το μάθημα

@Μετά το μάθημα

@BeforeMethod

@AfterMethod

@BeforeGroups

@AfterGroups

@Δοκιμή

Αναφέρετε την ακολουθία εκτέλεσης των σχολιασμών TestNg;

Από την άποψη της εκτέλεσης δοκιμής, ακολουθεί η παρακάτω ακολουθία για όλους τους διαθέσιμους σχολιασμούς TestNg:

Σχολιασμοί Προϋπόθεσης:

@BeforeSuite

@BeforeTest

@Πριν το μάθημα

@BeforeMethod

Σχολιασμοί δοκιμής:

@Δοκιμή

Σχολιασμοί PostCondition: 

@AfterSuite

@AfterTest

@Μετά το μάθημα

@AfterMethod

Πώς να απενεργοποιήσετε την εκτέλεση δοκιμής για ένα σενάριο δοκιμής;

Μπορείτε να χρησιμοποιήσετε το ενεργοποιημένο χαρακτηριστικό ισούται με ψευδές στο χαρακτηριστικό σχολιασμού @Test όπως αναφέρεται παρακάτω:

@Test(enabled = false)
public void logout(){
   System.out.println("Sample Test");
}

Πώς μπορείτε να καθορίσετε ακροατές στο TestNG xml;

Μπορείτε να χρησιμοποιήσετε το αρχείο Tesng xml για να αναφέρετε τους ακροατές που θα χρησιμοποιηθούν ως μέρος των δοκιμών σεναρίων εκτέλεσης, στην παρακάτω προσέγγιση:

        

        

...

Τι είναι το Timeout Test στο TestNg;

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

@Test(timeOut = 6000) // this time in mulliseconds
public void testShouldPass() throws InterruptedException {
   Thread.sleep(2000);
}

Πώς να επιτύχετε τη δοκιμή αναμενόμενης εξαίρεσης με το TestNG;

Εάν μια μέθοδος δοκιμής ρίξει μια εξαίρεση, η οποία είναι η ίδια όπως καθορίζεται ως μέρος του χαρακτηριστικού δοκιμαστικού σχολιασμού ExpExceptions, τότε το TestNg θα σημάνει τη δοκιμή ως επιτυχημένη.

@Test(expectedExceptions = ArithmeticException.class)
public void TestDivision() {
   int i = 1 / 0;
}

 Η παραπάνω μέθοδος δοκιμής θα περάσει καθώς ρίχνει την εξαίρεση που αναμένεται από το TestNG.

Ποια είναι η διαφορά μεταξύ σχολιασμού @BeforeTest και # @ BeforeMethod;

Το @BeforeTest εκτελείται μία φορά πριν από κάθε δοκιμή ετικέτα αναφέρεται στο αρχείο testng.xml 

Το @BeforeMethod εκτελείται πριν από κάθε μέθοδο δοκιμαστικού σεναρίου.

Ποιο είναι το πλεονέκτημα της χρήσης του αρχείου testng.xml;

Με το αρχείο testng.xml, μπορείτε να ελέγξετε τη ροή εκτέλεσης με μία δοκιμαστική σουίτα ή πολλαπλή δοκιμαστική σουίτα σε ένα αρχείο δοκιμής xml. Μερικά από τα σημαντικά χαρακτηριστικά είναι:

Το αρχείο A. testng.xml μας επιτρέπει να αποκλείσουμε και να συμπεριλάβουμε μεθόδους δοκιμής και εκτέλεση ομάδας δοκιμών.

Β. Μπορείτε να περάσετε δεδομένα δοκιμών / παραμέτρους μέσω testng.xml.

Γ. Μπορείτε να προσθέσετε εξάρτηση μεταξύ των μεθόδων δοκιμής και επίσης μιας ομάδας μεθόδων δοκιμής

Δ. Μπορείτε να δώσετε προτεραιότητα στις δοκιμαστικές περιπτώσεις.

Ε. Επιτυγχάνεται παράλληλη δοκιμή εκτέλεσης δοκιμαστικών περιπτώσεων

ΣΤ. Μπορείτε να εφαρμόσετε διαφορετικούς ακροατές testng και να τους χρησιμοποιήσετε αναφέροντας αυτούς στο testng.xml.

Ζ. Εάν εκτελέσετε τη σουίτα σας με το testng.xml, τότε θα αποτύχετε το τεστ για την επόμενη επανάληψη χρησιμοποιώντας το TestNG-fail.xml που δημιουργείται μετά από κάθε εκτέλεση.

H. Μπορείτε να εκτελέσετε συγκεκριμένες ομάδες δοκιμών χρησιμοποιώντας ετικέτα TestNG xml.

Πόσους τύπους εξαρτήσεων μπορείτε να επιτύχετε χρησιμοποιώντας το TestNG;

Υπάρχουν δύο τύποι εξαρτήσεων που μπορούμε να επιτύχουμε με το TestNG: 

A. DependsOnMethods: 

Χρησιμοποιώντας αυτό το χαρακτηριστικό dependOnMethods, ορίζετε ποια μέθοδος δοκιμής θα εξαρτάται από άλλες μεθόδους δοκιμής, οπότε εάν η εξαρτώμενη μέθοδος αποτύχει ή δεν εκτελείται, τότε η εξαρτημένη μέθοδος δοκιμής επίσης δεν θα εκτελεστεί.

@Test
public void loginUserProfile() {
   System.out.println("Login user ");
}
@Test(dependsOnMethods = "loginUserProfile")
public void logOutPage_user() {
   System.out.println("Logout page for User");
}

 Εδώ είναι η μέθοδος δοκιμής logOutPage_user που θα εκτελεστεί μετά την επιτυχή εκτέλεση της δοκιμής loginUserProfile.

B. εξαρτάται από τις Ομάδες: 

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

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

@Test(groups="AtestGroupName")
public void testcaseOne()
{
   System.out.println("testcaseOne in process");
}
@Test(groups="AtestGroupName")
public void testcaseTwo()
{
   System.out.println("testcaseTwo in process");
}
@Test(dependsOnGroups="AtestGroupName")
public void testcaseThree()
{
   System.out.println("testcaseThree in process");
}

Testng Συνέντευξη ερωτήσεις και απαντήσεις || Σετ 2

Τι σημαίνει το InvocationCount στο TestNG;

invocationCount είναι ένα χαρακτηριστικό δοκιμαστικού σχολιασμού με το οποίο μπορείτε να ορίσετε τον αριθμό επανάληψης που θα εκτελεστεί η μέθοδος δοκιμής σε μία μόνο εκτέλεση. 

@Test(invocationCount = 2)
public void testOfInvCount() {
   System.out.println("Invocation count test in progress");
}

 Η παραπάνω δοκιμή θα εκτελεστεί δύο φορές καθώς το InvocationCount αναφέρεται ως 2.

Τι είναι οι ακροατές στο TestNG;

Στο TestNg οι ακροατές είναι βασικά διεπαφή σε Java που πρέπει να εφαρμόσετε στην τάξη σας. Η εφαρμοζόμενη κλάση θα συνεχίσει να ακούει συγκεκριμένα συμβάντα και εκτελεί το συγκεκριμένο μπλοκ κώδικα που σχετίζεται με αυτό το συμβάν. Εδώ, όταν εφαρμόζετε τη διεπαφή, τελικά εφαρμόζετε τις μη εκτελεσμένες μεθόδους και αυτές οι ομάδες κώδικα ή οι μέθοδοι θα εκτελεστούν όπως και όταν το συγκεκριμένο συμβάν ενεργοποιείται. 

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

Αναφέρετε τις διαφορές μεταξύ των σχολιασμών @Factory και @Dataprovider στο TestNg;

@Dataprovider: Όταν θέλετε να εκτελέσετε την ίδια δοκιμή, αλλά με διαφορετικά διαφορετικά σύνολα δεδομένων σε κάθε εκτέλεση, μπορείτε να χρησιμοποιήσετε το σχολιασμό του dataprovider, και αυτό μπορείτε να επιτύχετε την προσέγγιση δοκιμών δεδομένων. Εδώ η εκτέλεση της μεθόδου δοκιμής γίνεται χρησιμοποιώντας την ίδια παρουσία κλάσης στην οποία ανήκει η μέθοδος δοκιμής.

@Factory: Αυτό θα εκτελεστεί όλες οι μέθοδοι δοκιμής που υπάρχουν σε μια δοκιμαστική τάξη χρησιμοποιώντας ξεχωριστές και πολλαπλές εμφανίσεις της τάξης.

Πώς να χρησιμοποιήσετε το TestNG Reporter Class για τη δημιουργία αρχείου καταγραφής;

Μπορείτε να καταγράψετε τις λεπτομέρειες και τα δεδομένα χρησιμοποιώντας την τάξη Reporter και αυτά τα αρχεία καταγραφής θα καταγραφούν από την αναφορά που δημιουργείται από το TestNG

Reporter.log ("Μήνυμα καταγραφής");

Πώς να κάνετε χειρισμό εξαιρέσεων στο TestNG;

Μπορείτε να αναφέρετε τον τύπο της αναμενόμενης εξαίρεσης σε ένα χαρακτηριστικό που ονομάζεται expectExceptions με τον σχολιασμό @test. Σε αυτήν την περίπτωση, τότε το TestNg θα σημάνει τη δοκιμή ως περασμένη.

@Test (توقعExceptions = numberFormatException.class)

Πώς να επιτύχετε ένεση εξάρτησης μέσω TestNg XML;

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

Ποιες είναι οι διάφορες προσεγγίσεις ισχυρισμού για το TestNG;

Μπορούμε να χρησιμοποιήσουμε δύο τύπους ισχυρισμών με το TestNg. 

Απαλό ισχυρισμό

Σκληροί ισχυρισμοί 

Αναφέρετε μερικούς από τους ισχυρισμούς που χρησιμοποιούνται συνήθως με το TestNG 

Μερικές από τις ευρέως χρησιμοποιούμενες μεθόδους ισχυρισμού στο TestNG:

  • assertEquals (πραγματικό boolean, αναμενόμενο boolean)
  • assertEqual (String πραγματικό, String αναμένεται)
  • assertEqual (Πραγματικό αποτέλεσμα συμβολοσειράς, αναμενόμενο αποτέλεσμα συμβολοσειράς, μήνυμα συμβολοσειράς)
  • assertTrue (κατάσταση)
  • assertFalse (κατάσταση)
  • assertFalse (κατάσταση, μήνυμα)
  • assertTrue (κατάσταση, μήνυμα)

Τι καταλαβαίνετε από τους ισχυρισμούς στο TestNG;

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

Διαφορά μεταξύ Hard assert και soft assert στο TestNg

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

Ενώ από την άλλη πλευρά, το Soft Assert λαμβάνει υπόψη το ενδεχόμενο επικύρωσης όλων των σημείων διεκδίκησης, ακόμη και αν υπάρχουν αποτυχίες σε οποιονδήποτε από τους ισχυρισμούς. Αυτό σημαίνει ότι η εκτέλεση της δοκιμής δεν ακυρώνεται ακόμη και αν ένας ισχυρισμός αποτύχει.

Πώς να γράψετε απαλή δήλωση στο TestNg 

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

 @Test
   public void assertion() {
   SoftAssert softAssertion = new SoftAssert();
   //Assertion 1 
   softAssertion.assertEquals("exp", "act");
   //Assertion 2 
   softAssertion.assertEquals(123, 123);
   //Assertion 3 
   softAssertion.assertEquals("actual Value", "expected value");
   // At the end considering all the assertion values
   softAssertion.assertAll();
}

Πώς να χρησιμοποιήσετε την κανονική έκφραση σε ομάδες TestNG;

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

Για παράδειγμα, εάν θέλετε να εκτελέσετε όλες τις ομάδες που ξεκινούν με "testX" σύμφωνα με το όνομα, τότε μπορείτε να χρησιμοποιήσετε την κανονική έκφραση ως testX. * Στο αρχείο TestNG XML.

Testng Συνέντευξη ερωτήσεις και απαντήσεις || Σετ 3

Πώς αποκλείετε μια ομάδα από τον κύκλο εκτέλεσης δοκιμής;

Μπορείτε να χρησιμοποιήσετε την ετικέτα αποκλεισμού για να αποκλείσετε την εκτέλεση μιας ομάδας δοκιμαστικής υπόθεσης με τον παρακάτω τρόπο στο αρχείο Testng xml 

    

        

        

    

Ποιοι είναι οι τύποι αναφορών που δημιουργούνται στο TestNG από προεπιλογή;

Το TestNG δημιουργεί δύο είδη αναφορών μετά την εκτέλεση, οι οποίες είναι:

  • Διαθέσιμες αναφορές
  • Αναφορές ευρετηρίου

Αναφέρετε τη διαφορά μεταξύ της δοκιμαστικής σουίτας TestNG και της δοκιμής TestNG;

Το TestNG test suite είναι η συλλογή δοκιμαστικών τάξεων και μεθόδων δοκιμής που μπορούν να εκτελεστούν ταυτόχρονα, καθώς και παράλληλα από το αρχείο TestNG XML. 

Από την άλλη πλευρά, η μέθοδος δοκιμής TestNG είναι ένα αρχείο δοκιμαστικής υπόθεσης ή μέθοδος δοκιμής.

Ποια είναι η χρήση του χαρακτηριστικού threadPoolSize με το σχολιασμό @Test 

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

Το χαρακτηριστικό αγνοείται εάν δεν αναφέρεται το invocationCount.

 @Test(threadPoolSize = 3) 
   public void testCaseOne(){
      System.out.println("testCaseOne in process");
   }

Στην παραπάνω μέθοδο δοκιμής, το testCaseOne θα κληθεί από τα τρία διαφορετικά νήματα.

Τι κάνει τα χαρακτηριστικά AlwaysRun;

Αυτό το χαρακτηριστικό πάνταRun σχολιασμού χρησιμοποιείται όποτε θέλετε να εκτελέσετε τη μέθοδο δοκιμής, ανεξάρτητα από τις εξαρτημένες παραμέτρους από τις οποίες εξαρτάται η μέθοδος δοκιμής, αποτυγχάνει. Εάν ορίσετε σε true τότε πρέπει να ορίσετε το χαρακτηριστικό είναι true.

Ποιοι είναι οι διαφορετικοί ακροατές που είναι διαθέσιμοι;

ITestListener

IReporter 

ISuiteListener

IAnotationTransformer 

IAnotationTransformer2

Αγαπημένος 

IInvokedMethodListener 

IMethodInterceptor 

Ποια είναι η προεπιλεγμένη τιμή για την προτεραιότητα TestNG;

Η προτεραιότητα TestNG έχει την προεπιλεγμένη τιμή είναι μηδέν.

Πώς να εκτελέσετε ξανά τις δοκιμασίες TestNg Failed χρησιμοποιώντας τον μηχανισμό Auto Retry;

Το TestNg παρέχει μια διεπαφή που ονομάζεται ως IRetryAnalyzer ακροατής που μπορείτε να εφαρμόσετε τη διεπαφή αυτόματη εκ νέου εκτέλεση των αποτυχημένων δοκιμαστικών σεναρίων αναφέροντας την κλάση στο αρχείο testNg.XML, Εδώ είναι ο παρακάτω κώδικας για την εφαρμογή του ίδιου:

Αποτυχημένες δοκιμές TestNg Auto Retry
Testng ερωτήσεις και απαντήσεις συνέντευξης- TestNg Retry Test Script

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

Δεύτερη προσέγγιση: Τρόπος επανεξέτασης TestNg Failed Tests χρησιμοποιώντας τον μηχανισμό Auto Retry

Στην παρακάτω προσέγγιση μπορείτε να δημιουργήσετε 2 τάξεις, δηλαδή μία είναι Επανάληψη κλάσης όπου μπορείτε να διατηρήσετε τη λογική του ελέγχου του αριθμού επανάληψης σε περίπτωση αποτυχημένων δοκιμών που θα υλοποιήσουν τη διεπαφή Testng IRetryAnalyzer.

Μια άλλη κατηγορία είναι βασικά η οποία θα εφαρμόσει τον άλλο ακροατή διεπαφής IAnnotationTransformer και θα εφαρμόσει τη μέθοδο μετατρέψουν που αλληλεπιδρά εσωτερικά με την προηγούμενη τάξη (δηλ Επανάληψη κλάσης)

public class Retry implements IRetryAnalyzer {

    int retryCounter = 0;
    
    // The maximum number of failed execution 
    int autoRetryLimit = 2;

    @Override
    public boolean retry(ITestResult iTestResult) {
        if (retryCounter < autoRetryLimit) {
            retryCounter++;
            return true;
        }
        return false;
    }
}

public class CognitiveRetry implements IAnnotationTransformer {


    public void transform(ITestAnnotation annotation, Class testClass, Constructor testCons, Method tMethod){
        IRetryAnalyzer retryAnalyzer=annotation.getRetryAnalyzer();
        if(retryAnalyzer==null){
            annotation.setRetryAnalyzer(Retry.class);
        }
    }
}

και τέλος προσθέστε το Κατηγορία CognitiveRetry στον ακροατή για το αρχείο testng.xml.

<listeners>
    <listener class-name= "com.lambdageeks.cognitiveRetryUtils.CognitiveRetry"/>
</listeners>

Πώς να επιτύχετε την εφαρμογή TestNG itestlistener;

Το ITestListener είναι μια διεπαφή στο TestNg η οποία έχει πολλαπλές μεθόδους (χωρίς εφαρμογή από τη διεπαφή) που μπορεί να εφαρμοστεί από μια τάξη. Κάθε μέθοδος αντιπροσωπεύει συγκεκριμένες λειτουργίες ή σενάρια, επομένως ανάλογα με την ανάγκη σας μπορείτε να εφαρμόσετε αυτές τις μεθόδους.

Για παράδειγμα onTestFailure είναι μια μέθοδος που μπορείτε να εφαρμόσετε όπου θέλετε να εκτελέσετε οποιεσδήποτε λειτουργίες ενώ οποιαδήποτε μέθοδος δοκιμής αποτύχει, ας υποθέσουμε ότι θέλετε να καταγράψετε το στιγμιότυπο οθόνης ενώ σε περίπτωση αποτυχίας μεθόδου δοκιμής, ώστε να μπορείτε να γράψετε τη μέθοδο λήψης στιγμιότυπου οθόνης μέσα onTestFailure , και καθώς το ITestListener είναι μια διεπαφή, ως εκ τούτου το testNg θα συνεχίσει να ακούει τα γεγονότα (δοκιμαστικές αποτυχίες) και όποτε υπάρχουν δοκιμαστικές αποτυχίες, το στιγμιότυπό σας θα καταγράφεται.

Εδώ είναι η εφαρμογή λήψης στιγμιότυπου οθόνης κάθε φορά που δοκιμάζετε το σενάριο που αντιμετωπίζει αποτυχίες:

import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;

import java.io.File;
import java.io.IOException;
import java.util.logging.Logger;

public class CustomListerners implements ITestListener {

    WebDriver driver=null;
    String filePath = "D:\\LambdaGeeks\\SCREENSHOTS";
    @Override
    public void onTestFailure(ITestResult result) {
        String testMethodName=String.valueOf(result.getName()).trim();
        ITestContext testContext = result.getTestContext();
        WebDriver driver = (WebDriver)testContext.getAttribute("driver");
        captureTheScreenShot(testMethodName, driver);
    }

    public void captureTheScreenShot(String methodName, WebDriver driver) {
        File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
        /*
        Each screenshots will get saved with along with the test Name to have better correlation
         */
        try {
            FileUtils.copyFile(scrFile, new File(filePath+methodName+".jpg"));

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public void onFinish(ITestContext context) {}

    public void onTestStart(ITestResult result) {   }

    public void onTestSuccess(ITestResult result) {   }

    public void onTestSkipped(ITestResult result) {   }

    public void onTestFailedButWithinSuccessPercentage(ITestResult result) {   }

    public void onStart(ITestContext context) {   }

}

Και επίσης πρέπει να προσθέσετε αυτήν την τάξη στην ετικέτα ακροατή στο αρχείο testng.xml όπως κάναμε στην προηγούμενη ερώτηση.

Πώς να εφαρμόσετε το testng iAnnotationtransformer;

Το TestNg παρέχει μια διεπαφή που ονομάζεται IAnnotationTransformer που παρέχει μια μέθοδο που ονομάζεται «μετασχηματισμός» την οποία μπορείτε να εφαρμόσετε και θα ενεργοποιηθεί στο χρόνο εκτέλεσης από το TestNG, αυτή η εφαρμογή χρησιμοποιείται για την τροποποίηση της συμπεριφοράς δοκιμαστικού σχολιασμού της κατηγορίας δοκιμής και των μεθόδων δοκιμής

Στο παρακάτω τμήμα θα δούμε πώς θα μπορούσαμε να το κάνουμε αυτό

public class TestClassAnnotations {

    @Test(alwaysRun = true,dependsOnMethods = "testMethodB")
    public void testMethodA() {
        System.out.println("--- Customizing the runtime behavious with ITestAnnotation ---");
    }

    @Test
    public void testMethodB() {
        System.out.println("--- Second TestMethods ---");
        Assert.fail();
    }

}

Από προεπιλογή, εάν εκτελέσουμε τον παραπάνω κώδικα, τότε θα εκτελεστεί μόνο μία μέθοδος, η οποία είναι η δοκιμήMetodeA και μια άλλη μέθοδος, η δοκιμαστική μέθοδος θα αποτύχει επειδή το αποτυγχάνουμε σκόπιμα, χρησιμοποιώντας τη μέθοδο Assert.fail ().

Αλλά αν αλλάξουμε το Alwaysrun = true σχολιασμός σε false χρησιμοποιώντας το IAnotationTransformer τότε αυτή η μέθοδος δεν θα εκτελεστεί, παρακάτω είναι το απόσπασμα κώδικα σχετικά με τον τρόπο υλοποίησης του IAnotationTransformer και χρησιμοποιήστε το στο testing.xml για να αλλάξετε τη συμπεριφορά του σχολιασμού TestNG

Η εφαρμογή των CustomAnnotationTransformers πηγαίνει εδώ:

public class CustomAnnotationTransformers implements IAnnotationTransformer {

    public boolean isTestRunning(ITestAnnotation iTestAnnotation) {
        if (iTestAnnotation.getAlwaysRun()) {
            return true;
        }
        return false;
    }


    public void transform(ITestAnnotation annotations, Class testClasses, Constructor testConstructors, Method testMethods) {

        if (isTestRunning(annotations)) {
            annotations.setEnabled(false);

        }

    }

}

Εδώ είναι ο ακροατής που πρέπει να προσθέσουμε στο αρχείο testing.xml

<listeners>
    <listener class-name= "com.lambdageeks.CustomAnnotationTransformers"/>
</listeners>

Πώς να εφαρμόσετε το testng iinvokedmethodlistener;

Εάν θέλετε να εφαρμόσετε μια δυνατότητα όπου κάποια συγκεκριμένη μέθοδος θα εκτελεστεί πριν και μετά από κάθε μέθοδο δοκιμής του TestNg, τότε αυτή η δυνατότητα θα μπορούσε να εφαρμοστεί από το testng IInvokedMethodListener ακροατής.

 

Ακολουθεί το απόσπασμα κώδικα για την εφαρμογή των δυνατοτήτων:

package com.lambdageeks;

import org.testng.IInvokedMethod;
import org.testng.IInvokedMethodListener;
import org.testng.ITestResult;


public class CustomAnnotationTransformers implements IInvokedMethodListener {

    public void beforeInvocation(IInvokedMethod method, ITestResult testResult) {

        System.out.println(" ::: Before Method from IInvokedMethodListener is Triggered for the Test Method named as :  " + method.getTestMethod().getMethodName() + " ::: ");
    }

    public void afterInvocation(IInvokedMethod method, ITestResult testResult) {

        System.out.println(" :::: After Method from IInvokedMethodListener is Triggered for the Test Method named as :  " + method.getTestMethod().getMethodName() + " ::: ");

    }
}

Εδώ είναι η τάξη δοκιμής για τη δοκιμή της δυνατότητας:

public class TestClassAnnotations {

    @Test(alwaysRun = true)
    public void testMethoddummy() {
        System.out.println("--- This is a test Method , testing the feature of IInvokedMethodListener Testng Listener  ---");

    }

}

Πρέπει να αναφέρετε το TestNG iinvokedmethodlistener στην ετικέτα ακρόασης στο testng.xml όπως πάντα

<listeners>
    <listener class-name="com.lambdageeks.CustomAnnotationTransformers"/>
</listeners>

Το αποτέλεσμα της εκτέλεσης θα μοιάζει με αυτό:

::: Πριν ενεργοποιηθεί η μέθοδος από το IInvokedMethodListener για τη μέθοδο δοκιμής που ονομάζεται: testMethoddummy :::

- Αυτή είναι μια μέθοδος δοκιμής, που ελέγχει τη δυνατότητα του IInvokedMethodListener Testng Listener -

 :::: Μετά τη μέθοδο από το IInvokedMethodListener ενεργοποιείται για τη μέθοδο δοκιμής που ονομάζεται: testMethoddummy :::

Πώς να εφαρμόσετε παρόχους δεδομένων στο TestNG;

Μπορούμε να εφαρμόσουμε το DataProvider χρησιμοποιώντας το TestNg στην παρακάτω προσέγγιση:

public class DataProviderDemo {

    @DataProvider(name = "dpName")
    public Object[][] dataProvidersMethodName() {
        return new Object[][]{{"Lambda"}, {"Geeks"}};
    }

    @Test(dataProvider = "dpName")
    public void dataproviderDummyTestMethod(String dataValues) {
        System.out.println("The Data Params with data provider examples : : " + dataValues);
    }
}

Εάν δεν ορίσουμε την προτεραιότητα της μεθόδου δοκιμής με ποια σειρά εκτελούνται οι δοκιμές στο TestNG;

Οι δοκιμές εκτελούνται με τη σειρά αλφαβητικής σειράς του TestmethodName ..

 

Όπως στο παρακάτω απόσπασμα κώδικα:

public class SequenceTest {

    @Test()
    public void geeks() {
        System.out.println("Sequence Test , Method ran :geeks ");
    }

    @Test()
    public void lambda() {
        System.out.println("Sequence Test , Method ran : lambda ");
    }

    @Test()
    public void abc() {
        System.out.println("Sequence Test , Method ran :abc");
    }
}

Η έξοδος θα μοιάζει με αυτό:

Δοκιμή ακολουθίας, εκτέλεση μεθόδου: abc

Δοκιμή ακολουθίας, εκτέλεση μεθόδου: geeks

Δοκιμή ακολουθίας, εκτέλεση μεθόδου: λάμδα

 

Πώς να εκτελέσετε τα σενάρια δοκιμής σας παράλληλα;

Μπορείτε να εκτελέσετε τα σενάρια δοκιμής σας χρησιμοποιώντας το αρχείο TestNg XML αναφέροντας το παράλληλος = "μέθοδοι" νήμα-μέτρηση = "2 ″, εδώ θα εκτελεστούν 2 παράλληλες περιπτώσεις, εάν θέλετε να εκτελέσετε παράλληλα περισσότερα νήματα.

<suite name="DummyTest" parallel="methods" thread-count="2" >

<listeners>
<listener class-name="org.uncommons.reportng.HTMLReporter" />
<listener class-name="org.uncommons.reportng.JUnitXMLReporter" />
</listeners>
</suite>  

Πώς να ενσωματώσετε το TestNg με το GRADLE build Tool;

Μπορείτε να εκτελέσετε το Testng Suite σε διαβάθμιση με διαφορετικούς τρόπους:

Τρόπος εκτέλεσης TestNg Groups χρησιμοποιώντας το Gradle: Μπορείτε να δημιουργήσετε μια εργασία στο αρχείο build.gradle μπορεί να αναφέρει useTestNG () και αναφέρετε τις παρακάτω λεπτομέρειες ενώ εκτελείτε τις ομάδες δοκιμών.

TestNg Συνέντευξη ερωτήσεις και απαντήσεις-TestNg με Gradle

Τρόπος εκτέλεσης του Testng Default listener με το Gradle για δημιουργία αναφοράς χρησιμοποιώντας τη βιβλιοθήκη TestNg

Ερωτήσεις και απαντήσεις συνέντευξης TestNg- Testng με προεπιλεγμένους ακροατές Gradle
Ερωτήσεις και απαντήσεις συνέντευξης TestNg- Testng με προεπιλεγμένους ακροατές Gradle

Εάν θέλετε να χρησιμοποιήσετε το προσαρμοσμένο πρόγραμμα ακρόασης, μπορείτε να το αναφέρετε στην ακόλουθη προσέγγιση:

TestNg Συνέντευξη Ερωτήσεις και Απαντήσεις-TestNG Custom ακροατές με Gradle
TestNg Συνέντευξη Ερωτήσεις και Απαντήσεις-TestNG Custom ακροατές με Gradle

Πώς να εκτελέσετε το αρχείο Testng Runner xml χρησιμοποιώντας τη γραμμή εντολών;

Μπορείτε να χρησιμοποιήσετε το TestNg Downloaded location και να αναφέρετε το org.testng.TestNg.testNgRunner.xml για να εκτελέσετε το αρχείο xml του δρομέα από τη γραμμή εντολών.

java -cp "/opt/testng-7.1.jar:bin" org.testng.TestNG testngRunner.xml

Πώς να ενσωματώσετε το TestNg XML στο Maven;

Μπορείτε να ενσωματώσετε το TestNg με το Maven με τη χρήση του Plugin που ονομάζεται προσθήκη maven-surefire- όπου μπορείτε να διαμορφώσετε για να εκτελέσετε το αρχείο testNgrunner.xml χρησιμοποιώντας τις διαμορφώσεις:

TestNg Συνέντευξη Ερωτήσεις και απαντήσεις-TestNg-Maven-Surefire Integration

Πώς μπορείτε να καθορίσετε την παράμετρο TestNg Test χρησιμοποιώντας το TestNg και το Maven;

Μπορείτε να καθορίσετε την παράμετρο δοκιμής χρησιμοποιώντας το Maven SureFire Plugin with TestNg.XML αρχείο με τον παρακάτω τρόπο

TestNg Συνέντευξη ερωτήσεις και απαντήσεις-Παράμετρος δοκιμής

Συμπέρασμα: Με αυτό ολοκληρώνουμε τη λίστα όλων των κρίσιμων και σημαντικών Ερωτήσεις και απαντήσεις στη συνέντευξη TestNg , για να έχετε καλύτερη πρόσφυση στο TestNg μπορείτε να περάσετε από το αναλυτική τεκμηρίωση στο TestNg.

Για να μάθετε περισσότερα σχετικά με το διεξοδικός οδηγός σεληνίου μπορείτε να επισκεφθείτε εδώ

Σχετικά με την Debarghya

Myself Debarghya Roy, είμαι ένας μηχανικός ARCHITECT που συνεργάζεται με την εταιρεία Fortune 5 και έναν συνεισφέροντα ανοιχτού κώδικα, έχοντας περίπου 12 χρόνια εμπειρίας / εμπειρίας σε διάφορες τεχνολογίες.
Έχω εργαστεί με διάφορες τεχνολογίες, όπως Java, C #, Python, Groovy, UI Automation (Selenium), Mobile Automation (Appium), API / Backend Automation, Performance Engineering (JMeter, Locust), Security Automation (MobSF, OwAsp, Kali Linux) , Astra, ZAP κ.λπ.), RPA, Αυτοματισμός Μηχανικής Διαδικασίας, Αυτοματισμός Mainframe, Ανάπτυξη Back End με SpringBoot, Kafka, Redis, RabitMQ, ELK stack, GrayLog, Jenkins και επίσης έχοντας εμπειρία σε Cloud Technologies, DevOps κ.λπ.
Ζω στο Μπανγκαλόρ της Ινδίας με τη γυναίκα μου και έχω πάθος για το Blogging, τη μουσική, την κιθάρα και η Φιλοσοφία της ζωής μου είναι η Εκπαίδευση για Όλους που γέννησε το LambdaGeeks. Ας συνδεθούμε μέσω συνδέσμου - https://www.linkedin.com/in/debarghya-roy/

Αφήστε ένα σχόλιο

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται *

Lambda Geeks