Quality assurance plays an important role in day-to-day project work. It is used to test newly implemented functionality and ensure compliance with requirements and specifications.
Quality Assurance in the Software Development Process
Software quality assurance is a critical step in the software development process. It does not matter which development model (V-model, Scrum, etc.) is used. The testing process must take place at least before each delivery to ensure the quality of the software. The exact procedure depends on the chosen development model.
Methodically, quality assurance pursues compliance with predefined requirements for the software system. This includes the identification of potential defect states of the software, the detection of possible user errors, and the analysis of possible error effects on the system. A comprehensive approach to quality assurance takes into account technical aspects, customer requirements, standards, and usability.
Typically, quality assurance follows the CTFL testing process specified by the ISTQB (International Software Testing Qualification Board) as a guideline for software projects. The testing process is divided into the following steps (keyword-based work results for each step - not exhaustive):
- Test Planning
Define strategy and record it in the test plan
- Test Monitoring/Control
Comparison of actual and target status (test reports)
- Test analysis
Define test conditions
- Test Design
Test cases are designed
- Test execution
Creation of test execution plan and test scripts
- Test execution
Execution according to test execution plan and documentation
- Test closure
Preparation of final test report
In iterative development processes such as Scrum, it is common practice to accompany quality assurance in the early phases of the software development cycle. This allows errors and defects to be identified and fixed at an early stage. In the past, only manual testing as part of test execution was common practice. With DevOps processes and shorter release cycles, manual testing has become more time-consuming.
In addition to the time factor, a tester's work becomes more repetitive, especially in large and complex software projects, as they have to retest a large part of the existing functionality after making changes. This is where test automation helps to increase the efficiency of the testing process and reduce the tester's workload.
What does test automation mean?
Test automation uses software tools and scripts to streamline the quality assurance process. The goal is to automate test execution step-by-step to perform repeatable test cases efficiently. This mainly concerns high-priority software functionalities that are used continuously. With test automation, the entire test process speeds up while maintaining quality through repeatability.
Test automation can be applied to various types of tests, like load tests and functional tests, but it's especially useful for regression tests in iterative development models.
Regression tests thoroughly examine unchanged software areas to ensure no errors have been introduced in functioning areas after changes. Manually, this would be very time-consuming. However, once test scripts are created, regression tests can be run anytime with the push of a button. The scripts always perform the same actions and verify the expected results.
After execution, the tester receives an automatically generated test report. Test automation greatly simplifies the steps of test execution and test monitoring. Only the initial creation of the test scripts requires more time, as the test architecture has to be created at the source code level at the beginning.
Automated tests promise faster test execution and early error identification during software development. In the medium term, test automation ensures that the test process takes up a significantly smaller proportion of the software development cycle while retaining its importance.
What are the advantages of test automation?
The test automation approach offers significant advantages over traditional manual testing. It improves repeatability, scalability, time savings, and coverage of application functionality. It also reduces costs and integrates seamlessly into CI/CD pipelines.
![Quality Engineering EN](https://blog.usu.com/hs-fs/hubfs/Quality%20Engineering%20EN.png?width=2578&height=566&name=Quality%20Engineering%20EN.png)
Repeatability
- After the initial development effort of test scripts, they no longer need significant changes.
- Test scripts can be executed automatically at any time and deliver consistent results.
Coverage of Application Functionality
- All possible types of application functionality can be represented in test scripts.
- Complex execution steps and functionalities can be checked and validated more easily.
Embedding in CI/CD Pipeline
- The test automation process should be automated in a CI/CD environment.
- Pipeline executions before changes enable developers to provide quick feedback without tester waiting time.
Scalability
- Automated test scripts are easily scalable to different system environments and configurations.
- Decentralized execution of regression tests on different systems significantly reduces execution time.
Time Saving
- Time savings through rapid error identification for new functions.
- Particularly effective in CI/CD environments.
- Developers benefit from autonomous development.
Cost Reduction
- After initial effort, fewer resources are needed for testing.
- Testers can focus on other aspects and provide quick feedback to developers.
- Accelerated software releases for project managers.
Practical Use Case of Test Automation for a Specialist Application (UI Test Automation)
In a recent USU project, we implemented fully integrated test automation for a specialist application in an agile context. To meet the highest quality standards, the application's graphical user interface (GUI) was tested by Quality Assurance.
![](https://blog.usu.com/hs-fs/hubfs/grafik-png-Feb-26-2024-01-13-29-2153-PM.png?width=603&height=216&name=grafik-png-Feb-26-2024-01-13-29-2153-PM.png)
Figure: Testing process in an agile context
In the first step, the testers developed the test concept and structured the test architecture for automation. They used the Selenium test tool for UI testing. Next, they clarified all possible test conditions in the test analysis, including browser variants and performance conditions. During the test design phase, they stored test cases in the test management software Xray (alternative tools: TestRail, Zephyr) based on the client's requirements. The execution logic is explained step-by-step in the tool.
The test architecture mirrors the web application using the Page Object Model. Frequently recurring processes and basic functionalities (e.g., login process) are developed generically. This ensures that testers write minimal code when creating new test scripts.
One of the customer's requirements was to test the login process on three different browsers. Since the application has four different user roles, this resulted in 12 test case executions with different variables, even for a simple test case like this. A manual test would be repetitive and time-consuming, but with test automation, only a small configuration change was needed.
Once the CI/CD pipeline for continuous deployment was created, the full potential of test automation could be exploited. Core functionalities were grouped into test suites and executed automatically every night as a regression test. The automatically generated test report was used to determine if new functionality had affected existing features.
By integrating the CI/CD pipeline with the test management software, all project team members could seamlessly track the test status. Test automation ran fully in the background.
USU enabled smooth test automation with outstanding quality in this project.
Does test automation replace manual testing?
No, not completely. Test automation primarily replaces repetitive manual testing tasks and reduces the time testers spend on each project.
Testers can now focus on test activities that automation cannot perform, such as software usability, design, and exploratory testing. Exploratory testing is a dynamic method where testers approach the system creatively, uncovering unforeseen errors and weaknesses that only manual testing can reveal.
At the beginning of the project, the test automation tester develops the test architecture and scripts. As the project progresses, they take on a more administrative role, analyzing test reports and updating test scripts.
Conclusion
The topic of quality assurance can often lead to frustration in advanced software projects. Avoidable errors may appear later in seemingly functioning implementations.
Testers spend a lot of time repeatedly testing functions they have already tested many times. Test automation can significantly improve this.
Integrating test automation into the development process at an early stage ensures a smooth testing process and quick feedback for developers. This enables project managers to achieve faster releases.
Sources
- ISTQB Glossary
- Selenium – Page object models
- Atlassian – So unterstützt automatisiertes Testen DevOps
- Linz, Andreas Spillner. Tilo: Basiswissen Softwaretest. Heidelberg: dpunkt, 2012.
- C. Klammer and R. Ramler, "A Journey from Manual Testing to Automated Test Generation in an Industry Project," 2017 IEEE International Conference on Software Quality, Reliability and Security Companion (QRS-C), Prague, Czech Republic, 2017, pp. 591-592, doi: 10.1109/QRS-C.2017.108