Top 50 TestNG Συνέντευξη Ερωτήσεις και Απαντήσεις (2026)

Κορυφή TestNG Ερωτήσεις και απαντήσεις συνέντευξης

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

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

👉 Δωρεάν λήψη PDF: TestNG Ερωτήσεις & Απαντήσεις Συνέντευξης

Κορυφή TestNG Ερωτήσεις και απαντήσεις συνέντευξης

1) Τι είναι TestNG και γιατί χρησιμοποιείται στις αυτοματοποιημένες δοκιμές;

TestNG (Test Next Generation) είναι ένα πλαίσιο δοκιμών εμπνευσμένο από JUnit και NUnit, αλλά ενισχυμένο με προηγμένες δυνατότητες όπως ομαδοποίηση, αλληλούχιση, παραμετροποίηση και διαχείριση εξαρτήσεων. Χρησιμοποιείται κυρίως σε αυτοματοποιημένες δοκιμές για την απλοποίηση της εκτέλεσης δοκιμών, τη βελτίωση της οργάνωσης των δοκιμών και τη δημιουργία λεπτομερών αναφορών HTML και XML.

Βασικά οφέλη του TestNG συμπεριλαμβάνω:

  • Υποστηρίζει παράλληλη εκτέλεση δοκιμής, μειώνοντας τον συνολικό χρόνο εκτέλεσης.
  • Παρέχει σχολιασμούς που ελέγχουν αποτελεσματικά τη ροή των δοκιμών.
  • Προσφορές δοκιμές βάσει δεδομένων μέσα από @DataProvider σχόλιο.
  • Δημιουργεί προσαρμόσιμες αναφορές για καλύτερο εντοπισμό σφαλμάτων.

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


2) Εξηγήστε το TestNG κύκλος ζωής με σχολιασμούς και τη σειρά εκτέλεσής τους.

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

Σχόλιο Περιγραφή Εντολή εκτέλεσης
@BeforeSuite Εκτελείται πριν από όλες τις δοκιμές στη σουίτα 1
@BeforeTest Εκτελεί πριν από <test> ετικέτα σε XML 2
@BeforeClass Εκτελείται πριν από την πρώτη μέθοδο στην τρέχουσα κλάση 3
@BeforeMethod Εκτελείται πριν από κάθε μέθοδο δοκιμής 4
@Test Περιέχει πραγματική λογική δοκιμών 5
@AfterMethod Εκτελείται μετά από κάθε μέθοδο δοκιμής 6
@AfterClass Εκτελείται μετά από όλες τις μεθόδους στην κλάση 7
@AfterTest Τρέχει πίσω από <test> ετικέτα σε XML 8
@AfterSuite Εκτελείται μετά από όλες τις δοκιμές στη σουίτα 9

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


3) Πώς είναι TestNG διαφορετική από JUnit?

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

Χαρακτηριστικό JUnit TestNG
Παράλληλη Εκτέλεση Περιορισμένη υποστήριξη Πλήρης υποστήριξη
Οι σχολιασμοί Λιγότερα (@Before, @After) Πλουσιότερος (@BeforeSuite, @DataProvider)
Διαχείριση εξάρτησης Δεν υπάρχουν διαθέσιμα στοιχεία Διαθέσιμο με χρήση dependsOnMethods
Ομαδοποίηση Δεν υποστηρίζεται Υποστηρίζεται με χρήση groups
Παραμετροποίηση Μέσω εξωτερικών δρομέων Ενσωματωμένο μέσω XML ή @DataProvider

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


4) Τι είναι TestNG σχολιασμοί και πώς είναι χρήσιμοι;

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

Οι συνήθως χρησιμοποιούμενες σχολιασμοί περιλαμβάνουν:

  • @BeforeSuite, @BeforeTest, @BeforeClass, @BeforeMethod
  • @Test
  • @AfterMethod, @AfterClass, @AfterTest, @AfterSuite

Παράδειγμα:

@BeforeMethod
public void setup() {
    System.out.println("Initializing browser...");
}

@Test
public void verifyLogin() {
    System.out.println("Executing login test...");
}

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


5) Εξηγήστε την έννοια της ομαδοποίησης στο TestNG.

Ομαδοποίηση σε TestNG επιτρέπει τη λογική κατηγοριοποίηση των δοκιμών σε μικρότερα, διαχειρίσιμα σύνολα όπως «Καπνός», «Παλινδρόμηση» ή «Υγεία».

Παράδειγμα:

@Test(groups = {"Smoke"})
public void loginTest() { ... }
@Test(groups = {"Regression"})
public void paymentTest() { ... }

Μπορείτε να διαμορφώσετε τη σουίτα XML σας για να εκτελεί συγκεκριμένες ομάδες:

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

οφέλη:

  • Διευκολύνει την επιλεκτική εκτέλεση δοκιμαστικών περιπτώσεων.
  • Βελτιώνει την ευελιξία στους αγωγούς CI/CD.
  • Εξοικονομεί χρόνο εκτέλεσης κατά τη διάρκεια των σταδιακών κατασκευών.

6) Πώς μπορεί να επιτευχθεί η παραμετροποίηση σε TestNG?

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

  1. Χρησιμοποιώντας @Parameters σχολιασμός με XML:
  2. <parameter name="browser" value="chrome"/>
    @Test
    @Parameters("browser")
    public void launchBrowser(String browser) { ... }
    
  3. Χρησιμοποιώντας @DataProvider:
  4. @DataProvider(name="loginData")
    public Object[][] getData() {
      return new Object[][] {{"user1","pass1"}, {"user2","pass2"}};
    }
    
    @Test(dataProvider="loginData")
    public void loginTest(String user, String pass) { ... }
    

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


7) Τι είναι οι εξαρτήσεις στο TestNG και πώς διαχειρίζονται;

Εξαρτήσεις σε TestNG ελέγξτε τη σειρά εκτέλεσης των δοκιμών με βάση άλλα αποτελέσματα δοκιμών χρησιμοποιώντας το dependsOnMethods or dependsOnGroups χαρακτηριστικά.

Παράδειγμα:

@Test
public void loginTest() { ... }

@Test(dependsOnMethods = {"loginTest"})
public void verifyDashboard() { ... }

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

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


8) Ποιοι είναι οι διαφορετικοί τρόποι εκτέλεσης; TestNG δοκιμές;

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

  1. Από το IDE (Eclipse/IntelliJ): Κάντε δεξί κλικ στην κλάση ή XML fileRun asTestNG Test.
  2. Από τη γραμμή εντολών: java -cp "path\testng.jar;bin" org.testng.TestNG testng.xml
  3. Χρήση εργαλείων δημιουργίας:
    • Maven: Διαμορφώστε surefire-plugin in pom.xml.
    • Gradle: Χρήση testng εξάρτηση και διαμόρφωση εργασιών.
  4. Μέσω αγωγών CI/CD: Ενσωματωμένο με Jenkins ή GitHub Actions για αυτοματοποιημένη εκτέλεση.

