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.

Ruby и TestComplete


Published on

  • Be the first to comment

  • Be the first to like this

Ruby и TestComplete

  1. 1. 1<br />Integrating TestComplete and Ruby<br />Presented by: MykolaKolisnyk<br />AUTOMATED-TESTING.INFO<br />
  2. 2. What was originally<br />Win UI tests<br />System tests<br />Mac UI tests<br />Ruby<br />AQA TestComplete<br />Cucumber<br />
  3. 3. Win UI tests<br />System tests<br />Mac UI tests<br />Ruby<br />???<br />Cucumber<br />AQA TestComplete<br />How it was supposed to be<br />
  4. 4. Main goals<br />Provide common layer for all areas<br />Give the ability to involve non-technical people into automation<br />Provide common solution for distributed testing<br />All improvements should be done smoothly (current solution should always work)<br />06.02.11<br />
  5. 5. Win UI tests<br />System tests<br />Mac UI tests<br />AQA TestComplete<br />Ruby<br />Cucumber<br />What was decided<br />
  6. 6. <ul><li>Get command
  7. 7. Set run status
  8. 8. Send results</li></ul>AQA TestComplete client<br /><ul><li>Store command
  9. 9. Switch status
  10. 10. Transfer data</li></ul>Http bridge<br />Ruby client<br /><ul><li>Send command
  11. 11. Check execution status
  12. 12. Get results</li></ul>Ruby/TestComplete connection overview<br />
  13. 13. AQA TC client<br />Http Bridge<br />Ruby Client<br />Get command<br />Command<br />Send command<br />Set pending status<br />Status<br />Check status<br />Run command<br />Set «done» status<br />Send results<br />Results<br />Get Results<br />How it works<br />
  14. 14. TestComplete part<br />06.02.11<br />Wait for command<br />Reset status<br />Process functions<br />Execute code<br />Send results<br />Set “done” status<br />
  15. 15. Ruby part<br />06.02.11<br />Verify “done” status<br />Valid TC code<br />Set “pending” status<br />Send code to execute<br />Verify completion<br />Call TC code<br />Get results<br />
  16. 16. Step 2: start TC client<br />AQA TestComplete client<br />Step 1: start bridge<br />Http bridge<br />Ruby client<br />Step 3: start Ruby client<br />How to start it<br />
  17. 17. Results in YAML format.<br />Example:<br />ret_val: <return value><br />errors:<br />- <error message 1><br />- <error message 2><br />Get results<br />AQA TestComplete client<br />Transform into Ruby structure<br />Http bridge<br />Executable TestComplete code<br />Ruby client<br />Data exchange<br />Fail if some errors present<br />
  18. 18. Case 2: TC crashes<br />Case 1: TC request failed<br />Stable communication<br />Case 3: execution is pending when Ruby client starts<br />Resolution:<br />Resend several times until success<br />Stable communication<br />Resolution: Ruby client waits for some limited time to execute<br />Case 4: bridge was stopped<br />Resolution: Ruby client sets status into «done» at the begining<br />Resolution: clients are stopped<br />AQA TestComplete client<br />Http bridge<br />Ruby client<br />Hard cases<br />
  19. 19. AQA TestComplete client<br />AQA TestComplete client<br />Http bridge<br />Http bridge<br />Target Machine 2<br />Target Machine 1<br />Re-initialize client with new target<br />Ruby code<br />Distributed execution<br />
  20. 20. Goals achievement<br />06.02.11<br />Win UI tests<br />System tests<br />Mac UI tests<br />It still works<br />AQA TestComplete<br />Ruby<br />Distributed architecture<br />Common Layer<br />Cucumber<br />Works for non-technical people<br />
  21. 21. Alternative<br />06.02.11<br />Original post at:<br /><br />
  22. 22. Why alternative doesn’t work?<br />Too tight connection to TestComplete<br />Dependency on system-dependend values (UID)<br />Distributed solution works for Windows only<br />Complex Ruby structures<br />06.02.11<br />
  23. 23. Questions?<br />
  24. 24. 06.02.11<br />AUTOMATED-TESTING.INFO<br />