Deterministic anonymization of test data?
When anonymizing multiple data sources and preserving data consistency we usually end up with a mapping table for "real to anonymized" values. Typically files or database.
If one instead uses an algorithm to determine the anonymized value, you would not need a mapping-table and thus processing would be much faster. Furthermore you would get repeatable results which makes it easier to unit test.
Example 1. Real SSN --> (algorithm) --> Anonymized SSN 2. Anonymized SSN --> (algorithm) --> Name, Addresses, Phone, etc
For (2) when masking I cannot see any issues, but for (1) I can see the practical limitation for a non-reversable algorithm when the anonymized values needs uniqueness, one-to-one.
What is good enough?
Creating synthetic data from scratch is an unrealistic dream for most businesses. Anonymized copy-of-production is often an enourmous job by itself and you preserve realism and "dirty data" necessary for all-round realistic tests.
Anonymizing test data is by itself not enough if one was to publicize, since it is almost always possible to re-engineer portions of it. However, data that is used internally for developing software at a company will never be publicized and barely shown at demos.
Is it "good enough" to use deterministic approach ?
It is not a perfect world, anonymization in itself is just a "good enough" approach for test-data used internally at a company. Deterministic one-to-one value generation may technically be possible to re-engineer, but it is "good enough" for use in a testing and development department.