15 मिनट में ऑटोटैस्ट के साथ एक रिलीज के उम्मीदवार का परीक्षण करें

मेरा नाम लीलिया है, मैं बीसीएस वित्तीय समूह (कई ऋण उत्पादों से एक ग्राहक के लिए अनुकूल ऑफ़र का चयन करने के लिए एक सेवा) की परियोजनाओं में से एक में क्यूए लीड हूं, और आज मैं आपको बताऊंगा कि हमने कैसे स्वचालित परीक्षण किया, हमें किन समस्याओं का सामना करना पड़ा और हम किस तकनीक का उपयोग करते हैं।

सबसे पहले हमने प्रतिगमन परीक्षण को स्वचालित करने का निर्णय लिया, लेकिन जैसे-जैसे समय बीतता गया, कार्यक्षमता में बदलाव आया और हमने महसूस किया कि पहले से ही लिखे गए ऑटोटैस्ट का समर्थन करने में काफी समय खर्च किया गया था। इसलिए, उन्होंने पहले स्मोक टेस्ट को स्वचालित करने का फैसला किया, और फिर इसे स्वचालित रूप से प्रतिगमन परीक्षण करने के लिए विस्तारित किया। परीक्षण विभाग को जल्द से जल्द स्मॉक परीक्षण को स्वचालित करने का काम सौंपा गया था। परियोजना बढ़ती रही और अतिरिक्त सुविधाएँ प्राप्त करती रही।

स्मोक टेस्टिंग क्या है


धुआँ परीक्षण, क्योंकि इसे "धुआँ परीक्षण" भी कहा जाता है, सबसे महत्वपूर्ण कार्यक्षमता का त्वरित परीक्षण है।

हमारी परियोजना पर:

  • पंजीकरण / प्राधिकरण।
  • लॉग इन।
  • प्रश्नावली में भरना।
  • शोकेस ऑफर।
  • एक आवेदन भेजना / भागीदार की वेबसाइट के लिंक पर क्लिक करना।
  • हमसे संपर्क करें।
  • ताला।

ऑटोटेस्ट लिखने के लिए प्रौद्योगिकियों का ढेर


हम ऐसे ढेर पर ऑटोटेस्ट लिखते हैं: जावा + सेलेनियम + ककड़ी + Allure2 में रिपोर्ट।

छवि

स्मोक टेस्टिंग के लिए BDD ऑटो टेस्ट


1. एक्सटेंशन के साथ फ़ीचर फ़ाइल। जेरकिन में परीक्षण स्क्रिप्ट के विवरण के साथ।

एक उदाहरण:

:  ,     @all :              :      :      **********  :       :       ****  :         :            :       :       :       :       :       

2. कदम कदम। इसमें ऐसी कक्षाएं होती हैं जो पृष्ठ पर तत्वों के साथ क्रियाओं का वर्णन करती हैं और इन तत्वों को मान्य करती हैं।

