Software Testing is the review and evaluation of software regarding their quality and compliance with the previously specified requirements. The goal is to identify and fix errors at an early stage. Software testing is not only an important part of quality assurance, but also an integral part of the software development process.
The quality of software development is also determined by the company’s philosophy. Good quality of the software developed must be important to the developing company – a key premise for high-quality software development. Good code and bug fixes take time – but testing is more than a cost factor and a necessary evil. It is also an investment that is extremely useful, as defective, non-functioning software is significantly more expensive and upsets users.
In addition to the corporate philosophy, the awareness of quality in the development team is an important prerequisite. The developers must be aware how important high-quality software is and what effects errors may have for the company – particularly in business-critical applications. The first step of quality assurance starts with the programming, including a good concept and design of the software. Through the appropriate approach and high-quality coding future problems and subsequent errors can be easily prevented. Bug fixing should not be a quick stopgap, but a clean and smart solution. Even if it takes a bit longer sometimes – quick fixes can quickly occur elsewhere in inappropriate places.
Quality assurance is not the last link in the development process. It is one step in the ongoing process of agile software development. Testing takes place in each iteration before the development components are implemented. Accordingly, software testing needs to be integrated as a regular and ongoing element in the everyday development process.
Prior to the start of development, the requirements and quality criteria of the software to be developed must be defined. The reason for this is that developers as well as stakeholders need to know what is to be developed; in addition, this approach enables unification of the various ideas regarding requirements and quality. According to ISO 9126, quality characteristics of software are divided into six criteria: functionality, reliability, usability, efficiency, maintainability and portability. All these requirements and quality criteria must be checked by the tester. The results should be communicated at an early stage through good documentation. Hence, occurring errors can be corrected in time.
The testing should be assigned to a dedicated team member. Firstly, there means there is a clear assignment of this task; and secondly, it is assured that testing is done professionally and focused and not done “in passing”. Testing is more than just clicking through software, it cannot be replaced by cheap labor. Strategies, standards and guidelines must be adhered to. Test automation is absolutely obligatory. All relevant tests must be integrated in the process right from the start and executed continuously. The required methodological testing expertise and experience can be provided by dedicated professionals only.
Automated software testing is standard nowadays. Approximately 80 percent of all tests should be automated. Automated tests are especially useful for regular testing with many repetitions or tests that are difficult to execute manually, such as load tests.
Automated tests are divided into:
However, not everything can be tested by automated tests. For example, it is not possible to test software concerning its usability (e.g. accessibility) with automated tests. Therefore, manual testing should always be an integral part of quality assurance.
Communication is a very important part of quality management. Errors in the software can only be addressed, reconstructed and corrected by good documentation. In addition to good communication in the team, good communication with the customer is important too. For example, in case of new specifications: If these are not communicated in time, it can lead to major delays and additional expenses in the project. Feedback should be a regular part of quality assurance, so that both the development team and the customer always know the current status of the project.
All project participants should be aware of the benefits of testing and high quality standards. For example, what would be the consequences and costs if customers leave an application (such as an online shop) due to poor usability? Such a case can easily lead to big revenue losses. A good reason to invest in high-quality software. Discovering “defects” and errors of a product is an opportunity to identify and resolve problems, not only for the developers but for the customers as well. Thus, concepts of the customer such as prebuilt designs can be improved. If these concepts fail in usability tests (particularly on mobile devices), the tester can address this problem at an early stage. Designs can be adjusted and a loss of revenues avoided.
A lack of awareness concerning testing and high quality requirements often leads to a lack of required resources. In the worst case, professionals are replaced by unqualified staff or interns, or testing is canceled altogether.
Continuous improvement is a core issue in agile software development. The same also applies to software testing. New testing tools and methods to assure software quality are constantly appearing. If the requirements of a project change, well-proven processes suddenly no longer match the requirements and can’t be used any longer. Therefore, testers should continuously learn about new tools and methods and scrutinize existing processes regularly. For this purpose it’s useful to share know-how within teams and testers of a company, as well as user groups and conferences, to discuss trends, strategies, problems and their solutions. This not only helps to adapt tests and processes, but also to optimize in the best possible way.
Testing tools are a fundamental part of software testing, particularly in automated tests. In addition to well-structured work methods and processes, using good testing tools is necessary to make the work of a tester efficient.
We created alist of good testing tools that we are currently using in our day-to-day business. The list is a selection of recommended tools, though many more testing tools are available. We hope the list is helpful. Happy testing!