We are happy to welcome Jenendra Jain to Airbrake Interviews. Jenendra is a software development engineer - test, at Amazon, and a former senior test engineer at Microsoft, and we are going to talk about test automation challenges and how to overcome them.
Hi Jenendra. Could you tell us about you and how you started your career?
Before joining Amazon India in 2011, I started my career in mid 2008 with the ERP division of Microsoft. They use SAP platform with all the development focused towards how their business is handled in real world. Being right out of college I had no idea what SAP, or for that matter, any ERP Software is. I was given an option to be either SDET or SDE. Being an SDET was my choice and for the 3.5 years I spent with MS-SAP division, I learned a lot about business processes - after all, to test something you need to know the heart of the module. As an SDET I picked up the foundation of automation and so far have worked with QTP, VU-Gen, QC, Selenium, TestNG and Appium automation tools.
In talking about Test Automation challenges, many software engineers believe it's difficult to implement, do you agree with that and why?
It definitely seems a lot difficult than it is. A person who is starting afresh in this area would feel intimidated by the ever changing scope of automation. Software development will never stop, any software will be evolving continuously. As the software evolves, the test automation has to evolve too. One way to overcome that threat is to plan your Test Automation by considering the modules that have been stabilized to a greater extent.
When developing the test automation framework, what are the most important aspects that should be taken into consideration by software engineers?
There are two aspects to Test-Automation.
First is the Automation Framework. Simply put, Framework ties up all the logic that orchestrates the execution of test cases. What that means is that the framework should be designed to manage all the resources that any of the potential test cases could need. Depending upon the approach and end-goal of Test Automation for a particular Software, there are multiple strategies (e.g. Data-Driven, Action Driven, Hybrid Frameworks, and many more) to design a Test Framework.
Second aspect is the Scope of Automation. Essentially, scope can be discovered by answering a few simple questions. The two most important questions are:
What to automate?
When to automate?
It is absolutely necessary to seek correct answers to these question to streamline the automation. Any wrong answers here would only cause delays and add re-work for the engineer. Unfortunately, a lot of young engineers move forward without spending sufficient time on these questions and end up in difficult situation.
What are the biggest challenges a software engineer may face when implementing automation testing in Agile environment?
Agile environment essentially allows development cycle to deliver smaller chunks over multiple sprints. At times, this could mean that engineers will not have anything tangible to test initially and everything will be “testable” only at the end of later sprints. This situation is difficult but is still manageable by enforcing the design of the entire software to be finalized during the early stages. That gives test engineer a confidence to what he needs to design. While development team is churning out untestable smaller chunks, Test engineers could use the finalized design to develop their Automation Framework and add test cases/data when the software is in testable shape.
Of-course if the design/architecture is still evolving, it’s a bad idea to go for automation at that stage.
What are your recommendations to those who are new to test automation and striving to learn more and advance in their career? Any books and references out there that can provide them with the required knowledge?
Quoting from movie Shooter, “Slow is smooth, Smooth is fast!!” In the world of Test Automation this means that engineers should not jump at the first opportunity to automate. That wouldn't be as productive as when automation is done at the right stage of the software’s life cycle. Manual testing will tell engineers about the stability and readiness of the software to be automated.
Apart from timing of automation, an engineer also needs to focus on the design of the Test-Framework. A good test frameworks handles all the complexity of the testing and makes adding new test cases a matter of minutes. I would suggest the engineers to abstract out the test-features and implement the test-definitions accordingly at the test-component level.
The field of automation is ever evolving. It has moved from back end to client front end to mobile devices, and now on to the cloud. The art of testing a software is half knowledge and half exploratory intuitions. There is no single resource that can prepare someone to be a good automation engineer. Having said that if someone is aspiring to grow higher in this discipline, they should always keep an eye for the new tools that makes it simple to create complex frameworks and explore those tools in their free time. Exploring is slow, Slow is smooth and Smooth is Fast!!
See also: Test Automation Benefits and Challenges; Interview with Bernardo Rivas, Microsoft.