Αυτή η ποικιλία διασφαλίζει τη συμβατότητα σε όλα τα περιβάλλοντα ανάπτυξης, δοκιμών και παραγωγής.


9) Τι είναι TestNG ακροατές και γιατί είναι σημαντικοί;

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

Κοινοί ακροατές:

  • ITestListener: Παρακολουθεί συμβάντα σε επίπεδο μεθόδου δοκιμής.
  • ISuiteListener: Παρατηρεί συμβάντα σε επίπεδο σουίτας.
  • IReporter: Δημιουργεί προσαρμοσμένες αναφορές.

Παράδειγμα:

public class CustomListener implements ITestListener {
  public void onTestFailure(ITestResult result) {
    System.out.println("Test Failed: " + result.getName());
  }
}

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


10) Ποια είναι τα πλεονεκτήματα και τα μειονεκτήματα της χρήσης TestNG?

Άποψη Πλεονεκτήματα Μειονεκτήματα
Ευελιξία Υποστηρίζει ομαδοποίηση, εξάρτηση και παράλληλη εκτέλεση Σύνθετη ρύθμιση XML για μεγάλες σουίτες
Αναφορά Παρέχει λεπτομερείς αναφορές HTML και XML Περιορισμένη προσαρμογή χωρίς ακροατές
Ενσωμάτωση Λειτουργεί απρόσκοπτα με Selenium και εργαλεία CI/CD Ελαφρώς υψηλότερη καμπύλη μάθησης
Παραμετροποίηση Ενσωματωμένη υποστήριξη για δοκιμές βάσει δεδομένων Απαιτείται συντήρηση για μεγάλα σύνολα δεδομένων

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


11) Πώς μπορείτε να ιεραρχήσετε τις δοκιμαστικές περιπτώσεις σε TestNG?

TestNG παρέχει το priority χαρακτηριστικό στο @Test σχολιασμός για να ορίσετε τη σειρά με την οποία θα πρέπει να εκτελούνται οι μέθοδοι δοκιμών. Οι δοκιμές με τιμές χαμηλότερης προτεραιότητας εκτελούνται πρώτες.

Παράδειγμα:

@Test(priority = 1)
public void loginTest() { ... }

@Test(priority = 2)
public void dashboardTest() { ... }

Εάν δεν έχει καθοριστεί προτεραιότητα, η προεπιλεγμένη τιμή είναι 0, και οι μέθοδοι εκτελούνται αλφαβητικά.

καλύτερη πρακτική: Χρησιμοποιήστε τιμές προτεραιότητας με φειδώ. Η υπερβολική χρήση τους μπορεί να κάνει τη σειρά των δοκιμών άκαμπτη. Για σύνθετες ροές, η διαχείριση εξαρτήσεων (dependsOnMethods) είναι πιο συντηρήσιμο από την αυστηρή ιεράρχηση προτεραιοτήτων.


12) Εξηγήστε την έννοια και τη χρήση της παράλληλης εκτέλεσης σε TestNG.

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

Μπορείτε να ενεργοποιήσετε αυτήν τη λειτουργία στο testng.xml αρχείο:

<suite name="ParallelSuite" parallel="tests" thread-count="3">
  <test name="Test1">...</test>
  <test name="Test2">...</test>
</suite>

Υποστηριζόμενες παράλληλες λειτουργίες:

  • tests
  • classes
  • methods
  • instances

Πλεονεκτήματα:

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

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


13) Σε τι χρησιμεύουν οι πάροχοι δεδομένων; TestNGΠώς διαφέρουν από τις παραμέτρους;

@DataProvider δίνει τη δυνατότητα δοκιμές βάσει δεδομένων παρέχοντας στις μεθόδους δοκιμών πολλαπλά σύνολα δεδομένων.

Παράδειγμα:

@DataProvider(name="credentials")
public Object[][] data() {
    return new Object[][] {{"user1", "pass1"}, {"user2", "pass2"}};
}

@Test(dataProvider="credentials")
public void login(String username, String password) { ... }

Διαφορά μεταξύ @Parameters και @DataProvider:

Χαρακτηριστικό @Parameters @DataProvider
Πηγή δεδομένων Αρχείο XML Java μέθοδος
Τύπος δεδομένων Ένα ενιαίο σύνολο δεδομένων Πολλαπλά σύνολα δεδομένων
Ευελιξία Less Ψηλά
Χρήση θήκης Μεταβλητές περιβάλλοντος Επαναλαμβανόμενες δοκιμές βάσει δεδομένων

Ως εκ τούτου, @DataProvider προτιμάται κατά την εκτέλεση μιας μόνο δοκιμής με πολλά σύνολα δεδομένων, όπως η επαλήθευση σύνδεσης με πολλαπλά διαπιστευτήρια.


14) Πώς μπορείτε να απενεργοποιήσετε ή να παραλείψετε μια δοκιμή στο TestNG?

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

1. Χρησιμοποιώντας enabled = false:

@Test(enabled = false)
public void skipTest() {
    System.out.println("This test will not run.");
}

2. Παράλειψη κατά τη διάρκεια εκτέλεσης χρησιμοποιώντας SkipException:

@Test
public void conditionalSkip() {
    throw new SkipException("Skipping this test due to condition.");
}

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


15) Ποιος είναι ο ρόλος του αρχείου testng.xml και ποια είναι τα κύρια στοιχεία του;

The testng.xml Το αρχείο είναι η ραχοκοκαλιά της διαμόρφωσης του TestNGΟρίζει σουίτες δοκιμών, ομάδες δοκιμών, παραμέτρους και ρύθμιση παράλληλης εκτέλεσης.

Παράδειγμα Δομής:

<suite name="AutomationSuite">
  <parameter name="browser" value="chrome"/>
  <test name="RegressionTests">
    <classes>
      <class name="com.test.LoginTest"/>
      <class name="com.test.PaymentTest"/>
    </classes>
  </test>
</suite>

Κύρια στοιχεία:

  • <suite> – Ορίζει ολόκληρη τη σουίτα.
  • <test> – Αντιπροσωπεύει ένα μπλοκ δοκιμής.
  • <classes> – Παραθέτει τις τάξεις εξέτασης.
  • <methods> – Φιλτράρει συγκεκριμένες μεθόδους δοκιμών.
  • <parameter> – Παρέχει καθολικές παραμέτρους ή παραμέτρους σε επίπεδο δοκιμής.

Το αρχείο XML παρέχει κεντρικός έλεγχος υπερέκδοση χωρίς αλλαγή του κώδικα.


16) Πώς μπορείτε να δημιουργήσετε αναφορές σε TestNG?

TestNG δημιουργεί αυτόματα δύο είδη αναφορών:

  1. Αναφορά HTML (test-output/index.html) – Συνοψίζει τις εξετάσεις που πέρασαν με επιτυχία, τις εξετάσεις που απέτυχαν και τις εξετάσεις που παραλείφθηκαν.
  2. Αναφορά XML – Χρησιμοποιείται για ενσωμάτωση με εργαλεία CI/CD.

