8 Best Practices for QA: Bring Your Quality Assurance to a New Level
Do you know how to make your QA process mature?
Do you find the quality of your project important? Of course, you do. Luckily, the software development world came up with a professional field, the primary aim of which is to make sure that your project quality is impeccable.
Quality Assurance is integral to your success. However, to actually work its magic, the QA process has to be set up properly, and here is where software QA best practices come into play.
Understand Quality Assurance Basics
Let’s have a look at the fundamentals of Quality Assurance:
- What is QA?
- When and how QA is performed?
- What is QA documentation?
- What are the types of QA?
Quality Assurance is the process of testing a software product in order to spot bugs and opportunities for improvement. Testers check the compliance of the software with business requirements, security standards, and technical specifications. They make sure that the software functions properly as a whole and that each part of it is perfect.
2. QA Process
Quality Assurance usually goes hand-in-hand with the development process. Developers submit their latest changes for testing. Testers check if these changes are implemented properly and with no errors, and if some issues occur, they report these to developers and the Project Manager.
The process of software testing goes through a life cycle. This life cycle consists of six stages: requirement analysis, test planning, test case design, test environment setup, test execution, and test closure. Each of these stages has entry and exit criteria, along with methods, tools, and goals associated with it. A smooth and well-planed QA process is crucial to software success.
Would you like to learn more about the life cycle of QA process?
Have a look at my recent article “Software Testing Life Cycle: The Circle Of Life”. You will enjoy “The Lion King” metaphor!
Each stage of the software testing life cycle is properly documented. The QA team writes test plans, test cases, and defect reports. Each of these documents has a predefined structure and a set of requirements to be compiled and managed successfully. While modern Agile methodologies compromise the importance of documentation for the sake of working software, comprehensive QA documentation still remains vital.
4. Types of QA
There are many more types of QA testing, and not all of them are performed by QA specialists. Some testing types are performed by developers, such as unit testing, and some are performed by designers, such as UI/UX testing. The testing types also differ by their purpose, by methodology, the level of automation, and the level of planning. You can learn more about it in our recent article on types of testing.
Make Your QA Process Mature, Not Basic
The maturity of QA process is one of the standards that each company should strive for. In software development, there is a CMMI model, which stands for Capability Maturity Model Integration. This model was later borrowed by QA professionals and implemented with some adjustments to the QA field. This model is now called TMMI — Test Maturity Model Integration.
There are five levels of the QA process maturity:
- Level 1: Initial. QA processes of this level are very young, poorly managed, and unpredictable. It is typical for newly established QA processes, but it sometimes happens in companies that implement QA for quite some time already. Clearly, this is nothing good.
- Level 2: Managed. At this level, the basics of the QA process are established. In particular, there are established test planning, design, execution, and monitoring processes. Test environments are also in place. Yet, the QA process remains reactive.
- Level 3: Defined. Processes are well-organized and proactive. The test training program is in place. The QA process is integrated into the development process from its beginning.
- Level 4: Measured. At this level, the QA processes are measured and well-controlled. Measurements and reviews are conducted regularly and at each project development stage.
- Level 5: Optimizing. This level is all about process improvement. All activities, tools, and methods are assessed and analyzed in order to be optimized later.
So, here comes the list of 8 best practices for QA, which will help you achieve QA maturity. It is important that the order of these QA practices does not define the importance — each of these steps and measures is equally crucial.
#1 Develop a clear-cut plan
As Antoine de Saint-Exupéry once said,
A goal without a plan is just a wish.
If you really want your project to succeed, you have to plan every tiny bit of it, and software testing is one of those bits. This is why thorough planning is one of the essential QA testing best practices.
Prepare a test plan, which includes information on what will be tested, by whom, what resources are needed, when in the deadline, what are the acceptance criteria, and what is the current status. Make sure that all QA team members are aware of their responsibilities, invited to all the necessary all-team meetings, and provided with all the resources thay need. Testing timeframes should be aligned with project timeframes, and QA specialists should have a perfect understanding of project requirements.
#2 Develop SMART QA goals and objectives
Accountability is integral to the success of any process, which involves a team of people. To achieve accountability, you have to set specific and clearly defined objectives and goals.
The level 4 in TMMI model is called “Measured”, that is, the software testing process has clear KPIs and quality metrics. Some of the software testing KPIs that you can implement are:
- Open defects: If the number of open defects exceeds a certain predetermined limit, an action for development optimization needs to be taken.
- Automated tests: The higher the percentage of automated tests is, the more effective the software testing process will be.
- Code coverage: You should strive for a high percentage of code covered with tests.
- Requirements coverage: All the requirements should have corresponding test cases, so you should strive for 100% of requirements coverage.
- Serious bugs: This is the percentage of serious bugs, and the higher it is, the more attention the development process needs.
Also, you should implement SMART Quality Assurance goals and objectives. SMART goals stand for specific, measurable, attainable, relevant, and time-bound goals. These goals may be different: both professional — something very relevant to the software testing process — and personal — something less related but equally important for the team.
The example of a professional SMART goal is: “Each month, at least 50 percent of conducted tests should be automated.”
Meanwhile, here is the example of a personal SMART goal: “Each software tester should take two online training courses per year”.
Both goals are specific (neither is open to more than one interpretation), measurable (fifty percent of tests and two courses are easy to count), attainable (both goals can be reached without any extreme effort), relevant (both goals will benefit the QA process), and time-bound (per month and per year are specific time requirements).
#3 Employ multi-directional testing strategy
Making use of the diversity of QA types is one of the most obvious but often neglected Quality Assurance practices. Do not limit yourself with one or two types of testing. Perform multiple types of testing in order to identify different kinds of bugs in a timely manner.
In particular, encourage your developers to write automated unit tests so that they check the quality of code and fix errors before they submit it to QAs for testing. After that, ask the QA team to perform smoke testing so that they either make sure that the code is OK to be tested or send it back to developers to retest. When testing the software, ask the QAs to go through it manually to see if there are any bugs from a user’s perspective. After a lot of changes have been implemented, ask the QA team to perform regression testing to make sure that no older functionality has been broken. Prior to showing the product to all stakeholders, the team should conduct acceptance testing to make sure that the product fully complies with business requirements.
These are only a few types of software testing. There are many more!
Do the terms “unit testing”, “integration testing”, “system testing”, “acceptance testing” confuse you?
Look through my recent article “How to Find Your Way Around Different Types of Software Testing?” to find out more about these and other software testing types and life cycle models in software testing.
#4 Conduct external quality reviews
Getting a second opinion, a fresh pair of eyes is particularly helpful in software development.
As a project manager, product owner, team lead, or business owner, invite a professional from outside, who will review your software code and perform a technical assessment of it. This professional should compile a report where they will highlight the good and the bad about such characteristics as:
- tech stack,
- code structure,
- code styling,
- code duplication,
They should leave some general overview and recommendations, which the team can take into consideration to improve their performance. While such a measure is primarily aimed at software developers, QAs will also immensely benefit from it. After all, both developers and testers pursue the same purpose — a high-quality code.
Be careful about the tone of this quality review, however. You certainly have to show the report to the team, but make sure that the tone of this report is friendly and constructive. The goal of this review is to encourage the team to change their practice for better, not to discourage them from working with you at all.
#5 Maintain thorough documentation
I have already emphasized the importance of thorough QA documentation is the previous section, but I cannot stress it enough.
All bugs should be documented and reported for the developers not to miss any. Documentation also helps in further stages of the project: if a bug previously discovered and fixed reoccurs, this information will help developers to fix the bug faster this time because they will know what to do. Also, documentation helps testers — it proves that they perform their duties diligently.
However, what is more important than just documentation is high-quality documentation. If testers report the bugs in an unclear manner, the developers and project managers will spend more time clarifying the bug than fixing it. To achieve clarity, testers have to make use of media files: screenshots, video grabs, audio files, or whatever illustrates the bug best. After all, a picture is worth a thousand words. It might be easier for a developer to have a single glance at the image and see the bug rather than read through long incomprehensible sentences of description.
Also, testers should include information about the environment where a bug occurs. They should indicate which OS, browser, device, or software version was used when the bug occurred. The more details are provided about the software and the hardware, the easier it will be for developers to reproduce the bug.
#6 Maintain a healthy atmosphere in the team
This section is the most obvious and the most difficult to explain among other Quality Assurance best practices. It is an axiom that the harmonious and healthy atmosphere is critical to project success.
Imagine that you build a house, but you are in a conflict with your team. One person hardly can build a house on their own — there are too many heavy things to carry, to lift, and to hold. The same goes for software development — it is very rare that the entire project is designed, built, tested, and managed by a single person. So, if your developers cannot find a common language with testers, the Quality Assurance process is doomed.
To maintain a healthy atmosphere in the team, carry out regular teambuilding activities. You can meet with the team face-to-face to have lunch together or to play an escape room. Taking into account the quarantine limitations, you can conduct team buildings online — you can have lunch together via Zoom or play online games.
Another important measure that will help you to maintain balance in the team is retrospectives. Conduct retrospectives weekly or monthly and let the team speak out their concerns. By voicing the issues when they only appear, you prevent them from turning into serious and unsolvable problems.
Finally, do not forget to remind your team members that they are loved, valued, and appreciated. If somebody deserves public praise — go for it. If somebody wants to have an honest talk with you — listen to them. If you make a mistake — apologize. By being honest, friendly, and empathetic, you set the example of how the people in your team should behave.
#7 Do not underestimate errors
Small errors are still errors. While it is easier to brush off insignificant bugs, experienced developers do not do so. They know that once an insignificant bug can someday turn into a serious quality issue. You do not know the exact reasons behind a bug until you investigate them. In fact, the bug can be a simple symptom of a more serious problem.
There are two solutions here: either to fix the bug as soon as possible or to put it aside to the technical debt. The first case is possible if you employ agile and Time & Material approach to project development. The second case is OK for the projects of any kind, but remember that the larger the technical debt is, the more difficult it will be to get rid of.
#8 Keep learning
The QA field is developing continuously along with the entire IT industry. The knowledge obtained 5 years ago may be of almost no use today because technologies, approaches, methodologies evolve and change.
You have to be learning continuously, and the easiest and most effective way to do so is to take online courses. Check out Udemy, Codeacademy, Coursera, edX, or QA, find a course that is both appealing and affordable and embark on this learning journey.
Besides training courses, subscribe to informative blogs and social media profiles of people you consider to be leaders in the industry. For example, have you heard about Jason Barile or Steve Carlson? Follow them or other QA professionals you admire on LinkedIn, Twitter, Reddit, or whatever other social / professional network you prefer. A few more Twitter accounts I recommend you to follow are Mindful QA, TestCorpTraining, QA Minds Europe, and Software Testing Weekly.
Finally, you should keep an eye on QA job offers. You can see how the job requirements evolve, how the most popular technologies change, and what is the overall situation on the job market.
This section looks a lot like it has been written exclusively for software testers, not for people who hire them. However, it is also important for business owners to hold on to these QA environment best practices to keep their finger on the industry pulse. They must know what other companies expect from QA specialists and what they offer them and be able to tell apart experts from amateurs.
You cannot do without Quality Assurance. So, if you have to do it, do it well. It is not obligatory that you reach level 5 of the QA process maturity, but you should at least strive for a higher level.
These eight software testing best practices will help you implement an effective and efficient QA process:
- Develop a clear-cut plan
- Set SMART software Quality Assurance goals
- Employ a multi-directional testing strategy
- Conduct external quality review
- Maintain thorough documentation
- Maintain a healthy atmosphere
- Do not underestimate errors
- Keep learning
If you do not have time to set the QA process on your own, let our team help you with all that!