Jonathan Morar & Ingo Philipp
© 2017 by .
Test Automation For Manual Testers
Transitioning to Continuous Testing.
© 2017 by
*Bottom Line. Continuous testing requires automation.
UI
API
Today Tomorrow
Exploratory Tests
Automated UI Tests
API Tests
Orchestrated Service Virtualization
80%
Manual Testing
+85%
20%
Automated Testing - key enabler for high automation rates -
Testing Future
© 2017 by
Automation Approaches
Record & Replay
Linear Framework
Sophisticated
Framework
Model-Based
Automation
1st Generation 2nd Generation 3rd Generation
Script-Based
10%
Automation
30%
Automation
90%
Automation
Tosca Recorder
© 2017 by
FrameworkMaturity
Enterprise E2E Framework
Reinvent the wheel for each technology, and integrate them all.
Abstraction Layer(s)
…
Framework
Stability
Framework
Modularity
Framework
Flexibility
Framework
Readability
Framework
Maintainability
Integrate Integrate Integrate Integrate
Enterprise
Status
© 2017 by
driver.FindElement(By.XPath("//table[@id='PriceList']/tbody/" + this.sumpXpath)).Text,
verificationErrors);
}
}
}
It’s like saying goodbye to
test automation.
this.paymentOption = “Yearly";
this.courtesyCar = "Courtesy Car";
this.firstName = “Max";
this.lastName = “Mustermann";
this.dateOfBirth = “12/10/1977";
this.make = “Audi";
this.performance = “200";
this.yearOfConstruction = "2016";
this.nrOfSeats = “5";
this.listPrice = “25000";
this.mileageYear = “15000";
this.fuel = "Petrol";
this.sum = “1.535,22";
this.sumpXpath = "tr[10]/td[2]";
this.InputAutomobileData();
this.VerifyAutomobileData();
}
private void InputAutomobileData() {
CommonBasics.WaitForSuccess(()=> driver.FindElement(By.Id("SubmitButton")) != null);
this.driver.FindElement(By.Id("SubmitButton")).Click();
this.driver.FindElement(By.Id("Make")).Clear();
this.driver.FindElement(By.Id("Make")).SendKeys(make);
this.driver.FindElement(By.Id("Performance")).Clear();
this.driver.FindElement(By.Id("Performance")).SendKeys(performance);
new SelectElement(this.driver.FindElement(By.Id("Year"))).SelectByText(year);
new SelectElement(this.driver.FindElement(By.Id("Seats"))).SelectByText(Seats);
new SelectElement(this.driver.FindElement(By.Id("Fuel"))).SelectByText(fuel);
this.driver.FindElement(By.Id("ListPrice")).Clear();
this.driver.FindElement(By.Id("ListPrice")).SendKeys(listPrice);
this.driver.FindElement(By.Id("mileageYear")).Clear();
this.driver.FindElement(By.Id("mileageYear")).SendKeys(mileageYear);
this.driver.FindElement(By.Id("Next")).Click();
this.driver.FindElement(By.Id("FirstName")).Clear();
this.driver.FindElement(By.Id("FirstName")).SendKeys(this.firstName);
this.driver.FindElement(By.Id("LastName")).Clear();
this.driver.FindElement(By.Id("LastName")).SendKeys(this.lastName);
this.driver.FindElement(By.Id("DateOfBirth")).Clear();
this.driver.FindElement(By.Id("DateOfBirth")).SendKeys(this.dateOfBirth);
Do you see the business information?
Script-Based Browser

Test Automation for Manual Testers

  • 1.
    Jonathan Morar &Ingo Philipp © 2017 by . Test Automation For Manual Testers Transitioning to Continuous Testing.
  • 2.
    © 2017 by *BottomLine. Continuous testing requires automation. UI API Today Tomorrow Exploratory Tests Automated UI Tests API Tests Orchestrated Service Virtualization 80% Manual Testing +85% 20% Automated Testing - key enabler for high automation rates - Testing Future
  • 3.
    © 2017 by AutomationApproaches Record & Replay Linear Framework Sophisticated Framework Model-Based Automation 1st Generation 2nd Generation 3rd Generation Script-Based 10% Automation 30% Automation 90% Automation Tosca Recorder
  • 4.
    © 2017 by FrameworkMaturity EnterpriseE2E Framework Reinvent the wheel for each technology, and integrate them all. Abstraction Layer(s) … Framework Stability Framework Modularity Framework Flexibility Framework Readability Framework Maintainability Integrate Integrate Integrate Integrate Enterprise Status
  • 5.
    © 2017 by driver.FindElement(By.XPath("//table[@id='PriceList']/tbody/"+ this.sumpXpath)).Text, verificationErrors); } } } It’s like saying goodbye to test automation. this.paymentOption = “Yearly"; this.courtesyCar = "Courtesy Car"; this.firstName = “Max"; this.lastName = “Mustermann"; this.dateOfBirth = “12/10/1977"; this.make = “Audi"; this.performance = “200"; this.yearOfConstruction = "2016"; this.nrOfSeats = “5"; this.listPrice = “25000"; this.mileageYear = “15000"; this.fuel = "Petrol"; this.sum = “1.535,22"; this.sumpXpath = "tr[10]/td[2]"; this.InputAutomobileData(); this.VerifyAutomobileData(); } private void InputAutomobileData() { CommonBasics.WaitForSuccess(()=> driver.FindElement(By.Id("SubmitButton")) != null); this.driver.FindElement(By.Id("SubmitButton")).Click(); this.driver.FindElement(By.Id("Make")).Clear(); this.driver.FindElement(By.Id("Make")).SendKeys(make); this.driver.FindElement(By.Id("Performance")).Clear(); this.driver.FindElement(By.Id("Performance")).SendKeys(performance); new SelectElement(this.driver.FindElement(By.Id("Year"))).SelectByText(year); new SelectElement(this.driver.FindElement(By.Id("Seats"))).SelectByText(Seats); new SelectElement(this.driver.FindElement(By.Id("Fuel"))).SelectByText(fuel); this.driver.FindElement(By.Id("ListPrice")).Clear(); this.driver.FindElement(By.Id("ListPrice")).SendKeys(listPrice); this.driver.FindElement(By.Id("mileageYear")).Clear(); this.driver.FindElement(By.Id("mileageYear")).SendKeys(mileageYear); this.driver.FindElement(By.Id("Next")).Click(); this.driver.FindElement(By.Id("FirstName")).Clear(); this.driver.FindElement(By.Id("FirstName")).SendKeys(this.firstName); this.driver.FindElement(By.Id("LastName")).Clear(); this.driver.FindElement(By.Id("LastName")).SendKeys(this.lastName); this.driver.FindElement(By.Id("DateOfBirth")).Clear(); this.driver.FindElement(By.Id("DateOfBirth")).SendKeys(this.dateOfBirth); Do you see the business information? Script-Based Browser