We have been doing test automation at a very extensive level for quite some time now. In fact, I am very proud of where we stand with test automation today.
We can provide much better solutions today in terms of test automation than what we were providing four years ago.
Some of the Key Lessons I’ve learn’t over the period of time in test automation.
1. Test Automation is software development.
2. Test Automation is done by Software Engineers.
When we started four years ago, our goal was to get our test engineers do the automation and we were successful in getting some of our test engineers do automation (Coming from a pure testing background, Rishi Sharma, Diwakar Gupta and Pradeep K has done exceptionally well with test automation. In fact, Pradeep has become a full time Test Developer now).
But I would rate these guys as exceptions. In my opinion I will consider them as Software Developers doing automation than as test engineers doing automation.
3. Test Automation is lot of hard work.
It requires very detailed thought process, defining the right architecture, have the right level of abstraction, continuous refactoring etc. Whatever the effort that goes in regular software development, you need to put the same amount of effort in test automation.
4. Test Automation code is like any other code.
It has to be maintained over a period of time. Continuous refactoring, and code reviews are very important there.
5. Defining the short term and long term goals are very important to set the expectations in automation.
Example: I have spoken to people who expect the automated regression suite to find new tests. It may not be a realistic expectation. Your automated code is as good as your test cases. The Purpose of automating regression test cases is to make sure that whatever was working earlier is continuing to work after the current code changes as well and not to find new bugs. If the new changes have broken any of the features working before it lets you know. In this example, if the expectations are not clear, then of course the goals for automation will also be not proper which will result in not achieving what you want.
Great, this post is not to talk about my experiences with test automation. I have been discussing about my thoughts on this role with Sendhil for the last few week and Sendhil has suggested me to blog my thoughts. This post is about my thoughts on the career road map for Test Automation Developers.
Using Software Developers for Test Automation is not probably new for companies like Microsoft. They probably have this role (SDET) for a very long time. Thought Works also has this role (Test Developers). But I have not heard about this role in many places. It’s relatively new in most companies. The challenge now comes is there is not much awareness with people if they have to work in automation. Most of the software engineers think that its test engineers job and still not considered as a good career path.
Whenever we start a new engagement if I have to request a developer to work on this, I can see lot of questions in their mind and people are not sure about their career. I thought I will blog my comments about this and give my comments the career progression for this role.
Career Road map
If you are into Automation following are the work which you will be involved in.
Skill sets to work on
Please refer to my post on Architects here and here. Apart from those skills following are what I would suggest to work on.
• Object Orientation
• Build Automation (Team City, Cruise Control.NET, Microsoft Continuous Build Environments, Hudson), Build Scripting (NANT, MS Build) etc..
• Test Automation Frameworks (Selenium, WaTin, WaTiR, White, UIA 3.0, VSTT Coded UI Tests)
• Knowledge of ATDD/Specification By Example (Frameworks like Cucumber, StoryTeller, Concordian.NET)
• Dynamic Languages (Iron Python, F#), understanding of how DLR works
• Domain Specific Languages – How to write DSLs
• Load and Performance Testing Fundamentals.
a. VSTT 2010 for Load and Performance Testing
Future of Testing
In my opinion testing as a role is changing. More and more people will realise the importance of automation and automating everything possible. Automation starts right from Build, Functional (Smoke and Regression), Acceptance, Deployment, Performance and Load.
One of the important lessons throughout this last 4 years for me is that, you cannot do manual testing in a new product development and expect it to be successful.
The Role of testing and testers will change in the future and people who are into all this today will have more scope for growth. If you are into this role (Test Developers), it’s time for you to realize the potential for growth, plan what is needed to grow in the right possible way and grow.