Programming Skills for Test Automation Mar 9, 2012 Programming Skills for Test Automation 1
Overview Programming skills for test architecture and design Programming skills for automated tests Performance testing skills Configuration management skills Manual testing interaction Mar 9, 2012 Programming Skills for Test Automation 2
Automation testing creating programs to test other programs Test engineer implements automated tests using the same techniques as the ones used in software developments This is the point where the fun begins  Mar 9, 2012 Programming Skills for Test Automation 3
Job Description Roles and Responsabilities: Skills: Build advanced automated test suites to exercise x years relevant work applications experience Work with the development Excellent coding skills in C, and test engineering teams C++, Java, C# or Python. to automate testing Good scripting skills in at Conduct research on least one common language emerging technologies (Python, Perl, Shell). Analyze and decompose a complicated software system and design a strategy to test this system Mar 9, 2012 Programming Skills for Test Automation 4
Test Automation Test automation lifecycle Mar 9, 2012 Programming Skills for Test Automation 5
Test Automation Test automation and software development lifecycle Mar 9, 2012 Programming Skills for Test Automation 6
Analysis and Prototype Select automation use cases from requirements No third party tools can guarantee success of test automation and return of investment: design & implement a customized testing framework which can use existing tools - open source/ commercial / own custom tools create maintainable libraries of tests Provide the main models/principles used in architecting the testing system Mar 9, 2012 Programming Skills for Test Automation 7
Architecture and Design TEST DATA SELECTS ACCORDING TO SETTINGS CHECK SCRIPTS USE SCRIPTS SETTINGS RETRIEVE GUI ELEMENTS MAIN FROM AUT APPLICATION AUTOMATION TOOL Mar 9, 2012 Programming Skills for Test Automation 8
Architectural Skills Object oriented analysis and design Design patterns Creational patterns • Singleton, Factory, Builder, Object pool Structural patterns • Composite, Proxy pattern Behavioral patterns • Observer pattern, Strategy Mar 9, 2012 Programming Skills for Test Automation 9
Test Development OOP concepts Encapsulation, Abstraction, Inheritance, Polymorphism Knowledge of the programming / scripting languages Selected test tool(s) scripting language(s) and capabilities Greatest advantages of programming skills: Perform verifications accurate and repeatedly Build your own tools if nothing helps Mar 9, 2012 Programming Skills for Test Automation 10
Test Types Unit tests Regression tests GUI testing Database Files Performance tests Mar 9, 2012 Programming Skills for Test Automation 11
Unit Tests Requirements and user documentation knowhow Skills: Working with value types, strings, objects and collections, serialization in selected programming language/ or equivalent in scripting language WebService: working with SOAP and REST interfaces (requests/ responses) xUnit frameworks Mar 9, 2012 Programming Skills for Test Automation 12
GUI Automation Ease of script maintenance rule: Use tool(s) to identify UI controls Select properties which are not changed every build Don’t depend on the OS environment • e.g. select the id/ name of the object, not coordinates • tree searching algorithms can improve lookup performance Desktop applications: Win32 API can be used Mar 9, 2012 Programming Skills for Test Automation 13
GUI Automation Direct access to the GUI specific remarks: .NET: • invoke delegates to manage control • STA threads for GUI operations Android: • Perform operations on main thread Others have their rules too  Mar 9, 2012 Programming Skills for Test Automations 14
Database DB skills used from test tool or in custom program : Database connection SQL CRUD operations Data structures to compare GUI / DB values and expected result Mar 9, 2012 Programming Skills for Test Automation 15
Files – Logs verification File handling: • Open • Read/ write (if needed) • Close • Watch for changes (Large) Strings handling methods: • search for strings • extract substrings XML parsing Mar 9, 2012 Programming Skills for Test Automation 16
Performance Testing Existing tools: JMeter, Test complete, etc for the AUT load/ stress testing Build custom tools for better coverage of the business use cases Mar 9, 2012 Programming Skills for Test Automation 17
Custom Performance Tests Measuring responsiveness: Multimedia timers Operations on date/ time objects Simulate users with threads Operations with threads Thread synchronization and data structure access Concurrency design patterns: active object, thread pool pattern Mar 9, 2012 18 Programming Skills for Test Automation
Performance Tests Extras Nice to have: Working with Performance counters Chart controls for displaying results Mar 9, 2012 <Presentation Name> 19
Continuous Execution Configuration management: Automated tests can be integrated in build systems or in dedicated systems for continuous execution Skills: Usage of batch/ bash files Working with schedules tasks Integration in continuous build systems (Cruise Control, Hudson, etc) Mar 9, 2012 Programming Skills for Test Automation 20
Don’t Forget Coding guidelines Naming conventions In case the scripting language does not support OOP try to avoid as much as possible having duplicate code Mar 9, 2012 Programming Skills for Test Automation 21
Manual Interaction Test failures from an automated test run still must be analyzed manually Any part of: Provisioning and setting up the machine to run the tests Kicking off the test run Mar 9, 2012 Programming Skills for Test Automation 22
Conclusion Successful tool automation depends on: The tools (Standard) testing process The right test team roles, duties Skills - blend of: Testing Programming Tools knowledge Mar 9, 2012 Programming Skills for Test Automation 23
Questions ? Mar 9, 2012 Programming Skills for Test Automation 24

