Friday, October 22, 2010

Testing & The Role of a Test Automation Engineer

The Role of the Test Automation Engineer (Test Engineer) is to: design, build, test, and deploy effective test automation solutions. To fulfill this role the Test Engineer applies appropriate automation technologies to meet the short and long term goals of the testing organization. The objective is to automate as much of the testing effort as possible with a minimum set of code / scripts. The focus should be on test effort not testing coverage - if one manual test case or manual test preparation process consumes a large percentage of test resources then this manual process should be the first to be automated.

Responsibilities and Deliverables

The responsibilities and deliverables of a Test Automation Engineer are dependent on the test phase and test automation framework.

Test Phase

Unit Test
The test automation engineer, in this case the application developer, instruments the application code in order to enable effective and repetitive unit testing of the code before it is incorporated into the current build. There are several Agile Development paradigms that incorporate this concept / process into their standard development cycle.
Function & System Test
The test automation engineer develops automated solutions to expedite test. This can take the form of tooling to increase the efficiency of test preparation and / or the creation automated of test cases.
Acceptance Test
The test automation engineer develops and deploys automated solutions to expedite acceptance test. In Function and System test the Test Engineer fulfils the same role but it is in the context of the Test Organization - if automation tooling is deployed as part of Acceptance Test then the automation solution should be treated / tested as part of the System being deployed.
For any given Test Phase the objective of the Test Automation Engineer is to put the power of automation into the hands of Test Designers / Testers. The Test Engineer should deploy the simplest solution to meet the defined need - the objective is not to build the "best automation solution ever" the objective is to effectively automate the testing effort.

Test Automation Framework

A test automation framework is the method or process being used to implement automation. Several frameworks have been implemented over the years by commercial vendors and testing organizations the skills required to develop within any given framework define the skills required by the Test Automation Engineer.
Record & Playback
Record and Playback frameworks were the first commercially successful testing solutions. The Automation Engineer simply records a series of steps or actions against the application using the appropriate Record and Playback tool. "Test Automation Engineer as a Tool-smith."
Extended Record & Playback
It became quickly apparent that a simple Record and Playback paradigm was not very effective and did not make test automation available to non-technical users. Several commercial vendors, test organizations, and automation engineers began extending the Record & Playback framework to make the solution more robust and transparent. These extensions included: Data Driven, Keyword, and Component Based solutions - as the Record & Playback framework was extended the Automation Engineer had to develop and deploy solutions (code) within the context of the extended framework. "Test Automation Engineer as a Tool-smith and developer."
Load / Performance
Load / Performance test frameworks provide a mechanism to simulate transactions against the application being tested and to measure the behavior of the application while it is under this simulated load. The automation engineer determines how to: load, measure, and control the application. Using the load-testing tool the engineer implements the automation solution to accomplish this task, the Automation Engineer will often need to extend the Load / Performance framework. "Test Automation Engineer as Analyst, Tool-smith and Developer."
This is not a complete list of the test frameworks available but it illustrates how the skill and abilities required to fulfill the role of test automation engineer are dependent on the framework.

Testing Mandate and Scope

The Test Automation Engineer must have a clear understanding of the Testing Mandate and how automation can be applied to help meet this mandate - for more on Testing Mandates and Testing Scope see the associated article Testing and The Role of a Test Lead / Test Manager. The temptation of any automation engineer is to automate everything; the challenge is to determine what should be automated and in what sequence to get the maximum return on the automation investment. Other roles in the testing organization focus on testing the application the automation engineer attempts to expedite the testing process by supplying and maintaining an appropriate automation solution.

Relationships with other Team Roles

Test Lead / Manager
The Test Engineer must have a good working relationship with the Test Lead but more importantly the Test Engineer must keep the Test Lead aware of any challenges or costs that could impact the delivery of test automation. The relationship between the Test Lead and Automation Engineer parallels the relationship between a Development Lead and Developer. The automation engineer must size, implement, and test a Testware solution while the Lead ensures the goals of automation are met. The one significant difference between a traditional development effort and test automation is that there is always an option not to automate - in fact if automation cannot show an immediate return of 4 to 1 in terms of effort / hours then it probably does not make sense to proceed with the automation effort.
Test Designer / Tester
The Test Automation Engineer must understand precisely what the Test Designer wants any given test case or group of test cases to accomplish. If you think of test cases as requirements, then the Test Designer defines the requirements for the automation effort; the Test Automation Engineer implements these requirements. In many ways the Test Automation Engineer works under the direction of the Test Designer in terms of what automation needs to be built but it is the role of the Engineer to determine how it should be built.
Developer / Product Support
The Test Automation Engineer will often encounter automation challenges that require an intimate knowledge of the application being automated. In order to have any chance of building a sustainable solution the Test Automation Engineer will have to a close working relationship with the development or product support - if the application has been purchased by a third party vendor.

No comments:

Post a Comment