Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Google built a testing system that can infer which tests need to be run after a change. In their own words:

... we built a continuous integration system that uses dependency analysis to determine all the tests a change transitively affects and then runs only those tests for every change.


enter image description here

Inspired by that, I have created a tool for Python that also uses dependency analysis to detect which tests need to be run. The difference is that it is not tied to a CI system. It is meant to be run locally and looks for file changes since the last time the tests passed, instead of looking at commits on the version control system.

Visual Studio 2010 has a featured called "Test impact analysis" that "inform the developer of what tests they should run to verify the code changes they are making".

My question is: Is there a name for this approach? I believe I read somewhere that this is called "Incremental Testing", but I cannot find the reference anymore.

share|improve this question

I'd call it regression testing. Or perhaps automated regression testing.

From the link:

Regression testing can be used to test a system efficiently by systematically 
selecting the appropriate minimum set of tests needed to adequately cover a 
particular change.
share|improve this answer

Incremental testing is something else (testing after every increment of code). There are also tools for Java that do this - Infinitest and JUnit Max. I read some people calling this approach "continuous testing".

share|improve this answer

I'm not sure if there's a canonical name but where I work we call this "automatic test selection."

share|improve this answer

@jbochi What is the basic idea of your dependency analysis? Maybe understanding the analysis allows determining if there is already a name for it.

E.g. you can add or modify the code of a module M1 of the system, however the effect of the changes could be on some other module M2 not directly called by the first module M1. Moreover, you can change the state of a module and this state has some effect on what may seem independent modules.

@PerterK The aim of regression testing is not what you reported. The aim is to avoid that bugs that were removed appear again.

share|improve this answer
The quotation is from Wikipedia. You may disagree, but I suggest you broaden your horizons. Regression testing is about ensuring that existing functionality does not have bugs introduced by new changes. Avoiding re-introducing already-fixed bugs is only part of what regression testing is aimed at doing. – Peter K. Feb 24 '12 at 21:27

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.