We live in a society where our dependency on technology is rapidly increasing each day. IoT should make our life easier, at least that’s the idea, and honestly, when most of the people are busy with their careers, having an app that will save you some time to be with your family and loved ones doesn’t sound too bad. The same thing happens at work, computer software takes place in our back to back work process, increasing the productivity and work pace, lowering the error margin caused by humans.
We manage our finances through various mobile and web applications and most of our personal and private data is already kept in digital form. So, it’s only reasonable that we want that data safe since empty bank account or stolen identity is not going to make our life easier.
Having the world on your hand nowadays puts a lot of people living miles and miles away from their family. This gives great expansion to social networks where we keep our loved ones close… at least online, sharing images with them, audio and video calls maybe every day or every other day. Again, this is personal data shared by you with a selected group of people and you don’t want that data to end up in unknown hands. In general, I think you get the idea of where we are going.
Software Failure Effects
Now, we say computer software and process automation should make our life easier by reducing human error. But, how sure are we that the software we are using is not doing something wrong? How sure are we that it gives us the right output? Software or technology failures throughout its short history have caused huge financial losses, loss of humans lives and eco-disasters. Take a look at this short video composed of some known software failures and the damage they’ve caused.
Don’t worry, you don’t need to panic. As technology improves the process to produce the software evolves, most of today’s companies have implemented Quality Control in their Software Development Life Cycle (SDLC) reducing the margin of potentially having fatal software error. The conclusion here is that depending on the software type and domain an individual or group of people can feel consequences, the cost can be financial, health-related or eco-disaster.
In any of these cases, the price is too high to pay. As our society continues to develop, we’ll depend even more on various kind of software and hardware, potentially increasing the risks of different software defects and bugs, but also the damage that can be caused.
How a Software is Being Quality Controlled
How does Quality Control (QC) or Quality Assurance (QA) process works, how it is applied? In general, it largely depends on the type of software being developed. Other factors would be business domain and user target group. Every feature or functionality of the software is described in the written document that defines the software requirement and expected behavior. Based on that documentation, the job of the QA engineer would be to define use cases and build test cases on top of them.
I often tend to keep to my simple explanation of the roles that people have while developing a software – if developer’s focus is to build the software, software tester’s job is to break the software. It’s that simple. So, why the business domain is an important factor in Software Testing?
It’s crucial for the QA engineer to understand the business domain in order to fulfill the requirements and what would be the expected behavior of the software being under test. The target group is the group of users that will use the software and this will provide fine details during testing process to satisfy the User Experience (UX) point of view.
Let’s dive a little bit into details and go step by step to all the layers applied to understand Quality Control.
In an agile process for every software requirement (feature), there is a User Story that contains description how this functionality should work, how the input should look like and what is the expected output. Based on this technical documentation, the User Story is then divided into smaller tasks, when the finished feature is fully developed and functional.
Every Task follows the steps from the provided graphical diagram of SDLC. Task Acceptance Criteria has been planned, analyzed and designed. From there it goes into development where Developers do their magic and move the Task to the next step in the circle and that is the Testing step.
Based on the Acceptance Criteria, the tester should provide Test Cases that will cover all expected Use Case scenarios and on top of that all non-expected edge Cases. If the Task passes the Testing process then it is being released for the user (Integrated into the existing software). If the Task fails the tests process, it is returned one step back to Development and Engineering team. This process can be repeated as many times until we are sure what we are releasing is safe and stable to be used by the End Users.
Why QA is Important
To summarize these thoughts, QA process does increase the cost of Software Development but when well defined and executed, decreases the margin of critical software errors (bugs) and increases UX. Eventually, this means saving humans lives, prevent huge financial loss or eco-disaster.
If your software offers business service it is highly recommended to invest in Software Quality Control. Maybe initially will cost you more, but every investment has its return and a satisfied user base is a damn good return on investment. Having an open and competitive market means that various IT companies may provide a software offering same functionalities out there. And, from a business perspective, releasing reliable software is one step away to be better than the competitors.
As for the users, starting personally, knowing that one software is better than the other will make me choose the better option, provide me more confidence when using the software and increase my personal satisfaction and experience. Just don’t be overconfident and always look for more quality.