Programming skills for test automation

  • 1.
    Programming Skills for Test Automation Mar 9, 2012 Programming Skills for Test Automation 1
  • 2.
    Overview Programming skills for test architecture and design Programming skills for automated tests Performance testing skills Configuration management skills Manual testing interaction Mar 9, 2012 Programming Skills for Test Automation 2
  • 3.
    Automation testing creating programs to test other programs Test engineer implements automated tests using the same techniques as the ones used in software developments This is the point where the fun begins  Mar 9, 2012 Programming Skills for Test Automation 3
  • 4.
    Job Description Roles andResponsabilities: Skills: Build advanced automated test suites to exercise x years relevant work applications experience Work with the development Excellent coding skills in C, and test engineering teams C++, Java, C# or Python. to automate testing Good scripting skills in at Conduct research on least one common language emerging technologies (Python, Perl, Shell). Analyze and decompose a complicated software system and design a strategy to test this system Mar 9, 2012 Programming Skills for Test Automation 4
  • 5.
    Test Automation Test automation lifecycle Mar 9, 2012 Programming Skills for Test Automation 5
  • 6.
    Test Automation Test automation and software development lifecycle Mar 9, 2012 Programming Skills for Test Automation 6
  • 7.
    Analysis and Prototype Select automation use cases from requirements No third party tools can guarantee success of test automation and return of investment: design & implement a customized testing framework which can use existing tools - open source/ commercial / own custom tools create maintainable libraries of tests Provide the main models/principles used in architecting the testing system Mar 9, 2012 Programming Skills for Test Automation 7
  • 8.
    Architecture and Design TEST DATA SELECTS ACCORDING TO SETTINGS CHECK SCRIPTS USE SCRIPTS SETTINGS RETRIEVE GUI ELEMENTS MAIN FROM AUT APPLICATION AUTOMATION TOOL Mar 9, 2012 Programming Skills for Test Automation 8
  • 9.
    Architectural Skills Object oriented analysis and design Design patterns Creational patterns • Singleton, Factory, Builder, Object pool Structural patterns • Composite, Proxy pattern Behavioral patterns • Observer pattern, Strategy Mar 9, 2012 Programming Skills for Test Automation 9
  • 10.
    Test Development OOP concepts Encapsulation, Abstraction, Inheritance, Polymorphism Knowledge of the programming / scripting languages Selected test tool(s) scripting language(s) and capabilities Greatest advantages of programming skills: Perform verifications accurate and repeatedly Build your own tools if nothing helps Mar 9, 2012 Programming Skills for Test Automation 10
  • 11.
    Test Types Unit tests Regression tests GUI testing Database Files Performance tests Mar 9, 2012 Programming Skills for Test Automation 11
  • 12.
    Unit Tests Requirements and user documentation knowhow Skills: Working with value types, strings, objects and collections, serialization in selected programming language/ or equivalent in scripting language WebService: working with SOAP and REST interfaces (requests/ responses) xUnit frameworks Mar 9, 2012 Programming Skills for Test Automation 12
  • 13.
    GUI Automation Ease ofscript maintenance rule: Use tool(s) to identify UI controls Select properties which are not changed every build Don’t depend on the OS environment • e.g. select the id/ name of the object, not coordinates • tree searching algorithms can improve lookup performance Desktop applications: Win32 API can be used Mar 9, 2012 Programming Skills for Test Automation 13
  • 14.
    GUI Automation Direct accessto the GUI specific remarks: .NET: • invoke delegates to manage control • STA threads for GUI operations Android: • Perform operations on main thread Others have their rules too  Mar 9, 2012 Programming Skills for Test Automations 14
  • 15.
    Database DB skills used from test tool or in custom program : Database connection SQL CRUD operations Data structures to compare GUI / DB values and expected result Mar 9, 2012 Programming Skills for Test Automation 15
  • 16.
    Files – Logsverification File handling: • Open • Read/ write (if needed) • Close • Watch for changes (Large) Strings handling methods: • search for strings • extract substrings XML parsing Mar 9, 2012 Programming Skills for Test Automation 16
  • 17.
    Performance Testing Existing tools: JMeter, Test complete, etc for the AUT load/ stress testing Build custom tools for better coverage of the business use cases Mar 9, 2012 Programming Skills for Test Automation 17
  • 18.
    Custom Performance Tests Measuring responsiveness: Multimedia timers Operations on date/ time objects Simulate users with threads Operations with threads Thread synchronization and data structure access Concurrency design patterns: active object, thread pool pattern Mar 9, 2012 18 Programming Skills for Test Automation
  • 19.
    Performance Tests Extras Nice to have: Working with Performance counters Chart controls for displaying results Mar 9, 2012 <Presentation Name> 19
  • 20.
    Continuous Execution Configuration management: Automated tests can be integrated in build systems or in dedicated systems for continuous execution Skills: Usage of batch/ bash files Working with schedules tasks Integration in continuous build systems (Cruise Control, Hudson, etc) Mar 9, 2012 Programming Skills for Test Automation 20
  • 21.
    Don’t Forget Coding guidelines Naming conventions In case the scripting language does not support OOP try to avoid as much as possible having duplicate code Mar 9, 2012 Programming Skills for Test Automation 21
  • 22.
    Manual Interaction Test failures from an automated test run still must be analyzed manually Any part of: Provisioning and setting up the machine to run the tests Kicking off the test run Mar 9, 2012 Programming Skills for Test Automation 22
  • 23.
    Conclusion Successful tool automationdepends on: The tools (Standard) testing process The right test team roles, duties Skills - blend of: Testing Programming Tools knowledge Mar 9, 2012 Programming Skills for Test Automation 23
  • 24.
    Questions ? Mar 9, 2012 Programming Skills for Test Automation 24

Editor's Notes

  • #8 No third party tools can guarantee success of test automation and return of investment: long term scope: design and implement a customized testing framework which can use existing tools - open source/ commercial / own custom tools - to create maintainable libraries of tests for the business use cases of our AUT Select automation use cases from requirements Provide the main models/principles used in architecting the testing system
  • #11 If the test tool has some limitations in automating the test case, you can create anytime a custom tool which solves this issue
  • #13 Usually done by developers, Requirements and user documentation knowhow is a must Skills: Understanding the business cases of the software under test s