Για προχωρημένη αναφορά, TestNG ενσωματώνεται με:

  • ExtentReports – Προσφέρει γραφικούς πίνακες ελέγχου και λεπτομερή αρχεία καταγραφής.
  • Αναφορές Allure – Παρέχει οπτική ανάλυση με βήματα δοκιμών, στιγμιότυπα οθόνης και αρχεία καταγραφής.

Παράδειγμα Ενσωμάτωσης:

ExtentReports extent = new ExtentReports();
ExtentTest test = extent.createTest("Login Test");
test.pass("Test Passed Successfully");
extent.flush();

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


17) Σε τι βρίσκονται τα εργοστάσια; TestNG, και πώς λειτουργούν;

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

Παράδειγμα:

public class FactoryExample {
  private String browser;

  public FactoryExample(String browser) {
    this.browser = browser;
  }

  @Factory
  public static Object[] factoryMethod() {
    return new Object[] { new FactoryExample("Chrome"), new FactoryExample("Firefox") };
  }

  @Test
  public void testBrowser() {
    System.out.println("Running test on: " + browser);
  }
}

Πλεονεκτήματα:

  • επιτρέπει δημιουργία παραμετροποιημένων αντικειμένων.
  • Ιδανικό για δοκιμή μεταξύ προγραμμάτων περιήγησης και εκτέλεση σε πολλαπλά περιβάλλοντα.
    Τα εργοστάσια συμπληρώνουν τα DataProviders όταν χρειάζεστε διαφορετικές διαμορφώσεις αντικειμένων αντί απλώς παραλλαγές δεδομένων σε επίπεδο μεθόδου.

18) Πώς μπορείτε να χρησιμοποιήσετε ισχυρισμούς σε TestNG?

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

Τύποι ισχυρισμών:

  1. Σκληροί ισχυρισμοί (κλάση ισχυρισμού):
    Διακόπτει αμέσως την εκτέλεση της δοκιμής σε περίπτωση αποτυχίας.
  2. Assert.assertEquals(actual, expected);
    Assert.assertTrue(condition);
    
  3. Μαλακοί ισχυρισμοί (κλάση SoftAssert):
    Συνεχίζει την εκτέλεση ακόμα και μετά από αποτυχία, αναφέροντας όλα τα προβλήματα στο τέλος.
  4. SoftAssert soft = new SoftAssert();
        soft.assertEquals(actual, expected);
        soft.assertAll();
    
  5. Πότε να χρησιμοποιείτε:
    • Χρησιμοποιήστε ισχυρισμούς με αυστηρότητα για κρίσιμη επικύρωση όπως η επιτυχής σύνδεση.
    • Χρησιμοποιήστε ήπιους ισχυρισμούς για πολλαπλές επαληθεύσεις μέσα σε μία μόνο μέθοδο δοκιμής.

19) Εξηγήστε τη διαφορά μεταξύ @BeforeMethod και @BeforeClass στο TestNG.

Άποψη @BeforeMethod @BeforeClass
Εκτέλεση Τρέχει πριν από κάθε μέθοδος ελέγχου Τρέχει καποτε πριν οποιαδήποτε μέθοδος στην κλάση
Scope Ανά μέθοδο δοκιμής Ανά κατηγορία εξέτασης
Κοινή χρήση Αρχικοποίηση του προγράμματος περιήγησης πριν από κάθε δοκιμή Φόρτωση διαμόρφωσης ή ρύθμισης προγράμματος περιήγησης μία φορά

Παράδειγμα:

@BeforeClass
public void setupClass() {
    System.out.println("Executed once per class");
}

@BeforeMethod
public void setupMethod() {
    System.out.println("Executed before each method");
}

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


20) Πώς γίνεται TestNG Υποστήριξη ένεσης εξάρτησης και ποιες είναι οι περιπτώσεις χρήσης της;

TestNG υποστηρίζει ένεση εξάρτησης μέσω ενσωματωμένης εισαγωγής αντικειμένων περιβάλλοντος και διαμόρφωσης, όπως ITestContext, XmlTest, ή Method.

Παράδειγμα:

@Test
public void testContextExample(ITestContext context) {
    System.out.println("Suite Name: " + context.getSuite().getName());
}

Χρήση περιπτώσεων:

  • Δυναμική ανάκτηση παραμέτρων δοκιμής.
  • Πρόσβαση σε πληροφορίες διαμόρφωσης, όπως ονόματα σουιτών ή ρυθμίσεις παράλληλης εκτέλεσης.
  • Βελτίωση της ευελιξίας των δοκιμών χωρίς εξαρτήσεις hardcoding.

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


21) Ποια είναι η διαφορά μεταξύ @Factory και @DataProvider στο TestNG?

Και τα δύο @Factory και @DataProvider βοηθούν στην παραμετροποίηση, αλλά λειτουργούν σε διαφορετικά επίπεδα στην αρχιτεκτονική δοκιμών.

Χαρακτηριστικό @Factory @DataProvider
Scope Επίπεδο τάξης Επίπεδο μεθόδου
Σκοπός Δημιουργεί πολλαπλές παρουσίες μιας κλάσης με διαφορετικά δεδομένα Παρέχει δεδομένα σε μία μόνο μέθοδο δοκιμής
Εκτέλεση Εκτελεί ολόκληρη την κλάση για κάθε στιγμιότυπο Εκτελεί μία μέθοδο πολλές φορές
Ιδανική θήκη χρήσης Δοκιμές σε διαφορετικά προγράμματα περιήγησης ή περιβάλλοντα Λειτουργικές δοκιμές βάσει δεδομένων

Παράδειγμα:

  • Εργοστάσιο: Εκτελεί ολόκληρη την κλάση ανά τύπο προγράμματος περιήγησης.
  • Πάροχος Δεδομένων: Εκτελεί μία μέθοδο δοκιμής με πολλαπλά σύνολα δεδομένων.

Χρήση @Factory όταν η ίδια η δημιουργία αντικειμένου ποικίλλει, και @DataProvider για συναρτησιακή μεταβολή εισόδου εντός της ίδιας παρουσίας αντικειμένου.


22) Πώς μπορείτε να επαναλάβετε αυτόματα τις αποτυχημένες περιπτώσεις δοκιμών στο TestNG?

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

Παράδειγμα Υλοποίησης:

public class RetryAnalyzer implements IRetryAnalyzer {
  int count = 0;
  int maxTry = 2;

  public boolean retry(ITestResult result) {
    if (count < maxTry) {
      count++;
      return true;
    }
    return false;
  }
}

Χρήση:

@Test(retryAnalyzer = RetryAnalyzer.class)
public void testLogin() {
   Assert.fail("Intentional Failure");
}

οφέλη:

  • Μειώνει την απολέπιση στους αγωγούς CI.
  • Χειρίζεται παροδικά προβλήματα δικτύου ή περιβάλλοντος.

