It turns out that 75% of the time when creating programs is spent not at all on programming. Let’s figure out what the testers are doing.
Probably not a single thing in the world can be done without mistakes, and programs are no exception. Let’s say you wrote code and don’t see any obvious bugs in it. How do you know what will happen in real use: will the program behave as expected of it?
Why testing is so important
Typical software bugs include:
You enter the answer to the question in the field and press Enter. Then the program exits unexpectedly without saving the information. And the same mistake is repeated the next time.
Another case: you are playing, for example, some kind of shooting game. Suddenly, the characters begin to move erratically, twitch convulsively, lose or regrow limbs. And in general they do not behave as they should. For some time the program does not respond to keystrokes, after which it displays “Game over”.
Another example: you go to the personal account of an online store. You click “pay”, and you are thrown to the main page, and even logged out.
There are no programs without errors: anyone can produce unpredictable results in response to the most common actions. The developer, most likely, will not notice these defects in the code, but they can poison the life of the end user. There are mistakes that are small and insignificant, and there are also such that everything stops working.
Before a new version of a computer program, website or mobile application gets to the user, it must go through the hands of test engineers. They look for places in the code where the program does not work as intended. To find as many bugs as possible, testers simulate different situations that may arise when using the application.
You will learn how to test websites, mobile applications and other software. You will learn how the work of IT companies is arranged, and you will be able to understand how you want to develop in the profession. Get the job guaranteed. Juniors are already in great demand in the market, and our course will allow you to reach the middle-level.
What types of testing are there
Users are unpredictable. They can do not only what is provided for by the program, but also what is categorically not provided for by it. The tester must check all possible and impossible scenarios of their behavior and make sure that the program continues to work.
In general, testing has a philosophy that is based on the fact that any program, by definition, has errors and it is impossible to find them all. And if for some reason you did not find an error, it means that you were just looking badly. A successful test for a tester is the one in which a bug was found. And if everything worked fine, then the test was unsuccessful and does not fulfill its task.
Errors occur not only during coding, but also during system design, and even at the stage of developing technical specifications. Therefore, the code is tested not only at the very end of the work, but at different stages.
There are several types of testing:
Static, without starting the program, and dynamic – with starting. Static is usually done at the very beginning of work: engineers check project documentation and specifications, and proofread already written code. Then, dynamic testing is carried out: the program is launched and how it behaves during operation is checked, the response time and how much it loads the processor and memory are determined.
Functional testing is used to test how the program solves the problems the client needs. In the case of non-functional, they examine the performance of the system, its reliability and security, work with the environment – the operating system and hardware.
Another way is testing according to the principle of “black” and “white” box. In the first case, the tester does not look at the code and only works with the programming interface. It checks the performance of the program, whether all the necessary functions are implemented, looks for errors in its interface and behavior. In the second, the engineer has access to the code. It checks the structure and logic of the entire program or its individual components. Often the programmer himself does this.
Manual and automatic testing. In the first case, the work of the code is checked manually, without using software. In the second, specially written automated tests are used that are constantly updated.
What is tested at different stages of development
There are several levels of testing. They are held at different times:
Unit testing is done at the very beginning, when those pieces of code are ready that can be tested separately: objects, classes, functions, program modules. Tests are written separately for each function or method. At this stage, they check the operability of a part of the code, whether there is any regression – whether errors appeared after changing the code where everything worked fine before. This is the lowest level of testing, often done by those who write the code.
Integration testing is followed by unit testing. Here they test the connections between the tested elements and how the program interacts with the operating system and hardware.
System testing shows whether the finished system meets the functional and non-functional requirements.
Acceptance testing takes place when a customer accepts applications from developers. Its goal is to make sure the product meets the client’s requirements. Based on this, the buyer decides whether the program is ready or needs to be improved.
Depending on the development stage, testers have different goals:
When you write code, you need to find as many glitches and defects as possible to fix them.
During acceptance testing, it is necessary to show the customer that the system works without errors.
At the stage of program maintenance, testing helps to fix bugs that appeared in the code after the change.