<p>As mentioned in the question, there is a subtle difference between <a href="https://en.wikipedia.org/wiki/Regression_testing" rel="nofollow noreferrer">Regression testing</a> and the situation described here.</p>

<p>To paraphrase Wikipedia:</p>

<blockquote>
  <p>Regression testing ... is re-running functional and non-functional tests to ensure that previously developed and tested software still performs after a change. If not, that would be called a regression.</p>
</blockquote>

<p>However, a situation is described here where the <em>functionality</em> of the code is the same -- since no new features or functionality is added, this is technically not regression testing.</p>

<p>However, what does need to be asserted is the <strong>behaviour</strong> of the code. If run in the same way after the re-implementation, does the code still behave in the same way, beyond still giving the same results (which would be covered in unit testing and functional test).</p>

<p>In <a href="https://martinfowler.com/articles/practical-test-pyramid.html" rel="nofollow noreferrer">"The Practical Test Pyramid"</a>, Martin Fowler describes the various types of testing which a well-maintained application could have. Near the apex are <a href="https://martinfowler.com/articles/practical-test-pyramid.html#acceptance" rel="nofollow noreferrer">"Acceptance Tests"</a>, <em>i.e</em></p>

<blockquote>
  <p>Do Your Features Work Correctly?</p>
</blockquote>

<p>After a re-write, I believe <a href="https://en.wikipedia.org/wiki/Acceptance_testing" rel="nofollow noreferrer"><strong>Acceptance Tests</strong></a> would be the answer here.</p>

<p>Note - Acceptance tests also include <strong>Operational Acceptance Tests</strong>, described by Wikipedia as:</p>

<blockquote>
  <p>Operational acceptance test (OAT) criteria (regardless if using agile, iterative or sequential development) are defined in terms of functional and non-functional requirements; covering key quality attributes of functional stability, portability and reliability.</p>
</blockquote>

CC BY-SA 4.0
2019-11-06T09:46:03.023Z
2019-11-06T09:46:03.023Z
Bruce Becker
<p>This is more of an english language question - we have various types of tests - unit tests, A/B tests, etc...</p>

<p>Suppose I need to migrate code to a different language, machine, or any other different environment specification, with the definition that it reproduces the original application exactly (bugs included!). I am looking for a name for such a test.</p>

<p>Currently I am using functional testing, but I feel that's to general and am looking for something better. It is also somewhat misleading since the "function" is not the implemented algorithm but reproducing behavior of another application.</p>

<p>@Bruce suggested regression tests, which are a good option we considered, but dropped it since we (and I think most people) use those for actual changes in the original code base (in this question's setting) that may add features, fix bugs etc... Perhaps this is too nit-picky.</p>

CC BY-SA 4.0
2019-11-06T08:52:25.153Z
sounds like a regression test?
Bruce Becker
CC BY-SA 4.0
2019-11-06T08:53:27.433Z
@BruceBecker I considered that, but we generally use that for changes in existing code bases to make sure the old functionality remains. You are allowed to add functionality when running a regression test, which is not the case here.
kabanus
CC BY-SA 4.0
2019-11-06T08:57:01.347Z
If you want to test the exact state of a system, perhaps behaviour testing aka acceptance testing would be the right name ? See https://martinfowler.com/articles/practical-test-pyramid.html#acceptance
Bruce Becker
CC BY-SA 4.0
2019-11-06T09:02:07.020Z
@BruceBecker That's good. I thought it was user-perception oriented but I delved into your link and from there to Wikipedia, and saw [more](https://en.wikipedia.org/wiki/Acceptance_testing#Types_of_acceptance_testing). I think I am going to go with "Operational acceptance testing" since that is actually a better name for the end-goal of the test. Definitely add this into an answer.
kabanus
CC BY-SA 4.0
2019-11-06T14:56:41.033Z
@kabanus just to verify whether I understand your question. So basically you are asking what is the name of a test that tests whether some app that has been originally developed in java has been rewritten in for example golang still works?
030
CC BY-SA 4.0
2019-11-06T14:58:13.160Z
@030 That's one option. It gets more complicated with embedded environments, where the same code can get different results. Note also the behavior must be exact, not "correct".
kabanus
<terminology><testing>
A name for testing software migrated to a new environment against original application
kabanus
# A name for testing software migrated to a new environment against original application

(Asked by: username_0 on 2019-11-06)

This is more of an english language question - we have various types of tests - unit tests, A/B tests, etc...

Suppose I need to migrate code to a different language, machine, or any other different environment specification, with the definition that it reproduces the original application exactly (bugs included!). I am looking for a name for such a test.

Currently I am using functional testing, but I feel that's to general and am looking for something better. It is also somewhat misleading since the "function" is not the implemented algorithm but reproducing behavior of another application.

@Bruce suggested regression tests, which are a good option we considered, but dropped it since we (and I think most people) use those for actual changes in the original code base (in this question's setting) that may add features, fix bugs etc... Perhaps this is too nit-picky.

**Tags:** terminology, testing

> **Comments:**
> **username_1**: sounds like a regression test?  
> **username_0**: @BruceBecker I considered that, but we generally use that for changes in existing code bases to make sure the old functionality remains. You are allowed to add functionality when running a regression test, which is not the case here.  
> **username_1**: If you want to test the exact state of a system, perhaps behaviour testing aka acceptance testing would be the right name ? See https://martinfowler.com/articles/practical-test-pyramid.html#acceptance  
> **username_0**: @BruceBecker That's good. I thought it was user-perception oriented but I delved into your link and from there to Wikipedia, and saw [more](https://en.wikipedia.org/wiki/Acceptance_testing#Types_of_acceptance_testing). I think I am going to go with "Operational acceptance testing" since that is actually a better name for the end-goal of the test. Definitely add this into an answer.  
> **username_2**: @username_0 just to verify whether I understand your question. So basically you are asking what is the name of a test that tests whether some app that has been originally developed in java has been rewritten in for example golang still works?  
> **username_0**: @username_2 That's one option. It gets more complicated with embedded environments, where the same code can get different results. Note also the behavior must be exact, not "correct".  

---

## 1 answers

### Answer by username_1 on 2019-11-06. Score: 2 | Accepted answer

As mentioned in the question, there is a subtle difference between [Regression testing](https://en.wikipedia.org/wiki/Regression_testing) and the situation described here.

To paraphrase Wikipedia:

> Regression testing ... is re-running functional and non-functional tests to ensure that previously developed and tested software still performs after a change. If not, that would be called a regression.

However, a situation is described here where the *functionality* of the code is the same -- since no new features or functionality is added, this is technically not regression testing.

However, what does need to be asserted is the **behaviour** of the code. If run in the same way after the re-implementation, does the code still behave in the same way, beyond still giving the same results (which would be covered in unit testing and functional test).

In ["The Practical Test Pyramid"](https://martinfowler.com/articles/practical-test-pyramid.html), Martin Fowler describes the various types of testing which a well-maintained application could have. Near the apex are ["Acceptance Tests"](https://martinfowler.com/articles/practical-test-pyramid.html#acceptance), *i.e*

> Do Your Features Work Correctly?

After a re-write, I believe [**Acceptance Tests**](https://en.wikipedia.org/wiki/Acceptance_testing) would be the answer here.

Note - Acceptance tests also include **Operational Acceptance Tests**, described by Wikipedia as:

> Operational acceptance test (OAT) criteria (regardless if using agile, iterative or sequential development) are defined in terms of functional and non-functional requirements; covering key quality attributes of functional stability, portability and reliability.


---