καλύτερη πρακτική: Συνδυάστε τη λογική επανάληψης με την κατάλληλη καταγραφή και στιγμιότυπα οθόνης για τον εντοπισμό σφαλμάτων κατά διαστήματα.


23) Ποια είναι η χρήση του ITestContext στο TestNG?

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

Παράδειγμα:

@Test
public void contextExample(ITestContext context) {
    System.out.println("Suite: " + context.getSuite().getName());
}

Βασικές μέθοδοι:

  • getSuite() – Ανακτά πληροφορίες σε επίπεδο σουίτας.
  • getName() – Επιστρέφει το όνομα της δοκιμής.
  • setAttribute() / getAttribute() – Κοινή χρήση δεδομένων μεταξύ των δοκιμών.

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


24) Πώς μπορείτε να δημιουργήσετε εξάρτηση μεταξύ ομάδων δοκιμών στο TestNG?

Μπορείτε να ορίσετε εξαρτήσεις μεταξύ ομάδων χρησιμοποιώντας το dependsOnGroups χαρακτηριστικό στο @Test σχόλιο.

Παράδειγμα:

@Test(groups = "Login")
public void login() { ... }

@Test(dependsOnGroups = "Login")
public void verifyProfile() { ... }

Αυτό διασφαλίζει ότι το verifyProfile η ομάδα εκτελείται μόνο εάν όλες οι δοκιμές στο Login η ομάδα πέρασε με επιτυχία.

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


25) Πώς μπορείτε να αγνοήσετε ορισμένες μεθόδους δοκιμών σε ένα TestNG Αρχείο XML;

Μπορείτε ρητά μέθοδοι αποκλεισμού μέσα σε μια κλάση στο αρχείο της σουίτας XML χρησιμοποιώντας <exclude> ετικέτες.

Παράδειγμα:

<class name="com.test.LoginTests">
  <methods>
    <exclude name="verifyLogout"/>
  </methods>
</class>

Αυτό επιτρέπει στους δοκιμαστές να απενεργοποιήστε προσωρινά συγκεκριμένες μεθόδους χωρίς να τροποποιηθεί το Java πηγαίος κώδικας — χρήσιμος σε μεγάλες σουίτες όπου απαιτείται δυναμική συμπερίληψη ή αποκλεισμός με βάση κύκλους κυκλοφορίας ή προτεραιότητες sprint.


26) Πώς μπορεί TestNG να ενσωματωθεί με Selenium WebDriver;

TestNG και Selenium αποτελούν έναν ισχυρό συνδυασμό για αυτοματοποίηση UI.

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

Παράδειγμα:

@BeforeMethod
public void setup() {
    driver = new ChromeDriver();
}

@Test
public void verifyTitle() {
    driver.get("https://example.com");
    Assert.assertEquals(driver.getTitle(), "Example Domain");
}

@AfterMethod
public void teardown() {
    driver.quit();
}

Οφέλη ενσωμάτωσης:

  • επιτρέπει παράλληλες δοκιμές προγραμμάτων περιήγησης.
  • Απλοποιεί ομαδοποίηση δοκιμών και αναφορά.
  • Λειτουργεί απρόσκοπτα με Αγωγοί CI / CD όπως το Jenkins ή το GitHub Actions.

27) Ποιες είναι μερικές βέλτιστες πρακτικές κατά τη χρήση TestNG σε μεγάλα πλαίσια αυτοματισμού;

Καλυτερα Πρακτικές:

  1. Χρήση DescriptΟνομασία: Οι δοκιμές ονομάτων βασίζονται στη συμπεριφορά, όχι στην υλοποίηση.
  2. Ομαδοποίηση μόχλευσης: Δημιουργήστε ομάδες λογικών δοκιμών (Καπνός, Παλινδρόμηση).
  3. Αποφύγετε τον σκληρό κώδικα: Χρησιμοποιήστε παραμέτρους ή αρχεία ιδιοτήτων για δεδομένα δοκιμών.
  4. Ελαχιστοποίηση Εξαρτήσεων: Διατηρήστε τις περιπτώσεις δοκιμών ανεξάρτητες όπου είναι δυνατόν.
  5. Κεντρική διαμόρφωση: Χρήση testng.xml για τη διαμόρφωση της σουίτας.
  6. Ενσωμάτωση Αναφορών: Χρησιμοποιήστε προγράμματα ακρόασης ή εργαλεία τρίτων όπως το ExtentReports.
  7. Χρησιμοποιήστε τη λογική επανάληψης με προσοχή: Αποφύγετε την κάλυψη γνήσιων ελαττωμάτων.

Ακολουθώντας αυτά διασφαλίζεται επεκτασιμότητα, συντηρησιμότητα και αναγνωσιμότητα στον αυτοματισμό σε επίπεδο επιχείρησης.


28) Ποια είναι η διαφορά μεταξύ του @BeforeTest και του @BeforeSuite στο TestNG?

Χαρακτηριστικό @BeforeTest @BeforeSuite
Scope Εκτελείται πριν από κάθε <test> ετικέτα σε XML Εκτελείται μία φορά πριν από ολόκληρη τη σουίτα
Συχνότητα Πολλές φορές (αν <test> μπλοκ) Μόνο μία φορά ανά σουίτα
Κοινή χρήση Αρχικοποίηση διαμόρφωσης σε επίπεδο δοκιμής Ρύθμιση καθολικών πόρων

Παράδειγμα:

@BeforeSuite
public void setupSuite() {
    System.out.println("Global setup for suite.");
}

@BeforeTest
public void setupTest() {
    System.out.println("Setup for each <test> tag.");
}

Χρήση @BeforeSuite για καθολικές διαμορφώσεις (π.χ., σύνδεση βάσης δεδομένων) και @BeforeTest για αρχικοποιήσεις ειδικές για τη δοκιμή.


29) Μπορεί TestNG να χρησιμοποιηθεί για δοκιμές API; Πώς;

Ναί. TestNG μπορεί να χρησιμοποιηθεί αποτελεσματικά για Δοκιμή API ενσωματώνοντας βιβλιοθήκες πελατών HTTP όπως RestAssured or HttpClient.

Παράδειγμα:

@Test
public void verifyApiResponse() {
    Response response = RestAssured.get("https://api.example.com/users");
    Assert.assertEquals(response.getStatusCode(), 200);
}

Πλεονεκτήματα:

  • επιτρέπει επικύρωση βασισμένη σε ισχυρισμούς των απαντήσεων.
  • Υποστηρίζει παραμετροποίηση και δοκιμές βάσει δεδομένων για πολλαπλά τελικά σημεία.
  • Δημιουργεί δομημένες αναφορές για επικυρώσεις REST API.

Συνδυάζοντας TestNG και RestAssured, οι δοκιμαστές μπορούν να διατηρούν ένα ενιαίο πλαίσιο αυτοματισμού τόσο για δοκιμές UI όσο και API.


30) Πώς περνάτε παραμέτρους από τη γραμμή εντολών στο TestNG?

