Advertisement

Automated Testing of Web Applications

Jan. 28, 2015
Advertisement

More Related Content

Advertisement

Automated Testing of Web Applications

  1. A U T O M AT E D T E S T I N G O F W E B A P P S +Jonatan Kronqvist @zch
  2. }>
  3. A G E N D A • Software testing in general • Architecting for testability • Testing web UIs • What should I do?
  4. A G E N D A • Software testing in general • Architecting for testability • Testing web UIs • What should I do?
  5. Unit Testing
  6. Integration Testing
  7. System Testing
  8. Regression Testing
  9. End-to-End Testing
  10. Acceptance Testing
  11. Load Testing
  12. Create VALUE for Your Customers
  13. – J O H N D O E V E L O P E R “Unit testing is a waste of time, because the tests don't prove that things work correctly”
  14. Red Green Refactor
  15. 1. You will ALWAYS have code that worked a minute ago 2. You will have more and more automatic tests that can be run all the time 3. You will have usage examples for all of your code and API 4. All your code will be testable by default
  16. Best ROI: • integration • regression • system
  17. Most unit tests could be replaced by assertions
  18. Focus on continuous integration and system testing
  19. B E H AV I O R D R I V E N D E V E L O P M E N T
  20. Scenario 1: Account has sufficient funds Given the account balance is $100 And the card is valid And the machine contains enough money When the Account Holder requests $20 Then the ATM should dispense $20 And the account balance should be $80 And the card should be returned
  21. 1. Easy to define end-to-end behavior to be tested 2. Business value easily translates to this format 3. You're probably already defining user stories
  22. A G E N D A • Software testing in general • Architecting for testability • Testing web UIs • What should I do?
  23. • Cross browser differences • Logic that depends on the DOM • Asynchronous execution • Possibly slow execution
  24. M V P Presenter Model (State) View Rendering logic Event handling logic
  25. Avoid new – Dependency Injection
  26. A G E N D A • Software testing in general • Architecting for testability • Testing web UIs • What should I do?
  27. Unit Testing?
  28. Integration Testing?
  29. System Testing?
  30. End-to-end Testing?
  31. Web automation
  32. BDD framework + Selenium or Vaadin TestBench
  33. Narrative:
 As a user
 I want to perform calculations
 So that I can easily get the results without calculating in my head
 
 Scenario: Calculate 1+2
 Given I have the calculator open
 When I push 1+2
 Then the result should be 3.0
  34. public class CalculatorSteps extends TestBenchTestCase {
 
 private WebDriver driver;
 private CalculatorPageObject calculator;
 
 @BeforeScenario
 public void setUpWebDriver() {
 driver = TestBench.createDriver(new FirefoxDriver());
 calculator = PageFactory.initElements(driver, CalculatorPageObject.class);
 } @AfterScenario
 public void tearDownWebDriver() {
 driver.quit();
 }
  35. @Given("I have the calculator open")
 public void theCalculatorIsOpen() {
 calculator.open();
 }
 
 @When("I push $buttons")
 public void enter(String buttons) {
 calculator.enter(buttons);
 }
 
 @Then("the result should be $result")
 public void assertResult(String result) {
 assertEquals(result, calculator.getResult());
 }
 }
  36. public class SimpleCalculation extends JUnitStory {
 @Override
 public Configuration configuration() {
 return new MostUsefulConfiguration()
 .useStoryLoader(new LoadFromClasspath(this.getClass()))
 .useStoryReporterBuilder(new StoryReporterBuilder() .withDefaultFormats() .withFormats(Format.CONSOLE, Format.TXT));
 }
 
 @Override
 public InjectableStepsFactory stepsFactory() {
 return new InstanceStepsFactory(configuration(), new CalculatorSteps());
 }
 }
  37. }> >2500 tests <15 minutes each commit
  38. Load Testing
  39. A G E N D A • Software testing in general • Architecting for testability • Testing web UIs • What should I do?
  40. WHAT SHOULD I DO?
  41. Architect for testability and flexibility
  42. Focus on Integration, End-to-end and System Tests
  43. Try TDD, but don't sweat it
  44. Use BDD
  45. Don't forget to load test!
  46. ENSURE VALUE IS CREATED FOR YOUR CUSTOMERS
  47. Q & A Please rate the presentation at gwtcreate.com/agenda
  48. I M A G E S U S E D • https://flic.kr/p/671Z4A • https://flic.kr/p/bsozXc • https://flic.kr/p/hRfBC • https://flic.kr/p/nQ7ac5 • https://flic.kr/p/8sf5Xt • https://flic.kr/p/4LH5Eo • https://flic.kr/p/7Lx9Kk • https://flic.kr/p/nAi4GZ • https://flic.kr/p/eguHX8 • https://flic.kr/p/4fmu9E • https://flic.kr/p/dtSHid • https://flic.kr/p/bwpVQ7 • https://flic.kr/p/fGyo6Q
Advertisement