Codestrong 2012 breakout session testing best practices unit and functional automation

  • View
    840

  • Download
    1

Embed Size (px)

Text of Codestrong 2012 breakout session testing best practices unit and functional automation

  • 1.Testing Best Practices Kevin WhinneryPlatform Evangelist Appcelerator Inc. @kevinwhinnerykwhinnery@appcelerator.com

2. Testing Best Practices The Challenge of Testing Rich Client Applications Levels of Testing Titanium Testing Tools The Future of Testing Titanium Apps Q&A 3. The Challenge of RichClient Testing 4. Rich Client Testing ChallengesA Few Challenges: Testing rich client applications Relevant tests? remains a challenge today due to Tooling?the visual and human aspects of Automation? Productionclient applications.environment? Humaninteraction? 5. How relevant are our tests? Model tier testing is highly doable, and test friendly UI testing is hard to do in a meaningful way: Does code work in a long- running scenario? If I programmatically build a UI structure, how close is that to the real UI structure at runtime? I can test object properties, but reliably ensuring visual integrity is 6. What tools do we use? In JS, client side test tools aresomewhat limited in functionalityand scope What is available is more gearedtoward simple applications and typically tied to thebrowser, in the case ofJavaScript 7. How do we automate tests? Scripting user interaction is difficult, especially in native mobile apps Requires multi-platform environment Requires some sort of connection to a running simulator or device, which must also be scripted 8. How close are we to prod conditions? A simulator only goes so far Need to test on a variety ofdevices Mobile is a hostile and volatileenvironment: Data connectivity? Network speeds? Software/hardwarecombinations (iOS has thispain now too) Background processes? Geographic locations? 9. How is our look and feel? Does our app look right with different data sets? Are our buttons responsive enough, or do loading screens take too long? Are there operations which are unintuitive, or error prone? Are the properties of the UI we are changing and animating actually reflected in the UI how we expect? 10. These problems canall be overcome, buttesting can become aclassic strugglebetween 11. Time 12. Quality 13. And Resources 14. Diminishing ReturnsConsider: Test automation can become How long will I extremely expensive. Frameworkssupport thisneed to be maintained, infrastructureapp? How useful is the needs to be created, and time needstest automation Iam adding howto be spent writing, scripting, ortrue to life arerecording tests.my test results? Automationversus humanMake sure the investment istestingjustified. 15. Levels of Testing 16. Levels of TestingTypes of Testing:Depending on the scope, shelf Ad hoc life, and team size for every Automated Unit application, only certain levels ofTesting Continuous testing may be needed.Integration AutomatedFunctional Testing You probably already know these by Crowdsourcing some name, but lets establish a common vocabulary. 17. Levels of TestingTypes of Testing:Ad hoc testing by a single tester or Ad hoc group of testers may be sufficient for Automated Unit small applications with a short shelfTesting Continuous life.Integration AutomatedFunctional Testing Crowdsourcing 18. Levels of TestingTypes of Testing:Programmatic unit testing can Ad hoc provide a baseline comfort level with Automated Unit code in a project, giving theTesting Continuous developer knowledge that publicIntegration Automated APIs have not regressed and areFunctional Testing working as expected. Crowdsourcing 19. Levels of TestingTypes of Testing:Continuous integration can make Ad hoc use of an existing suite of automated Automated Unit unit tests, and ensure that all testTesting Continuous suites are passing as new code isIntegration Automated committed to the project.Functional Testing Crowdsourcing Continuous integration becomes especially useful as a team increases in size and activity. 20. Levels of TestingTypes of Testing:Automated functional testing tests Ad hoc actual application interactions, and Automated Unit inspects the state of an applicationTesting Continuous at known points.Integration AutomatedFunctional Testing This type of testing is sometimes Crowdsourcing referred to as record and play testing. 21. Levels of TestingTypes of Testing:Crowdsourcing deploys an Ad hoc application to real humans around Automated Unit the world, who can test applicationsTesting Continuous on different dataIntegration Automated networks, devices, and locations toFunctional Testing provide real-world feedback on Crowdsourcing application functionality. Can also be employed to provide feedback on look and feel and other human elements. 22. Where We Are TodayTypes of Testing:Appcelerator (and our community) Ad hoc have developed test automation Automated Unit tools to provide a baseline level ofTesting Continuous comfort with application functionality.Integration AutomatedFunctional Testing The testability of your application Crowdsourcing can be greatly enhanced by employing modular design. 23. Demo: TestableTitanium apps withbehave.js 24. Where Well Be TomorrowTypes of Testing:Appcelerator, the community, and Ad hoc our commercial partners are Automated Unit collaborating on testing solutionsTesting Continuous across the board.Integration AutomatedFunctional Testing Visit with SOASTA and uTest in the Crowdsourcing hallways! 25. To Sum Up Test automation is agreat tool for ensuringquality For rich clientapps, useful tests havealways been achallenge Choose the level oftesting appropriate forthe project Join us in reducingbarriers to testing andbuilding awesome tools 26. To Sum UpDownloads/Resources: http://bit.ly/ codestrong_src ti_test_slides 27. Kevin Whinnery @kevinwhinnerykwhinnery@appcelerator.com