Μπορείτε να παρακάμψετε παραμέτρους XML κατά τον χρόνο εκτέλεσης μεταβιβάζοντας ιδιότητες συστήματος χρησιμοποιώντας την εντολή -D σημαία.

Παράδειγμα εντολής:

mvn test -Dbrowser=chrome -Denv=staging

Παράδειγμα κώδικα:

@Parameters("browser")
@Test
public void launch(@Optional("firefox") String browser) {
    System.out.println("Running on: " + browser);
}

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


31) Πώς μπορείτε να ελέγξετε τη σειρά εκτέλεσης των δοκιμών στο TestNG χωρίς να χρησιμοποιήσετε προτεραιότητες;

Αντί για χρήση priority, TestNG επιτρέπει τον έλεγχο μέσω εξαρτήσεις και Ταξινόμηση με μέθοδο XML.

Μέθοδοι:

  1. Χρησιμοποιώντας dependsOnMethods:
  2. @Test
    public void login() { ... }
    
    @Test(dependsOnMethods = "login")
    public void verifyDashboard() { ... }
    
  3. Χρησιμοποιώντας την ακολουθία μεθόδων XML:
  4. <classes>
      <class name="com.test.LoginTests">
        <methods>
          <include name="login"/>
          <include name="verifyDashboard"/>
        </methods>
      </class>
    </classes>
    

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


32) Πώς μπορείτε να εκτελέσετε συγκεκριμένες μεθόδους δοκιμών από τη γραμμή εντολών στο TestNG?

TestNG επιτρέπει εκτέλεση δοκιμής σε επίπεδο μεθόδου απευθείας από τη γραμμή εντολών χρησιμοποιώντας διαμορφώσεις XML ή Maven Surefire.

Επιλογή 1: Χρήση αρχείου XML

<class name="com.test.LoginTests">
  <methods>
    <include name="verifyLogin"/>
  </methods>
</class>

Επιλογή 2: Εντολή Maven

mvn test -Dtest=com.test.LoginTests#verifyLogin

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


33) Πώς παραμετροποιείτε τις δοκιμές χρησιμοποιώντας ένα εξωτερικό αρχείο Excel στο TestNG?

Η παραμετροποίηση που βασίζεται στο Excel είναι συνηθισμένη σε πλαίσια που βασίζονται σε δεδομένα, όπου τα δεδομένα δοκιμών αλλάζουν συχνά.

Βήματα υλοποίησης:

  1. Χρήση Apache POI or JExcel για να διαβάσετε δεδομένα Excel.
  2. Τροφοδοτήστε το σε ένα @DataProvider μέθοδος.

Παράδειγμα:

@DataProvider(name = "excelData")
public Object[][] readExcel() throws Exception {
    FileInputStream fis = new FileInputStream("data.xlsx");
    XSSFWorkbook wb = new XSSFWorkbook(fis);
    XSSFSheet sheet = wb.getSheetAt(0);
    Object[][] data = new Object[sheet.getLastRowNum()][2];
    for (int i = 0; i < sheet.getLastRowNum(); i++) {
        data[i][0] = sheet.getRow(i + 1).getCell(0).getStringCellValue();
        data[i][1] = sheet.getRow(i + 1).getCell(1).getStringCellValue();
    }
    return data;
}

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


34) Πώς μπορείς να τρέχεις; TestNG δοκιμές σε αγωγούς Jenkins ή CI/CD;

TestNG ενσωματώνεται απρόσκοπτα με Jenkins, GitLab CI, ή Ενέργειες GitHub μέσω του Maven ή Gradle χτίζει.

Βήματα στο Jenkins:

  1. εγκαταστήστε Πρόσθετο ενσωμάτωσης Maven.
  2. Δημιουργία Ελεύθερη ή αγωγική εργασία.
  3. Πρόσθεση mvn clean test ως βήμα κατασκευής.
  4. Μετά την κατασκευή, διαμορφώστε τις αναφορές HTML:
    • Κατάλογος αναφορών: test-output
    • Αρχείο ευρετηρίου: index.html

οφέλη:

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

35) Ποιος είναι ο σκοπός των @Parameters και πώς διαφέρει από το @Optional;

Και οι δύο σχολιασμοί ασχολούνται με την παραμετροποίηση αλλά εξυπηρετούν διαφορετικούς σκοπούς.

Χαρακτηριστικό @Parameters @Optional
Σκοπός Μεταβιβάζει παραμέτρους από αρχείο XML Παρέχει προεπιλεγμένη τιμή εάν λείπει μια παράμετρος
Δήλωση Χρησιμοποιείται με XML <parameter> Χρησιμοποιείται μέσα στη μέθοδο δοκιμής
Συμπεριφορά Εμφανίζει σφάλμα εάν λείπει μια τιμή Χρησιμοποιεί εφεδρική τιμή

Παράδειγμα:

@Test
@Parameters("browser")
public void runTest(@Optional("chrome") String browser) {
    System.out.println("Running on: " + browser);
}

Χρησιμοποιώντας @Optional εξασφαλίζει σταθερότητα δοκιμής όταν οι διαμορφώσεις XML είναι ελλιπείς.


36) Πώς χειρίζεστε τις εξαρτήσεις δοκιμών σε διαφορετικές κλάσεις στο TestNG?

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

Παράδειγμα:

@Test(groups = "Login")
public void loginTest() { ... }

@Test(groups = "Dashboard", dependsOnGroups = "Login")
public void dashboardTest() { ... }

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

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


37) Τι είναι οι αποτυχίες διαμόρφωσης στο TestNG, και πώς μπορούν να αντιμετωπιστούν;

Αποτυχίες διαμόρφωσης παρουσιάζονται όταν οι μέθοδοι εγκατάστασης ή απεγκατάστασης έχουν σχολιαστεί με @Before* or @After* αποτυγχάνω.

Μπορούν να προκαλέσουν εξαρτημένες δοκιμές προς παράλειψη, ακόμα κι αν αυτές οι δοκιμές είναι σωστές.

Κοινές αιτίες:

  • Λανθασμένη αρχικοποίηση WebDriver.
  • Προβλήματα με τη ρύθμιση της βάσης δεδομένων ή του περιβάλλοντος.
  • Λανθασμένη διαμόρφωση παραμέτρων.

Λύσεις:

  • Χρήση προσπάθησε να πιάσεις μπλοκ στις μεθόδους εγκατάστασης.
  • Εγγραφές alwaysRun = true για να διασφαλιστεί η ομαλή λειτουργία του καθαρισμού παρά τις αστοχίες.

Παράδειγμα:

@BeforeMethod(alwaysRun = true)
public void setup() {
    // Setup logic
}

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


38) Ποια είναι η χρήση των χαρακτηριστικών invocationCount και threadPoolSize στο TestNG?

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

Παράδειγμα:

