A Tester’s Rubik Cube – Your testing skills guide to stay relevant
Share This Story
Software testing has a wide field of opportunities and is crucial for the software development life cycle. But if you are a beginner, you might wonder about ways to start a career as a software tester or excel as one. Software testing is not just about clicking buttons or taking screenshots. Software testing is a skill that requires knowledge, patience, perseverance, etc. The skills needed for software testers are varied, including the right mix of technical and soft skills. Some can be learned through on-the-job training, reading books/articles, training videos, software testing training institutes, or some with mere experience. This blog looks at the skills sets required for a software tester and what skills need more focus for a successful career as a software Tester.
Defect Management Skills
Bug advocacy is to recommend the case to fix a bug logged. The testers who find the bugs should also be the ones to advocate the bugs to be fixed. As a tester, one should learn to write the bug report well and present it appropriately. It is not about how many bugs a tester reports, but the best Tester is the one who makes an effort to get the developer to fix those bugs. It is essential to understand that your bug reports are not just mere technical documents. Testers should be equally persuasive, providing high-quality information, facts, and data in their bug reports to help stakeholders make well-informed decisions on fixing the bugs. There is a lot of work done by Professor Cem Kaner and BBST course by the Association of Software Testing, which can help deepen your knowledge in this area.
Bug isolation is an art and a process to simplify the bug report by documenting distinct data fields such as steps to reproduce, pre-conditions, input data, expected and actual results, attachments, etc. Knowing these details plays a significant role in making it easier for a developer to reproduce a bug. In addition, there are a lot of readily available video recording tools and screenshot tools that testers can use to their advantage. Therefore, a golden rule would be to key in as much information as possible about the bug.
As testers, we need to be mindful that bug priority and severity don’t always coincide. Even though a defect may be critical, it does not always have to be the highest priority for the client and vice versa. Whenever a tester raises a defect, assigning the correct severity and priority to defects is essential. Failing to do so may have drastic implications on the delivery of the product as a whole. For a skilled tester, these concepts need to be impeccably clear in your mind.
Root Cause Analysis
When analyzing issues, testers need to take a comprehensive and holistic approach. Mastering the skill of root cause analysis as testers will help boost continuous improvement efforts in the organization you work. Always remember that good analysis is an actionable analysis. A good tester will always strive to provide the proper context and information to result in actionable decisions. Think on the HOW and WHY rather than WHO was responsible and being methodical providing the concrete evidence. As a good testers, we need to realize that there can be multiple root causes. As Sir Jerry Weinberg says in his rule of three, “If you haven’t thought of three possibilities, you haven’t thought enough.” As testers, you could explore some root cause analysis techniques like the Pareto Chart, The 5 Whys, and the Fishbone Diagram that will assist you in sharpening this skill set.
Bug reproduction skills are a critical element in fine-tuning a product. Taking additional time to verify that you have the proper steps to reproduce an issue is vital to prevent the bug from being pushed around from one team to another. On the other hand, not having the right bug reproduction skills will delay the fix and add to the frustration of the team looking to resolve the issue. So an essential contribution as a tester is to accurately record steps that will help discover what went wrong and help fix it faster. Jim Bird, a seasoned software leader, said, rightly said, “If you can’t reproduce it, then you are only guessing at what’s wrong, and that means you are only guessing that your fix is going to work.” Hence documenting each step and effectively communicating it saves both time and money.
Log Analysis is an important aspect to ensure effective and efficient software testing. Logs help testers provide real-time feedback and insights into an application under test. As Testers learning log analysis can help improve your team’s efficiency and process quality. So if you don’t have access to log files today, I would request you to ask for access. Explore the log files and look to capture meaningful details. Various tools in the market assist with log analysis you can explore, like Kibana, Grafana, AWS cloud watch, etc.
To polish your art of defect reporting, one needs to ensure that the defect report clearly states the problem. As defect reports directly impact the quality of the product, testers need to take time to create an excellent defect report. In addition, a detailed defect report reflects upon the Tester’s depth and capabilities, so we as testers need to put efforts to provide factually correct information to unearth the actual defect.
Debugging is an important skill every Tester should have. As testers, we are responsible for writing code for automated checks or creating various test assistance tools. Most of the time, our automation checks give false positives or negatives, so we must debug them not to be deflected and focus on identifying the correct issues. Unfortunately, I have not seen any colleges teaching debugging skills to date, so most of us are left to learn this independently. However, with the right consistency, discipline, and training, you can be master this skill.
Being physically present for a Defect Triage meeting is less important than the contribution we as testers can make for the triage meeting to be successful and impact-worthy. As a tester, you have an equal say in sharing real-time details in terms of the defect frequency and risk; this will help the team prioritize the bugs effectively. In addition, a good trait of a tester is to keep an eye on defects being rejected and make an effort to understand the reason for rejection. Finally, another significant benefit of active participation in triage sessions will help testers gain a common and shared understanding of how customers use the product. Hence, good triaging skills will only help you mature as a tester.
Apart from technical knowledge, many soft skills play an essential role in software testing as a profession. Flexibility is one of those. Testers should be able to change and adapt the action plan based on changing conditions. Change is bound to happen; you may come across a fundamental process change done to ensure projects run smoothly without delays, and testers need to be flexible to adapt to changing demands. It is a common phenomenon while working on projects you would experience requirements changing, deadlines revised, an unexpected bug pop-up. All these situations demand us as testers to be flexible.
As software testers, we need to embrace empathy. According to World Quality Report 2018-19, ensuring end-user satisfaction was the top objective for testing teams. Every step of your customer journey, every interaction, every detail of your product should reflect empathy for their experience. To be an empathetic software tester, you need to feel the pain and pleasure of your users using the product. One must take a walk in the user’s shoes. So as testers, it is essential to add your customer’s emotions while testing, so it is a more human-centered test versus a task-focused test.
We all have opinions. We all like to talk. But, unfortunately, there is also a tendency to interrupt offering solutions even before the opposite person has completed talking. While such an action may be relevant, it is not always welcome. In my career so far, I have come across very few testers who listen patiently without interrupting. Developing your listening skills in combination with technical understanding will give you this rare ability as a tester to find defects and high-risk areas just by listening to engineers describing their design and development approach.
Mentorship takes a lot of time and energy. As you grow with experience, it is always good to share your learning and best practices with the team and help newcomers become better testers. Being a mentor would give you the feeling of satisfaction. Coaching your coworkers, getting involved in pair testing, code reviews, providing constructive feedback will only help your team members succeed and eventually help the team deliver high-quality work. A good trait for testers is you walk on the path of mentorship and create future mentors. Top testing jobs today demand mentorship skills as a pre-requisite which makes this skill even more important.
Testers have to deal with many activities, perform functional tests, create automated checks, run load tests, monitor the application, identify bottlenecks, and the list goes on and on. We have all been there, and we very well know there is not enough time in a day to get what you need to do. As testers, one needs to learn the art of time management. A large part of time management is to become aware of your behavior patterns. Once you are aware of the distractors getting in the way of your productivity, you will find your ways of dealing with them. Plan your task well, evaluate what job can be delegated, and be diligent about prioritizing your tasks. Finally, ensure you set SMART goals and deadlines to follow. Most testers forget to set goals, and this disrupts their commitments.
An important aspect of testing is to test what you observe and understand. Assumptions don’t work here. Good observation skills help testers keep themselves updated and ready with the course of action for any situation. As a practice, observe things happening around you. Observe the building of the product and its purpose. Keep track of all major and minor things in your project.
Curiosity / Creativity/ Asking Questions
One of the essential qualities that set a good software tester apart from a regular one is curiosity. Therefore, a good tester should always believe in the value of pursuit for knowledge. As a tester, it is always a good trait to question anything and everything unclear. Being intellectually curious enables a tester to identify new perspectives of the projects they are assigned. If you don’t ask questions, your customers will if you are not creative enough to bring all scenarios to test your customer’s will. They should ask the right questions to come up with the best solutions. A creative mind enables software testers to think beyond and, therefore, test beyond the boundaries of the mentioned requirements. An innovative tester looks for how the intended user might interact with the application under test, helping them perform their role to the best of their abilities.
Testers need to take notes to record their learnings. For testers, note-making helps gather thoughts collectively in one place, serving as helpful information while performing tests. Practicing Note-taking will help you as testers remember things better and help improve your learning quotient. There are various ways of maintaining notes. Some of the techniques I use are creating sketch notes or mind maps in Xmind.
Team Player and Positive Attitude
While it is good to have a team, it is a whole other thing to have teamwork. A team that works well together can do wonders and produce great results. A good tester is a good team player who actively contributes to meeting the goals of the team. As a tester wanting to be an effective team player, one should actively respect coworkers’ ideas and reach out for help. Being the lone superhero may be suitable for a while but will haunt you in the long run. Testers should strive to be involved, proactive, cooperative, and work together to develop teamwork practices. Along with being a team player, keeping a positive attitude is the key to success in any field, and software testing is no exception. As testers, one should always be ready to go the extra mile to deliver better quality products. In addition, great testers care and are supportive of their fellow team members. These simple deeds support the testing team as whole generating positive vibes.
Architecture and Development
Software architecture is the building block of a software system. Therefore, understanding software architecture is essential for any software tester. In addition, the greater the complexity of the application under test more critical it becomes to deep dive into understanding the minute details. Finally, testers who know the architecture can predict the software system’s quality, giving them an extra edge to test beyond the UI layer. When it comes to programming skills, it’s not that testers need to work as developers. Still, it is crucial to understand the details of the application, so it is easy to comprehend its functioning and create tests accordingly. In addition, a fair bit of programming knowledge helps identify possible errors in the application, which further reduces the chances of bugs or any application inefficiencies.
As testers, we are always excited to jump into testing the software without understanding what the client needs. Therefore, Domain-Driven Design emphasizes comprehending what the client wants and working with them as partners throughout the project. Testers need to immerse themselves in understanding the requirements, asking many questions, and modeling the product with the team. In addition, clients are typically not interested in the product code; instead, they want to know how it works. Therefore, communicating effectively with the clients without being technical is one of the most significant benefits that Domain-Driven Design offers. In addition, focusing on Domain Driven Design principles helps solve complex problems with ease.
Technology is fast-changing, and testers need to add new skills. DevOps is one such skill that is becoming increasingly popular. Be it understanding the requirements, providing testing ideas, running automated checks, monitoring the product in production at every stage of the DevOps pipeline, testing is needed; hence Tester’s role becomes critical. Furthermore, as testers, one needs to invest time being familiar with end-to-end CI/CD solutions. Therefore, testers assisting in continuous testing with a robust QA strategy become integral to the DevOps process. Some tools to explore on establishing continuous testing are Jenkins, TeamCity, and Bamboo.
While writing code or automated checks, testers need to ensure they write clean code and are flexible enough to alter. Code Maintenance has always been the most challenging part of test automation. Through my years of experience, I have seen a lot of test automation projects scrapped because of the failure to cope with changing requirements. Automation engineers need to optimize the code using the best design techniques. Hence learning design patterns is important. Look to explore SOLID principles with are among the vital set of design principles.
One of the critical factors for a good tester is Domain expertise. As we know, testing is context-driven which means testing a healthcare application will be different from testing a financial application. Being a domain expert will help you craft intelligent business-driven scenarios. Focusing your efforts on strengthening your domain knowledge will help you better understand product requirements, business processes, and rules.
Agile testing is not a methodology but a mindset. Therefore, as testers, one must educate themselves of what are agile process. Conscious effort understanding the business value and working to understand the end-user needs is required. In addition, testers need to respond quickly to change, including changing, adding, and improving tests based on changing requirements. Finally, effectively collaborating within the team, pairing with developers accelerates the agile mindset.
Data structures and algorithms
David Jones rightly said, “Get your Data Structures Correct First, and the Rest of the Program will Write Itself.” Comprehensive Knowledge of Data structures coupled with algorithms is the core foundation of writing good code. In addition, learning Data structures and algorithms gives a good understanding of the latest frameworks like Angular, React, etc. Testers can efficiently perform tasks related to automated reasoning, data processing, and calculations.
Every organization that you work in will have its processes to go about with testing an application. A tester needs to understand the process and suggest ways to make it better. Focus on learning and implementing strategies that enhance the ability to deliver a quality product or service consistently. Some methodologies which have effectively worked in my experience have been Scrum and Kanban.
The role of a tester is a lot more than just understanding how to find and fix bugs. As a testing professional, one must ensure that they live up to standards expected by the users and stakeholders. With too many tasks in the tester bucket focusing on the overall view of a specific project may get tricky. For this reason, testers need to be business savvy and consider having the organization’s strategy in mind at all times. In
addition, testers should understand the bigger picture, which will help them
better evaluate the software under test.
Testing Approach Skills
Mastering the art of exploratory testing involves continuous learning, and one needs to evolve constantly. Developing the exploration skill gives testers a chance to be creative and the freedom to test as they want. Being skilled at exploratory testing will help testers think beyond the scope of a test plan and help deliver quality projects faster. Work to be the Sherlock of your team. Work one thinking out of the box and find innovative approaches to test putting yourself in the user’s shoes.
A good software tester needs a well-defined test plan based on testing requirements and the timeframe allocated. Documentation is a skill many testers ignore, but a well-documented test plan ensures all aspects of the application are tested, benefiting the entire testing process. Having proper test plans also provides transparency to the stakeholders on what the testing team plans to do. Therefore, testers need to learn this skill of test planning, a complete guide to aid their testing process and reap benefits.
Testing teams use requirements as the base for testing activities, but very few testers have requirements engineering skills. Research shows 56% of all errors identified in the product are in the requirements phase. Hence, testers must get involved right at the start of the requirements engineering phase. Like any software engineer, testers should also make an effort to understand the granularities of business requirements to add value to their testing. A good tester will make every effort to get the correct information about the workflow, product features, and functional and non-functional requirements that ensure quality products are shipped.
Selecting Heuristics / Using Oracles
Heuristics and Oracles are powerful if you can fully understand them and apply them thoughtfully to your testing. If you hear heuristics and oracles for the first time, you know these are concepts you should not miss out on learning as a tester. I would recommend starting with the Heuristic Test Strategy Model created by James Bach. Learning about heuristics and oracles will help you test better. In addition, there are several blogs from Michael Bolton on developsense.com which can better your understanding and help unlearn.
Whether BDD (Business Driven Development), which mainly focuses on understanding requirements, or TDD (Test Driven Development), primarily focusing on Unit Tests as a software tester, do not look at both these approaches in isolation. Instead, learn to identify the benefits of both methods and choose the path which best aligns with your testing goals and suits your team better. Testers can apply a mix of methodologies to meet specific requirements in the most efficient ways.
All projects we test have risks associated with them. As we know, finding defects in production is expensive. The prime reason why performing risk analysis is to help us better understand what can go wrong with the application before being deployed to production. Testers, if able to identify risks early, will give ample time to the team to mitigate and reduce the project’s overall risk.
Scoping / Estimation
For any project to be successful, test estimation and scoping are essential skills as the testing process itself. Estimating your efforts well leads to building a good reputation and trust with your clients. In addition, learning from past projects helps testers prepare a more accurate estimate of the testing cycle which is more realistic and precise. As a tester, learn various test estimation techniques like the Delphi method, planning poker, etc. this will allow your team to not miss out on deadlines and overshoot the project budget.
Organizations today seek measures of testing completeness and effectiveness to show test completion criteria. Of them all, test coverage is considered valuable. Modelling coverage helps testers measure how thoroughly a test case tests a model and the percentage of pathways that a test case exercises. Therefore, learning to perform coverage analysis is an important skill, be it decision coverage, condition coverage, path coverage, boundary value coverage, etc., which will help instil greater confidence in testers.
Mind mapping is a technique best suited to work with your brain. Mind maps provide a visual representation of a testing function as a whole with creative ways to plan to test. And so, mind mapping is a vital skill for testers to trigger their creative thoughts. Testers can use Mind maps for various testing activities like requirement analysis, test planning, testing traceability, monitoring test progress, etc. One good tool which I prefer to use for mind maps is XMind which you could try.
Understanding the Code
Testers need a good understanding of code when they have to do white-box testing or automation. In addition, good programming skills and database knowledge will help with statement coverage, code coverage, cyclomatic complexity, etc. But, remember, simply reading about coding or watching online videos will not help. You must code. Whichever programming language you choose, be it Java, Python, or Ruby, what matters is to practice and implement your learnings.
New tech - AI/ML/Cloud
With the current practices of DevOps, which increase the pace of software development, the future market demands the power of predictive technology to enhance traditional ways of doing software testing. Artificial intelligence (AI) and machine learning (ML) provide a dynamic framework to predict and solve errors in code before they appear. Learning to leverage AI solutions properly will drive efficiency, optimize processes and enhance experiences. The Cloud computing market would reach £1.17 trillion by 2030. Companies have adopted the use of cloud services due to a reduction in operating costs. Another factor that has surged cloud adoption was increased demand with the COVID-19 outbreak needing improvements to remote working. Hence, as testers, it would also be advisable to be aware of various cloud services like AWS, Azure, Google Cloud, etc.
Performance testing provides stakeholders with information regarding application speed, stability, and scalability. A good performance tester should identify performance bottlenecks and warn the responsible team about the issue. In addition, testers need to understand user behavior which aids in building mature performance tests. I have personally worked with Jmeter in the performance tool category, but you could explore other tools out there.
Very often, we need to create tools to assist with testing. As testers, one must realize that even a tiny excel macro or browser plugin to aid and accelerate your testing task is an excellent start to tool creation. I have built many small tools to help with my testing tasks. Some of which are exporting test cases from Excel into a Test Management tool, bulk update of test status, System folder structure & content comparator, custom web crawler, website health check dashboard, custom Test report generator, etc. The excellent quality of a software tester is not to work hard but be smart, so always look to innovate the way you test to reduce your workload via tools.
Testers should always validate whether the team is building the right product. To do so, one needs to do exhaustive market research. Analyze how the customers use the product through this researches. With thorough research, a tester can suggest better ways to evaluate a product. So I would advise talking to experts in the industry and always making it a habit to jot down key findings and organize the information gathered well.
No organization can bypass security testing as there is too much at stake out there. The primary focus for an organization has always been that confidential data stays confidential. Compromising on security might result in loss of information, revenue, or brand reputation. As testers, it is equally essential to know about possible attacks that occur. I would advise staying up to date with OWASP Top 10. Some security tools I have tried are ZAP and Burpsuite, which have helped me secure the product I test to a great extent.
As the famous saying goes, “A fool with a tool is still a fool.” Depending on the context, you should decide which tool best fits you. Testers need to be aware of different tools out there; this would make them versatile to tackle various complexities of the project. For example, we have bug tracking tools, test management tools, test automation tools, etc. Having a knack for these tools available in the market will help testers to serve different requirements.
Manual testing alone cannot do the job with the increasing complexities and integrations of the applications today. Testers need to learn automation skills to test browser compatibility, performance, database, and integration layers, allowing for higher accuracy because of the business logic and technicalities it can serve. There are many automation tools out there that support automation for specific testing types. While there is no doubt, exploratory testing is essential. Learning these automation skills will let your team perform tiresome regression tests quickly and spend more of your creative energy on exploratory testing. A good test automation learning resource would be Test Automation University.
According to WH0, about 1 billion people, 15% of the world’s population, live with some form of disability. Hence it’s vital to ensure we consider accessibility in our testing to make it easier for people with disabilities to use the applications we build to their full potential. There are many sides to accessibility testing, like understanding the compliance standards, accessibility certificates, knowing in-depth about various assistive technology, and becoming more empathetic to those with disabilities.
As you gain more experience in this skillset, your knowledge of accessibility as a tester will make you more valuable and impactful within your team and the community.
Thought Process Skills
Logical and Rational Thought
Testers need to remain competitive in today’s world. Therefore, they need rational and logical thought since these skills will help testers understand product complexities, intelligently identify errors, and access unexpected behavior. In addition, good analytical and rational thought-processing skills help testers determine problem areas by carrying out deep root cause analysis and possible reasons for the issue instead of just reporting it. Finally, learning these skills will help Testers assess the product under test by raising straightforward questions and not being biased in their testing activities.
It is important for testers to deep dive into the requirements, ideas, assumptions and not take them at face value. It is a good trait for testers to think critically, look for alternatives, and probe into complexities. To master critical thinking testers, one needs to de-focus and focus. You need to be empathic towards the user personas, avoid ambiguities and misconceptions, and know that your earlier experience cannot always apply to the future.
As a tester, one needs to investigate the interactions between the system’s part; that’s when system thinking comes into the picture. The system thinking approach focuses on the feedback loop in the system design, which allows testers to re-outline broken systems and suggest new strategies. This holistic approach to the system’s analysis helps solve complex challenges and adds a competitive edge to us as testers. Unfortunately, very few testers consider honing their system thinking skills essential to becoming an expert.
I can’t stretch enough how much continuous learning is essential. Don’t be content with what you know. Instead, look to explore new technologies and adopt them. Always strive to learn new techniques, new frameworks from testers and evaluate how you can implement the same in your workplace. One cannot teach learning, but you can develop it with patience, practice, and perseverance. Attend testing conferences, be part of testing communities, follow testing influencers, and be part of the continuous learning journey.
Problem-solving is a universal skill required in every job profile. In your day-to-day testing activities at your workplace, you come across many problems, simple or complex, which require problem-solving. So as testers, we need to have the necessary skills to identify the problem and develop an effective strategy to solve them. If you are stuck on any issue, reach out to fellow testers or colleagues to seek advice and a different perspective. Great problem solvers are observant, action-oriented, able to remain focused, and likely to become great leaders in the future.
Like in Mathematics, we drive to the desired conclusion based on proofs presented. Similarly, we can use deductive reasoning skills in software testing to construct valid explanations based on which we can derive and report the quality of the application under test. Post execution of your tests, the information gained can act as evidence to support the conclusion. Therefore, testers should collect facts and do intelligent analysis while deducing any hypothesis from their testing research.
Analytical thinking involves thinking in a logical step-by-step manner. For example, as a tester, analytical skills come in handy when one needs to analyze what to test in an application and decide on test data we should use. Thus, testers should have the right analytical bent of mind that would enable them to analyze situations in detail and to arrive at the best possible solutions.
Thinking Differently / Out of the box
Testers need to always think out of the box as it adds creativity to the tests and brings a different perspective to the conventional way of testing, which can uncover newer defects. Go beyond the traditional approach of black box and white box testing. Think out of the box. Stop working on autopilot and think of different ways to test to bring the best from your application. Learn to mix things up, and don’t be afraid to challenge what’s not working for you.
Facilitating / Collaboration
A key to being successful as a tester is the ability to collaborate and communicate. Developers are our friends. It is essential to work as a team where testers, developers, product owners, etc., can benefit from this collaborative approach and ship quality products to market faster. Go with the mission on one team, one goal. Look at ways to share the responsibilities within your team and how you can ensure transparency of activities you perform, thereby establishing trust. As the African proverb says, “If you want to go fast, go alone but if you want to go far, go together.”
Thanks for reading my article. Learning how to become a good tester is a worthy pursuit that will help you a lot. Regardless of the experience, you carry as testers; we should always try to improve our software testing skills to keep ourselves ahead of the competition. With these tips, I hope you are all well equipped to make the most of your software testing career and apply it to any software testing job you take up in the future. I hope your career in software testing is as fruitful as it has been for me. So, what are you waiting for now? Let’s evangelize and celebrate our Testing craft.
Know our Super Writer:
Director - Product Evangelist and Community Builder at ACCELQ
He is on a mission to unite the testing community and keeps himself busy leading the Q community - A Global Community of Test Automation Enthusiasts. Being passionate about continuous learning, Geosley loves to innovate the method of working resulting in higher Efficiency. He has around 15 years of experience in the Software Testing Industry. Has previously worked in companies like JP Morgan Chase, BNP Paribas, Cornerstone OnDemand, and Infosys. Being a Test Automation Enthusiast, he also holds a Certified Agile Leader and Certified Scrum Master accreditation from Scrum Alliance. To add he also possesses a Six Sigma Yellow Belt and ISTQB certification to his credit. The world of cloud computing fascinates him and is an AWS Certified Solutions Architect and Cloud Practitioner. Geosley has been a speaker at various events organized by The Test Tribe, The Test Chat, Test Master's Academy, Agile Testing Alliance, Clavent, QA Tech Talks etc.