शीर्ष 50 TestNG साक्षात्कार प्रश्न और उत्तर (2026)

ए की तैयारी TestNG क्या आप इंटरव्यू दे रहे हैं? अब उन सवालों पर विचार करने का समय है जो आपकी खूबियों को उजागर करते हैं। एक ठोस TestNG साक्षात्कार की नींव से गहन ज्ञान, आत्मविश्वास और तत्परता का पता चलता है, जिसे भर्ती करने वाली टीमें महत्व देती हैं।
इस क्षेत्र में उपलब्ध अवसरों में स्वचालन की वृद्धि, विकसित होते फ्रेमवर्क और व्यावहारिक परीक्षण अनुप्रयोग शामिल हैं जिनके लिए तकनीकी और व्यावसायिक अनुभव की आवश्यकता होती है। इस क्षेत्र में काम करने के लिए डोमेन विशेषज्ञता, विश्लेषण कौशल और एक लचीला कौशल सेट आवश्यक है जो फ्रेशर्स, मिड-लेवल और सीनियर पेशेवरों को तकनीकी, बुनियादी और उन्नत स्तर के सामान्य प्रश्नों और उत्तरों को समझने में मदद करता है। अधिक पढ़ें…
👉 निःशुल्क पीडीएफ डाउनलोड: TestNG साक्षात्कार प्रश्न और उत्तर
चोटी TestNG साक्षात्कार प्रश्न और उत्तर
1) क्या है TestNG और इसका उपयोग ऑटोमेशन टेस्टिंग में क्यों किया जाता है?
TestNG (टेस्ट नेक्स्ट जेनरेशन) एक परीक्षण ढांचा है जो इससे प्रेरित है JUnit यह NUnit पर आधारित है, लेकिन इसमें ग्रुपिंग, सीक्वेंसिंग, पैरामीटराइजेशन और डिपेंडेंसी मैनेजमेंट जैसी उन्नत क्षमताएं जोड़ी गई हैं। इसका मुख्य उपयोग ऑटोमेशन टेस्टिंग में टेस्ट निष्पादन को सुव्यवस्थित करने, टेस्ट संगठन को बेहतर बनाने और विस्तृत HTML और XML रिपोर्ट तैयार करने के लिए किया जाता है।
Key के प्रमुख लाभ TestNG शामिल हैं:
- समर्थन करता है समानांतर परीक्षण निष्पादनजिससे कुल रन टाइम कम हो जाता है।
- प्रदान करता है एनोटेशन जो परीक्षण प्रवाह को प्रभावी ढंग से नियंत्रित करते हैं।
- ऑफर डेटा-संचालित परीक्षण के माध्यम से
@DataProviderएनोटेशन। - उत्पन्न करता है अनुकूलन योग्य रिपोर्ट बेहतर डिबगिंग के लिए.
उदाहरण के लिए, TestNG यह आपको टेस्ट कोड को संशोधित किए बिना स्मोक, रिग्रेशन और इंटीग्रेशन टेस्ट समूहों को स्वतंत्र रूप से निष्पादित करने की अनुमति देता है, जिससे बड़े ऑटोमेशन सूट में लचीलापन और स्केलेबिलिटी मिलती है।
2) समझाइए TestNG एनोटेशन और उनके निष्पादन क्रम सहित जीवनचक्र।
RSI 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 यह अधिक मजबूत कॉन्फ़िगरेशन और समानांतर निष्पादन क्षमताएं प्रदान करता है।
| Feature | 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>
लाभ:
- यह टेस्ट केसों के चयनात्मक निष्पादन को सुगम बनाता है।
- सीआई/सीडी पाइपलाइनों में लचीलेपन को बढ़ाता है।
- इंक्रीमेंटल बिल्ड के दौरान निष्पादन समय बचाता है।
6) पैरामीटराइजेशन किस प्रकार प्राप्त किया जा सकता है? TestNG?
पैरामीटराइजेशन डेटा-संचालित परीक्षण को सक्षम बनाता है, जिससे परीक्षणों को कई इनपुट डेटासेट के साथ चलाने की अनुमति मिलती है। TestNG यह दो प्राथमिक विधियों का समर्थन करता है:
- का प्रयोग
@ParametersXML के साथ एनोटेशन: - का प्रयोग
@DataProvider:
<parameter name="browser" value="chrome"/>
@Test
@Parameters("browser")
public void launchBrowser(String browser) { ... }
@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 परीक्षण सेटअप के आधार पर परीक्षणों को कई लचीले तरीकों से निष्पादित किया जा सकता है:
- आईईडी से (Eclipse/इंटेलिजे): क्लास पर राइट-क्लिक करें या
XML file→Run as→TestNG Test. - कमांड लाइन से:
java -cp "path\testng.jar;bin" org.testng.TestNG testng.xml - बिल्ड टूल्स का उपयोग करना:
- मेवेन: कॉन्फ़िगर
surefire-plugininpom.xml. - Gradle: उपयोग
testngनिर्भरता और कार्य विन्यास।
- मेवेन: कॉन्फ़िगर
- सीआई/सीडी पाइपलाइनों के माध्यम से: स्वचालित निष्पादन के लिए जेनकिंस या गिटहब एक्शन के साथ एकीकृत।
यह विविधता विकास, परीक्षण और उत्पादन वातावरणों में अनुकूलता सुनिश्चित करती है।
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>
समानांतर मोड समर्थित:
testsclassesmethodsinstances
लाभ:
- तेज़ प्रतिक्रिया चक्र।
- मल्टी-कोर प्रोसेसरों का कुशल उपयोग।
- बड़े स्वचालन सूटों के लिए स्केलेबिलिटी।
हालाँकि, सुनिश्चित करें धागा सुरक्षा वेबड्राइवर या डेटाबेस कनेक्शन जैसे साझा संसाधनों का उपयोग करते समय।
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 के बीच अंतर:
| Feature | @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 फ़ाइल की भूमिका क्या है और इसके प्रमुख घटक क्या हैं?
RSI 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 स्वचालित रूप से उत्पन्न होता है दो प्रकार की रिपोर्टें:
- एचटीएमएल रिपोर्ट (
test-output/index.html) – उत्तीर्ण, अनुत्तीर्ण और छोड़े गए परीक्षणों का सारांश प्रस्तुत करता है। - XML रिपोर्ट – इसका उपयोग CI/CD टूल्स के साथ एकीकरण के लिए किया जाता है।
उन्नत रिपोर्टिंग के लिए, TestNG के साथ एकीकृत करता है:
- एक्सटेंटरिपोर्ट्स – इसमें ग्राफिकल डैशबोर्ड और विस्तृत लॉग उपलब्ध हैं।
- एल्योर रिपोर्ट्स – यह परीक्षण चरणों, स्क्रीनशॉट और लॉग के साथ दृश्य विश्लेषण प्रदान करता है।
एकीकरण का उदाहरण:
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);
}
}
लाभ:
- सक्षम बनाता है पैरामीटरयुक्त ऑब्जेक्ट निर्माण.
- के लिए आदर्श क्रॉस-ब्राउज़र परीक्षण और बहु-पर्यावरण निष्पादन.
जब आपको केवल मेथड-लेवल डेटा भिन्नता के बजाय विभिन्न ऑब्जेक्ट कॉन्फ़िगरेशन की आवश्यकता होती है, तो फ़ैक्टरियाँ डेटा प्रोवाइडर्स की पूरक होती हैं।
18) आप अभिकथन का उपयोग किस प्रकार कर सकते हैं? TestNG?
परीक्षण विधियों के भीतर अपेक्षित और वास्तविक परिणामों को मान्य करने के लिए अभिकथन का उपयोग किया जाता है।
कथनों के प्रकार:
- हार्ड असर्शन (असर्ट क्लास):
विफलता होने पर परीक्षण का निष्पादन तुरंत रोक देता है। - सॉफ्ट असर्शन (SoftAssert क्लास):
विफलता के बाद भी निष्पादन जारी रहता है और अंत में सभी समस्याओं की रिपोर्ट करता है। - कब इस्तेमाल करें:
- इसके लिए ठोस अभिकथन का प्रयोग करें महत्वपूर्ण सत्यापन जैसे लॉगिन सफल।
- सॉफ्ट असर्शन का उपयोग करें एकाधिक सत्यापन एक ही परीक्षण विधि के भीतर।
Assert.assertEquals(actual, expected); Assert.assertTrue(condition);
SoftAssert soft = new SoftAssert();
soft.assertEquals(actual, expected);
soft.assertAll();
19) @BeforeMethod और @BeforeClass के बीच अंतर स्पष्ट कीजिए। TestNG.
| पहलू | @BeforeMethod |
@BeforeClass |
|---|---|---|
| निष्पादन | रन प्रत्येक से पहले जाँचने का तरीका | रन एक बार पहले क्लास में कोई भी विधि |
| विस्तार | प्रति परीक्षण विधि | प्रति परीक्षण वर्ग |
| सामान्य उपयोग | प्रत्येक परीक्षण से पहले ब्राउज़र को आरंभ करना | कॉन्फ़िगरेशन या ब्राउज़र सेटअप को एक बार लोड करना |
उदाहरण:
@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());
}
बक्सों का इस्तेमाल करें:
- परीक्षण मापदंडों को गतिशील रूप से प्राप्त करना।
- सूट के नाम या समानांतर निष्पादन सेटिंग्स जैसी कॉन्फ़िगरेशन जानकारी तक पहुंचना।
- निर्भरताओं को हार्डकोड किए बिना परीक्षण लचीलेपन को बढ़ाना।
डिपेंडेंसी इंजेक्शन डेवलपर्स को अनुमति देता है मॉड्यूलर, संदर्भ-जागरूक परीक्षण लिखें जो पर्यावरण में होने वाले परिवर्तनों के अनुसार गतिशील रूप से अनुकूलित हो जाते हैं।
21) @Factory और @DataProvider में क्या अंतर है? TestNG?
दोनों @Factory और @DataProvider पैरामीटराइजेशन में मदद करते हैं, लेकिन वे काम करते हैं अलग - अलग स्तर टेस्ट आर्किटेक्चर में।
| Feature | @Factory |
@DataProvider |
|---|---|---|
| विस्तार | कक्षा स्तर | विधि स्तर |
| उद्देश्य | अलग-अलग डेटा के साथ एक क्लास के कई इंस्टेंस बनाता है | एकल परीक्षण विधि को डेटा प्रदान करता है |
| निष्पादन | प्रत्येक इंस्टेंस के लिए संपूर्ण क्लास को निष्पादित करता है | एक ही विधि को कई बार निष्पादित करता है |
| आदर्श उपयोग का मामला | क्रॉस-ब्राउज़र या वातावरण परीक्षण | डेटा-आधारित कार्यात्मक परीक्षण |
उदाहरण:
- फैक्टरी: यह प्रत्येक ब्राउज़र प्रकार के लिए संपूर्ण क्लास को चलाता है।
- डेटा प्रदाता: यह एक ही परीक्षण विधि को कई डेटा सेट के साथ चलाता है।
उपयोग @Factory जब ऑब्जेक्ट इंस्टेंशिएशन स्वयं ही भिन्न होता है, और @DataProvider एक ही ऑब्जेक्ट इंस्टेंस के भीतर कार्यात्मक इनपुट भिन्नता के लिए।
22) आप असफल टेस्ट केसों को स्वचालित रूप से पुनः प्रयास कैसे कर सकते हैं? TestNG?
TestNG एक तंत्र प्रदान करता है असफल परीक्षण मामलों को पुनः चलाएँ का उपयोग IRetryAnalyzer interface.
उदाहरण कार्यान्वयन:
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");
}
लाभ:
- सीआई पाइपलाइनों में अस्थिरता को कम करता है।
- यह अस्थायी नेटवर्क या पर्यावरणीय समस्याओं को संभालता है।
सर्वश्रेष्ठ प्रणालियां: बीच-बीच में होने वाली विफलताओं को डीबग करने के लिए उचित लॉगिंग और स्क्रीनशॉट के साथ पुनः प्रयास तर्क को संयोजित करें।
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 सोर्स कोड — बड़े प्रोजेक्ट सूट में उपयोगी होता है जहां रिलीज चक्र या स्प्रिंट प्राथमिकताओं के आधार पर गतिशील समावेशन या बहिष्करण की आवश्यकता होती है।
26) कैसे हो सकता है TestNG के साथ एकीकृत किया जाना Selenium वेबड्राइवर?
TestNG और Selenium यूआई ऑटोमेशन के लिए एक शक्तिशाली संयोजन बनता है।
एक सामान्य एकीकरण सेटअप में एनोटेशन का उपयोग करके परीक्षणों को व्यवस्थित करना, सेटअप/टियरडाउन का प्रबंधन करना और 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();
}
एकीकरण के लाभ:
- सक्षम बनाता है समानांतर ब्राउज़र परीक्षण.
- सरल परीक्षण समूहीकरण और रिपोर्टिंग.
- के साथ निर्बाध रूप से कार्य करता है सीआई / सीडी पाइपलाइन जैसे कि जेनकिंस या गिटहब एक्शन्स।
27) उपयोग करते समय कुछ सर्वोत्तम अभ्यास क्या हैं? TestNG बड़े स्वचालन फ्रेमवर्क में?
सर्वोत्तम प्रथाएं:
- उपयोग Descriptनामकरण: परीक्षणों के नाम उनके व्यवहार के आधार पर रखें, न कि उनके कार्यान्वयन के आधार पर।
- उत्तोलन समूहन: तार्किक परीक्षण समूह बनाएं (स्मोक, रिग्रेशन)।
- हार्डकोडिंग से बचें: परीक्षण डेटा के लिए पैरामीटर या प्रॉपर्टी फ़ाइलों का उपयोग करें।
- निर्भरता न्यूनतम करें: जहां तक संभव हो, टेस्ट केस को स्वतंत्र रखें।
- केंद्रीकृत विन्यास: उपयोग
testng.xmlसुइट सेटअप के लिए। - रिपोर्टिंग को एकीकृत करें: लिसनर या एक्सटेंटरिपोर्ट्स जैसे थर्ड-पार्टी टूल का उपयोग करें।
- रिट्राई लॉजिक का इस्तेमाल सावधानीपूर्वक करें: वास्तविक दोषों को छिपाने से बचें।
इन बातों का पालन करने से यह सुनिश्चित होता है स्केलेबिलिटी, मेंटेनेबिलिटी और रीडेबिलिटी उद्यम-स्तरीय स्वचालन में।
28) @BeforeTest और @BeforeSuite में क्या अंतर है? TestNG?
| Feature | @BeforeTest |
@BeforeSuite |
|---|---|---|
| विस्तार | प्रत्येक से पहले चलता है <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 क्या इसका उपयोग एपीआई टेस्टिंग के लिए किया जा सकता है? कैसे?
हां. TestNG इसका प्रभावी ढंग से उपयोग किया जा सकता है एपीआई परीक्षण HTTP क्लाइंट लाइब्रेरी के साथ एकीकृत करके, जैसे कि निश्चिंत रहें or एचटीटीपीक्लाइंट.
उदाहरण:
@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 विधि क्रमबद्धता.
तरीके:
- का प्रयोग
dependsOnMethods: - XML विधि अनुक्रम का उपयोग करना:
@Test
public void login() { ... }
@Test(dependsOnMethods = "login")
public void verifyDashboard() { ... }
<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: मेवन कमांड
mvn test -Dtest=com.test.LoginTests#verifyLogin
यह दृष्टिकोण अनुमति देता है चयनात्मक निष्पादनयह व्यक्तिगत विधियों को डीबग करने या त्वरित निर्माण के दौरान महत्वपूर्ण कार्यात्मकताओं को मान्य करने के लिए उपयोगी है।
33) आप किसी बाहरी एक्सेल फ़ाइल का उपयोग करके परीक्षणों को पैरामीटराइज़ कैसे करते हैं? TestNG?
एक्सेल-आधारित पैरामीटराइजेशन उन डेटा-संचालित फ्रेमवर्क में आम है जहां परीक्षण डेटा में अक्सर बदलाव होता रहता है।
कार्यान्वयन चरण:
- उपयोग अपाचे POI or जेएक्सेल एक्सेल डेटा पढ़ने के लिए।
- इसे इसमें डालें
@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;
}
इससे एक्सेल से कई वास्तविक डेटा सेटों के साथ एक ही परीक्षण पद्धति को चलाना संभव हो जाता है, जिससे लचीलापन और कवरेज बढ़ जाता है।
34) आप कैसे चला सकते हैं? TestNG जेनकिंस या सीआई/सीडी पाइपलाइन में परीक्षण?
TestNG के साथ निर्बाध रूप से एकीकृत करता है जेनकींस, गिटलैब सीआईया, गिटहब क्रिया मेवन के माध्यम से या Gradle बनाता है।
जेनकिंस में चरण:
- स्थापित करें मेवन एकीकरण प्लगइन.
- बनाओ फ्रीस्टाइल या पाइपलाइन जॉब.
- जोड़ना
mvn clean testनिर्माण चरण के रूप में। - निर्माण के बाद, HTML रिपोर्ट कॉन्फ़िगर करें:
- रिपोर्ट निर्देशिका:
test-output - अनुक्रमणिका फ़ाइल:
index.html
- रिपोर्ट निर्देशिका:
लाभ:
- स्वचालित रिग्रेशन टेस्टिंग को सक्षम बनाता है।
- यह निर्धारित समय पर परीक्षण चलाने और रुझानों की निगरानी करने की सुविधा प्रदान करता है।
- यह सुनिश्चित करता है कि सभी वातावरणों में परीक्षण का निष्पादन एक समान हो।
35) @Parameters का उद्देश्य क्या है और यह @Optional से किस प्रकार भिन्न है?
दोनों एनोटेशन पैरामीटराइजेशन से संबंधित हैं लेकिन अलग-अलग उद्देश्यों की पूर्ति करते हैं।
| Feature | @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* असफल।
वे कारण बन सकते हैं आश्रित परीक्षणों को छोड़ना हैभले ही वे परीक्षण सही हों।
सामान्य कारणों में:
- वेबड्राइवर का गलत आरंभीकरण।
- डेटाबेस या वातावरण सेटअप संबंधी समस्याएं।
- पैरामीटर का गलत विन्यास।
समाधान की:
- उपयोग पकड़ने की कोशिश सेटअप विधियों में ब्लॉक।
- लागू करें
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
लाभ:
- सफल परीक्षणों को छोड़कर समय की बचत होती है।
- बड़े डेटाबेस में डिबगिंग को आसान बनाता है।
- त्वरित पुनःपरीक्षण के लिए सीआई पाइपलाइनों में आमतौर पर इसका उपयोग किया जाता है।
आप पोस्ट-बिल्ड स्क्रिप्ट का उपयोग करके इसे रीरन के लिए जेनकिंस के साथ एकीकृत भी कर सकते हैं।
40) कुछ सीमाएँ क्या हैं? TestNG और इन्हें कैसे कम किया जा सकता है?
अपनी मजबूती के बावजूद, TestNG इसकी कुछ सीमाएँ हैं।
| सीमा | शमन रणनीति |
|---|---|
| XML कॉन्फ़िगरेशन की जटिलता | एनोटेशन-आधारित कॉन्फ़िगरेशन और बिल्डरों का उपयोग करें |
| सीमित मूल रिपोर्टिंग | ExtentReports या Allure को एकीकृत करें |
| कोई अंतर्निर्मित पुनः प्रयास नियंत्रण नहीं | को लागू करें IRetryAnalyzer |
| पैरेलल रन में थ्रेड-सेफ्टी संबंधी चिंताएँ | थ्रेड-लोकल वेबड्राइवर इंस्टेंस का उपयोग करें |
| शुरुआती के लिए सीखने की अवस्था | टेम्पलेट-आधारित परियोजना संरचनाओं को बनाए रखें |
उचित फ्रेमवर्क डिजाइन और सर्वोत्तम प्रथाओं के साथ, इन सीमाओं को कम किया जा सकता है, जिससे स्थिर और रखरखाव योग्य स्वचालन समाधान सुनिश्चित होते हैं।
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 { ... }
लाभ:
- यह विफलताओं को स्वचालित रूप से दर्ज करता है।
- दृश्य प्रमाणों के माध्यम से डिबगिंग में सुधार होता है।
- लॉग को बनाए रखने में लगने वाले मैन्युअल प्रयास को कम करता है।
यह तकनीक सीआई/सीडी स्वचालन पाइपलाइनों में महत्वपूर्ण है, खासकर दूरस्थ रूप से विफल बिल्ड का निदान करते समय।
42) IReporter और ITestListener में क्या अंतर है? TestNG?
| Feature | IReporter |
ITestListener |
|---|---|---|
| उद्देश्य | परीक्षण निष्पादन के बाद अनुकूलित रिपोर्ट तैयार करता है | रनटाइम टेस्ट इवेंट्स को ट्रैक करता है और उन पर प्रतिक्रिया करता है। |
| मंगलाचरण | सभी परीक्षण पूरे होने के बाद | परीक्षण जीवनचक्र के दौरान (प्रारंभ, सफलता, विफलता) |
| उत्पादन | HTML/XML/JSON रिपोर्ट | लॉग फ़ाइलें, स्क्रीनशॉट, लाइव डैशबोर्ड |
| सामान्य उपयोग | ExtentReports, Allure एकीकरण | लॉगिंग, विफलता प्रबंधन, पुनः प्रयास तंत्र |
उदाहरण:
- उपयोग
IReporterनिर्माण के लिए व्यापक रिपोर्ट परीक्षण पूर्ण होने के बाद। - उपयोग
ITestListenerएसटी रीयल-टाइम लॉगिंग या स्क्रीनशॉट.
वे भी हो सकते हैं संयुक्त संपूर्ण स्वचालन विश्लेषण प्रणालियों का निर्माण करना।
43) आप क्रॉस-ब्राउज़र परीक्षण कैसे करते हैं? 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 डॉकर के साथ या Selenium ग्रिड?
TestNG के साथ निर्बाध रूप से एकीकृत करता है डॉकराइज्ड Selenium ग्रिड वितरित समानांतर परीक्षण को सक्षम करने के लिए।
चरण:
- सेट अप Selenium डॉकर में ग्रिड आधिकारिक का उपयोग करना Selenium चित्र:
docker run -d -p 4444:4444 --name selenium-grid selenium/standalone-chrome
- अपडेट TestNG सेट अप:
- जेनकिंस या सीआई पाइपलाइन के माध्यम से अपने सूट को निष्पादित करें।
DesiredCapabilities caps = new DesiredCapabilities();
caps.setBrowserName("chrome");
driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), caps);
लाभ:
- सक्षम बनाता है स्केलेबल समानांतर परीक्षण.
- इससे पर्यावरण सेटअप संबंधी जटिलताएं कम हो जाती हैं।
- प्रदान करता है सुसंगत परीक्षण निष्पादन वितरित कंटेनरों में।
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 interface.
उदाहरण:
@Override
public void onTestSkipped(ITestResult result) {
System.out.println("Skipped Test: " + result.getName());
}
न पढ़ने के कारण:
- आश्रित परीक्षण विफल।
- सशर्त स्किपिंग के माध्यम से
SkipException. - पर्यावरण की अनुपलब्धता।
सर्वश्रेष्ठ प्रणालियां:
सीआई रिपोर्ट या डैशबोर्ड में ट्रैसेबिलिटी के लिए लॉग स्किप के कारणों और स्टैक ट्रेस को रिकॉर्ड करें।
48) REST API परीक्षणों को पैरामीटराइज़ करने का तरीका समझाइए। TestNG और निश्चिंत रहें।
TestNGहै @DataProvider यह खूबसूरती से एकीकृत होता है निश्चिंत रहें एपीआई पैरामीटराइजेशन के लिए।
उदाहरण:
@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 के लिए रिग्रेशन टेस्टिंग को सरल बनाता है।
- यह 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 बीडीडी परिदृश्य, जो शक्तिशाली रिपोर्टिंग और समानांतरकरण की सुविधा प्रदान करते हैं।
उदाहरण रनर:
@CucumberOptions(
features = "src/test/resources/features",
glue = "stepDefinitions",
plugin = {"pretty", "html:target/cucumber-report.html"}
)
public class RunCucumberTest extends AbstractTestNGCucumberTests { }
लाभ:
- और नॉटिंघम TestNGहै एनोटेशन, श्रोता और रिपोर्टिंग.
- समर्थन करता है समानांतर फ़ीचर निष्पादन.
- के साथ एकीकृत करता है लुभाना और एक्सटेंटरिपोर्ट्स आसानी से.
यह हाइब्रिड दृष्टिकोण विलय करता है बीडीडी पठनीयता साथ में TestNG लचीलापनएंटरप्राइज-ग्रेड फ्रेमवर्क के लिए आदर्श।
🔍 शीर्ष TestNG वास्तविक दुनिया के परिदृश्यों और रणनीतिक प्रतिक्रियाओं के साथ साक्षात्कार प्रश्न
नीचे 10 व्यावहारिक, विषय-संबंधी उदाहरण दिए गए हैं। TestNG स्पष्ट अपेक्षाओं और ठोस उदाहरण उत्तरों के साथ साक्षात्कार के प्रश्न।
1) क्या आप उपयोग करने के प्रमुख लाभों को समझा सकते हैं? TestNG की तुलना में JUnit?
उम्मीदवार से अपेक्षित: समझ प्रदर्शित करें TestNGइसकी उन्नत विशेषताएं और उद्यम स्वचालन के लिए इसे अक्सर क्यों प्राथमिकता दी जाती है।
उदाहरण उत्तर: "TestNG यह कई लाभ प्रदान करता है जैसे लचीला परीक्षण विन्यास, समानांतर निष्पादन के लिए समर्थन, आश्रित परीक्षण विधियाँ, डेटा प्रदाताओं के साथ डेटा-संचालित परीक्षण और अंतर्निर्मित रिपोर्टिंग। ये क्षमताएँ इसे बनाती हैं। TestNG यह उन जटिल स्वचालन ढाँचों के लिए अधिक शक्तिशाली है जिन्हें स्केलेबिलिटी की आवश्यकता होती है।"
2) आप इसका उपयोग कैसे करते हैं? TestNG टेस्ट निष्पादन प्रवाह को नियंत्रित करने के लिए एनोटेशन?
उम्मीदवार से अपेक्षित: टिप्पणी के उद्देश्य और क्रम का ज्ञान।
उदाहरण उत्तर: "TestNG इसमें @BeforeSuite, @BeforeClass, @BeforeMethod, @Test जैसे एनोटेशन और उनसे संबंधित टियरडाउन एनोटेशन शामिल हैं। ये टेस्ट सेटअप और क्लीनअप के व्यवस्थित संगठन की अनुमति देते हैं। उदाहरण के लिए, @BeforeMethod प्रत्येक टेस्ट मेथड से पहले चलता है, जो ब्राउज़र स्टेट को इनिशियलाइज़ करने के लिए उपयोगी है।
3) एक चुनौतीपूर्ण स्वचालन परियोजना का वर्णन करें जहाँ TestNG महत्वपूर्ण भूमिका निभाई।
उम्मीदवार से अपेक्षित: वास्तविक परियोजना का अनुभव और समस्या-समाधान को स्पष्ट रूप से व्यक्त करने की क्षमता।
उदाहरण उत्तर: "अपनी पिछली भूमिका में, मैंने एक ऐसे प्रोजेक्ट पर काम किया जिसमें कई वातावरणों में व्यापक रिग्रेशन टेस्टिंग की आवश्यकता थी।" TestNGइसके समानांतर निष्पादन और समूहीकरण सुविधाओं ने टीम को महत्वपूर्ण कार्यों को एक साथ चलाने की अनुमति दी, जिससे विश्वसनीयता बनाए रखते हुए निष्पादन समय में काफी कमी आई।"
4) कैसे करें TestNG क्या समूह परीक्षणों को कुशलतापूर्वक आयोजित करने और निष्पादित करने में सहायता करते हैं?
उम्मीदवार से अपेक्षित: समूहीकरण की समझ, जिसमें शामिल करने/बाहर करने की प्रक्रियाएं भी शामिल हैं।
उदाहरण उत्तर: “समूहों में TestNG यह स्मोक, रिग्रेशन और इंटीग्रेशन जैसे टेस्ट केसों के वर्गीकरण की अनुमति देता है। testng.xml का उपयोग करके, मैं चुनिंदा समूहों को चला सकता हूं, अस्थिर परीक्षणों को बाहर कर सकता हूं और कोड में बदलाव किए बिना विभिन्न टेस्ट सूट को प्रबंधित कर सकता हूं।
5) एक ऐसी स्थिति का वर्णन करें जहाँ आपको विफल हो रहे कोड को डीबग करना पड़ा हो। TestNG परीक्षण। आपका दृष्टिकोण क्या था?
उम्मीदवार से अपेक्षित: आलोचनात्मक सोच और समस्या निवारण कौशल।
उदाहरण उत्तर: “पिछली नौकरी में मुझे कई तरह की असफलताओं का सामना करना पड़ा।” TestNG कुछ टेस्ट स्थानीय स्तर पर सफल प्रतीत हुए लेकिन CI में विफल हो गए। मैंने विस्तृत लॉगिंग सक्षम की, निष्पादन क्रम की समीक्षा की और पाया कि एक साझा संसाधन टेस्टों के बीच रीसेट नहीं हो रहा था। फिर मैंने टेस्ट अलगाव सुनिश्चित करने के लिए @AfterMethod का उपयोग करके उचित टियरडाउन चरण लागू किए।
6) डेटा-संचालित परीक्षण को आप किस प्रकार लागू करते हैं? TestNG?
उम्मीदवार से अपेक्षित: डेटा प्रोवाइडर्स और उनके उपयोग के मामलों की समझ।
उदाहरण उत्तर: “मैं एक @DataProvider मेथड बनाता हूँ जो ऑब्जेक्ट एरे में डेटा लौटाता है और फिर इसे dataProvider एट्रिब्यूट का उपयोग करके एक @Test मेथड से जोड़ता हूँ। इससे अलग-अलग इनपुट सेट के साथ एक ही टेस्ट के कई पुनरावृति संभव हो पाते हैं, जो फॉर्म सबमिशन या API पेलोड भिन्नताओं को मान्य करने के लिए उपयोगी है।”
7) आप परीक्षण निर्भरताओं को कैसे प्रबंधित करते हैं? TestNG?
उम्मीदवार से अपेक्षित: dependsOnMethods या dependsOnGroups का सही उपयोग।
उदाहरण उत्तर: "TestNG यह dependsOnMethods और dependsOnGroups एट्रिब्यूट के माध्यम से टेस्ट डिपेंडेंसी की अनुमति देता है। मैं डिपेंडेंसी का उपयोग तब करता हूं जब एक टेस्ट को दूसरे टेस्ट के सफलतापूर्वक पूरा होने के बाद ही निष्पादित किया जाना चाहिए, जैसे कि ऑर्डर बनाने के बाद ही उसका सत्यापन करना।
8) आपने इसका उपयोग कैसे किया है, इसका वर्णन करें। TestNG निरंतर एकीकरण उपकरणों के साथ।
उम्मीदवार से अपेक्षित: वास्तविक दुनिया में स्वचालन पाइपलाइन का अनुभव।
उदाहरण उत्तर: “अपनी पिछली नौकरी में, मैंने एकीकृत किया था TestNG जेनकिंस के साथ मेवन बिल्ड को कॉन्फ़िगर करके जनरेट करें TestNG HTML और XML रिपोर्ट तैयार की गईं। इसके बाद जेनकिंस ने रिपोर्टों को संग्रहित किया और प्रत्येक बिल्ड चक्र के बाद परिणाम प्रदर्शित किए। इस एकीकरण से टीम को विफलताओं को शीघ्रता से ट्रैक करने और रिलीज़ की स्थिरता बनाए रखने में मदद मिली।
9) मुझे उस समय के बारे में बताएं जब आपको कई स्वचालन कार्यों का प्रबंधन करते हुए कड़ी समय सीमा के भीतर काम करना पड़ा था।
उम्मीदवार से अपेक्षित: समय प्रबंधन और प्राथमिकताओं को निर्धारित करने की क्षमता।
उदाहरण उत्तर: "अपनी पिछली भूमिका में, मुझे मौजूदा स्थिति को अपडेट करने की आवश्यकता थी।" TestNG आगामी रिलीज़ के लिए नए टेस्ट सूट बनाने के साथ-साथ मैंने मौजूदा टेस्ट सूट भी तैयार किए। मैंने व्यावसायिक प्रभाव के आधार पर कार्यों को प्राथमिकता दी, सबसे अधिक जोखिम वाले क्षेत्रों को पहले स्वचालित किया और उनका उपयोग किया। TestNG पूर्ण हो चुके अनुभागों को अलग करके शीघ्र समीक्षा के लिए समूहीकरण किया गया। इससे गुणवत्ता से समझौता किए बिना समय पर डिलीवरी सुनिश्चित हुई।
10) आप एक स्केलेबल डिज़ाइन कैसे बनाएंगे? TestNG किसी बड़े एप्लिकेशन के लिए फ्रेमवर्क?
उम्मीदवार से अपेक्षित: Archiवास्तुकला की समझ, पैटर्न और सर्वोत्तम पद्धतियाँ।
उदाहरण उत्तर: मैं पेज ऑब्जेक्ट मॉडल का उपयोग करके एक मॉड्यूलर फ्रेमवर्क डिजाइन करूंगा और उसे एकीकृत करूंगा। TestNG निष्पादन प्रबंधन के लिए, और डेटा-संचालित परिदृश्यों के लिए डेटा प्रोवाइडर्स का उपयोग करें। मैं समानांतर निष्पादन को भी कॉन्फ़िगर करूँगा, उपयोगिताओं को केंद्रीकृत करूँगा, और कॉन्फ़िगरेशन सेटिंग्स को बाहरी बनाऊँगा ताकि एप्लिकेशन के बढ़ने पर भी फ्रेमवर्क स्केलेबल और रखरखाव योग्य बना रहे।
