Разделы портала

Онлайн-тренинги

.
Нужно ли переписывать автотесты на другом языке?
08.04.2020 00:00

Автор: Энди Найт (Andy Knight)
Оригинал статьи
Перевод: Ольга Алифанова

Френд в Twitter недавно задал мне вопрос:

"Я работаю в команде Microsoft. У нас 40 разработчиков, использующих .NET (C#). У нас также несколько ручных тестировщиков и 5 автоматизаторов, которые разработали нашу тест-автоматизацию на Python. Однако руководство хочет полностью перенести все на C#.

Что лучше, а) научить 40 .NET-разработчиков Пайтону, чтобы пользоваться имеющимся решением, или б) научить тестировщиков .NET и портировать тесты на C#?"

Это очень сложный вопрос. Ответить на него сложнее, чем на вопрос о наилучшем языке тест-автоматизации, потому что тут уже имеются в наличии люди, позиции и решения. Честно говоря, я не могу дать исчерпывающего ответа без подробного контекста, но могу предложить пять советов.

В каком состоянии находится тест-решение на Python?

Насколько большое и насколько плохое ваше имеющееся тест-решение на Python? Переписывание тестов, которые уже отлично работают – низкоприбыльное дело. Однако переписывание проблемных тестов – нестабильных или дающих ложноположительные результаты – может иметь смысл. Больше тестов – значит, больше времени. Пожалуйста, прочитайте статью "У нас проблема с автотестами – не начать ли все с нуля?", чтобы понять, какие проблемы требуют переписывания.

Почему бы не перейти на два тест-решения?

Если существующие Python-тесты в порядке, то переписывание их – гигантская упущенная выгода. Вместо переписывания имеющихся тестов, разработчики и тестировщики могут потратить время на создание новых тестов на новом C#-решении. Python-решение будет "наследием", и в него не будут добавляться новые тесты. Старые тесты исчезнут вместе с удаленными фичами. Рано или поздно тесты C# победят. Главный недостаток этого варианта – это возможная необходимость продолжать поддержку Python.

Умеют ли ручные тестировщики программировать?

У многих ручных тестировщиков нет сильных навыков программирования, а у некоторых они вовсе отсутствуют. При обучении тест-автоматизации кривая обучения будет длинной. Python – язык куда легче для изучения, чем C#, так как он внятен, читабелен, и дружелюбен к новичкам. И наоборот, C#-разработчики легко выучат Python на лету.

Какие преимущества несет единообразие?

Переобучение сотрудников и переписывание кода – задача не из легких. С точки зрения бизнеса, это инвестиционные расходы. Прибыль должна быть достаточно значительна, чтобы перевесить цену перехода. Убедитесь, что эта прибыль известна и реальна.

Будут ли разработчики автоматизировать тесты?

Многие команды пишут код автотестов на том же языке, что и продукт, чтобы разработчикам было легче автоматизировать тесты. Однако по моему опыту разработчики редко пишут много тестов, особенно если в команде есть специализированные тестировщики. Тест-автоматизация – сложная область с уникальной спецификой. Некоторые разработчики вообще плохо относятся к тестированию, и изменение языка не решит более глубинные проблемы.

Напоследок

Выбор между C# и Python – дело для меня очень личное. Я напрямую сталкивался с ним, начиная работать в PrecisionLender. Несмотря на то, что я глубоко влюблен в Python, мы решили использовать C#. Это было правильным решением: мы были Microsoft-командой без тест-решения и без налаженной Python-платформы. Не пожалели ни я, ни команда.

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

Обсудить в форуме