@Test(invocationCount = 5, threadPoolSize = 2)
public void loadTest() {
    System.out.println("Running load test...");
}
Χαρακτηριστικό Περιγραφή
invocationCount Αριθμός φορών που εκτελείται μια μέθοδος
threadPoolSize Αριθμός ταυτόχρονων νημάτων

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


39) Πώς εκτελείτε μόνο αποτυχημένες περιπτώσεις δοκιμών στο TestNG?

Μετά από μια βόλτα με σουίτα, TestNG δημιουργεί ένα αρχείο με όνομα testng-failed.xml στο test-output Κατάλογο.

Μπορείτε να επαναλάβετε μόνο τις αποτυχημένες δοκιμές εκτελώντας:

java -cp testng.jar org.testng.TestNG test-output/testng-failed.xml

Πλεονεκτήματα:

  • Εξοικονομεί χρόνο παρακάμπτοντας επιτυχημένες δοκιμές.
  • Διευκολύνει την αποσφαλμάτωση σε μεγάλες σουίτες.
  • Χρησιμοποιείται συνήθως σε αγωγούς CI για γρήγορες επανεξετάσεις.

Μπορείτε επίσης να το ενσωματώσετε με το Jenkins χρησιμοποιώντας ένα σενάριο μετά την κατασκευή για επαναλήψεις.


40) Ποιοι είναι μερικοί περιορισμοί του TestNG και πώς μπορούν να μετριαστούν;

Παρά την ανθεκτικότητά του, TestNG έχει μερικούς περιορισμούς.

Περιορισμός Στρατηγική Μετριασμού
Πολυπλοκότητα διαμόρφωσης XML Χρήση διαμόρφωσης και δημιουργών που βασίζονται σε σχολιασμούς
Περιορισμένη εγγενής αναφορά Ενσωμάτωση ExtentReports ή Allure
Δεν υπάρχει ενσωματωμένος έλεγχος επανάληψης Εφαρμογή IRetryAnalyzer
Ανησυχίες σχετικά με την ασφάλεια των νημάτων σε παράλληλες εκτελέσεις Χρήση στιγμιότυπων WebDriver τοπικών νημάτων
Καμπύλη μάθησης για αρχάριους Διατήρηση δομών έργων που βασίζονται σε πρότυπα

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


41) Πώς χρησιμοποιείτε τους ακροατές για την καταγραφή και τη λήψη στιγμιότυπων οθόνης; Selenium-TestNG?

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

Παράδειγμα Υλοποίησης:

public class ScreenshotListener implements ITestListener {
  @Override
  public void onTestFailure(ITestResult result) {
      WebDriver driver = ((BaseTest) result.getInstance()).getDriver();
      File src = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
      FileUtils.copyFile(src, new File("screenshots/" + result.getName() + ".png"));
  }
}

Χρήση:

@Listeners(ScreenshotListener.class)
public class LoginTests extends BaseTest { ... }

οφέλη:

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

Αυτή η τεχνική είναι κρίσιμη στις διοχετεύσεις αυτοματισμού CI/CD, ειδικά κατά την απομακρυσμένη διάγνωση αποτυχημένων κατασκευών.


42) Ποια είναι η διαφορά μεταξύ του IReporter και του ITestListener στο TestNG?

Χαρακτηριστικό IReporter ITestListener
Σκοπός Δημιουργεί προσαρμοσμένες αναφορές μετά την εκτέλεση της δοκιμής Παρακολουθεί και αντιδρά σε συμβάντα δοκιμών κατά τον χρόνο εκτέλεσης
Επίκληση Αφού ολοκληρωθούν όλες οι δοκιμές Κατά τη διάρκεια του κύκλου ζωής της δοκιμής (έναρξη, επιτυχία, αποτυχία)
Παραγωγή Αναφορές HTML/XML/JSON Αρχεία καταγραφής, στιγμιότυπα οθόνης, ζωντανοί πίνακες ελέγχου
Κοινή χρήση Ενσωμάτωση ExtentReports, Allure Καταγραφή, διαχείριση σφαλμάτων, μηχανισμοί επανάληψης

Παράδειγμα:

  • Χρήση IReporter για κτίριο ολοκληρωμένες αναφορές μετά την ολοκλήρωση της δοκιμής.
  • Χρήση ITestListener για καταγραφή σε πραγματικό χρόνο ή στιγμιότυπα οθόνης.

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


43) Πώς εκτελείτε δοκιμές σε cross-browser χρησιμοποιώντας TestNG Ρύθμιση παραμέτρων XML;

Οι δοκιμές σε διαφορετικά προγράμματα περιήγησης διασφαλίζουν ότι η ίδια λειτουργικότητα λειτουργεί σε διαφορετικά προγράμματα περιήγησης.

Παράδειγμα διαμόρφωσης:

<suite name="CrossBrowserSuite" parallel="tests">
  <test name="ChromeTest">
    <parameter name="browser" value="chrome"/>
    <classes><class name="com.test.LoginTest"/></classes>
  </test>
  <test name="FirefoxTest">
    <parameter name="browser" value="firefox"/>
    <classes><class name="com.test.LoginTest"/></classes>
  </test>
</suite>

Java Κώδικας:

@Parameters("browser")
@BeforeClass
public void setup(String browser) {
    if(browser.equalsIgnoreCase("chrome"))
        driver = new ChromeDriver();
    else if(browser.equalsIgnoreCase("firefox"))
        driver = new FirefoxDriver();
}

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


44) Πώς ενσωματώνετε TestNG με το Docker ή Selenium Πλέγμα?

TestNG ενσωματώνεται απρόσκοπτα με Dockerized Selenium Πλέγμα για να ενεργοποιήσετε τις κατανεμημένες παράλληλες δοκιμές.

Βήματα:

  1. Ρύθμιση Selenium Πλέγμα στο Docker χρησιμοποιώντας την επίσημη Selenium εικόνα:
    docker run -d -p 4444:4444 --name selenium-grid selenium/standalone-chrome
  2. Ενημέρωση TestNG ρύθμιση:
  3. DesiredCapabilities caps = new DesiredCapabilities();
    caps.setBrowserName("chrome");
    driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), caps);
    
  4. Εκτελέστε την εντολή σου μέσω του Jenkins ή του CI pipeline.

οφέλη:

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

45) Ποια είναι η διαφορά μεταξύ παράλληλης εκτέλεσης σε επίπεδα σουίτας, δοκιμής και μεθόδου στο TestNG?

Επίπεδο Παράλληλο χαρακτηριστικό Συμπεριφορά εκτέλεσης
Σουίτα parallel="suites" Εκτελεί πολλαπλές σουίτες ταυτόχρονα
Δοκιμή parallel="tests" Τρέχει <test> μπλοκ ταυτόχρονα
Τάξη parallel="classes" Εκτελεί παράλληλα δοκιμαστικά μαθήματα
Μέθοδος parallel="methods" Εκτελεί παράλληλα μεμονωμένες μεθόδους δοκιμών

Παράδειγμα:

<suite name="ParallelTests" parallel="methods" thread-count="3">
  <test name="SampleTest">
    <classes><class name="com.test.ParallelExample"/></classes>
  </test>
