В последнее время все чаще слышу от коллег из других организаций о курсе на автоматизацию. Чаще всего это выражается в обучении за счет компании всех желающих мануальных тестировщиков автотестированию, т. е. стеку технологий для написания и поддержания автотестов. Помимо языка программирования (чаще Python или Java) изучают Git, Selenium или его аналоги, Jenkins и внутренние регламенты работы с автотестами. В нашей компании так же взяли курс на автоматизацию, в связи с чем возник вопрос — а что же будет с мануальными тестировщиками, откажутся ли от них совсем или будут стремиться сократить их количество?

На данный момент прямых ответов от руководств компаний нет, звучат стандартные фразы, вроде «Пока все остается как есть». Но есть ли профит от доучивания ручных тестировщиков до автотестера, и куда уведет мечта автоматизировать все процессы в тестировании? Расскажу на своем опыте

Предыстория

Год назад мне предложили обучиться автоматизации, и за скромную прибавку к зп поддерживать автотесты на вверенном мне участке. Сразу скажу, что упавшие автотесты разбираем мы, ручные тестировщики, при этом локализуем ошибку и передаем информацию автоматизатору. Он (или она) в свою очередь правят автотест или подписывают его ошибкой, на чем работа заканчивается до следующего падения. Суть обучения — убрать из этой цепочки автотестировщика, предоставив ему лишь написание новых тестов. Вроде идея здравая — поддерживать автотест не самое сложное занятие, поправил селектор, изменил данные и все взлетело. Как бы не так!

Вернемся к моему обучению. Python’у получилось обучиться примерно за 5 месяцев с 0 до написания хороших таких автотестов с применением Selenium’а. Автотесты получались отличные, проверяющие как отдельно взятый контрол, так и длинную цепь бизнес процесса, по которой работают пользователи. Дело дошло до сдачи зачетов по программированию и автотестам, и тут начались первые проблемы.

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

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

  2. Переключаться с автотестов на другие задачи приходилось очень часто. За час рабочего времени могут дернуть все — ПМ, разработчик, аналитик и прочие. После консультаций приходилось заново вливаться в разработку автотеста, что так же крадет ценное время. При том автоматизаторы тестирования такими проблемами не страдают, все консультации по функционалу/визуалу выполняют ручные тестировщики

  3. Скорость написания самих автотестов оставляла желать лучшего. Круг замкнулся — Из-за поддержки автотестов не хватало времени на прямые обязанности, от этого приходилось часто переключаться на другие задачи, поэтому на разработку автотестов оставалось все меньше и меньше времени. После 10-12 часового рабочего дня не всякий сможет сесть и что-то почитать про автотестирование что бы ускорить свою работу, поэтому скорость написания тестов не росла, а задачи копились

Именно тогда мне стало понятно, что каждый должен заниматься своим делом — автоматизатор писать автотесты, ручной тестировщик.. все остальное. Практика, когда ручной тестировщик готовит данные для автотеста и пишет документацию и разбирает упавшие автотесты оправдывает себя, и не стоит это менять, пока не будет достаточно времени.

Однако, есть и успешные примеры, когда ручной тестировщик смог выделить 2 часа в день на разработку/поддержку автотестов. К сожалению, это исключение из правила, поскольку нагрузка у всех разная. Если вы чувствуете, что у вас есть 2-3 свободных часа в рабочем дне, которые нечем заполнить — то вам прямая дорога в автоматизацию

А теперь самое главное: Почему же ручные тестировщики не могут быть в полном объеме заменены автотестами?

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

Во-вторых, сложность ПО просто не поддается автотестам. Покрыть даже 10-15 шагов тест-кейса уже проблематично, могут возникать различные проблемы (от таймингов до проблем с окружением), ручной тестировщик таких проблем не имеет, проверяя зачастую бизнес процессы, состоящие из сотен шагов.

В-третьих, большинство ПО имеет свойство часто и кардинально меняться. Даже банальный редизайн, проверка которого у ручного тестировщика займет меньше 2-3 рабочих дней положит все автотесты, на поднятие которых потребуется время (хотя хорошие АТ в таких ситуациях поднимаются достаточно быстро).

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

Ну и не забываем об эффекте пестицида — автотест способен проверить только конкретные значения, а ручной тестировщик может использовать различные вариации для поиска багов.

