Test analysis is an essential and crucial activity in the testing process. A well-organized test analysis provides an adequate level of confidence in the overall effectiveness of the testing and contributes to the delivery of high-quality software.
Test analysis can be conducted at different levels – at the Product (system) level and the Feature level (a specific functionality of the system). The difference lies in the scope and focus of the analysis.
In this article, we will learn about product test analysis, which is a foundation for further analysis of specific features, and feature test analysis we will learn in the next article.
There are three main activities of test analysis at the Product level:
The first activity is decomposition, which means breaking down the system into smaller parts. Besides that it helps manage the complexity of software development, it also benefits the testing process in the following ways:
Decomposition can be made at different levels depending on the context and the specific needs of the project. There are decomposition levels like epics, use cases, web pages/screens, modules, objects, etc. These decomposition levels are not mutually exclusive, and they can complement each other. For example, a system may be decomposed into several use cases, and each use case may involve multiple web pages.
A common approach is a decomposition at the object level. Objects represent the entities or concepts in the system that have distinct parameters (properties) and actions (behaviors).
For test analysis at the Product level, we will analyze objects and their actions.
Let’s look at the steps of the product decomposition using the Slack application as an example.
Here are some objects that we can define:
Can all functionalities in the system be broken down into objects? No, and as was mentioned above, we can combine different decomposition levels. We will use Epics in addition to Objects to describe other functionalities. An epic represents a substantial feature or a collection of related features.
The next step is defining actions that can be carried out on the object or by the object itself.
There can be different ways to perform the same action in the system, which should be noted.
Not all features are equally valuable and important for users. Having a list of prioritized functionalities allows us to:
A more advanced approach is to prioritize each action of an object as well.
Most of the features in the system often have relationships with other features. And, the next important step is dependency analysis, which involves identifying the relationships between defined objects/epics, understanding how they interact with each other.
Dependency analysis helps to:
Dependency analysis is often documented as a matrix. The matrix consists of rows and columns, where each row and column represents an object (or other item that was used for decomposition). The cells in the matrix indicate the dependency between them.
So, what we need to do, is review our list of objects/epics and think about how they interact with each other, looking for any dependencies such as:
Here is an example of the dependency analysis matrix.
This is a one-directional matrix that uses only half of the matrix, where green cells highlight the relationships between items. Additional columns or notes can be used to document the specifics of each dependency.
A more advanced approach is a two-directional matrix that analyzes both sides of the relationships, showing which items depend on others and which items cause others to depend.
The items at the top in the columns depend on the items at the left in the rows, and accordingly, the items in the rows affect the items in the columns. For example, we can see that the Messages object depends on Users, Workspaces, and Channels, and affects History and Search.
This type of matrix provides a more comprehensive view with detailed analysis. The choice between one-directional and two-directional matrices depends on the level of detail required for the project and recommended for safety-critical software.
Let’s review the algorithm of test analysis at the Product level:
All these activities can be performed in the following subsequence:
1. Gather information based on:
2. Visualize the information
3. Review
4. Keep it up to date