Software Development : Why Automation Engineers without manual testing is not so successful (Is it possible to be an automation engineer without knowing manual testing)
We can not have a single day without production bug so Is it fair expectation to have application without bug in production. Answer is straight away NO. However we can reduce the number of bugs by having effective testing process in place. How can we have effective testing process in software development especially when all software development is being governed through agile methodology. That is where most of us start looking to automate end to end testing process. If automating testing process is the only option then Automation engineers has to take the highest responsible role to automate testing process. How many automation engineers are ready to take that responsible role to have less to minimum number of bugs in production?
Let’s try to first define the expectation from automation engineer to achieve the common goal of having minimum number of bugs. Based on my experience, I can say with confidence that just automating testing process by writing effective code is not the only expectation but their ability to reconcile the automation coverage against function & non function requirement from products/services. Another point I would like have in automation engineer the capability of end user perspective like what they want to have within the product & how easy it is going to be for them from usability perspective. Point to be noted here that there are few products/services which are never gets into the hand of end user rather gets embedded within already existing infrastructure (e.g. consuming APIs etc).
As we have defined the expectation from automation engineer is higher than writing code so the question pops us — How can automation engineer fulfil other expectations except establishing automated testing process for functional & non-functional requirements?
Based on my working experience, If applicable then I always find following process effective for automation engineer to fulfil all the defined expectations. However there can be many more based individual experience (I would really appreciate if same can be suggested in the comment section to have this helpful for all future readers) -
- Start with understanding functional & non-functional requirements
- Develop basic prototype of product/service/application used by developers (if possible as this one helped a lot to uncover the bug which cannot be discovered by traditional manual or automation testing process. Please do not get confused to relate this with white box testing, I will explain this in more detail in later in the section)
- Perform manual testing unless become comfortable
- Exploration of similar products/services features (optional in case if similar products/services already exist in the market)
If automation engineer ready to put effort to follow above mentioned process then developing automation will be more effective & efficient. Now, what are the challenges with above process? Primary constraint is Time. Responsible group or stakeholder does not get easily ready to provide time for automation engineer to follow this process as it is quite time consuming process. You would have realized that process really sounds effective but if there is no time given then what an automation engineer can do. Now, there is a choice for automation engineer to put some extra effort to follow the process however it is not professional approach & why one should spend extra time to do their job. I do not want to encourage this approach however if you are really passionate about your work then you should do this. Based on my experience, it is very hard to convince resources to put extra effort for something which is not being recognized by responsible group & stakeholder. This makes complete sense to me.
Now, Automation engineers only left with one process that can help them to be more effective rather than just writing code or establishing automated testing process i.e. involved in manual Testing to get familiar with functional & non-functional requirements. Involving each automation engineer in manual testing is the easiest route to convince stakeholders to buy the time for them. It is not only about buying the time but this is where they can get acquainted with features of product/service/application. My experience says automation engineer always struggle to make themselves familiar with end to end process for any given feature. I always wonder how can one automate testing without knowing what that feature is actually supposed to do. In my opinion, every automation engineer has to devote time in manual testing to make sure they understand the end to end flow. It is a time consuming activity & most of the time automation engineer does not want to do that. Having good programming skill to write code is not the expectation here, expectation here is to have effective automation process that can reduce the number of the bugs in production. Good programming skill can only help when one knows what is needed. Automation engineer only left with manual testing to get more insight. For me Automation engineer without manual testing, is like Doctor knowing worlds all effective & best medicines but does not which one to prescribed for which illness. Let me share my experience when I was selected to architect the testing process for blockchain application. Here is what I had done -
- Before doing anything required for testing, I tried to find the answer for following –
What is blockchain?
Who has developed & why?
What problem is it trying to solve & how?
When to implement blockchain framework to build any application?
What advantage we will get above all the existing probable workaround?
Why existing workaround are not solving those problems?
3. Involved entire team of manual/automation engineers within manual testing for initial few weeks to make them familiar with all features
4. Then eventually segregate the manual/automation testing team into 2 different groups to complement each other with regular brain storming sessions to be on same understanding between manual & automation testers
By following above process, all automation engineers in my team are not only effectively building automation for any new feature but easily able to enhanced the existing automation along with maintaining the automation efficiently. Whenever I need them to work as manual testers they always get ready to do so as they now understand the importance of manual testing & its advantage. Later in the project when few of automation engineers left or team then I hired replacement for them. They were good programmer with good understanding of automation tools & frameworks still they were not effective like those who started the engagement from day one with us. With newly hired automation engineer we could not emphasis to involve them into manual testing. I always found them walking around manual testers to either get the feature working or understand the existing automation code to enhancement or maintain for new enhancement or bug fixes.
Conclusion is Automation engineer has to start with manual testing so they can be more effective & efficient to automate the testing process by achieving the goal of having less number of bugs in production. I cannot imagine to have automation engineer effective to achieve the goal of having less number of bugs in production without involved into manual testing.
I might be wrong as my experienced should not be generalized with what I have experienced as world is too big to generalize experience for everyone. At least through this I am opening the space to have everyone observation & thinking towards making testing more effective.