How Do You Ensure Quality in the Software You Create_ header

How Do You Ensure Quality in the Software You Create?

So you’ve built a web app, or software product, and you’re ready to launch. But have you made sure it’s high-quality - and that that quality has maintainability? With such a competitive market, it’s important to make sure anything you release is the best it can be. Read on to find out exactly how important quality management is, and how to ensure your software development process has space for it.

Why does software quality matter?

According to AppsFlyer, 1 in every 2 apps installed are uninstalled within 30 days. That means you have a really short time period to impress your users before they abandon your app and try something else. So you need to be delivering functionality and quality - right from the start.

You could rely on the development team to test as they go along, but that only takes time away from their work. That’s not to say they aren’t involved - after all, code quality will impact the product. Instead, it’s time to add a dedicated QA (quality assurance) team to the software engineering process.

What does quality assurance involve?

Quality assurance - sometimes referred to as quality control - is defined by ISO 9000 as “"part of quality management focused on providing confidence that quality requirements will be fulfilled".

At its simplest, it’s a phase of development that checks for conformance with the software requirements. Checking usability, functionality, and performance is important too.

Depending on the structure of your development team, QA might happen at the very end of the process. However, in teams that use the agile methodology, it happens in every cycle, with the results of test cases feeding back into the software project for the next iteration.

So now that you know why it’s important, and what it involves, you’ll want to know the best ways to build it into your plans.

Expert tips for software quality assurance (SQA)

We decided to speak to tech experts about how they go about delivering quality, so that we could provide you with the best possible insights into producing high-quality software. Here’s what they said:

1) Create a quality culture

This is all about fostering the correct environment that will produce quality software. It’s not just about the final source code - it’s about the culture and the team that build it. As outlined in Leading Quality: How Great Leaders Deliver High-Quality Software and Accelerate Growth, creating a quality culture is:

  1. Understanding the individuals you need to influence: realising who the decision-makers are in the company, and who will be able to influence QA
  2. Creating empathy to increase alignment between teams: making sure all teams -from DevOps, to sales and marketing - are aligned on a shared view of quality
  3. Supporting your quality narrative with evidence: backing up your views with evidence of QA practices improving key quality metrics
  4. Cultivating internal champions: ensuring you have advocates of your vision within the company

Screenshot 2020-02-05 at 14.17.46

These four steps will help you align your team, increase cross-functional awareness of quality and put QA at the forefront of the minds of the SLT. According to Dominic Holt, creating this quality culture is all about hiring the right people to advocate quality:

"In order to ensure quality in software development, it starts with hiring the right people who take an engineering approach to writing software so that anyone can understand how it works rather than just the person who wrote it. Once you have the right people in place, you need to install the right processes and quality checks in order to set appropriate expectations for the team”

- Dominic Holt, CTO, Valerian Technology

2) Put the user first

“Quality is essentially about meeting user expectations. Consistently. Reliably. Confidently.”

- Karin Dames, Editor of Teal Times

We know that the end user rules in software development. No matter how great your software system, if your UX isn’t up to scratch, your customers will simply go elsewhere. The average app lost about $33,000 a month in 2019 due to uninstalls, so a dissatisfied user truly can directly impact your ROI.

But, sometimes, in the busy periods of release cycles and new updates, the user can get lost among the noise. You might get so tied up checking non-functional requirements that you forget about the importance of the user interface and user requirements. Or maybe you’ve been so caught up in the details, you’ve lost track of the big picture and forgotten that portability and privacy need to be factored in.

That’s why putting the user first, always, is a fantastic way to ensure you are delivering quality. According to Yoni Svechinsky:

“UX is one of the most important things at Monadd, to maintain a high level of quality we follow three rules:

  1. Does this make sense? - The user journey needs to be clear for the user, at every point everything should work exactly as expected.
  2. Staging first - Nothing goes straight to the live environment. Any change, big or small, goes first through the staging environment where it gets tested.
  3. Everybody tests - We have a checklist that everyone must go through for tests. No pushing to production before every person on the team greenlit the release."

