Software testing is the process of finding bugs or discrepancies in a software. It is a process put in place to check that an application, set to be released in the market for users, has a minimum number of errors.
Even though the job of a software tester is to catch errors committed by developers, software testers themselves are not immune to errors. As a beginner in software testing, you would make your own mistakes and learn from them to shape your career path.
Following are a few common mistakes often made by software testing beginners when they start their journey in the world of testing.
Few Common Testing Mistakes
1. Starting without a Defined Scope of Testing
Beginners generally don’t realize that testing is a multi-dimensional activity which can vary from functional testing to performance and load testing to security testing and much more. Therefore, it is important to understand the scope of testing that needs to be performed before starting the execution.
Before defining the scope, the requirements should be well understood and test strategy should be defined keeping the timelines in mind.
2. Starting without a Test Plan
A test plan is an essential document to perform disciplined and organized testing. According to ISTQB, A test plan is a document describing the scope, approach, resources and schedule of intended test activities.
Most often, when beginners start testing, they think they would be able to remember all the test cases needed to be executed and don’t need a formal test plan. But as the scope of testing grows and iterations happen, it becomes unrealistic to remember everything precisely which makes testing error prone. A test plan helps in keeping track of the test cases you need to execute.
3. Test Plan Review and Sign Off
Not getting the test plan reviewed and signed off by all relevant stakeholders such as developers, peer testers and product owners is something that can cost dearly later.
Getting the test plan reviewed can help in getting a different perspective that you might not be aware of or may have overlooked. Also, getting the test plan signed off by all stakeholders makes sure that the scope of testing is reviewed and agreed upon.
Getting the test plan reviewed and signed off has some benefits as listed below:
- Better Risk Management: Any risk response will be already approved. If at the time of testing a risk materializes, the test plan can be referred and the already approved actions can be executed.
- Better Tracking of progress: A test manager can refer to a test plan at any time to know the progress of the team in terms of test execution. They can then alert the management in case of any delays or blockers.
- Keeps testing controlled: When test cases and test plans are defined, testers know what should be executed and what should not. So, the testing team stays focused. Time spent on testing is also as expected unless a blocker bug is encountered which then needs to be fixed before proceeding and is accounted for.
4. Testing with Similar Kind of Test Data
If the testing needs to be performed with multiple types of test data, you should try to keep them as varied as possible in terms of attributes.
If you are trying to find new problems with the product, there is no value addition in repeating the same test cases with the same kind of input test data again and again. Repeating test cases with the same kind of test data is good for regression but not for exploration.
To assess if the product would behave as expected in the real world, you need to consider all possible inputs available in the real world for your test data.
5. Lack of Regression Test Plan
Not every test case in the test plan needs to be executed for Regression Testing. Therefore, it is important to finalize a Regression Test Plan that can provide maximum code coverage with the least set of test cases.
End to end workflow tests that can cover maximum interactions among components of the product are a good fit for Regression Testing. It is good to first strive for the automation of these tests.
6. Automating Test Cases based on UI
Although beginners have a lot of passion for automating the test cases, they sometimes fail to understand that UI is an ever-evolving component of a product and is bound to change. Therefore, creating automation based on UI is not the right thing unless you plan to test the UI itself.
For example, when creating automation for testing a website, it is better to use reliable attributes like xpath, id, name, etc., for identifying UI elements as compared to coordinates which may keep on changing across various devices.
Create automated tests that are resilient to changes
7. Creating Automation Tests without Validation
When transitioning from manual testing to automation beginners often overlook the natural skill of validation involved in manual testing.
It is crucial that every automated test has an assert to validate that the test case worked as expected and to mark the test case as pass or fail accordingly.
8. Ignoring False Positive and False Negative Results
Results are considered false positives when the test scenarios didn’t work as expected but the tests still passed. Similarly, when test scenarios did work as expected but the tests got marked as fail, they are considered false negatives.
Beginners often underestimate the unreliability that gets added to the test automation system due to false positive and negative results. If your automation tests are generating false positive or negative results, then your test automation system cannot be relied upon. And you may still need to invest in manual testing to validate what has already been automated.
This needs to be rectified on priority as it undermines your whole automation effort.
9. 100% Test Automation can Replace Manual Testing
More test automation you have, less you need to invest in manual testing. Still achieving 100% test automation may not be a realistic target depending on the product and the nature of the test cases.
Even when the majority of test cases are automated, it’s still good to look at products and workflows through a human eye occasionally.
There might be problems which could not be detected with test automation for eg. an environment variable like network connectivity changed over time and is not aligned with the assumption with which test automation was built initially.
Test automation brings efficiency to the testing process, but it serves best when combined with some level of manual testing.
10. Assuming Product Won’t Evolve
When creating test automation, beginners more often believe that product would always be the way it is today – be it design, interfaces or UI. However, the truth is that depending on the road map for the next releases, various elements of the product can change.
It is important to consider this while automation so that your test automation system doesn’t become obsolete with future product changes but can be adapted as per the need of the product.
11. Starting Test Automation Without a Test Design
A test automation system is also a product like any other product you are testing. It may not be made available to the general user outside your team/organization, but it has all the elements of a regular software product and design plays an important role.
Creating test automation scripts in a random fashion is not a good idea. You need to think about the design of your test automation system before starting to implement it.
Select an appropriate test automation framework such as linear, modular, library architecture, data-driven, keyword-driven or hybrid. Divide the test automation system you want to build into components.
Decide how various components interact with each other. Break the test automation system into incremental stages/milestones. Adopt standard coding practices like code cleanup, reusable code, documented code, etc. Better the design of your test automation system, the easier it would be to maintain it.
12. Ignoring Code Reusability
When creating test automation, it is a good practice to consider not only how existing code can be reused but also how the new code can be written in such a way that it can be reused too. If multiple test cases are using the same lines of code, better move those lines to a function/file and call that in all the test cases.
Modularization helps in making your test automation system less error-prone and more maintainable as changes need to be made in a single place rather than all over the test automation system.
13. Ignoring Exploratory Testing
Even though it is important to do testing according to the test plan reviewed and signed off by stakeholders, exploratory testing helps in discovering bugs that couldn’t be identified with planned test cases.
Organizing test jam sessions where the entire team sits together to use the product in an ad-hoc manner can be one way of doing exploratory testing. Having an external person, not familiar with the product, to use the product in an explorative manner can help in getting a fresh perspective on the product UI.
14. Selecting the Wrong Automation Tool
Several open-source and paid test automation tools are available today but selecting the right tool for your needs isn’t easy. Beginners often prefer open-source tools as there is no associated upfront cost but if the tool doesn’t fit your purpose the costs could be high later in terms of your productivity and/or changing to a different tool at a later stage.
It’s not about open source vs paid, it’s more about how much it solves your problem. If you are opting for an open-source tool, do consider the support it offers in the form of communities and forums.
Check the article here on how to choose the right test automation tool.
Testsigma is one such test automation tool with a package of multiple useful features like cloud-based test case creation that does not require any infrastructure setup or investment. Already integrated Test Lab with all needed browsers and devices for cross-browser testing. Built in support for integration with CI/CD tools.
Automation for browser as well as mobile devices in one place. Automation of complex and basic scenarios in simple English. AI supported maintenance that automatically heals any failing test cases by detecting any changed attribute and more.
15. Overlooking the need for Continuous Testing
Beginners can sometimes overlook the need of a Continuous Integration Continuous Testing pipeline. They might think that integrating the test automation system with the product build system may not be necessary as the test automation system can be scheduled to run at regular intervals independently.
When your test automation system is integrated with your product’s build system, it offers more benefits. When a developer checks in his/her changes in the source code repository, they can be validated instantly with the test automation system in place.
This continuous testing for the product helps in catching any breaks in the product early on. Also, it greatly reduces the liability of performing regression testing and finding injection changes which introduced the break into the product.
One tool for test development and continuous delivery of applications.
Accelerate your release cycles with Testsigma
16. Not Reviewing Test Automation Results Regularly
Beginners often think that once test automation is up and running, there is no need to look at it again. After all, if no change is made in the test automation code, why would anything change in its results. Unfortunately, that’s not true.
Even if there is no change in the source code of the test automation system, there are constant changes happening in the product and/or the environment in which test automation is running. If you think there isn’t a need to review the test automation results regularly, there certainly isn’t a need to run the test automation regularly.
Every time test automation runs, its results should be reviewed to confirm that there are no new unexpected breaks. To make reviewing the test results simple, you can enhance your test automation system to share the concise test results in an email with all relevant stakeholders.
If this email can contain other details such as links to detailed test results and logs, it’s even better. This would make sure that anybody can look at the test automation status anytime without making any extra effort.
17. Not Maintaining Test Results from Previous Test Runs
We might think why keep old test results when new ones can be generated any time? What they often overlook is that test results from earlier test executions can serve as a benchmark for new test results and can help in quickly identifying injections in the product.
Whenever a break is encountered in the product, you only need to review the test results from previous test runs to find out the injection change which introduced the break. You certainly don’t need to keep all the test results but maintaining few recent ones does help.
There is no end to the list of common testing mistakes that can be made when you are starting in the field of software testing. It varies from person to person and product to product. It’s important that mistakes aren’t repeated, and they don’t hold you from learning and trying new things.