</suite>

καλύτερη πρακτική:Χρήση parallel="classes" για σταθερότητα στο Selenium δοκιμές για την αποφυγή συγκρούσεων κοινών προγραμμάτων οδήγησης.


46) Πώς μπορείτε να κάνετε κοινή χρήση δεδομένων μεταξύ δοκιμών χωρίς να χρησιμοποιήσετε καθολικές μεταβλητές; TestNG?

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

Παράδειγμα:

@Test
public void storeData(ITestContext context) {
    context.setAttribute("token", "abc123");
}

@Test(dependsOnMethods = "storeData")
public void useData(ITestContext context) {
    String token = (String) context.getAttribute("token");
    System.out.println("Using token: " + token);
}

Αυτό αποφεύγει τις στατικές μεταβλητές, διατηρεί την ασφάλεια των νημάτων και διασφαλίζει απομόνωση δεδομένων σε όλες τις δοκιμές.


47) Πώς καταγράφετε και καταγράφετε τις δοκιμές που παραλείπονται στο TestNG?

Μπορείτε να καταγράψετε δοκιμές που παραλείφθηκαν χρησιμοποιώντας onTestSkipped() στο ITestListener Διεπαφή.

Παράδειγμα:

@Override
public void onTestSkipped(ITestResult result) {
    System.out.println("Skipped Test: " + result.getName());
}

Λόγοι παράλειψης:

  • Αποτυχία εξαρτημένης δοκιμής.
  • Υπό όρους παράλειψη μέσω SkipException.
  • Μη διαθεσιμότητα περιβάλλοντος.

καλύτερη πρακτική:
Καταγράψτε τους λόγους παράλειψης και τις ιχνηλατήσεις στοίβας για ιχνηλασιμότητα σε αναφορές CI ή πίνακες ελέγχου.


48) Εξηγήστε πώς να παραμετροποιήσετε τις δοκιμές REST API χρησιμοποιώντας TestNG και RestAssured.

TestNG'S @DataProvider ενσωματώνεται κομψά με RestAssured για παραμετροποίηση API.

Παράδειγμα:

@DataProvider(name = "apiData")
public Object[][] apiData() {
  return new Object[][] {
    {"https://api.example.com/users/1"},
    {"https://api.example.com/users/2"}
  };
}

@Test(dataProvider = "apiData")
public void testApi(String url) {
  Response response = RestAssured.get(url);
  Assert.assertEquals(response.getStatusCode(), 200);
}

Πλεονεκτήματα:

  • Εκτελεί την ίδια κλήση API για πολλαπλά τελικά σημεία ή ωφέλιμα φορτία.
  • Απλοποιεί τις δοκιμές παλινδρόμησης για API με ποικίλα σύνολα εισόδου.
  • Ενσωματώνεται άψογα με εργαλεία και αναφορές CI.

49) Πώς δημιουργείτε προσαρμοσμένες σχολιασμούς στο TestNG για επαναχρησιμοποιήσιμα πρότυπα δοκιμών;

Οι προσαρμοσμένες σχολιασμοί μπορούν να τυποποιήσουν επαναλαμβανόμενες διαμορφώσεις δοκιμών ή επικυρώσεις.

Παράδειγμα:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface SmokeTest {
  String description() default "Smoke Test";
}

Χρήση:

@SmokeTest(description="Validating Login Functionality")
@Test
public void loginTest() { ... }

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

Αυτή η τεχνική χρησιμοποιείται ευρέως σε μετα-προγραμματισμός πλαισίου για τη δημιουργία αυτο-τεκμηριωμένων δοκιμών.


50) Πώς μπορείτε να συνδυάσετε Cucumber και TestNG για υβριδικά πλαίσια δοκιμών;

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

Παράδειγμα δρομέα:

@CucumberOptions(
  features = "src/test/resources/features",
  glue = "stepDefinitions",
  plugin = {"pretty", "html:target/cucumber-report.html"}
)
public class RunCucumberTest extends AbstractTestNGCucumberTests { }

Πλεονεκτήματα:

  • Χορηγείται TestNG'S σχολιασμοί, ακροατές και αναφορές.
  • Υποστηρίζει παράλληλη εκτέλεση χαρακτηριστικών.
  • Ενσωματώνεται με Allure και ExtentReports εύκολα.

Αυτή η υβριδική προσέγγιση συγχωνεύεται Αναγνωσιμότητα BDD μαζί σου, TestNG ευελιξία, ιδανικό για πλαίσια εταιρικού επιπέδου.


🔍 Κορυφή TestNG Ερωτήσεις Συνέντευξης με Σενάρια Πραγματικού Κόσμου & Στρατηγικές Απαντήσεις

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

1) Μπορείτε να εξηγήσετε τα βασικά πλεονεκτήματα της χρήσης TestNG σε σύγκριση με JUnit?

Αναμενόμενα από τον υποψήφιο: Δείξτε κατανόηση του TestNGβελτιωμένα χαρακτηριστικά του και γιατί συχνά προτιμάται για τον αυτοματισμό επιχειρήσεων.

Παράδειγμα απάντησης: "TestNG παρέχει πολλά πλεονεκτήματα όπως ευέλικτη διαμόρφωση δοκιμών, υποστήριξη για παράλληλη εκτέλεση, εξαρτώμενες μεθόδους δοκιμών, δοκιμές που βασίζονται σε δεδομένα με DataProviders και ενσωματωμένες αναφορές. Αυτές οι δυνατότητες καθιστούν TestNG πιο ισχυρό για σύνθετα πλαίσια αυτοματισμού που απαιτούν επεκτασιμότητα.


2) Πώς χρησιμοποιείτε TestNG σχολιασμοί για τον έλεγχο της ροής εκτέλεσης δοκιμών;

Αναμενόμενα από τον υποψήφιο: Γνώση του σκοπού και της σειράς των σχολιασμών.

Παράδειγμα απάντησης: "TestNG προσφέρει σχολιασμούς όπως @BeforeSuite, @BeforeClass, @BeforeMethod, @Test και τους αντίστοιχους σχολιασμούς απεγκατάστασης. Αυτά επιτρέπουν τη δομημένη οργάνωση της ρύθμισης και του καθαρισμού των δοκιμών. Για παράδειγμα, το @BeforeMethod εκτελείται πριν από κάθε μέθοδο δοκιμής, κάτι που είναι χρήσιμο για την αρχικοποίηση της κατάστασης του προγράμματος περιήγησης.


3) Περιγράψτε ένα απαιτητικό έργο αυτοματισμού όπου TestNG έπαιξε καθοριστικό ρόλο.

Αναμενόμενα από τον υποψήφιο: Πραγματική εμπειρία σε έργα και ικανότητα διατύπωσης προβλημάτων.

