Quality Assurance is one of the most important parts of the custom app development process. After all - as a client, you want your software to not only be beautifully designed, well coded, and liked by your target audience but also bugs and errors free. Yet as we see, even the tech giants struggle to ensure that for their end-users - Apple and iOS 8 updates disaster in 2014 shows that clearly. After the release of the update, Apple had to withdraw it a few hours after its release as it blocked calls and disabled the touch ID function. What a shame!
In this article, I will explain to you the meaning and importance of Quality Assurance in custom app development. So the next time you would wonder, whether you should “test my app by myself” the error in your head would appear. You don’t want to take that risk. Especially when you operate in industries like finances, healthcare or FoodTech where each glitch may cause you to lose your customers or worse - your patients' well-being. Enjoy the read!
Table of Contents:
Who am I?
My name is Tadek, at Railwaymen, I have been struggling with software quality for 2 years. I deal with manual tests, API tests, and automaton tests. I am also interested in issues related to User Experience. I took my first steps in testing during Computing Engineering studies at AGH University of Science and Technology in Cracow. While creating my own applications, I’ve noticed that a lot of time is spent on testing them, and that was the part that I enjoyed the most during the development process.
That's why after graduation from AGH University of Science and Technology I decided to continue my studies in applied computer science, focusing on issues related to project management and IT processes with a focus on testing. My thesis focused on the aspect of the normative approach to software testing. There I learned how important software quality is as a process and therefore - software testing as an activity.
It's often something that is underestimated by a lack of awareness of how important software quality is. It is thanks to that the user gains trust and confidence in the application.
What Quality Assurance in the App Development Means?
What is software quality, in general? As a matter of fact, to explain the concept of Quality Assurance, it is necessary to refer to TQM (Total Quality Management), which is an approach to management by quality. It can be divided into Quality Assurance and Quality Control. In the context of the process, QA and QC are often equated with each other, which is an incorrect concept.
Software Quality Assurance is a process that ensures that the manufactured software meets certain requirements and quality standards. It focuses on the processes used to produce a high-quality product. It represents the part of quality management that is mainly responsible for getting an assurance to the software by checking if the quality requirements in the process are met. This is done by a number of previously set requirements and a set of actions that are taken during this process.
The QC is responsible for software testing activities, i.e. meeting product quality requirements. QC is a subset of QA and includes activities and techniques that allow identifying errors. The scope of work in QC includes inspections, providing reviews, and the process of software testing, and if the requirements expect it, it also includes analyses.
Let us focus on quality testing, i.e. testing techniques carried out during the testing process. Software testing is one of the critical phases in the software life cycle process which allows us to move on to the next lifecycle stages. Testing itself consists of several phases:
- Test analysis
- Test planning
- Preparation of test cases, test data, and test environment
- Testing and error logging
- Completion of testing by approval test conditions
The testing process, which means testing, consists of many techniques. Their selection depends on the stage in the software life cycle, as well as the area of the application. The main software testing techniques can be divided into 3 groups: functional, performance, and security tests.
A software product should correspond with a range of requirements to be considered a high-grade product. The following are some important quality factors:
- Performance — the capacity to perform transactions under a specified workload with the adequate response time
- Extensibility — the ability to add functions to the existing system without damaging it
- Usability — a simple and clear interface
- Security — the ability to protect personal data via authorization and authentication techniques
QA and QC are the two main practices that ensure quality. They have different functions but are closely related and should be inseparable in each project, with QA you will ensure the correct process, and using only QC you will not see the source of the problem and the software development process will not be improved. This is why many companies follow both practices to succeed. We at Railwaymen do not choose between QC and QA but focus on both quality control and high-quality assurance processes.
That's why you should leave the whole testing process to the software house that knows how to run your application through from start to finish!
What happens when you neglect QA?
Often the lack of understanding of the complexity of this process makes many unconscious people give up or limit testing during software development. This is an extremely important process that indirectly saves time and money. However, the time limitations on testing and neglecting it has a direct impact on the final product. There are many examples in history that show how important this process is:
- One of the most famous software disasters was a bug in a radiotherapy device at the National Cancer Institute. The radiotherapy machine miscalculated the radiation dose during therapy so that the dose was even 100 times higher than it should be!
- The error was also committed by Airbus, yet the consequences were even more tragic as the software error contributed to the death. The faulty programming project of the engine control in the A400M airbus was the consequence of the failure.
- The famous error of the giant's software, YAHOO, when in 2016, 500 million credentials from 4 years were revealed through a gap in software.
- In 1996, a system error at a major U.S. bank (First National Bank of Chicago) caused $920 million to be credited to 823 clients accounts.
A few examples listed above remind us how important testing is in software development, regardless of the field and type of software. It also shows how this particular development element has a direct impact on business and customer feedback. The ambiguity and complexity of the systems make it impossible to be sure that the software is error-free in most cases, only a set of tests increases confidence in the product.
Testing efforts should start as early as possible because the cost of repairing the error depends on the phase in the software life cycle. Literally speaking, the sooner we find a bug, the cheaper it will be to fix it.
What are the benefits of Quality Assurance?
1. Quality Assurance Saves Time
According to CrossTalk's analysis of "The Journal of Defense Software Engineering", differences in the time to fix errors or problems depend on the phase of the software development cycle. According to the analysis, it can take up to 150 times longer to repair an error that occurred in production than to repair the same error at the requirements design stage.
Data Source: Infostretch
2. Quality Assurance Saves Money
Based on the same study, the relative cost of error correction was calculated, depending on the phase in the software life cycle.
Data Source: Infostretch
Let's take a more vivid example. Recently we've developed our entirely new Railwaymen website. Before its launch we've dedicated few weeks to thoroughly test it both from the functionality (performance, user flow, integrations with external tools like Hubspot etc) and design compliance side. We knew that if we neglect that, we can literally loose money by scaring away a potential project opportunities. As the result we already see a significant increase of leads and traffic! Fixing everything after release could endanger our reputation as a high quality software provider, which is very hard to earn back.
Railwaymen new website reveal video
3. Testing Increases Confidence in The Product
Thanks to the high quality of the software, confidence in the product being developed increases. Only a sufficient number of tests carried out makes us sure of our software and its compliance with the requirements. Creating software is creating value for users, and it is through poor quality that we do not deliver value.
4. QA Prevents Breakdowns
Performing a test process helps to avoid failures, so the company can save on costly repair and maintenance work for future application development. How costly you may ask? Let’s take the example of NASA - they made mistakes in 1998, which caused the loss of the Mars orbiter. The error was trivial because the orbiter's software sent all the data in metric units, while the engineers processed this data as non-metric in English. This error caused a loss of $125 million!
5. Quality Assurance Increases Safety Level of the Application
By conducting a series of safety and performance tests, it is possible to find places where architecture errors have been made that are not visible to the ordinary user. This prevents data leaks and increases security against hacking attacks.
6. Without QA, Your Reputation is in Danger
Bug-free software helps to build the reputation we expect. Unfortunately, sometimes a small error can spoil it, such as revealing internal user data. HSBC's IT failure resulted in millions of bank customers not having access to online accounts. Repairing the fault took 2 days. Those kinds of mistakes definitely didn’t help HSBC in maintaining an image of a trustworthy and reliable financial institution.
7. Well-done Quality Assurance Enhances User Experience
Creating an optimized interface for applications that satisfy the user while helping to achieve business goals is a very difficult task. Optimized UX requires an innovative approach because it is through good UX that the user gets attached to the application.
8. QA Ensures Long Term Profit
With the examples above, we can see how the quality of the software in your projects has an impact on costs. By investing in QA, we build our business based on quality and trust, which in the long term results in the reinvestment of funds saved through early error detection.
With these examples, you can see how powerful a tool is a quality, which attracts customers and increases sales. Initially, QA is seen as an additional and unnecessary cost, but only a deeper understanding of the matter makes it clear how important it is. Achieving high quality is a very difficult process for both testers and developers, but in the long term, it seems to be an essential part of creating a software product. It is only after time that we see profits from the investment of joining the tester early in the team.
Many customers think that they are able to test the application on their own in the first phases of the software life cycle, but this is a misconception. Because it is most often invisible errors from the user's point of view that cause further costly failures. Undetected defects and failures can lead to serious business losses, so it is very important to have people do it on a daily basis.
QA's have a different view of the application - we look at the product not as a set of API calls, HTML, JS, and CSS, but as the whole final product - this means that even if the code is the best, it does not mean that the whole application works in the way the user expects it to work
As you now know, that Quality Assurance is a VERY important aspect of the app development process, there is another matter you should think of on topic creating an outstanding software. And it's connected with how your app looks and works. Check how the right UX/UI Design Process should look like and what benefits does it bring below!
5 Steps of a Well-Done UX/UI Design Process