10 Good Practices to be an Expert in Automation Testing
After a long time worked with automation testing, worked in many automation projects and interviewed many automation testers, collaborated with hundreds of automation testers in a big project, we recognized some good practices (that is mindset/skillset, we not focus on any automation tools in this article) in automation testing that can help testers becoming an expert in automation testing. Therefore, we want to share it with you in this article and hope it will help you in improve your skills in automation testing jobs.
1. An automation-testing tool is not magic.
Many newbies or even experienced automation testers haven’t had enough knowledge about the automation testing tools; somehow they will think that an automation tool will give them everything they need for their projects, but that isn’t true — automation tools do not provide you with everything. The main reason behind for using them is their benefits to the company. Somehow, testers are using automation tools just like considering it as a black-box tool holding magic inside that can solve every automation problems; means you do not even know what is really inside the box but just use it and expect magical things will happen. By this thinking, when an automation tester faces real troubles such as cannot recognize the object/ cannot find an element… the solutions to those problems can’t be found elsewhere; it will cost much time for them then they can realize that is the limitation of the current automation tool. The tool alone cannot guarantee the successful automation, we suggest you should learn to be an expert of an automation tool first before moving to a new one, recommending One2Automate as another candidate of automation testing tool to use in your project.
The first mindset we want to emphasize is to let throw out the thinking that an automation testing is a magic. You would need to experiment with the most (leading) test automation tools available in the market. Studying with those tools will help you in gaining much knowledge about their architecture, environment, advantage and disadvantage, feasibility for your projects, and much more, do not depend on any single tool. Each automation tool will have their architect and technology inside like MSAA, Image Recognition, OCR, Hook,… You can accept that you do not know them all at the beginning, but you must ask yourself that “why does our current automation tool work such that?” and learn them time by time.
Also, having in-depth knowledge with these tools will help you to decide on which tool fulfills most of your automation testing needs. Moreover, can help you further in your testing skills when it comes to executing in your projects.
2. Automate 80% manual cases is a successful project
When you decide to apply automation testing in your project, you somehow to expect all manual test cases can be scripting and as long as, there are some manual test cases still out there unautomated you want to turn them all to be automation scripts. However, honestly, automation cannot do everything and replace manual testing even automation technologies allow you to do that.
There will always be some scenarios, which we will miss to test the application and hence, there will still be bugs in the software to be missed as well. So, if your software cannot be 100% tested, how you can promise 100% automation.? Additionally, there are always scenarios that are difficult to automate but are more comfortable to do manually.
The automation here is to take the repeated work away from manual testers so that they can use their skills and full focus on exploring new scenarios and finding bugs. We should keep the appropriate rate between manual and automation testing. As our experience in working on automation projects is 80% automation – 20% manual. You should not try to automate everything. Only automate the scenarios that are important and it takes much time to do manually, or if a defect slips to production more than once, consider automation test for it. You also should look to the 80/20 rule to decide which test cases needed to be automation; a good automation target involves the 20% of your software that is used by 80% of your users 80% of the time.
3. Understand the Application under test
The tool selection depends heavily on the technologies used in your projects. By understanding your software inside and out before starting the automation testing is very important. Fresher tester somehow jumping directly into the project and don’t know deeply about the application under test; the scripts are developed mostly based on the test cases developed by manual testers which will cause you lacking the big picture of the products.
The typical product details that every automation tester needs to take care of are:
- Which programming languages have been used while developing the application?
- On what platform is the application built?
- Which databases are involved?
- Are there any web services/APIs connected to different parts of the system? How?
- What is the objective of the owner in developing this application?
- What are the functions and features expected from the application under development?
- Has manual testing been executed in this application?
- How many manual hours have been spent on this application testing?
- Are there any existing serious issues or unresolved bugs?
- What is the expected delivery date of the application?
These are just a few points, and it may vary based on the complexity of the products. So, make sure you are comprehensive understanding the software that you are going to test via automation testing.
4. Always learn something new to improve your skill. Be better.
30-40% working time is for watching automation test script to be executed. Moreover, honestly that a waste of your time. You should leverage this time to learn new technologies; new skills or even you can leverage this time to optimize your scripts. Ask yourself that:
- Can you make the code more readable?
- Can you achieve the result in fewer lines of code?
- Can you reuse some of the components?
- Can you avoid using as many variables as you did?
- Is your program memory efficient?
- Can you make it run any faster?
These are some of the questions that you need to keep in mind and work towards.
5. Every issue has a solution, do not give up, let try your best.
Almost the issue always has a solution. It may be a good solution or just a workaround solution. Knowing that it still exists somewhere outside (from the internet, from a coworker, from help files…), using Google to looking for what you need it is your friend; asking your questions on automation testing communities; asking the experienced tester… Your automation skills and your problem-solving ability will be improved a lot when you spend enough the effort on troubleshooting and resolving the issues. Sometimes, you may not receive a positive reply from the communities for all your questions; it is better to find a mentor, the one willing to train you, to answer your questions, working with you to resolve the problems.
In addition, always be prepared! Planning and doing strategy before any automation task (decide what to test, and where to focus your efforts) is considered to be a very crucial part as you would need to define and develop the path that will help you have good test design in return that will prevent the risk the becoming an issue.
6. The quality of script tells the quality of an automation tester.
In people management, we have many criteria to evaluate the quality of engineers, but the most important is based on the output of their work. In automation testing, the output of automation tester is test scripts. It cannot say you are an excellent automation tester while your scripts are not stable, missing checkpoint, smell code… As the codes are modified every day, there is a possibility that code breaking is very high. For minimizing this issue, a well-organized automation procedure needs to be created without a constant mixing. So, let improve your skills, enhance your scripts day by day.
An example as keeping proactive maintenance and refactoring your code – our experience is that aggressively maintaining and improving your automation code frequently is the way to keep it away from becoming a headache; it also helps newcomers read your code easier.
Another example: your script can be impacted by other scripts and opposite. A most common story of automation tester is our test script passed in development phase even we run them many times. However, when we put them together in a test suite, some of them be failed, and the reason is that of the impact from another case. Example, as we have a suite, has 10 test cases. Everything is still beautiful if all test cases can pass. However, if one of them failed, the story will be more complicated because this failed script can leave some unexpected resource in the system and it leaves an abnormal data for next test script when executing, so it can make following scripts be failed as well although there is no defect in the following test script.
Therefore, we should know our test script could affect other scripts and opposite. A solution for this problem is we should have precondition steps and clean up for our test case to minimize the impact from other scripts as well as reduce impact to other scripts in case our scripts be failed in execution.
Hence, the higher quality in your scripts the strong evidence for your ability.
7. Don’t think that building an automation framework is a job of expert developers, you can?
Most of the people thinking that newbie automation tester builds automation framework are something luxury – an impossible task or it is not their job, or they cannot do that. If this thinking exists, it is a big obstacle in your long-lasting career path in software testing. This mindset should be cleared away.
In the definition, the framework is the frame of work; make it simple – everything repeat is the framework. Therefore, even you are a fresher, but you still can develop your automation framework. Let start with a simple one, make it perfect day by day, and undoubtedly you will have a useful framework shortly in-hand, and it will expand your ability to build scripts to the things that you want. Owner of your framework will make your life easier.
So, that also means you must know at least the following programming language (C/C++, Java, SQL, Python, Perl, XML, HTML, CSS) if you want to do test automation. Programming is a must-have skill for each automation tester; familiarize yourself with the basic coding concepts in the beginning in any language of your choice. On the other hand, do not be dis-hearted if you do not know any programming language at the beginning. Because like any other jobs, the programming can also be learned with practice and dedication. If an automation tester just stops at scripting level, they cannot go far in their career path.
8. Develop Utility tools support testing is essential for an automation tester.
Besides building your framework, let start by developing some small utilities (small applications) to support testing are the good ideas because they both help improve your programming skill, your testing skill and speed up testing progress and also to make you and your peer’s lives easier as well. The ideas for utilities such as Mail client, simple performance tool, simple browser, or whatever tools to support your testing jobs.
9. Practicing and sharing your knowledge/experience are the best way to reach a higher level in testing career path.
This mindset is not only applying for automation tester but also for almost career. Be patient with yourself and practice writing code regularly. Also, when you share your experience (any tips, any new ideas, any lesson learned, writing blogs, articles…) to your team, you will make your team stronger. You will receive nice valuable things from your colleague such as it will help you release your workload as your team becoming stronger, you have more time to learn new things, you also receive other sharing from your colleague and learn from that, old mistakes will not repeat … So, don’t scare to lost your knowledge to your colleague. Practicing and sharing will help you reach a higher level on your career path and you should make it as a routing task, make it happen and make it frequent.
10. Good attitude
When you execute automation test script for regression test, some test cases are failed for many reasons. You usually hear from automation tester a brief of reason like test environment changed, slow network, browser crash, app crash, unstable scenario… these excuses do make sense but as professional automation tester, you should try to resolve the problems before bring it to the team; and you should bring the issues to client only if you already some solutions in hand. Find new ways to do your job better. Bring in a new process if you think something is not working as expected.
We run scripts a hundred times and spent much time to observe, review, and analyze the result. Do you feel boring? Because there is no challenge in your routine work, to get out of this feeling just find out several ways to challenge yourself, try to think outside the box to make our automation testing more effective.