How Software Testing is Evolving in 2020?
Anandhu Rajendran
QA Lead/Senior QA Engineer . Manual, Automation, Performance, API and Mobile testing
'The only thing constant is -The change'. Software industry is also changing due to the emergence of new technologies and methodologies. And software testing transforms respectively, as it should match technological and methodological advances to ensure the high quality of software. In this post, I've highlighted IT trends that catalyze changes in the QA domain and summarized the emerging software testing trends.
This article will take you through the changes in current test process organization, improving the coverage of tested application types, creating demand for new QA engineers’ skills, and thus shaping up a new face of quality assurance process.
Digital transformation
Business processes are depending very high on latest technology and as a result, it is undergoing digital transformation in a fast rate. When GPS technology was introduced, at primary stage, it severed the purpose to locate a thing. But nowadays, these technology is used in Uber, online shopping and much more applications. This is just one among many examples to prove how technology is transforming the digital world. This digital transformation made organizations to come up with enhanced requirements. Hence, the importance of software quality assurance increases as well. Studies shows that there is an increase of 35% investment of IT budgets spent on QA since 2015 and this will increase in 2020 as well.
As a result, Quality assurance faces new challenges in terms of delivering stable and flexible products, which is new a challenge for QA managers than before. They continue to search for new, non-trivial ways of setting QA processes in a way that enables meeting both requirements.
CI/CD and transition to the cloud
Most organizations have already established CI/CD in their devops activities, which presuppose delivering small chunks of software in fast and frequent iterations. This IT trend makes QA teams respond in two ways. First, test engineers need to start testing activities as early in the software delivery cycle as possible. Second, test teams are required to build and maintain result-oriented collaboration with dev teams, who are also involved in the QA process. The development teams create and run unit tests, while test teams validate software at the API and UI layers.
Another major factor is the increase in cloud transitions. An increasing number of businesses move data storage and processing to the cloud. It is estimated that 76% of all applications are cloud-based today.
Quality assurance for cloud-based applications demands much more specialized skills for QA and requires QA teams to better understand these apps’ implications on organizations’ business processes.
How software testing is evolving due to this changes?
Software testing trends can be grouped into two categories based on the aspect of the testing process they affect:
- Software testing trends regarding the approaches to testing.
- Software testing trends regarding the object of testing.
Evolution in the approaches to testing
Increasing levels of test automation
With reasonable test automation, test teams can achieve required test coverage while meeting strict iteration deadlines. Test automation requires consolidated effort from the development, testing and operations teams as it means automating not only functional test cases but also pre- and post-testing activities, for example, test environment setup and test data provisioning. It is important to note that an increased share of automation doesn’t eliminate manual testing. Such testing types as exploratory and usability testing continue to be performed manually.
Performance engineering
In 2020, performance engineering is expected to gradually replace legacy performance testing techniques. The focus of performance engineering is on analyzing how to prevent and forecast software performance issues (I am planning to write more on this in my next article). A performance engineer should be involved from the initial software development stages to ensure that software’s design and architecture won’t cause performance defects in the future. This requires sufficient code, database schema, and queuing theory understanding from an engineer side.
Use of Artificial Intelligence (AI) in testing
AI is suppose to be under the lime light for the past decade. In software quality assurance, it may be possible to apply AI for:
- Log analytics, identifying unique test cases that have to be executed manually and not become automated.
- Test suite optimization, determining redundant test cases.
- Traceability, extracting keywords from the Requirements Traceability Matrix (RTM) to ensure sufficient requirements coverage with test cases.
- Predictive analytics, forecasting key parameters and specifics of end users’ behavior and identifying application areas to focus on based on the forecasts.
- Defect analytics, identifying those application areas, defects in which are bound to the highest business risk.
Although there is enthusiasm for AI-driven testing and the potential of using AI in quality assurance is promising, it is still an emerging trend. The knowledge, skills and expertise required are still lacking in many organizations.
Trends regarding the object of testing
SaaS testing
Basic testing types (functional, performance, compatibility, security and other types of testing) are executed with regard to the SaaS peculiarities, such as frequent software updates, multi-tenancy, and opportunities to tune a unified SaaS solution to multiple tenants’ specific business logic. For instance, during functional testing, a test engineer should not only verify the solution’s default functionally against the requirements specification but also test configuration use cases.
Testing of data-centric applications
Thorough data warehouse and business intelligence testing should ensure sleek functioning of data-centric applications and ETL (extract, transform, load) processes. Performing these types of testing requires QA engineers to acquire new knowledge, for instance, understanding of data warehousing concepts, architectures and processes, knowledge of SQL query scripts and ETL mapping documents.
IoT application testing
IoT testing is performed at multiple layers of an IoT architecture, such as a layer of smart things, a network layer, a cloud server layer, and a layer of user applications. In an average IoT testing process, the following types of testing are implemented:
- Functional testing is performed at the layers of smart devices, cloud server and user apps to validate that the components of an IoT solution function according to the requirements specification.
- Compatibility testing is performed at the network and user application layers to verify that IoT software functions according to the requirements on relevant endpoint devices and is compatible with different embedded software versions and communication protocols.
- Usability testing is performed for user applications and includes the verification of apps’ navigation, structure, workflows, and content accessibility.
- Security testing is performed at all layers of an IoT architecture to validate data privacy controls and user authentication processes.
- Interoperability testing is performed to validate that multiple components of an IoT architecture interoperate according to the requirements specification without data losses and reductions in an IoT solution’s performance.
- Performance testing involves checking an IoT solution’s reliability and response time under normal, extreme and continuous load.
- Compliance testing is executed for the whole IoT solution to verify that it complies with relevant industry-specific regulations, for instance, HIPAA, PCI DSS.
To sum it up
The emergence and further spread of new technologies and methodologies to software development set a range of requirements for software quality control. The testing process adapts to the new reality in two ways: there emerge new approaches to the software testing process organization and the objects of testing become more diverse. To stay up-to-date, QA professionals should be ready to learn new software testing technologies and acquire new skills and competencies.