Answers: <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>
  
Answers: CC BY-SA 4.0
Answers: 2019-11-06T09:46:03.023Z
Answers: 2019-11-06T09:46:03.023Z
Answers: Bruce Becker
Body: <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>
  
Comments: CC BY-SA 4.0
Comments: 2019-11-06T08:52:25.153Z
Comments: sounds like a regression test?
Comments: Bruce Becker
Comments: CC BY-SA 4.0
Comments: 2019-11-06T08:53:27.433Z
Comments: @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.
Comments: kabanus
Comments: CC BY-SA 4.0
Comments: 2019-11-06T08:57:01.347Z
Comments: 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
Comments: Bruce Becker
Comments: CC BY-SA 4.0
Comments: 2019-11-06T09:02:07.020Z
Comments: @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.
Comments: kabanus
Comments: CC BY-SA 4.0
Comments: 2019-11-06T14:56:41.033Z
Comments: @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?
Comments: 030
Comments: CC BY-SA 4.0
Comments: 2019-11-06T14:58:13.160Z
Comments: @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".
Comments: kabanus
Tags: <terminology><testing>
Title: A name for testing software migrated to a new environment against original application
UserDisplayName: kabanus
ThreadText: # 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.
  
  @username_1 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**: @username_1 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**: @username_1 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.
  
  
  ---
  
  