Viktor matSkevich

What is the test?
Place of testing in software product development

Introduction
Testing and debugging programs are the most time-consuming phase in programming.

Software testing includes the assessment of the quality of software product operability and identification of existing defects. This process implies a simulation of user actions.
"The assessment of product operability itself is produced according to the results obtained during the test."
Viktor Matskevich
Android developer
Brief description of the terminology:

Test case — atomic element of test-plan which consist of following components:

  • the environment description where the case is performing (can be imposed next higher level, in test-plan);
  • perform steps;
  • the expected result of performing;
  • test suite — the list of cases, combined with the common factor (the whole product, specific feature etc.);
  • test plan — the list of test suites, selected for test;
  • test run — pass ("Run") of test-plan
Let's talk about testing process. You can look below at the image which clearly shows the testing process.
The term "smoke test" is from engineering environment:

"With the commissioning of the new equipment ("hardware"), it was thought that the test was successful, if smoke is not emitting from the plant".

In the software sphere, the smoke testing is consider as a short test cycle performed in order to confirm that after the code assembly (new or amended) the settable application starts and performs basic functions.

"Regression testing" - is a type of testing which is direct to test changes made in the application or environment (repair of the defect, the merging of code, migration to a different operating system, database, web server or application server) to confirm the fact that the pre-existing functionality works like before (see also sanitary testing or verification of consistency/serviceability).

Testing can be divided into two of the most obvious kind:
— manual
— automatic

The difference of these species consist of autotest execution process where the most part of the actions and often entirely, is making with special tools, human intervention is practically excluded from the process of passing the test. And vice versa for manual testing.

With manual testing all seems like clear. Let's talk about automatic testing. In companies with a serious approach to application development is necessary using testing with special tools.

Autotest bring a number of advantages:

  • Repeatability — all written tests will always be carried out uniformly, ie, "human factor" is exclude. The tester will not pass the test for negligence and do not mess up in the results.
  • Rapid implementation — automated scripts do not need to consult the instructions and documentation, it saves much run time.
  • Lower support costs — when automated scripts is already written, for their support and analysis of results is required, usually the less time than carrying out the same test volume manually.
  • Reports — Automatically sending and saving reports about the test results.
  • Performing without intervention — during the test, the tester engineer can do other useful things, or tests may be performed during off-hours (this method is preferred, since the load on the local network at night is reduced).

It should be noted by developers that writing tests before the development significantly increases the efficiency of development. Because we can immediately check the new written fragment.

Summing up we can say that auto-tests greatly increase the speed and quality of application development. Their presence makes it possible to check the old defects and reproduce the old tests, and it is a huge advantage in quality assessment.

In turn, with the improving the quality of the product, and reducing the number of defects in the application, the rating of the company is significantly increased as well as customer satisfaction. With the improvement of the quality you can easily increase the price of the rendering services.
Thanks for reading!