Six Feet Up is frequently asked about including human-powered Quality Assurance (QA) as a part of our testing process. Some people believe that QA can be done completely with unit tests, but a better product can be delivered when humans are dedicated to QA. A blend of automated tests and human QA is best. Here is a little bit about our process and when each is appropriate: We use an open source tool called Jenkins for all of our automated unit tests. It's one of several popular Continuous Improvement (or CI) tools.
Automatically catch technical issues
Unit tests are run automatically as part of every commit to the codebase. This makes it easier to make sure something in a different part of the application doesn't break based on a change elsewhere. A downside is that our developers have to write these tests and that can cost more than running it through QA if it only needs to be tested a few times.
Catch broken code faster
Bugs can be discovered and squashed faster if a developer can quickly test the function they are working before it is integrated into the system as a whole. This keeps things humming along until the code functions properly and can be passed to QA as part of the entire system.
Test existing code before we make changes
Smoke tests are a great way to make sure that a system functions properly before we start upgrading it. This becomes more important when working on a long-term system or when we have to take over a project from a different development team.
Catch scope alignment
While testing the functionality of the interface, the QA team makes sure that what is developed indeed matches up with the client's specifications.
Check for usability issues
Unit tests can't make sure the application makes sense to humans and is easy to use. It also can't check for user-facing usability issues. Catching these sooner keeps costs in line and delivers a better experience.
Provide a fresh set of eyes
Our QA team provides an outside perspective on how the application functions without being in the weeds like the developers. They experience the application just like end users will without any pre-existing bias.
Provide input on proposals
The QA team reviews proposals and requirements, making sure that every piece of the process is defined. This prevents later scope issues and helps build a product that can easily be tested.
You win when you use a blend of automated testing and QA teams. Humans are inquisitive and have gut instinct that can complement automated testing. Humans are also better problem solvers than unit tests and can see the implications of small changes in the bigger picture of the desired end product. At Six Feet Up we will continue to blend the two in order to deliver the highest quality possible to our clients.