Stage 5. Quality Assurance
What is Quality Assurance in app development?
Let’s introduce a few facts about Quality Assurance (or simply QA) in app development that will help you to understand what it is and what role does it have.
a) Is a way of preventing mistakes in developed applications and avoiding problems when delivering them to users
b) Is a part of the app development process focused on providing confidence that quality requirements will be fulfilled (1 ISO 9000:2005, Clause 3.2.11)
c) Is responsible for client/users’ training, setting standards, reviewing quality and selecting tools (quoted from Max Summers).
- Training. If your app is dedicated to a specific group of users who need an introduction to the product, QA team should ensure training for them.
- Setting standards. QA can suggest the app environment, recommend from which system version your app should be supported, choose devices on which the app will be tested, or advising on security issues e.g. in banking apps.
- Reviewing quality – with manual tests and writing & executing automated tests
- Selecting tools – e.g. test automation framework (like Espresso, XCTest, Appium), or test management tool
d) Includes two principles: “Fit for purpose” – the product should be suitable for the intended purpose, and “Right first time” – mistakes should be eliminated (Stebbing, L. Quality Assurance: The Route to Efficiency and Competitiveness)
e) Is integrated into every stage of the development. It is a part of the Continuous Integration process. An interesting article about Linear vs. Integrated QA you can read here.
✘ Quality Assurance is not a stage in a linear process of app development that happens when the app code is finished.
✔ QA is integrated into every stage of development and it is working continuously.
A good practice used in the application development process, at the same time supporting Quality Assurance is Continous Integration. ThoughtWorks explains accurately that CI requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by automated tests, allowing teams to detect bugs early. By integrating regularly, the development team can detect errors quickly and locate them easier.
How does Quality Assurance in app development look in practice?
How QA looks in practice? Below you can see all stages we have in our company:
- Coding – developer writes the code, QA specialist writes automated tests.
- Pull Request – developer tells others about a new part of the code.
- Execution of automated tests – automatic tests which check whether new changes didn’t break any already implemented functionalities. It consists of:
- Static Code Analysis – a code is checked by a special program (Lint, Sonar), which verify if the code meets the good standards set by our development team.
- Executing Unit Tests – automated tests which validate if each unit of the software performs as designed.
- Executing UI Integration Tests – automated tests that check if the app components are correctly integrated.
- Virtual Device Testing – we use it to find crashes in Android apps. It simulates a real app user.
- Code Review – every piece of code written by one developer is approved at least by 1 another dev.
- Deployment – the latest alpha/beta release is delivered to the client and testers.
- Manual Tests – manual testing of the app based on specified use cases. Made by QA specialists.
- The feature is done
The process is repeated many times during the development.
8 good practices of Quality Assurance that app owners should know
Below you can find a list of good practices that we recommend you to consider while working with an outsourced development team.
#1 Your partner ensures Quality Assurance
First, make sure that your partner has Quality Assurance engineers who will take care of the highest product quality at every development stage.
#2 Your project has a dedicated Quality Assurance specialist
The development team should have a dedicated specialist who will ensure QA for your project holistically. Why? He will have a map of the whole project in his mind. For work hygiene, pair-testing is fine, but frequent changes of testers carry the risk of mess and chaos in the project.
#3 You are not wasting your time on being a tester
Don’t waste your time on being a tester of your own app. Of course, you should test the app to give feedback and information on how to improve what has been implemented, but you are not the one who should pick up basic errors and differences between what is in the requirements and what you got.
#4 Developers are not testers
Your partner says that they don’t have a Quality Assurance specialist, but it is OK because a developer will test the app? Well, not exactly.
A developer who wrote the code shouldn’t check his own work. It is harder for an author to see their own mistakes. What is more, developers can consider something not as a mistake because they understand what they have written. An extra pair of eyes is always helpful.
#5 Quality Assurance is ensured from the very beginning
Don’t put QA off until later. From the very beginning of the development, the team should take care of Quality Assurance. Even small errors in the early stages of development can cause more complex complications in the future that solution will take much more time and effort.
The sooner you start with QA, the fewer troubles you will have in the future.
#6 You have insight into the tests output
Which features have been tested so far? What bugs have been found? As an app owner, you should have insight into testing progress.
There are many tools that can be used to easily track and follow the status of tests, e.g. Testlink, QA touch, TestRail or Jira. If you see that your partner use this kind of software and gives you access to the tests output, it is a good sign of his professional approach to QA. Below you can see an example of TestRail screen
#7 The tests should be run on different types of devices
Testing your app on different devices is necessary because your product should work perfectly not only on one type of smartphone.
A great solution is Smartphone Test Farm (STF) – ask if your partner use that or another kind of smartphone farm for testing. STF is an app that allows developers to:
- control and manage real-time testing on many devices remotely from their workplaces
- run automated tests using dedicated software like Bitrise that enables testing apps on many devices at once.
#9 Developers practice code review
Code review is not necessary for developing a crash-free app but it is a good practice if you want your app to have code written in a clear and transparent way, so in the future other developers can easily improve the app and continue working on the code.
Quality Assurance is a crucial part of mobile & web app development. Don’t underestimate its role if you want your app to succeed. QA is essential for ensuring flawless app releases and delightful user experience from a first try.