Software QA, or quality assurance, is an important part of the software development lifecycle. In practice, it involves putting procedures in place to ensure software meets quality criteria.
It's no different at VibePay. For example, the product team is currently integrating XtremePush into our app. This involves writing the code to 'talk' and 'listen' to XtremePush. But it is sometimes forgotten that it also involves a lot of work to make sure that these updates change the way the app works as expected. To ensure this, we document all new functionality as 'scenarios' and describe the expected change in behaviour for each scenario. Every scenario is then recreated to ensure that the resulting behaviour is correct. If it isn't, a 'bug' is raised, which the developers then fix. After that, it is tested again...
To make this less abstract, let's look at an example. Our app sends a user a notification when someone else has requested a payment. After the initial integration of XtremePush, QA revealed that the user sometimes receives two notifications, which was incorrect. Because this scenario was clearly documented, along with the expectation to receive a single notification, we were able to raise a bug, which the developers could fix.
In addition to testing new functionality, it is just as important to make sure there are no unanticipated changes in other parts of the app. This is done through regression testing, where all previously documented scenarios (beyond the new functionality) are recreated to confirm that their resulting behaviour stays unchanged. If the behaviour is different, that is also raised as a 'bug' and fixed.
There is a lot more to QA, but hopefully you've been convinced that it's an essential (and non-trivial) part of building software!