एक उदाहरण:

 @When("^  (.*)") public void pressKey(String key) { webElementUtils.pressKey(key); } @When("^(.*):   (.*)") public void press(String pageTitle, String elementName) { waitUtils.waitElementToBeClickable(getWebElementOnWebPageWithWaiter(elementName, pageTitle)).click(); } @When("^(.*):    (.*)") public void checkCheckbox(String pageTitle, String elementName) { WebElement element = getWebElementOnWebPageWithWaiter(elementName, pageTitle); if (!webElementUtils.isCheckboxSelected(element)) { element.click(); } } @When("^(.*):    (.*)") public void uncheckCheckbox(String pageTitle, String elementName) { WebElement element = getWebElementOnWebPageWithWaiter(elementName, pageTitle); if (webElementUtils.isCheckboxSelected(element)) { element.click(); } } @And("^(.*):    (.*)$") public void erase(String pageTitle, String elementName) { WebElement element = getWebElementOnWebPageWithWaiter(elementName, pageTitle); webElementUtils.clearElement(element); } @And("^(.*):   (.*)  (.*)$") public void enterValue(String pageTitle, String elementName, String text) { WebElement element = getWebElementOnWebPageWithWaiter(elementName, pageTitle); webElementUtils.fillElementWithText(element, expressionUtils.parseString(text)); } @And("^(.*):  (.*)  (.*)$") public void selectValue(String pageTitle, String dropdownListName, String value) { WebElement element = getWebElementOnWebPageWithWaiter(dropdownListName, pageTitle); webElementUtils.selectValueFromCombobox(element, value); } @Then("^(.*):  (.*)  $") public void elementDoesNotContainAnyText(String pageTitle, String elementName) { WebElement element = getWebElementOnWebPageWithWaiter(elementName, pageTitle); assertEquals("", webElementUtils.getTextFromWebElement(element).trim()); } @Then("^(.*):  (.*)    (.*)$") public void checkSliderPosition(String pageTitle, String elementName, String expectedPosition) { WebElement element = getWebElementOnWebPageWithWaiter(elementName, pageTitle); String sliderTrackPosition = StringUtils.substringBetween(element.findElement(By.cssSelector(".rc-slider-track")).getAttribute("style"), "width: ", ";"); String sliderHandlePosition = StringUtils.substringBetween(element.findElement(By.cssSelector(".rc-slider-handle")).getAttribute("style"), "left: ", ";"); assertEquals(expectedPosition, sliderTrackPosition); assertEquals(expectedPosition, sliderHandlePosition); } @Then("^(.*):   (.*)$") public void checkComponentIsDisplayed(String pageTitle, String component) { WebElement element = getWebElementOnWebPageWithWaiter(component, component); assertTrue(webElementUtils.isElementVisible(element)); } @When("^(.*):   (.+)  (.*)$") public void loadFileInField(String pageTitle, String fileName, String elementName) { WebElement element = getWebElementOnWebPage(elementName, pageTitle); File file = new File(Objects.requireNonNull(getClass().getClassLoader().getResource(fileName)).getFile()); element.sendKeys(file.getAbsolutePath()); } @Then("^(.+):   (.+)  (.+)   (.+)$") public void checkAttributeInElement(String pageTitle, String elementName, String attributeName, String expectedValue) { WebElement element = getWebElementOnWebPage(elementName, pageTitle); String attribute = webElementUtils.getAttribute(element, attributeName); String message = String.format(" '%s'   '%s'   '%s'    .\n" + " : '%s'.\n : '%s'.\n", attributeName, elementName, pageTitle, expectedValue, attribute); assertEquals(message, expectedValue, attribute); } @Then("^(.+):   (.+)  (.+)/$") public void checkValueTag(String pageTitle, String tagName, String expectedValue) { WebElement title = webDriver.findElement(By.tagName(tagName)); assertEquals(expectedValue, title.getAttribute("innerHTML").trim()); } } 

3. पृष्ठों पर लोकेटर के साथ काम करना (पेजऑब्जेक्ट पैटर्न)

एक उदाहरण:

 import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import ru.bcs.creditmarkt.acceptance.pageobject.annotation.PageObject; import ru.yandex.qatools.htmlelements.annotations.Name; @PageObject(title = "", path = "/entry/login") public class LoginPage extends WebPage { @Name(" ") @FindBy(xpath = "//a[text()='']") private WebElement registrationLink; @Name(" ") @FindBy(xpath = "//a[text()='']") private WebElement loginLink; @Name(" ") @FindBy(css = "#phone") private WebElement phoneInput; @Name("  ") @FindBy(css = "button[type=submit]") private WebElement receiveCodeButton; @Name("  ") @FindBy(css = "input#sms") private WebElement smsInput; @Name("      ") @FindBy(css = "button#personalAgreement") private WebElement personalAgreementCheckbox; @Name(" -") @FindBy(css = "div.wa-userpic") private WebElement chatBotIcon; } 

4. Allure2 में रिपोर्ट करें

छवि

सीआई सेटअप


जब हम ऑटोटैस्ट लिख रहे थे, बीसीएस वित्तीय समूह सेलेनॉइड दिखाई दिया, और हम पाइपलाइन गिलेटलैब में परीक्षणों के प्रक्षेपण को कॉन्फ़िगर करने में सक्षम थे

विभिन्न स्टैंडों के लिए ऑटोटेस्ट्स लिखने का संगठन


हमारे पास कई स्टैंड हैं जिन पर विकास, डिबगिंग और स्वीकृति होती है, और कई फ़ीचर स्टैंड भी हैं जहाँ हम वितरित टीमों द्वारा विकसित नए कार्यों का परीक्षण करते हैं।

हमारे पास कई शाखा स्टैंड हैं जो विभिन्न विकास परिवेशों के अनुरूप हैं, जब स्टैंड पर फाइलें बदलते हैं, तो स्वचालित परीक्षणों के साथ संबंधित स्टैंड स्वचालित रूप से शुरू होता है।

कुल मिलाकर


अब हमारी परियोजना में, जब एक स्वीकृति स्टैंड पर एक प्रकाशन प्रकाशित होता है, तो स्मोक परीक्षणों का एक पूरा सेट स्वचालित मोड में 15 मिनट में स्वचालित रूप से किया जाता है। परिणामों के आधार पर, परीक्षण टीम प्रतिगमन परीक्षण के परीक्षण के लिए रिलीज़ उम्मीदवार को स्वीकार करने का निर्णय लेती है।

Source: https://habr.com/ru/post/hi459734/


All Articles