If you ask our project managers what is the worst ever idea to reduce the costs of app development, their answer would probably be:
“Fire the testers!”
During product development, issues emerge when the de facto results deviate from the expected ones. Usually they are called bugs or errors and someone has to deal with them–find, describe, and avoid them. Usually, people think that testers examine the projects and this is true. However, this is only part of the testers’ job as testing starts far earlier.
In this article, we would like to discuss the general problems that testers solve every day and show why they are equally as important as the other team members.

1. Can developers avoid bugs?
It is impossible to avoid bugs during the development phase. However, it is possible to minimize or even eliminate their influence on the end product when the team organizes the testing process in the proper way.

2. Why do projects need tests?
Testing is a series of steps aimed at making a software product meet all requirements (and achieve this goal within optimal time limits), and, thus, it simultaneously examines all possible user scenarios. Results are the basis of any successful testing, i.e. your software will function exactly as expected and any features the team implemented during the development phase will work correctly.

3. When does testing start?
Any project starts from an idea, then the team formulates the scope of the project. Next, the technical experts, together with the customer, create the design of the project and write documentation, and only after that the development process starts. It is a mistake to believe that testing begins only when the coding is finished. Testing begins when the technical documentation writing starts as testers are full members of the technical expert team. When the business analysts describe all functions to the full extent, testers help them check whether the chosen solution allows them to scale the project, grants use of various platforms, and, most importantly, does not contain contradictions.

4. What should customers always remember?
Testing is the activity which saves time and money on the next lifecycle phases, namely on development and support.
Technically, testing depends on the chosen development approach (Agile, Scrum, and V-model). The test cycle includes the following steps:

  • study and analyze the requirements,
  • plan tests,
  • and do tests.

During the analysis and planning phases, our testing team prepares the testing documentation called TestPlan which regulates the work of the quality assurance (QA) department.
During the execution phase, we must keep in mind the type of product we are dealing with: this can be a mobile application, a Web project, or a desktop application.

5. How does the QA team do tests?
Here we would like to show the main aspects of our testing team’s work on mobile apps.

When performing mobile testing, testers need to pay attention to:

  • the resources available on mobile devices (memory, screen size, support of all needed functions, 3G, Bluetooth, etc.)
  • the software versions the device supports
  • the app’s behavior and its response to external interruptions (calls, problems with Internet access)
  • the possibility of updates for older versions

Our testers need to take into account all of the above-mentioned characteristics when doing basic tests. The basic tests required for any mobile project include:

  • functional testing (requirements)
  • non-functional testing (installation tests, stress testing, usability testing, configuration testing, etc.)
  • testing associated with changes (regression testing)
  • security tests

In the case of mobile apps, functional testing means a performance audit: the API, third party services (geolocation, bad or no Internet connection performance, and interaction with external devices via Wi-Fi and Bluetooth). When performing non-functional tests, we check to see if the app works accurately on different devices and platforms, supports wireless networks, and still ensures safe data transmission, plain UI, and compatibility with other applications.
To guarantee seamless functioning, it is crucial to be aware of any changes in the third party components (libraries, API, etc.). We permanently monitor all changes to ensure the proper functioning, and, when needed, adapt the product by making the necessary modifications. Therefore, even after publishing in the app store, the work on the project cannot be suspended. The scope and framework for such testing are defined and specified in the project filling.

6. Why is it so expensive?
The time spent on testing accounts for 30-40 % of total development time. The same rates are also determined by the CMM-model. A reduction in testing time worsens the product quality and impacts the project’s due date. An increase in testing time makes it possible to implement and execute extra tests, like auto-tests, which lead to economy by regression testing. Thus, stress testing examines how many competitive requests the system can process (hence, the customer will be aware of the number of end users who can use the system and still have an acceptable response time). Usability testing helps improve the system from the end user’s point of view.

Therefore, testing requires expertise and knowledge of the necessary software, technologies, and resources. The earlier the team starts testing, the less time and resources will be spent on development. Besides, testing is needed even after the whole project is fully accomplished. Time and resources, testing strategy, start and end points, risk evaluation, as well as possible solutions, should be clearly defined by the TestPlan during the test planning stage. When the testing process is designed properly, the product will be ready within the specified time limits. Otherwise, it will be the end users who will test your product.