2

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.

6
  • sounds like a regression test? – Bruce Becker Nov 6 '19 at 8:52
  • 1
    @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 Nov 6 '19 at 8:53
  • 1
    If you want to test the exact state of a system, perhaps behaviour testing aka acceptance testing would be the right name ? See martinfowler.com/articles/… – Bruce Becker Nov 6 '19 at 8:57
  • 1
    @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. 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 Nov 6 '19 at 9:02
  • @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 Nov 6 '19 at 14:56
2

As mentioned in the question, there is a subtle difference between 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", Martin Fowler describes the various types of testing which a well-maintained application could have. Near the apex are "Acceptance Tests", i.e

Do Your Features Work Correctly?

After a re-write, I believe Acceptance Tests 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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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