- Yoni Svechinsky, Co-Founder & CTO, Monadd

If you’re not entirely sure where to focus your efforts, the ISO/IEC 25010:2011 quality model may be a good starting point. It’s broken into five key characteristics which apply to all software products and systems, and it gives you an idea of what to start measuring, testing, and analyzing.

3) Test early and often

Even if you don’t use the agile methodology, you shouldn’t leave testing until the last minute. Regular testing and a structured QA strategy is a surefire way to ensure software quality. Multiple testing cycles combined with automation will catch the bugs that thinner testing strategies may have missed.

According to Naveen Kumar:

“Quality of a software relies on testing often and involving testers very early in the design and development life cycle. Deploy a risk management practice to identify, assess, prioritize, measure, and mitigate. Once the product goes live, listen to customer feedback for a consistent improvement”.

- Naveen Kumar, Performance Test Engineer, QAInsights.com

By testing early, and often, you can catch bugs that could be more costly down the line. A study by Capers Jones found that 85% of software bugs are introduced in the design and build stages of development, sometimes even before a line of code is written. So, by testing early you can work to fix these bugs before they make their way into release, ensuring software quality and saving you time in the long run.

Of course, testing doesn’t end when the product ships, either. Any configuration management plans you have in place need to make space for quality assurance, too.

4) Don’t just have one software testing method in your toolkit

According to Uzma Yasin, Head of Products and New Initiatives at Kualitatem, "correct understanding and scoping of testing requirements and identification of the testing types required” are both of vital importance to ensuring quality in the software you create.

By breaking down each part of your product you want testing (think features, rather than lines of code), and deciding which testing method would be appropriate for that particular area, you can ensure you don’t waste precious time and resources on the wrong type of testing. This will deliver better results and better quality.

Find out more about different testing types, and testing according to product maturity here.

5) Slow down the process

If your dev and QA teams work under intense pressure to release by tight deadlines, the likelihood of technical debt will increase, and the quality of your products may decrease as a result.

Technical debt is often inevitable, unfortunately, but slowing down the release process is a great way to reduce it. Take your time to put best practices in place, and reduce the likelihood of costly fixes in the future. According to Emad Georgy:

“One of the first things developers need to do to improve the quality of their software is to eliminate as much technical debt from the code as possible as early as possible in the process. Every architecture decision, technology stack decision, and even code review should have an eye for durability - does this progress our architecture forward? Will this scale for years to come, for 10x and onwards of our growth? Teams that succeed have metrics, accountability mechanisms and processes in place that reveal the impact and risk to the long-term durability of these daily decisions.”

- Emad Georgy, CTO of Georgy Technology Leadership

Evan Volgas similarly agreed with Emad’s sentiments:

“Too often, engineering leaders allow their teams to get sucked into an endless race of adding more features, without leaving any time to clean up the ones that have been added. Tech debt builds. People lose focus. They get frustrated and distrustful of existing codebases, preferring to write everything from scratch. If you want to ensure high-quality software, you have to give your engineers time to clean up after features are added. They also need time to orient their thinking around where to focus next.”

- Evan Volgas, Data Productivity Engineer & founder of the Swarm Advisory Group

It’s important to leave time to build testability into the product, not just functionality. A high degree of testability means a high degree of maintainability, and this is key for any product you want to succeed.

Deliver quality

“As a perfectionist, the way that I ensure that the best product is put out is by asking myself if I would be proud to have it in my portfolio and on display. If I feel I would not be proud of it, then it does not align with my standards. We have built our organisation around others who feel and think the same.”

- Joe Flanagan, Fitness App Developer at GetSongbpm

These steps will help you on your journey to delivering quality in the software you create.

  1. Create a quality culture, with standardization of a software quality model
  2. Put the end user first
  3. Test early and often in the software development life cycle (SDLC)
  4. Slow down the process

Remember, entirely bug-free software isn’t likely, and the perfect app is not possible. But, there are precautions you can take to safeguard the quality of your product and ensure a great customer experience as a result.

Book a call with one of our growth experts today for a free consultation to find out  how you can ensure quality in every software release.