Комментарии (9)


  1. xeeaax
    10.08.2022 16:56
    +8

    Поддержка автотестов занимает просто колоссальное количество времени

    Позвольте предположить, что вы пишете хрупкие автотесты с дублированием кода.

    Почему же ручные тестировщики не могут быть в полном объеме заменены автотестами?

    По той же причине почему шуруповерт не вытеснил из продажи отвертки. У них разные задачи.


  1. dissdoc
    10.08.2022 16:57
    +1

    Очень простые мысли автора являются действительно правильно отражающими ситуацию. Могу лишь добавить только в защиту автотестов следующую ситуацию: пишу свой проект в одиночку, полностью поддерживаю все процессы от разработки/дизайна и до деплоя, и именно автотесты для меня являются финальной точкой завершения разработки. Хотя (при описанных автором выше проблемах) я только пишу смоук-тесты, остальное нереально дорого закрывать. Автор, коротко и емко описано


  1. vlad_egrv
    10.08.2022 17:07
    +2

    вряд ли заменят, но на дуде игрец требуется уже в двух вакансиях из трех, мануал а требования знания языка лови, и в тестовом задании автотест или скрипт напиши


  1. saboteur_kiev
    10.08.2022 18:11
    +2

    Вы посмотрели на автотесты с позиции конкретно вашего проекта, вашей инфраструктуры.

    Теперь берем другой момент. Крупное приложение, множество зависимостей, которые сложно уже описать. Изменение какой-либо мелочи может аукнуться в старых проверенных местах, надо все перетестить.
    100 разработчиков, каждый делает хотя бы парочку коммитов в день, в идеале хочет хотя бы раз в день прогнать интеграционные тесты на своем пулл реквесте, а то и на двух-трех-пяти.

    Сколько нужно ручных тестировщиков, чтобы прогнать все тесты для 100 разработчиков в день?

    А ПРАВИЛЬНО сделанные автотесты могут это делать без проблем.

    Да, их надо поддерживать. Да, для прогона автотестов нужны ресурсы и время. И грамотно все это настроить для минимизации и ресурсов и времени.

    Нужно четко понимать, что автотесты - это не автоматически прогнанные ручные тесты. Нужно и архитектуру ПО иногда подправить для упрощения автотестирования, и инфраструктуру, и сам подход к тестированию. И разграничить что проходится автотестами, что остается на ручное тестирование.

    Уже отсюда и исходить как и где покрывать, как их писать.

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


  1. ivegner
    10.08.2022 18:45
    +1

    За час рабочего времени могут дернуть все — ПМ, разработчик, аналитик и прочие

    Возможно, проблема обретается где-то здесь, а автотесты не виноваты. Но это не точно.


  1. dmitryvolochaev
    11.08.2022 09:00

    Будет не лишним упомянуть "проблему оракулов". Если кратко, ее суть в том, что в тестах тоже бывают ошибки, и абсолютно корректный тест может быть сложнее тестируемого кода. Перефразируя древнеримское изречение, кто будет тестировать сами тесты?


  1. Rafe
    11.08.2022 11:32

    "...функционалу, при чем часто на уровне ПМ'а. Не стоит списывать со счетов эти задачи, зачастую..."


  1. TITnet
    11.08.2022 15:54
    +1

    Написать автотест гораздо проще и быстрее, чем искать неточность в уже написанном

    Смотря, как написаны автотесты. Если по коду теста сложно понять, что пошло не так, то следует «посмотреть в глаза» автору такого автотеста.

    Переключаться с автотестов на другие задачи приходилось очень часто. За час рабочего времени могут дернуть все — ПМ, разработчик, аналитик и прочие. После консультаций приходилось заново вливаться в разработку автотеста, что так же крадет ценное время.

    Позволить отвлекать себя может только Senior, который может легко переключаться между контекстами. В любом случае — это не проблема автотестов.

    автотест способен проверить только конкретные значения

    Почему вы так решили? Автотест может проверить все возможные значения, заданные или случайные. Ровно также себя ведёт и ручной тестировщик.

    Почему же ручные тестировщики не могут быть в полном объеме заменены автотестами?

    По одной простой причине. Это разные сущности. Суть автоматизатора автоматизировать регулярно воспроизводимый сценарий. Ручной тестировщик при этом должен уметь исследовать причину появления ошибок / падения приложения.

    Автотест делает POST /users. Ожидает 200, получает 500. Его задача отрапортовать об этом и не более того.

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


  1. ant1dot
    12.08.2022 16:18

    Он (или она) в свою очередь правят автотест или подписывают его ошибкой

    А какое ПО для этого используете? Что у вас за отчеты, которые линкуются с ошибками?