Intelligent Test Indexing for Selective CI/CD Execution
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
The Shift Left approach in software development faces challenges such as sequential operation, dependency on test execution and feedback, waiting time, reduced development speed, communication and collaboration issues, iterative process complexity, and quality assurance delays, which hinder efficient and timely software testing and development.
Innovation Solution
A framework for indexing and organizing tests across an organization, enabling selective test execution by individuals, synchronizing the continuous integration and continuous delivery (CI/CD) development model with the Shift Left approach, using a configuration structure to automatically identify and execute relevant tests on product code, and facilitate communication between developers and QA teams.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Loss of time
If QA testing is performed later in the SDLC as in traditional models, then resource impact is reduced during early development stages, but testing time increases and bug fixes become more resource intensive
Solution Approach 1:
The system automatically executes relevant tests when code is committed to the repository, performing testing actions in advance before formal QA phases. This preliminary automated testing identifies issues early in the development cycle, reducing the need for extensive later testing and accelerating overall development speed while maintaining quality standards
2Reliability
If comprehensive QA testing is performed, then software quality is improved, but testing effort and time consumption increase
Solution Approach 1:
The system extracts and executes only the specific tests relevant to the committed code changes, rather than running the entire test suite. By selectively identifying and running only the necessary tests based on code analysis, the system maintains comprehensive quality assurance while significantly reducing testing time and effort
Solution Approach 2:
The system performs partial testing by executing only the subset of tests that are relevant to the specific code changes, rather than performing excessive full-suite testing on every commit. This targeted approach maintains software quality while optimizing testing efficiency
3Measurement precision
If manual test identification and execution is used, then test selection accuracy is improved, but automation extent is reduced
Solution Approach 1:
The system automatically analyzes committed code, identifies relevant tests, and executes them without manual intervention. The automated code analysis and test selection mechanisms replicate and enhance manual test identification accuracy while simultaneously increasing automation extent, eliminating the trade-off between precision and automation
4Loss of information
If developers wait for QA feedback in sequential processes, then communication accuracy is improved, but development speed is reduced
Solution Approach 1:
The system enables continuous automated testing and immediate feedback to developers as code is committed, eliminating sequential waiting periods. This continuous feedback loop maintains clear communication about code quality while significantly accelerating development speed by allowing developers to proceed without manual QA bottlenecks
Data Source
AI summary
A software product development- and testing-related system receives an indication of code related to software being developed. A configuration structure is updated to include an entry for the code, and the code is stored to a test code repository, if it relates to a new test for the software. The entry specifies part(s) of the software to which the code is applicable. If the code is an update to a test already in the test code repository, the code is stored to the test code repository. If the code is product development code related to the software: one or more tests applicable to the code is/are identified using the configuration structure; each identified test is run on the code; and provided that each identified test is passed, the code is promoted to a product code repository for use with the software (otherwise a developer is alerted of a failure).


