Olga Matronina – Rockwolf – Android, IOS, WP mobile application development company https://rockwolf-apps.com mobile apps development service provider Thu, 24 Dec 2015 12:25:52 +0000 en-US hourly 1 https://wordpress.org/?v=6.5.5 Why do we need software testing? https://rockwolf-apps.com/why-do-we-need-software-testing/ Thu, 17 Dec 2015 13:35:01 +0000 https://rockwolf-apps.com/?p=36037

Software test engineer is more than profession. It is a proactive way of life and desire to make this life better for all, with feasible and effective ways. Goals of software tester are closest to the business objectives and strategic goals of the company in respect of software product and at the same time deep inside the company as a researcher. So its main qualities are the energy, knowledge and flexibility. In some way, testers are researchers from the world of software development. Therefore, easily recognizable symbol in the hands of the test engineer is a magnifying glass (lens), to observe the bugs.

Software testing is important and essential part of creating software products. It allows to find and fix defects, thereby reducing the risks and increasing product quality. Also, software testing checks parts of the user interface where the user could make a mistake or misunderstand the output of the program. This is so important because software is something that a lot of industries rely on for serious situations. For example, the frontline workers and the emergency services – look at these ems software solutions for an example. If something were to go wrong here so many things could go wrong, so the software has be to faultless.

Mobile testing is very difficult process with dozens of different screen resolutions, hardware differences, multiple versions of operating systems, different types of internet connections, sudden disconnections. Testing on multiple devices, browsers, operating systems can help ensure your product works for as many of your users as possible. As the mobile development quite impetuous process and testing of mobile applications should cover a large range of mobile devices, need to apply different testing techniques for providing the best test coverage. This will reduce the time required for testing, and provide good results of product quality.

Cost of an error in the release of the mobile application is high. Apps get on Google Play for a few hours, on AppStore for several weeks. It’s unknown how long the users will be updating. Defects in software products cause a violent negative reaction. Users submit low ratings and feedbacks. Then new users, seeing this, do not install the application. For avoidance of such result it is worth to implement testing on the project. It’s better to start the testing as early as possible, at the stage of definition and analysis of requirements in the life cycle of software development.

Requirements testing actually reduce the costs of development even without considering the issues of improving the product quality. Due to unclear or misunderstanding of requirements, developers often do a lot of extra work rewriting the same things several times, adjusting the units to each other, etc.

A software tester checks the requirements for completeness and compatibility. Usually, a project has initial requirements that contain inconsistent information. They need to be resolved before starting of development. Also, many project has incomplete requirements: not enough layouts of secondary screens, entry field limits, displaying of errors, etc. Non-obvious invisible things on layouts: animation, pictures and content screens caching, the app behavior in non-standard situations.

The cheapest bugs are bugs that were found in the product requirements before the implementation and even better – before the development of application architecture.

Software testing is creative and intelligent work. Creating correct and effective tests is quite difficult task. Basic principles of testing helps to understand how important this process is for developing and improving of software quality:

1. Testing shows the defects

Testing can show the defects in program, but does not prove their absence. However, it is important to create test cases that will find as many as possible bugs. So, with proper test coverage, the testing reduces possibility of defects in the software. Even if defects were not found in the testing process, it can’t be stated that they not exist.

2. Exhaustive testing is impossible

It is impossible to carry out exhaustive testing that would cover all combinations of user input and system states, except for very primitive cases. Instead, it’s better to use a risk analysis and prioritization, that allows to allocate the efforts of software quality assurance more efficiently.

3. The defects accumulation

Different modules of the system may contain a different number of defects – density of defect accumulation may vary in different elements of the program. Testing efforts should be distributed in proportion to the actual density of defects. Basically, most of the critical defects are found in a limited number of modules. This is a manifestation of Pareto’s Low: 80% of problems are concentrated in 20% of modules.

4. Pesticide Paradox

Running the same test cases all the time, you will face with the fact, that they are revealing fewer new defects. As the system evolves, old test cases will no longer work because many of the previously found defects were fixed. To overcome this paradox one needs to review and adjust the test suites to keep them relevant and thus allow to reveal as much defects as possible.

5. Misconception about absence of defects

The fact that testing has not found the new defects, does not mean that product is ready for release. Finding and fixing of defects won’t make sense t if the system would be inconvenient to use, and will not meet the expectations and needs of the users.

So, it’s better to adopt testing in the development process as early as possible to avoid negative feedback from users and be confident that the development has carried all the functional requirements to the product.

]]>