Quality – Why is this word so important for your software? Software teams today involve a number of people: developers, testers, support engineers, designers, product managers, and executive stakeholders. A low quality software impacts all of these or in other words everyone in the team is responsible for the quality of software delivered. When we look into the overall effectiveness or cost manual testing still have a pivotal role to play. Unfortunately, very little discussion is happening on how to improve efficiency of manual testing, instead most of the discussions are happening on how to increase the level of automation. Many of us would advocate the fact that Manual Testing is no longer needed, and I know it well why they think so. It is mostly because of the drawbacks and challenges associated with Manual Testing.
Challenges of Manual Testing
Manual testing is on one hand being very exhaustive, detail oriented, user focused and dynamic, while on other hand is very error prone, time consuming and tedious, there are several major challenges which most of the IT professionals might have faced sometime or the other.
- Series of repetitive steps to be followed for test case execution.
- Huge test data preparation may take a lot of time and effort.
- Working as multi-user or working with multi screens and tools.
- Performing cross-browser testing and comparison.
- Time consuming test planning – test case/test data preparation etc.
- Extra efforts required for recreating/ reproducing the issues once observed.
- Hard to track Exploratory or Ad-hoc testing.
Why we need Manual Testing
Manual testing, the most primitive form of testing, can be very monotonous at times as it requires tester to be very patient, creative, innovative, open-minded, skillful. Manual tester should have out of box thinking and always think them to be in customer’s shoes while testing the application.
- Manual tests have the benefit that they are easy to design because they directly mirror the customer experience, and they are structured to have a high degree of reproducibility.
- Business and end users still in their own way are manual testers.
- Dynamic functional requirements can be tested only using manual testing as they are non-repeatable and are subjected to rapid changes, making them a bad candidate for automation.
- Ad-hoc or Exploratory testing can’t be performed using Automation.
- It’s easy to report a test case failure in Automation, but to perform a workaround to test other areas even if one thing fails is not likely, whereas same is very much possible in Manual Testing.
- Manual testing is always preferable for products with engineered user experience and GUIs with constant updates.
- Manual testing has higher scope of debugging, exception handling and is much more informative.
Improving Manual Testing Quality and Efficiency
Now when we have talked enough about the issues and challenges of faced by manual testing, we should also discuss the ways to improve the manual testing quality and efficiency as we it’s impossible to deny the importance of Manual testing. Let’s consider the level of testing in the past was sufficient enough (which is hardly the case), how can we possibly keep up with this new explosive pace of project delivery while retaining satisfactory test coverage and reducing risk? The answer is either more people for testing, or introduce smart approaches like combinatoric testing that will help for reduction in project cycle times without compromising the quality. And this holds equally true for both Traditional and Agile methodologies.
I am herewith listing a few best practices that I have come learnt in last 11 years of my testing career, with a hope it would contribute to your test quality and efficiency.
- Test Early: Defects identified later phases of Software Development are most expensive ones to fix. So try to test as early as possible – in fact most of the times of critical bugs are found in early iterations itself.
- Test Often: Instead of 1 long iteration and testing everything in 1 go, try testing small chunks and more frequently. Keep testing functional changes as and when ready and perform multiple iterations.
- Own Test Environments: Many a times developers add some configurations or run script but missed to add in release document or configuration file. As a result, functionality works in the local/test environment but fails in production. Test
environment must be the exact replica of production and should be owned by testing team.
- Use Mind Maps: Planning and high level test scenario preparation should start as early as requirement analysis and design phase. This can be done with minimum effort using mind maps.
- Exploratory Testing: this testing methodology has proven to be a great success with respect to early defect identification in minimal efforts. It helps testers to perform ad-hoc, unplanned real time scenarios just like a real time business user.
- Risk Based Testing: Risk-based Testing is based upon Priority and Criticality of functionality under testing. Higher value of priority and criticality, means High Risk and vice versa. Depending on values of, changes can be skipped when there is less time for execution.
- Effective Test Reporting: Writing simple, clear and descriptive bug report will help to make your software testing more efficient. Your efforts towards writing good bug report will not only save efforts but also create a good relationship between you and development team.
- Use Repository: Store all documents, reports on centralized location. It helps to avoid scattering documents over email, file server or intranet and hence any miscommunication or loss of information. Test documents can be accessible to whole team and will save any rework.
- Use Combination Testing: It is a mix of manual and automation testing techniques, that accelerates the manual testing process, increase coverage, speed, and accuracy by automating repetitive tasks.
- Regression Suite Optimization: Once the system or functional testing is over and the functionality is released to production, move those test cases to regression suite and keep updating (removing irrelevant test cases and adding new test cases) the regression suite release after release.
There would be hardly any software that can be tested without some manual intervention, which is as good as testing some part manually. Automation testing is on the rise, agreed, but it cannot completely replace manual testing. And when you think about it, business and end users still in their own way are manual testers. Hence we do need Manual Testing and we should take efforts to make it more efficient and productive.
This is solely my personal opinion, What’s your view? Please share your thoughts in the comments section below as I learn just as much from you as you do from me.
About the Author:
Prashant Kumar | Having 12+ years IT experience as Java Developer, Business Analyst, Consultant and finally – QA professional, Blogger, Mentor. Worked with major IT firms, Investment banks and start-ups across US/UK/Switzerland/Germany/India to deliver quality product/services. Connect with him via LinkedIn Profile!