Back
Apr 3, 2024

Test Analysis at the Product Level

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 Levels

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.

Product Test Analysis:

  • The goal is to understand the system's overall functionalities, their priorities, and dependencies.
  • It facilitates the development of test plans and test strategies and provides a foundation for regression testing planning.

Feature Test Analysis:

  • The goal is to understand the specific feature's requirements to plan and design targeted tests that verify its correctness and completeness.
  • Here we are using test design techniques and creating deliverables for specific features like test cases, test data, and required test environment configurations.

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.

image-20240330-050650.png

Test Analysis at the Product Level

There are three main activities of test analysis at the Product level:

  • Decomposition – breaking down the system into high-level modules.
  • Prioritization – determining the importance of the system's features based on user needs and business goals.
  • Dependency Analysis – identifying relations between features in the system.

Stage 1: Decomposition

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:

  • Increasing our understanding of the system’s behavior.
  • Facilitating test planning, estimating, and tracking the work progress.
  • Giving the capability to evaluate test coverage.
  • Providing the ability to perform dependency analysis.

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.

EsDeMjpf8AbImeNnTASt0DNrrDC7PbXlDQJJUurxDfBFiUXS5V4tXqI3xIEZugDqtwvpdcB_ThBsMyg8tETNy7r2v9xHxZj3I-7pxaklsgnwPGM-nVYE5acrpwhPodp-hvVLAOKJPj6bKMGH6-zdv5E.png

Let’s look at the steps of the product decomposition using the Slack application as an example.                       

Step 1: Define objects

Here are some objects that we can define:

Y73xAYUB20865XM2ZgPIccB-6SR3OnzBEKTEU1u-U5ulzfr-6ITyPVAFRsjsjbSxM7ONBc5LHBxmuH-EcroK3YXCZbvv8kczGFK6RN6Zv0OqZnmTloufkXYLdu-hx4v8xoZnfjbnuNQM4FM-X81P2wg.png

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.

PZ3Mz3VgL1AGIcYV0DysTmAKrbc1QopRjWjtrpzhLfTDKRlAo_ySe9F8xlxFna2rRVSqe6bq-ng0pW39s00un5KK22cG6xkyoGDyy3JJkOUTDV8VV0umIhp91pLnZLfL8EIg_dQIoouO7nSCu7Eqgh4.png

Step 2: Define actions for each object

The next step is defining actions that can be carried out on the object or by the object itself.

-f4Y6gprbFcNWsK8mzLp9-Y8ssN2-OGHDpN61zNgkhitP7sHelKko5gwUihEjZ4-uDm1oFMxxRfOCdeQKnQTRNmg7RRT97b5s-Bc1fjqHqt16G4Dg2TMWA7_CBlVtSqMjPOVJUgdQIpaKd6u8xyenSk.png

Step 3: Define alternative methods for actions

There can be different ways to perform the same action in the system, which should be noted.

8jiAZJzLcnp2NVByRMSkb2lArfrgoYqXLHJjRvFiYxCWVEhPoF1SArsC3TpEKUbWg90tOtKd3FDqYSXf0Wkdcw0pUryFKvMcA9aAV_ykmy0Wa9kbDgsUIdOPdZseRfzBjx2-8BmJ5qBoKjFoSXFqX68.png

Stage 2: Prioritization

Not all features are equally valuable and important for users. Having a list of prioritized functionalities allows us to:

  • Start testing more important features, so if there is not enough time to test all we can leave less important features out of the testing scope.
  • Find more critical bugs earlier and have enough time to fix them and prevent delays in delivering. 
  • Create different test suites (for example, a smoke testing suite with critical features, and a regression testing suite with critical and major features).

Step 4: Define priorities for each object/epic

nE-OrH6swgjrU6mzAG33IdwKXtCcdo2C6Xii8J11LgrNdd92HktaQSfrbPMMbDThvNw03Tqg-AYHVxFTsXIJQfX5_5II2XeKB6-81Ml88IRpbjOc5t96_T2FPO_1anV2q5glzYQIraAX_cOA3_PUK7I.png

