290 likes | 618 Views
Automatizuotas testavimas. TestComplete ir Selenium Parengė: Algirdas Mikoliūnas. Turinys. TestComplete Selenium Palyginimas. TestComplete. Automatizuoto testavimo aplinka skirta:
E N D
Automatizuotas testavimas TestComplete ir Selenium Parengė: Algirdas Mikoliūnas
Turinys • TestComplete • Selenium • Palyginimas
TestComplete • Automatizuoto testavimo aplinka skirta: • Windows, .NET, WPF, Visual C++, Visual Basic, Delphi, C++ Builder, Java, internetinėms aplikacijoms ir servisams; • Šiuo metu veikia tik su Windows operacinėmis sistemomis; • Palaikomi testavimo tipai: • Funkcinis testavimas; • Modulių (unit) testavimas (leidžia integruoti Nunit, Junit, Dunit, MSTest testus); • Apkrovimo testavimas; • Kliento / serverio (išskirstytas) testavimas; • Regresinis testavimas • Duomenimis grįstas testavimas.
TestComplete / Projekto kūrimas • Projekto kūrimo metu reikia pasirinkti: • Kokio tipo programą testuosime: • Windows programą; • Internetinį puslapį; • Internetinius servisus; • Android aplikacijas; • Adobe AIR aplikacijas; • Kokią programavimo kalbą naudosime: • VBScript – sintaksė panaši į Visual Basic; • Jscript – sintaksė panaši į JAVA, C++, C#; • DelphiScript – sintaksė panaši į PASCAL;
TestComplete / Funkciniai testai • Funkciniai testai gali būti sukurti dviem formomis: • Raktažodžiais (keywords); • Skriptais • Abiejų formų testai gali būti sukurti: • Įrašant veiksmų seką; • Sukuriant testą nuo pradžios (create from scratch).
TestComplete / Testo kūrimas skriptu function Test1(){var browser;var page;varpanel;varpasswordBox;Browsers.Item(btIExplorer).Run("http://test.aspx"); browser = Aliases.browser; page = browser.pageWebOrdersLogin;page.Wait(); panel = page.formAspnetform.panelLogin; if (panel.usernameField.Value()== "")Log.Error("The username field is empty."); panel.textboxCtl00MaincontentUsername.SetText("Tester");passwordBox = panel.passwordboxCtl00MaincontentPassw;passwordBox.Click();passwordBox.SetText("test"); panel.submitbuttonCtl00MaincontentLogi.Click();browser.pageWebOrders.Wait();}
TestComplete / Paleidimas iš konsolės TestComplete.exe [file_name [/run [(/project:project_name) | (/project:project_name /projectitem:item_name) | (/project:project_name /test:test_name) | (/project:project_name /unit:unit_name /routine:routine_name)] [/exit]] [/SilentMode [/ErrorLog:File_name]] [/ExportLog:File_name] [Timeout:Time_in_seconds] [/ForceConversion] [/ns]
TestComplete / Papildomi įrankiai • QAComplete – testų paleidimo ir ataskaitų generavimo aplinka, integruojasi su JIRA, TFS; • LoadUI – apkrovimo testavimo aplinka; • SoapUI – internetinių servisų testavimo aplinka; • AlertSite – seka svetainės našumą realiu laiku, apie sveitainės neveikimą gali pranešti SMS žinute.
Selenium • Automatizuoja testavimą naršykle; • Leidžia ne tik atlikti testus, tačiau ir automatizuoti kitas ranka daromas veiklas; • „Selenium IDE“ yra „Firefox“ plėtinys, leidžiantis įrašyti atliekamus veiksmus ir vėliau juos pakartoti automatiniu būdu; • „SeleniumWebDriver“ yra biblioteka, leidžianti programiniu būdu aprašyti testavimo veiksmus naršyklėje; • Palaiko testavimą keliose aplinkose vienu metu.
SeleniumWebDriver • Palaikomos programavimo kalbos: • Java,C#, Ruby, Python. • Sukurtos 3-jų šalių bibliotekos kalboms: • Perl, PHP, Haskell, Objective-C • Palaikomos naršyklių tvarkyklės: • ChromeDriver, InternetExplorerDriver, FirefoxDriver, OperaDriver, AndroidDriver, OperaMobileDriver, IPhoneDriver.
SeleniumWebDriver • Pavyzdys: class PythonOrgSearch(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() def test_search_in_python_org(self): driver = self.driver driver.get("http://www.python.org") self.assertIn("Python", driver.title) def tearDown(self): self.driver.close() if __name__ == "__main__": unittest.main()
Selenium / Veiksmų sekos • Paspaudimas; • Paspaudimas ir laikymas; • Atleidimas; • Dvigubas paspaudimas; • Nutempimas (drag&drop); • Pelės perstūmimas; • Klavišų įvesties įvedimas; • Pranešimų dialogų (alert) valdymas. • element = driver.find_element_by_id("passwd-id")element.send_keys("some text")
Selenium / Įvykio laukimas • Elementas pažymėtas; • Elementą galima paspausti; • Elementas tapo nebematomas; • Tekstas elemente pasikeitė į nurodytą; • Puslapio pavadinimas pasikeitė į numatytąjį; • Elementas tapo matomas. wait = WebDriverWait(driver, 10) element = wait.until(EC.element_to_be_clickable((By.ID,'someid')))
Selenium / Elementų pasiekimas • Pagal ID: element = driver.find_element_by_id("passwd-id") • Pagal vardą: element = driver.find_element_by_name("passwd") • Pagal Xpath užklausą: element = driver.find_element_by_xpath("//input[@id='passwd-id']") • Drag & drop: action_chains.drag_and_drop(element, target) • JavaScript kodo vykdymas: driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
Nuotolinis Selenium panaudojimas • Paleidžiame serverį: • java -jar selenium-server-standalone-2.x.x.jar • 15:43:07.541 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub • Kode susikuriame nuotolinį WebDriver: driver = webdriver.Remote( command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.CHROME)
Selenium panaudojimas python test_python_org_search.py ------------------------------------------------------------- Ran 1 test in 15.566s OK
Palyginimas • TestComplete: • Kaina nuo 1999$, tačiau užtikrinama pagalba vartotojams; • Galimi bet kokie veiksmai operacinėje sistemoje; • Turi naudingų integruojamų įrankių; • Selenium: • Nemokamas; • Veikia kaip naršyklės plėtinys, negalimi veiksmai už naršyklės ribų.