mardi 15 novembre 2016

How to test that two different versions of a program that modifies a database are semantically equivalent? [on hold]

We have 3 legacy programs running on our servers. These programs make different types of quite complex computations. They are all running in our production servers right now.

On the other hand, a team has refactored all the programs and made just one application that makes all the same computations in one program, using threads, etc.

These programs read data from a database through SQL queries. Where modified records are marked as Dirty=true.

Whenever a dirty record is found each program computes different things and writes to different tables. Inserting new records and updating others, etc.

So, we are now trying to figure out how to check that our new program (the unified version of the other 3) does exactly the same when new dirty records are found.

We were considering having two copies of the same database, run the 3 programs on one copy and the new program on the other copy of the database. Then do some kind of comparison.

But this will take a significant effort, therefore we are researching better options or ideas first.

A plus would be to have this automatically run by Jenkins on every commit, but that would be more than we expect at the moment.

Aucun commentaire:

Enregistrer un commentaire