A Test Engineer’s Guide to Testing Modern Applications

According to Deloitte, several tech trends continue to persist throughout 2019. These trends include artificial intelligence (AI), Internet of Things (IoT), and a data-centric approach to an application’s architecture. Consequently, the number of apps designed according to the data-centric approach and geared with AI and IoT capabilities is on the rise. This may pose a challenge for test engineers since such applications require a special approach to Testing Modern Applications, including specific testing types. In this article, we’ll share best practices accumulated during our QA practice to highlight the peculiarities of testing data-centric, AI, and IoT applications.

Data-centric applications

With a data-centric approach to app design, data is turning into a strategic enterprise resource and a data warehouse is becoming the center of an application’s architecture. Consequently, the ETL (extract, transform, load) process, the data warehouse’s data model, the integrity of data, and business intelligence become subject to thorough testing.

Guide Testing Modern Applications

ETL testing

While testing the ETL process, a test engineer:

  • Validates that the data is transformed according to business requirements.
  • Verifies that all of the expected data from various sources is loaded to the target without losses.
  • Verifies that updates of data values in the source are reflected correctly in the target.
  • Checks if the data is loaded to the target within expected timeframes.

Data warehouse’s data model and data integrity testing

The scope of data warehouse testing includes data mapping validation, data integrity validation, and the validation of transactions’ ACID (atomicity, consistency, isolation, durability) properties.

Data mapping validation. A test engineer verifies a logical data model (how the data is structured and stored in the data warehouse) by validating the data warehouse schema; table, column, and data type mapping.

Data integrity validation. A QA engineer verifies the correctness, completeness, accuracy, and consistency of the data warehouse records.

Transactions’ ACID properties validation. A test engineer verifies that every data warehouse transaction is complete, always results in a valid data warehouse state, and, when committed, cannot be influenced by external factors. Also, a test engineer verifies that when multiple transactions are executed at once, the state of the data warehouse is the same as when the transactions are executed sequentially.

Business Intelligence testing

A test engineer checks the correctness of business logic and the accuracy of data presentation in reports and dashboards. For that, a test engineer validates that OLAP operations (roll-up, drill-down, slicing, dicing, and pivot) are executed correctly, checks the mapping of the fields in a data warehouse to the fields in dashboards and reports, and makes sure that rendering time of reports and dashboards satisfies the specified requirements.

AI applications

How well AI software functions depends on several factors, which include the quality of the source data, the accuracy, and precision of machine learning (ML) models, as well as the integration between an AI application’s back end with user applications. Hence, solutions geared with AI capabilities are tested at several levels:

Validating source data. A QA engineer should verify that the source data is correct and complete, and perform data ingestion and transformation testing to make sure that an AI application handles heterogeneous data from multiple sources correctly.

Validating machine learning algorithms. QA engineers should validate the accuracy of the ML models via black-box testing. During such testing, a test engineer checks an ML model’s output against the requirements specification without diving into a model’s structure (e.g., algorithms based on which a model was trained). 

Validating API integration. A test engineer should perform API testing to validate the integration of ML algorithms into a software product, as well as verify the visualization output against the expected output specified in the requirements.

IoT applications

The complex architecture of IoT applications requires such apps to be tested at the following layers: a layer of smart things, a network layer, a cloud server layer, and a layer of user applications.

Functional testing is to be performed at the layers of smart devices, cloud server, and user applications. A test engineer validates that the components of the IoT architecture function in compliance with the requirements specification.

Compatibility testing is usually performed at the network and user application layers. A test engineer validates that IoT software functions correctly on multiple endpoint IoT devices, embedded software versions, communication protocols, mobile devices, and OSs.

Interoperability testing. A test engineer validates that multiple components of the IoT solution’s architecture inter-operate according to the requirements, without data losses or decreases in the solution’s performance.

Performance testing is carried out for the whole IoT application. A test engineer validates that the response time of the IoT application (including time-bound outputs generated with streaming analytics) is within the specified limits and performs load testing.

Compliance testing should be executed for the whole IoT application. A test engineer needs to verify that an IoT application complies with relevant industry-specific regulations, e.g., HIPAA, PCI.

Usability testing is for the user application layer. A test engineer verifies a user app’s navigation, structure, workflows, and scenarios.

On a final note:

The shift towards data-centricity in the application design and the expanding popularity of modern techs, such as AI and IoT, require test engineers to adapt testing activities to the needs of modern applications. To do of testing modern applications, the test engineers should gain a solid understanding of the data warehousing concepts, ETL mapping rules, machine learning concepts, embedded software, and more.


⇓ Subscribe Us ⇓


If you are not regular reader of this website then highly recommends you to Sign up for our free email newsletter!! Sign up just providing your email address below:


 

Check email in your inbox for confirmation to get latest updates Software Testing for free.


  Happy Testing!!!
 

Leave a Comment

Share This Post