# Testing and feedback loops

DevFeed: [Testing and feedback loops](<https://devfeed.tech/articles/testing-and-feedback-loops-21971.md>)

Original publisher: [Read original article](<https://blog.nelhage.com/post/testing-and-feedback-loops/>)

Author: Nelson Elhage

Published: 2020-01-19T20:00:00Z

Content type: article

Language: en

Sources: [Nelson Elhage](<https://devfeed.tech/sources/nelson-elhage.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Development](<https://devfeed.tech/topics/development.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [bug](<https://devfeed.tech/topics/bug.md>), [ci](<https://devfeed.tech/topics/ci.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>)

Tags: [bug](<https://devfeed.tech/tags/bug.md>), [ci](<https://devfeed.tech/tags/ci.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [regression](<https://devfeed.tech/tags/regression.md>), [software-engineering](<https://devfeed.tech/tags/software-engineering.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tests](<https://devfeed.tech/tags/tests.md>)

## AI overview

This post presents testing as a feedback loop for maintaining and evolving long-lived software projects. It argues that consistently adding regression tests when bugs are fixed, combined with a test suite enforced through CI, tends to prevent known bugs from returning and increases confidence in correct behavior over time. The author describes this as a rough mental model rather than a rigorous proof.

## Source excerpt

Testing and feedback loops This post tries to set out one mental model I have for thinking about testing and the purpose testing serves in software engineering, and to explore some of the suggestions of this model. As mentioned in an earlier post, I think a lot about working in long-lived software projects that are undergoing a lot of development and change. The goal when working on these projects is not just to produce a useful artifact at one time, but to maintain and evolve the project over time, optimizing for some combination of the present usefulness of the software, and our ability to continue to evolve and improve it into the future.