Software Testing
Testing is still the Achilles heel in most software development and implementation projects. When building software it is very common to make mistakes, and the way to solve these mistakes is software testing. Therefore, testing is not optional, but a fundamental part of any project.
What is Software Testing?
Software system testing is a process to evaluate the properties of the system to determine whether the actual results match the expected results. It consists of carrying out a series of steps before and after the construction of the software to identify errors, gaps or inaccuracies in order to obtain a better product and to ensure higher quality.
In order to carry out these tests, we must start with the premise that our software has errors, because this way we will have a greater probability of finding them. The main objective will not be to prove that it works, but to add value to what we are testing in increasing quality and reliability of the system under test; in order to achieve this, we must detect the faults in our software and eliminate them.
What is a Software Tester?
Software testers, also known as testers, are responsible for planning and carrying out tests on systems to identify the risk of errors and to detect them. In other words, they evaluate the overall performance of the software and suggest how to improve it.
Testers typically test all types of software or individual programs for applications or products. They may be involved in the development of a new program, test new versions of software or perform routine product testing.
Qualities required of software testers include the following: strong TIC skills, ability to work under pressure, logical thinking, planning skills, good communication and report writing skills, and teamwork.
Methodology
In order to carry out testing, it is necessary to verify the behaviour of the program. According to Ilene Burnstein, software testing has three main processes: the development of test cases, the execution of these cases and the analysis of the results.
This testing process, and its methodology, must always be adapted to the evolution of project methodologies: Waterfall or Agile.
- Development of test cases. Test cases are produced using specific testing techniques and strategies to look for bugs in a system.
- Execution of test cases. Once the test cases that we have determined to be relevant have been developed, and the software or application is installed in a test environment, it is time for the tester to execute them.
- Analysis of the results. When analysing the results, we are able to identify the different errors in our application and are able to prepare the necessary reports to solve these problems.
Importance of Software Testing
Nowadays a multitude of systems containing software are part of our daily lives. Businesses depend on them to a large extent, whether it be for the corporation’s finance system or for the machinery it uses. A software failure can result in millions of dollars in economic or even personal losses. Hence the importance of software testing, to anticipate errors, correct them and avoid the risks these can cause.
A clear example of how an error of this type can affect us is the case of Therac 25, a radiotherapy machine produced by Atomic Energy of Canada Limited (AECL). This device was responsible for causing great harm to many people and resulting in the death of three due to massive radiation overdose. These overdoses were the result of poor software design. If appropriate software system testing had been carried out, this tragedy could have been avoided.
Levels of Testing
Software testing falls into three categories: functional, non-functional and structural.
- Functional testing. These tests are based on what the system does. Among the tests to be performed are: unit tests, integration tests, functional tests, UAT or user acceptance, localisation, globalisation and interoperability.
- Non-functional or performance testing. This type of testing takes into account the external behaviour of the software; how it works. Black box design techniques are often used. Among the characteristics to be considered in these tests are: action, performance, load, volume, effort, usability, security or compatibility.
- Structural testing. They allow measuring the totality of the tests by means of structure- type evaluation. They apply white box design techniques and focus on the procedural details of the software, their design is linked to the source code. Their main objective is to test the execution flows within each unit. Among the tests to be performed are regression and maintenance tests.
Types of Software System Testing
In terms of test types, there are more than 150, and new tests are being added all the time. It is important to clarify that not all projects need to apply all these tests, it will depend on the nature and scope of the project.
We want to highlight some software system tests.from what is a very long list:
- Active testing. This consists of entering test data and analysing the results of the execution.
- Accessibility testing. Determines the usability of the product for people with disabilities (deaf, blind, mentally handicapped, etc…).
- Load testing. Measurement of system behaviour to increase system load by number of requests or users.
- Volume testing. Measures the system’s ability to process a large amount of data.
- Security testing. Various tests for unauthorised access or denial of service attacks.
- Compatibility testing. The operation of the system is measured against different operating systems, platforms, etc.
- Conformance testing. Checks that an implementation conforms to the specifications on which it is based.
Programming without software testing can be very risky because we expose ourselves to a high number of economic and personal losses. Software system testing is in charge of improving the product to offer higher quality and satisfaction to the final consumer.

