Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Design your own test automation tool


Published on

Как можно построить универсальный инструмент автоматизации для своих нужд и нужд проекта

Published in: Technology
  • Be the first to comment

Design your own test automation tool

  1. 1. 1<br />Our own tool: first steps<br />Presented by: MykolaKolisnyk<br />
  2. 2. Why?<br />Too much new knowledge<br />Architecture gaps<br />Inconvenient IDE<br />Internal restrictions<br />Heavy Weight solution<br />Lack of integrity<br />
  3. 3. Typical Result<br />06.02.11<br />
  4. 4. I’ll make my own solution<br />06.02.11<br />
  5. 5. Requirements<br />06.02.11<br /><ul><li>Cross-platform solution
  6. 6. Portable to any standard programming language
  7. 7. Client/Server architecture
  8. 8. Use of standard libraries
  9. 9. High extensibility</li></li></ul><li>Toolset<br />06.02.11<br />JRE 1.6<br />JNA library<br />Any library supporting HTTP communication (client side)<br />HttpClient<br />ANT (for testing)<br />
  10. 10. Architecture<br />06.02.11<br />Java client API<br />Ruby client API<br />C# client API<br />Python client API<br />Http server<br />Command processor<br />Command<br />Command<br />Command<br />Command<br />Command<br />Command<br />
  11. 11. Client/Server data communication<br />06.02.11<br />Code structures<br />XML Request body<br />JAXB<br />Code structures<br />Code structures<br />XML Response body<br />
  12. 12. Command Request structure<br />06.02.11<br />URL: <host>/<command class canonical name><br />Example: http://localhost:5000/com.sample.Test<br />Body: XML data representation<br />Example:<br />
  13. 13. Sample server code<br />06.02.11<br />
  14. 14. Sample client code<br />06.02.11<br />
  15. 15. Technological expansion<br />06.02.11<br />GUI<br />libraries<br />System <br />libraries<br />SOA <br />libraries<br />Client<br />ports<br />
  16. 16. How to get the GUI<br />06.02.11<br />Find required window by attributes<br />Retrieve window handle<br />Send required messages (use JNA)<br />
  17. 17. Typical window attributes<br />06.02.11<br />Caption<br />Class<br />Index<br />
  18. 18. How to find window<br />06.02.11<br />While EnumWindows returns true<br />WinClass matches<br />No<br />Yes<br />Caption matches<br />No<br />Yes<br />Index matches<br />No<br />Yes<br />Get Handle found or null<br />
  19. 19. Objects hierarchy<br />06.02.11<br />Window<br />MovableWindow<br />Control<br />MainWindow<br />TextField<br />Button<br />List<br />DialogBox<br />CheckBox<br />RadioButton<br />ListBox<br />ComboBox<br />
  20. 20. Sample declaration<br />06.02.11<br />
  21. 21. Sample test code<br />06.02.11<br />
  22. 22. Main growth directions<br />06.02.11<br />Expand technology <br />support<br />Create wizards as<br />IDE plugins<br />Port client to<br />other languages<br />Extend standard<br />Test engines<br />
  23. 23. Questions?<br />
  24. 24. 06.02.11<br />