Поддерживаю. И хочу поделиться реальным кейсом.
В наследство, мне на проекте досталось около 300 тестов, которые были написаны в стиле Record&Play, хотя писались и копи-пастились руками. Самое ужасное в том, что эти тесты даже находили баги. На них было потрачено куча ресурсов и выбрасывать мне их запретили.
Так как над тестовым набором долгое время никто не работал, то вначале было около 80% фейлов.
За два месяца мы довели этот показатель до 20%.
В это же время, я писал свой фреймворк с PageObject, хорошей структурой и блекджеком и имплементировал новые тесты уже на нем.
Так как старые тесты выбрасывать было нельзя, для того чтобы объединить «старый» и «новый фреймворк», я создал в новом фремворке некоторое «гетто» для старых тестов. Это была обычная папка с именем Legacy, которая никак не влияла на новый фреймворк с одной стороны, а с другой стороны имела возможность использовать все плюшки нового фреймворка.
И старые и новые тесты были написаны в одной среде. И это очень важно.
Тест раннер: MS Test
Веб драйвер: WatiN
Язык программирования: C#
Так что с интеграцией у меня проблем не было.
Вместе эти два фреймворка прожили около 2-х месяцев. Я правил старые тесты м писал новые.
А потом случился апокалипсис.
Разработчики решили переписать UI приложения с ASP.NET на ASP.NET MVC
Все id элементов и структура страниц была изменена, и понятное дело, что и старый и новый фреймворк оказались в реанимации.
Только в старом фреймворке все локаторы элементов были в самомих тестах. Там было очень много копи-паста, и понятное дело, что «старый» фреймворк получил травму не совместимую с жизнью.
Новый фреймворк мне удалось полностью реанимировать за 4 дня и при этом я значительно порефакторил его код.
В итоге:
1. Старый и новый фреймворки можно интегрировать вместе, при условии что они использую одну среду разработки и прогона тестов.
2. Новые тесты нужно продолжать писать на «новом» фреймворке.
3. Со временем можно переписать тесты из старого фреймворка в новый.
Времени на полное переписывание старого кода скорее всего не выделят
Возможно, и не стоит это делать сейчас. В «новом» коде тоже могут быть изъяны, которые откроются со временем. Если вы перепишете все старые тесты сразу, то возможно, они уже будут содержать ошибки.
К примеру, в новом фремворке я использовал Specflow (это реализация Cucumber для .NET), и не смотря на все его плюшки, для меня составляло сложность правильно оформлять тесты. Я тратил на это очень много времени и уже ощущал некоторые ограничения фреймворка. Потом я перешел на BDDify, который снял самые важные для меня ограничения. Но, для миграции тестов мне понадобилось 2 дня.
На соседнем проекте использовался Fitnesse для .NET. Там тоже столкнулись с ограничениями инструмента и решили перейти на Specflow, чему сейчас очень довольны.