Как защитить себя при рефакторинге нерегрессионных тестов? - PullRequest
0 голосов
/ 30 сентября 2010

Существуют ли конкретные методы, которые следует учитывать при рефакторинге нерегрессионных тестов? Код обычно довольно прост, но он явно не входит в сеть безопасности набора тестов ...

При создании нерегрессионного теста я сначала проверяю, действительно ли он показывает проблему, которую я, конечно, хочу исправить. Но если я позже вернусь к этому тесту, потому что хочу реорганизовать его (например, я просто добавил еще один очень похожий тест), я обычно не могу вернуть тестируемый код в состояние, в котором он обнаружил первую проблему. Так что я не могу быть уверен, что тест, после рефакторинга, все еще использует те же пути в коде.

Существуют ли специальные методы для решения этой проблемы, кроме как быть очень осторожными?

Ответы [ 2 ]

1 голос
/ 30 сентября 2010

Это не большая проблема.Тесты тестируют код, а код тестирует тесты.Хотя возможно сделать неуклюжую ошибку, из-за которой тест при любых обстоятельствах может пройти успешно, это маловероятно.Вы будете запускать тесты снова и снова, поэтому тесты и код, который они тестируют, требуют много упражнений, и, когда ситуация меняется к худшему, тесты обычно начинают давать сбои.

Конечно, будьте осторожны;Конечно, запустите тесты непосредственно до и после рефакторинга.Если вам неудобно проводить рефакторинг, сделайте это так, чтобы вы могли видеть, как проходит тест (прохождение и не удалось).Найдите надежный способ провалить каждый тест перед рефакторингом и запишите его.Доберитесь до зеленого - все тесты пройдены - затем рефакторинг теста.Запустить тесты;все еще зеленый?Хорошо.(Если нет, конечно, получить зеленый, возможно, начав заново).Выполните изменения, из-за которых исходные нерефакторированные тесты не прошли.Красный?Тот же сбой, что и раньше?Затем восстановите рабочий код и снова проверьте на зеленый.Проверьте это и перейдите к следующему заданию.

0 голосов
/ 01 октября 2010

Старайтесь включать не только положительные случаи в ваш автоматический тест, но также и отрицательные (и правильный обработчик для них).

Кроме того, вы можете попытаться запустить ваш рефакторированный автоматический тест с точками останова и контролировать отладчик, чтобы он продолжал использовать все пути, которые вы намеревались использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...