Я не знаю, как кратко объяснить мою ситуацию, поэтому мне придется описать сценарий.Как убедиться, что в этом сценарии остались правильные тесты?
У меня есть процесс А, который принимает входной X и выдает выходной сигнал Y. У меня есть отдельный процесс B, который принимает входной сигнал Y (от процесса A), и выдает выходной сигнал Z.
Оба процесса А и B являются сложными и поэтому выиграют от модульного тестирования. Также вероятно, что процессы A и B изменятся, и, таким образом, изменится «средний» формат Y.
Если у меня просто есть модульные тесты для B, которые имеют вход Y, как я могу гарантировать, что они остаются релевантными и правильными, если изменяется процесс A? Например, процесс А превращает вход «foo» в «bar». Тесты единиц для B имеют «бар» в качестве их входных данных и преобразуют их в «переполнение». Если процесс A изменяется и теперь превращается в «foo» в «fish», тогда мои юнит-тесты для B по-прежнему будут проходить, но их ценность сомнительна, поскольку они больше не тестируют ожидаемый ввод.
Что такое наилучшая практика для разрешения этой ситуации? Имеет ли эта ситуация название?
Также (чтобы добавить сложность) процесс B является Java, но процесс A - это Visual Basic.
Я знаю, что переход «за пределы» Единичное тестирование и выполнение тестирования интеграции будет способом гарантировать, что вход X может стать выходным Z, но поскольку у нас есть много тестов для процесса B, как мы можем обеспечить их сохранение Соответствующий? (а также это непросто, когда один из них является Visual Basic, а другой - Java).