What is Unique About Quality Assurance for Software?
Imagine a car being put together on an assembly line. The frame is inspected before assembling the electronics, interior, and body panels. After doing each of these tasks, there is no reason to inspect the frame again; it has already passed inspection. Software differs from this in the sense that dependencies are not as concrete and components are subject to change. It's ridiculous to imagine an assembly line where, after the entire vehicle is assembled, the frame must undergo a large adjustment. Doing this could potentially impact everything that depends on the frame and may even require undoing a large amount of the assembly work. In software, this type of change is just a fact of life. Unlike a vehicle, which can be replaced every few years, software is continuously maintained. Well-known platforms like Facebook and Instagram don't rewrite everything when requirements change; they make adjustments. Making changes to software is practically guaranteed to break something, and that is ok. Seeing where and how things go wrong is an important part of the design process. The most worrisome aspect of continual development and maintenance is introducing bugs that go unnoticed. Finding bugs introduced by updates can be a headache for developers and users alike, but automated testing can lighten the load on developers and help maintain a consistent experience for users.