Hey everyone! Our dev team is working on some pretty major updates to the quality control process here, so for a dev dive I thought it would be good to talk about the unique challenges of QCing code and software.
A good code base is broken down into functions - small sections of code that take in, alter, and return data. These functions are then pieced together to create the software as a whole. Breaking down a code base into these component functions has a lot of benefits - it means that same code can be re-used in a lot of places, which saves disk space and means that if you need to update the function, you only have to do it in one place. But it presents a challenge as well - if you reuse the same code in many different places, it means that function is going to have all kinds of data passed into it, and it has to all be handled correctly.
Some inputs are expected and obvious, but some aren't. Developers call unexpected inputs "corner cases." A good example of this that we see all the time is a user entering in irrelevant data in a form. For instance, if a field expects a date but the user enters "never gonna give you up," the function that handles that input needs to know what to do if it doesn't get passed a valid date. The first step of good quality control is making sure that the corner cases have been thought of and properly accounted for. Functions can then be tested using these corner cases with unit tests - tests designed to just run those individual functions with as many normal and corner cases as possible.
Once good unit tests are set up, QC specialists can set up tests on the actual website to make sure that every element on a page is doing what it should. Corner cases are important to consider here as well - no matter how clear a designer or developer thinks they've made a page, users will inevitably find ways to use the software that the developer would never have even considered. Larger development teams will have developers or even entire teams dedicated to quality control, and one of the most important parts of their jobs is just to come up with all of the possible ways that someone could use (or break) a piece of software.
At Punchmark, we're hard at work expanding out our unit testing and automating all of the quality control that we possibly can. Finally, I'll leave you with one of my favorite jokes about quality control.