Software must be delivered with high quality to make sure that every iteration with customers and/or users provides valuable feedback. This feedback should be with respect to the features that truly matter for the customer, instead of chasing bugs and defects.
These fast and valuable iterations are fundamental for a successful software product, especially if we are talking about a startup trying to validate its value proposition.
What is Software Quality Assurance (SQA)?
Software Quality Assurance (SQA) is often seen as a way of preventing bugs or defects in manufactured products. It is basically the process of verifying whether a product meets the required specifications and customer expectations. When it comes to software, it is important to underline that Quality Assurance (QA) is not only about functional testing. Software quality is more than that.
Living in the Agile era, QA fits as a glove in Agile Methodology. Why? That’s easy. It is a process-driven approach that facilitates and defines goals regarding product design, development, and production. Plus, its primary goal is to track and solve deficiencies prior to product release.
Even though QA is mainly connected to software development, I believe it is fundamental to all the company departments. That means that Software QA derives from a broader concept, ruled by fundamental principles.
The Quality Assurance (QA) Principles
- The ability to prevent defects rather than finding defects,
- The ability to Identify risks & challenges (functional and nonfunctional),
- The ability to ensure that processes are supporting/favorable to achieve quality both at code & application level,
- The ability to keep continuous improvement in the process/techniques,
- The ability to work towards reducing development cycle time,
- The ability to evaluate and monitor development process quality,
- The ability to maintain high standards in test selection and execution.
Quality Assurance vs Quality Control
Quality Assurance (QA) and Quality Control (QC), both being aspects of quality management, are sometimes confused with each other. While some QA and QC activities are interrelated, the two are defined differently.
Quality Assurance is process oriented and focuses on defect prevention, with a set of activities for ensuring quality in the processes by which products are developed. On the other hand, Quality Control is product oriented and focuses on defect identification, with a set of activities for ensuring the quality of products.
In the end, quality assurance makes sure you’re doing things the right way; while quality control makes sure you’re getting the expected results. Being performed pre-production stage is the key QA principle that differentiates it from QC: QC is performed only after the customers and/or users experience it and complain about defects.
And what is Software QA, exactly?
In the case of developing software, QA ensures there is a set of principle and activities for ensuring quality in SW engineering processes. People might think that QA is nothing more than the ability to find defects, but they couldn't be more wrong. Again, QA is the ability to prevent defects.
Software Quality Assurance (SQA) should include several activities and should be present in all the known software development processes, such as:
The following image is the perfect example of what I previously described:
If you’re using an Agile Methodology, here’s an excellent example of how you should apply QA. As we saw, Quality Assurance is involved in all the development processes. Plus, if you want to know how a QA manager should behave, there’s an excellent article about QA in Agile.
Quality Assurance at Codavel
Now, if you’re thinking “Right, but I only have a few developers and I can’t afford to have someone fully dedicated to this” - you’re right! With scarce resources, you must be creative and extremely efficient in everything you do, and QA is not an exception.
At Codavel, quality is a key principle, that’s why we went after a solution that implements QA throughout the entire development process. We brought every single team member to the QA processes, chasing the ultimate goal of having every QA process automated.
During the development process, we always try to keep in mind that we need to apply some quality guidelines for each developed module. These guidelines help every team member to keep focused, not only on the implementation of their tasks but in implementing them with quality. This is our current “QA” methodology:
- During planning/analysis phase, make sure that:
- there are realistic timelines
- there is no miscommunication or misinterpretation of requirements
- the whole team is involved in the development process
- During development/build phase, make sure that:
- everyone implements unit tests
- everyone writes documentation, as detailed as possible
- the code is revised by the team leader
- During the delivery phase, validate if SW meets end-user expectations
- Throughout all the process, document all:
- sprint reviews
- sprint plannings
- stand up daily meetings
With this strategy, it is clear that the development process has been improving every sprint and our software quality has also improved with it. Furthermore, this strategy helps anticipate user requirements and ensures that the team can implement changes quickly, with minimal disruption to the product and customers.
When you empower every single team member with respect to quality principles, you are making QA part of your company culture. Couple that with as much automation as possible, and when success knocks on your door and you need to grow fast, QA will definitely not be a problem.