A more advanced approach is to prioritize each action of an object as well.

QUPn1mHhM3XSoQEMIPvjQCNnKPCCIdTI2Pv4A8yvgC8PB6VkEQQUISmoH9bs-cT68JHtYkel080LlVUG7tfJfxPJATuQ78zem3owjvmAu8wOiox_rMwdU1sGh1x05s4mOFZtpgjsmc8nrk17CYwoR_w.png

Stage 3: Dependency Analysis

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:

  • Identify related features in the system and ensure that all necessary scenarios are covered during testing.
  • Identify the potential impact of changes or updates to a specific feature on other related features.
  • Assess the potential impact of existing defects on other dependent features and perform targeted testing to mitigate such risks.

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:

  • Functional dependencies - one object relies on the output or behavior of another.
  • Data dependencies - one object requires specific data from another one.

Step 5: Define dependencies between objects/epics

Here is an example of the dependency analysis matrix.

LET’S BUILD YOUR FIRST APP TOGETHER
get in touch
Related services
Software Testing and QA
Web app development
MVP for Startups
53nASPkVZuKF9pa54Ol1c4G-tZuJ5zcS8dyOwdNiX0DZufnM1lu5YxycJshalJkztC-3l7Mchnaw220RxMie5XDmT2zj141HZn3_MEyBGKSR_CYeFNqVJ4xClf1cVdQgb4QtE8ECedvxqQxi-94Gavk.png

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.

zcvTdpDi4twKTbm4hLl6n2k8CONIqqat8-ug8gYKnmIo3E94_X0voXvfyH6qoIa7KnEYXxV0zMwu8YSkAwF-TEyP8aKOQb2Kxgjf8KVhX6foT0tdbvH4XRciFv0W-ZcJTUTX4L5b9fBiknAFhsLlse4.png

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:

image-20240330-065712.png

All these activities can be performed in the following subsequence:

1. Gather information based on: 

  • Product documentation (requirements, user stories, user manuals, etc.).
  • Product itself (exploratory testing).
  • Communication with analysts, developers, stakeholders, etc.

2. Visualize the information

  • Different types can be used, such as tables, mind maps, diagrams, etc.

3. Review

  • Review the outputs with the team and stakeholders to find missed or incorrect information and make appropriate corrections.

4. Keep it up to date

  • As the product evolves, continue to update and maintain the documentation, otherwise it isn’t worth the effort and will get outdated and useless quickly.

Subscribe for the news and updates

More thoughts
Mar 26, 2025Technology
Common Mistakes and Recommendations for Test Cases

The article highlights common test case mistakes, offers ways to fix them, and provides practical tips to improve and optimize test cases.

Feb 3, 2025Technology
Figma for Developers: What Dev Mode Offers and How to Use It

This article explores Figma’s Dev Mode, a tool that streamlines design-to-code translation by enabling precise inspection, automated code generation, and seamless integration with design systems.

Dec 22, 2024Technology
Python and the Point Rush in DeFi

This article demonstrates how to use Python to automate yield calculations in decentralized finance (DeFi), focusing on the Renzo and Pendle platforms. It guides readers through estimating potential rewards based on factors like token prices, liquidity, and reward distribution rules, emphasizing the importance of regular data updates and informed decision-making in DeFi investments.

Nov 27, 2024Technology
Stoicism At Work

This article explores how Stoic principles can be applied in the workplace to navigate stress, improve self-control, and focus on what truly matters, with practical examples from the author’s experience in software development.

Aug 27, 2024Technology
An Effective Preparation Algorithm for ISTQB Certification

This article offers key insights into the ISTQB certification and shares a proven preparation strategy to help candidates succeed.

Apr 15, 2024Technology
Lazy Promises in Node.js

Promise is a powerful tool in asynchronous programming that allows developers to call a time-consuming function and proceed with program execution without waiting for the function result.