The importance of application testing
10. 07. 2023
Back again with a new post👋. This time I went a little deeper into what software testing means and what types of testing exist. Already during my internship as a student, I encountered automatic testing of web applications.
This time I present the advantages and disadvantages of automatic testing and when it pays to introduce automatic testing in the development itself, and what we need to pay attention to when introducing automatic testing.
If you are a developer, then you have already heard that it is necessary to test the application several times before it goes into production. The application can be tested in two different ways, most often it is done manually, but there is also the option of automatic testing (yes, the computer itself can check that everything is working as expected).
Manual testing is the execution of functional tests by “hands”, when we click on the application ourselves, and in this way, we find errors and bugs. Application testing is not only functional testing, if all functions work correctly, but application testing also includes a huge number of other types of testing.
Other types of tests:
- Cross-browser Testing – testing the application if it is working in different browsers
- Load and stress testing – testing the website's behavior in the event of an increased number of requests or users
- UI testing (GUI Testing) – testing the user experience and appearance of the application/website under various conditions
- A/B Testing – testing different versions of the application, which works better for the user
- Compatibility Testing – compatibility testing with different device configurations or servers
- Security Testing – testing the security of the application for any security vulnerabilities
- Smoke Testing – testing of the operation of the main functions in accordance with expectations
- Acceptance and Compliance Testing – testing if the application complies with the requirements and expectations of the project
As we can see, we can find that testing does not only include testing if all functions work correctly but also a lot of other types of tests.
Manual testing can be very, very time-consuming if we have a complex application with a lot of features. This is why automated testing exists.
Automated testing is testing that takes place without the intervention of a tester. It allows us to run application tests automatically.
Automated testing is most often used in E2E (end-to-end) tests. These are tests that illustrate user behavior in the real world. There are also Unit tests, which are used to test individual functions of the application.
Automated testing usually works together with integration in CI/CD (Continuous Integration/Continuous Delivery).
The power of automated testing is most apparent in larger applications/projects. For this reason, I do not recommend initiating automated testing in smaller projects. In smaller projects, you prefer to use manual testing.
Automated testing brings enormous advantages over manual testing.
- Speed – Automated testing is faster than manual testing
- More frequent testing – automated tests can be run more frequently than manual tests (for example, after each push to Git).
- Higher product quality – frequent testing reduces the chances of errors and bugs in the project and quick detection of these
- Reuse of scripts – all automated test code can be used in multiple places
Although automated testing has many advantages over manual software testing, it also has its disadvantages.
- UI testing – automated testing is not suitable for UI testing
- High initial costs – the initial costs of investing in automated testing can be very high (you need to buy software licenses, find someone who knows how to write tests…)
- Constant correction – automatic tests need to be changed every time the program structure changes
- Generates false positives and false negatives – many times a test can fail and generate a false result
Automated testing has its pros and cons, it's just a matter of when to decide to initiate automated tests into our development cycle.
The biggest factor in integrating automated tests is the size of the application/project. If we have a smaller project with few functions, manual testing is still the most useful, but if we have several applications or one larger application with many functions, it would be wise to start thinking about automatic testing. Automated testing is easiest to implement on new projects when all members of the development team write tests for features as they are developed.
The next question is how much money we are willing to invest in automated testing. There is no right answer here because we need to know what we want to test and in what way. There are free (open source) and paid solutions. It is also necessary to consider the costs of maintaining the tests when the product will change.
The number of people in the team is also important, a larger team may decide that someone should be responsible for writing tests and the rest should focus on product development.
If we have determined that it would be worthwhile for us to start integrating automated tests, we must start with good planning, because only with a good plan will we achieve higher product quality.
- Deciding what we want to test – in the first step, we ask ourselves what we want to test, whether these are the main critical functions or something else
- Choosing the appropriate tool for testing – in the next step, we ask ourselves which tool would be the most optimal and best for us, here we also determine the work methodologies
- Planning the infrastructure – in the third step, we plan what kind of infrastructure we want to run the tests on, this includes planning the integration in CI/CD and the use of automation tools.
- Planning and writing tests – in the fourth step, we start planning the writing of tests for our project. It is essential to test the written tests several times if they work correctly in different situations.
- Analysis – in the last fifth step, we must analyze the results of automatic tests and decide about the next steps (update some test scripts or write new tests)
If we follow all these steps and everything else mentioned in the previous paragraphs, we can greatly increase the quality of the product/application.
In a future article, however, I will try to present some frameworks for automated application testing.
As we saw in the course of the article, testing automation can achieve higher product quality and free the tester to focus on other tests. Integrating automated testing requires a lot of planning to make the integration as successful as possible, but it pays off in the long run.
I hope the post helped you, I will be happy about any comments and also likes. See you soon.