1. Quality Assurance is not Quality Insurance
Looking back over the years, we can see that projects tend to use test efforts as Quality Insurance, rather than a part of the Quality Assurance efforts. Having well-designed test cases exercising relevant functionality from different perspectives are, of course, fundamental. If done right, it is probably the best way to determine if deliverables are designed to specification. This cannot, however, be viewed as an insurance policy put on the development process against any errors introduced along the way.
To assure ourselves that the level of quality is adequate can be hard. Since quality is subjective at its foundation, we tend to rely on objectively quantifiable representations of quality. E.g. test coverage, defect clustering, etc. These methods are often supported by processes and procedures known to be effective when verifying requirement adherence or shedding light on functional anomalies. This, effectively, is testing.
Quality Assurance is quite the broader concept, though. Testing will, as previously mentioned, quantify requirement adherence. Or to be more correct; the personal, or in some cases popular, interpretation of requirements. There can, however, still be discrepancies between these requirements and the customer vision. Quality Assurance, therefore, includes activities designed to verify customer vision adherence as well. This is where it is crucial to understand that it is the responsibility of the Quality Assurance engineer to discern all measurable aspects of that vision. This will minimize downstream deviations. Including, but not limited to, functional requirements, non-functional requirements, requirement testability, and collective understanding. In short, the Quality Assurance engineer acts as a bridge between the customer and the development team. This to make sure that the vision does not get lost when customer needs are translated into development tasks.
Quality Assurance is focused on assisting in the delivery of a qualitative product. In a modern agile software development environment, however, there is a greater need for a more fundamental integration of quality-improving tactics.
In the next article in this series, we will look into one such quality-improving tactic: Quality Architecture.