Как научиться писать тесты
Приветствую всех господа.
Работаю QA инженером, тестирую и руками, и автотесты на питоняке писать требуется.
Тесты которые приходится писать, не подразумевают тестирование веба, или методов API.
Требуется писать сложные функциональные тесты, которые будут эмулировать пользовательское поведение.
На прошлой неделе поступила задача, написать тест который на VM с продуктом выполнит энные настройки, накатит на продукт новую версию апдейта(предварительно ее нужно скачать), проверит что все настройки в порядке, и откатит VM на изначальную версию. В принципе последнее действие можно и не делать, если тестовый стенд отдельный и тест всего один. Но если тестов будет несколько, я решил что стенд всегда должен откатываться на исходную версию ПО.
Итак все что до отката версии, для меня звучало не прям ужасно, но и не просто. Сразу оказалось, что на наш продукт нет никакого API чтобы загрузить апдейт, пришлось написать метод чтобы через POST запросы закинуть апдейт, и через POST же запрос нажать кнопку для его выполнения. Фактически это тоже самое как я через web gui бы закинул через кнопку апдейт и через другую кнопку начал установку.
До этого ранее таких тестов никто не писал, пришлось потратить время чтобы написать скачивание свежего билда с CI/
В итоге на все, что идет до отката стенда, т.е это написание теста, всех вспомогательных функций, и фикстур и отладку, ушло почти 5 дней. И это афигеть как много.
Далее встал вопрос, а как откатить мою виртуалку, ведь штатный откат предусмотрен только через терминал. Если рассматривать со стороны железного сервера, то это COM порт, моник и клава. Как все это сэмулировать я так и не придумал, пришла идея сделать костыль, раз мой стэнд создается через терраформ, то я мог бы задестроить это все, и заново развернуть VM с исходной версией.
Начались опять проблемы т.к сервер с терраформом стоит отдельно, и требовалось не просто удаленно отправить команды, а проверить что они выполнились, и сервер действительно переразвернут с исходной версией. В общем потратив еще 3 дня, я все таки накостылил это дело и отладил. Тест проходит долго, порядка минут 15, пока зальется на сервер, пока обновится, ну и плюс время на переразвернуть VM.
Возможно можно было сам тест продумать намного проще, но написал как придумал, подсказать некому.
Хочется спросить совета:
Что нужно делать, чтобы научиться вот такие вот вещи придумывать намного быстрее?
Просто решать задачки алгоритмические мне кажется не поможет.
Ведь тут вскрылась проблема, что у нас нет никого в отделе у кого можно было бы такое спросить и тебе подскажут что погуглить, про какую библиотеку почитать. Получаешь задачу, и ты фактически 1 на 1 с ней, старших, менторов и прочих нету чтобы попросить помощи. Поэтому и получилось так долго. 8 дней я считаю это капец как долго, и мне кажется должно уходить на такое не больше 3 дней с отладкой.