Παράδειγμα απάντησης: «Στον προηγούμενο ρόλο μου, εργάστηκα σε ένα έργο που απαιτούσε εκτεταμένες δοκιμές παλινδρόμησης σε πολλαπλά περιβάλλοντα.» TestNGΤα χαρακτηριστικά παράλληλης εκτέλεσης και ομαδοποίησης επέτρεψαν στην ομάδα να εκτελεί ταυτόχρονα κρίσιμες σουίτες, μειώνοντας σημαντικά τον χρόνο εκτέλεσης διατηρώντας παράλληλα την αξιοπιστία.


4) Πώς TestNG οι ομάδες βοηθούν στην αποτελεσματική οργάνωση και εκτέλεση των τεστ;

Αναμενόμενα από τον υποψήφιο: Κατανόηση της ομαδοποίησης, συμπεριλαμβανομένων των μηχανισμών συμπερίληψης/αποκλεισμού.

Παράδειγμα απάντησης: «Ομάδες σε TestNG επιτρέπουν την κατηγοριοποίηση περιπτώσεων δοκιμών όπως καπνός, παλινδρόμηση και ολοκλήρωση. Χρησιμοποιώντας το testng.xml, μπορώ να εκτελέσω επιλεκτικά ομάδες, να εξαιρέσω ασταθείς δοκιμές και να διαχειριστώ διαφορετικές σουίτες δοκιμών χωρίς να τροποποιήσω τον ίδιο τον κώδικα.


5) Περιγράψτε μια περίπτωση όπου χρειάστηκε να κάνετε debug χωρίς αποτέλεσμα TestNG δοκιμές. Ποια ήταν η προσέγγισή σας;

Αναμενόμενα από τον υποψήφιο: Κριτική σκέψη και δεξιότητες επίλυσης προβλημάτων.

Παράδειγμα απάντησης: «Σε μια προηγούμενη θέση, αντιμετώπισα μια σειρά από αποτυχίες» TestNG δοκιμές που φαινόταν να περνούν τοπικά, αλλά απέτυχαν στο CI. Ενεργοποίησα την λεπτομερή καταγραφή, εξέτασα τη σειρά εκτέλεσης και ανακάλυψα ότι ένας κοινόχρηστος πόρος δεν επαναφερόταν μεταξύ των δοκιμών. Στη συνέχεια, εφάρμοσα τα κατάλληλα βήματα απεγκατάστασης χρησιμοποιώντας το @AfterMethod για να διασφαλίσω την απομόνωση των δοκιμών.


6) Πώς εφαρμόζετε δοκιμές βάσει δεδομένων χρησιμοποιώντας TestNG?

Αναμενόμενα από τον υποψήφιο: Κατανόηση των DataProviders και των περιπτώσεων χρήσης.

Παράδειγμα απάντησης: «Δημιουργώ μια μέθοδο @DataProvider που επιστρέφει δεδομένα σε πίνακες αντικειμένων και στη συνέχεια τα συνδέω με μια μέθοδο @Test χρησιμοποιώντας το χαρακτηριστικό dataProvider. Αυτό επιτρέπει πολλαπλές επαναλήψεις της ίδιας δοκιμής με διαφορετικά σύνολα εισόδου, κάτι που είναι χρήσιμο για την επικύρωση υποβολών φόρμας ή παραλλαγών ωφέλιμου φορτίου API.»


7) Πώς διαχειρίζεστε τις εξαρτήσεις δοκιμών στο TestNG?

Αναμενόμενα από τον υποψήφιο: Σωστή χρήση των dependsOnMethods ή dependsOnGroups.

Παράδειγμα απάντησης: "TestNG επιτρέπει εξαρτήσεις δοκιμών μέσω των χαρακτηριστικών dependsOnMethods και dependsOnGroups. Χρησιμοποιώ εξαρτήσεις όταν μια δοκιμή πρέπει να εκτελεστεί μόνο αφού ολοκληρωθεί με επιτυχία μια άλλη, όπως η επαλήθευση μιας παραγγελίας μόνο μετά τη δημιουργία της.


8) Περιγράψτε πώς το χρησιμοποιήσατε TestNG με εργαλεία συνεχούς ολοκλήρωσης.

Αναμενόμενα από τον υποψήφιο: Εμπειρία αυτοματοποίησης αγωγών σε πραγματικό κόσμο.

Παράδειγμα απάντησης: «Στην προηγούμενη δουλειά μου, ενσωμάτωσα TestNG με την Jenkins ρυθμίζοντας την έκδοση Maven για να δημιουργήσει TestNG Αναφορές HTML και XML. Στη συνέχεια, η Jenkins αρχειοθέτησε τις αναφορές και εμφάνισε τα αποτελέσματα μετά από κάθε κύκλο δημιουργίας. Αυτή η ενσωμάτωση βοήθησε την ομάδα να εντοπίζει γρήγορα τις αποτυχίες και να διατηρεί τη σταθερότητα της έκδοσης.


9) Πείτε μου για μια περίπτωση που έπρεπε να εργαστείτε υπό αυστηρές προθεσμίες ενώ διαχειριζόσασταν πολλαπλές εργασίες αυτοματισμού.

Αναμενόμενα από τον υποψήφιο: Διαχείριση χρόνου και ικανότητα ιεράρχησης προτεραιοτήτων.

Παράδειγμα απάντησης: «Στον προηγούμενο ρόλο μου, χρειαζόταν να ενημερώσω τα υπάρχοντα TestNG σουίτες δοκιμών, δημιουργώντας παράλληλα νέες για μια επερχόμενη κυκλοφορία. Ιεράρχησα τις εργασίες με βάση τον αντίκτυπο στην επιχείρηση, αυτοματοποίησα πρώτα τις περιοχές με τον υψηλότερο κίνδυνο και χρησιμοποίησα TestNG ομαδοποίηση για την απομόνωση των ολοκληρωμένων τμημάτων για έγκαιρη αναθεώρηση. Αυτό εξασφάλισε την έγκαιρη παράδοση χωρίς συμβιβασμούς στην ποιότητα.


10) Πώς θα σχεδιάζατε ένα κλιμακωτό TestNG πλαίσιο για μια μεγάλη εφαρμογή;

Αναμενόμενα από τον υποψήφιο: Archiκατανόηση της δομής, πρότυπα και βέλτιστες πρακτικές.

Παράδειγμα απάντησης: «Θα σχεδίαζα ένα αρθρωτό πλαίσιο χρησιμοποιώντας το Μοντέλο Αντικειμένου Σελίδας, ενσωματώνοντας TestNG για τη διαχείριση εκτέλεσης και χρήση DataProviders για σενάρια που βασίζονται σε δεδομένα. Θα ρυθμίσω επίσης παράλληλη εκτέλεση, θα κεντροποιήσω βοηθητικά προγράμματα και θα εξωτερικεύσω τις ρυθμίσεις διαμόρφωσης, ώστε το πλαίσιο να παραμένει επεκτάσιμο και συντηρήσιμο καθώς η εφαρμογή αναπτύσσεται.

Συνοψίστε αυτήν την ανάρτηση με: