Всем привет! Меня зовут Марина, я QA в компании Банки.ру и сейчас занимаюсь продуктами личного кабинета, но успела поработать и в других командах. 

В IT все по-разному представляют работу тестировщика:

  • Кто-то видит человека, который по 8 часов кликает на кнопки (я, честно говоря, так же представляла разработку, что уж скрывать…).

  • Кто-то – душного охотника на баги, который только и делает, что пытается что-нибудь сломать.

  • Кто-то вообще считает, что это просто начальная ступень в IT, чтобы потом пойти в разработку.

И в каждом из этих представлений есть крупица правды – но только одна сотая. На самом деле тестирование – это куда более сложный и интересный мир, чем просто цепочка «нашёл баг → завёл баг → проверил → закрыл». Это постоянный анализ, предугадывание проблем, переключение между разными типами задач и умение задавать возможно глупые, но нужные вопросы. 

QA – это смесь паранойи, здравого смысла, скепсиса и заботы о пользователе, внимания к деталям и одновременного удержания всей картины в голове. 

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

Кому будет интересно?

  • Разработке – чтобы наладить коммуникацию и лучше понимать, зачем QA просит что-то исправить.

  • PM'ам – чтобы осознать, какую ценность приносит качественное тестирование, и чего от QA можно ожидать.

  • Новичкам – чтобы увидеть, как на самом деле устроена работа в этой профессии.

Добро пожаловать в голову QA! Но будь осторожен, тут много «а что, если?..»

1. Мышление QA

Использовать теорию про граничные значения, негативные/позитивные проверки и т.д., конечно, здорово. Но истинный QA этим не ограничивается – для работы ему нужно развивать особое мышление. 

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

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

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

Кроме того, есть много навыков, которые вроде бы необязательны, но если у тебя они есть, то это будет очень круто – например, разобрать кусочек кода продукта. Но в этой статье я расскажу все-таки про ключевые скиллы.

2. Радар QA

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

  • Что именно должно работать в этой задаче? (Какая цель/польза продукта/фичи?)

  • Что поменялось, а что осталось, как было? (Что могли сломать?)

  • Какая документация понадобится? (Есть ли макеты и описание на wiki?)

  • Как будет выглядеть поведение при нестандартных действиях пользователя?(А если пользователь прервёт процесс? А если вернётся назад и снова вперёд?)

  • Как всё это будет работать в сложных условиях?

    • с медленным интернетом,

    • с просроченным jwt-токеном авторизации,

    • с выключенным JavaScript, 

    • с устаревшим браузером и т. д.

3. Подход «Что может пойти не так?» – мышление в худших сценариях

Есть правило тестирования – сначала проверяем, что задуманное работает: кнопка жмётся, форма отправляется, пользователь получает ожидаемый результат. Если все ок, то можно включать режим «тревожника» и моделировать провалы:

  • Что будет, если пользователь отправит пустую форму?

  • А если нажмёт кнопку 3 раза подряд и наделает дублей?

  • А если клиент начнет проходить флоу с десктопа, продолжит на мобилке, и история действий не перенесется?

Да, в идеале «такого быть не должно». Но мы здесь именно для того, чтобы проверить, что произойдет, если «такое» вдруг будет.

Пример из жизни:

Пришла в тест простая задача – проверить, что отзыв успешно создаётся после пары мелких правок. Заполнила все поля тестовыми данными, нажала «Отправить». Ничего не происходит.

Жму ещё раз – отзыв наконец создаётся. Ну, отлично, тест прошёл, можно закрывать задачу. Но чуть позже замечаю в общем списке отзывов… два одинаковых. Те же тестовые данные, то же время создания. Совпадение? Не думаю. :)

Решила проверить теорию. Заполнила новый отзыв и кликнула по кнопке «Отправить» столько раз, сколько успею, пока меня не средиректит на страницу созданного отзыва. И вуаля – семь дублей одного и того же отзыва. Красота.

Вывод: доверяй, но проверяй (а потом иди проверяй все остальные сервисы на наличие того же бага 😄).

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

4. Скепсис как профессиональная черта

Скепсис у QA – это не занудство, а рабочий инструмент.

Когда разработчик говорит: «Там минимальные правки, проверь, что просто страница открывается или можно даже не проверять». QA думает: «Ага. Проведем-ка смоук-тестирование или автотесты прогоним на всякий случай».

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

Пример из жизни:

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

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

В результате выяснилось: тот же самый баг воспроизводится и в других разделах админки. Позже стало понятно, что проблема находилась во фронтовом компоненте, который переиспользуется в нескольких местах. Исправление было внесено только для части сценариев, поэтому во всех остальных разделах, где использовался этот компонент, дефект продолжал проявляться.

Задача была возвращена в доработку, а область влияния фикса расширена. Баг был оперативно исправлен. В итоге мы друг друга поблагодарили: разработчик меня – за внимательность, а я его – за то, что все быстро пофиксил. 

Как сами тестировщики часто говорят, нельзя протестировать продукт на 100% – не получится учесть абсолютно все, что может накликать пользователь, особенно если продукт обновляется. Даже в учебниках пишут, что исчерпывающее тестирование невозможно. Всегда есть шанс, что где-то спряталась ошибка. 

Да, из-за этого скепсиса многие разработчики называют тестировщиков душнилами. А может быть даже считают, что мы подвергаем сомнению их компетентность, но мы просто делаем свою работу. QA – это не про «поймать», а про «подстраховать». 

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

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

5. Алгоритм принятия решений

Задача тестировщика – это не просто проверить все подряд, а подобрать правильный порядок действий: на что смотреть в первую очередь, а что оставить на «сладкое».

Мой процесс, если это новая фича:

1. Изучение задачи и требований. Выяснить все нюансы до того, как задача попадет в тест, а еще лучше в разработку. Мы в компании подключаемся на всех этапах, с момента, когда продукт существует на стадии идей и макетов. Уже тогда мы стараемся выяснить, как он будет работать и что может пойти не так, чтобы когда он попал к нам на тестирование, багов было меньше. 

2. Приоритизация сценариев. Определяю, что проверить в первую очередь, а что потом:

  • ��ритичные сценарии – на старт, потому что это «скелет» фичи;

  • сценарии с регистрацией, авторизацией – всегда в приоритете;

  • пограничные случаи и нестандартное поведение – после основного функционала;

  • дизайн-детали – когда логика уже проверена.

Это экономит время и силы, особенно если дедлайн рядом.

3. Когда я сформулировала алгоритм проверки, выбираю подход к тестированию:

  • Что пройдёт автотестами, а что руками?

  • Нужны ли моки, postman или подключение к БД?

  • Проверю ли это только в Chrome или посмотрю ещё в Safari?

  • На каких устройствах протестировать?

Я выбираю подход не по шаблону, а под конкретную задачу, чтобы получить максимум результата. Иногда приходится комбинировать несколько разных видов тестов и перепроверять результаты, чтобы разобраться в проблеме. 

Еще один рабочий пример:

Запустили новый сервис – что-то вроде соцсети, но для обсуждения финансовых тем.
Начала покрывать его e2e-автотестами. Запускала тесты параллельно с задачами и ждала, когда хоть один баг попадёт в мой капкан.

И вот наконец это случилось: во время очередного прогона вижу красный тест, который проверял флоу подписки на профиль. Как и в любой соцсети, там есть кнопки «Подписаться» и «Отписаться». Ну что ж, идём смотреть и видим в логах несоответствие текста: должно быть «Отписаться», а на скрине вижу «Подписаться».

Проверяю вручную – с кнопкой всё в порядке. Ничего не понятно.

Думаю: «Наверное, страница просто не успела прогрузиться. Добавлю ожидание, и проблема решится».

Запускаю тест снова – та же ошибка.

Решаю запустить локально, с просмотром действий в браузере. И вижу то, чего не ожидала: при клике на «Подписаться» страница перезагружается, и на долю секунды снова появляется старая надпись, прежде чем смениться на «Отписаться».

Проверила с медленным интернетом – та же история. Радовалась, как будто котёнка с улицы домой принесла. Несмотря на то что, баг был бы незаметен пользователю с хорошим соединением.

Вывод: хороший тест видит чуть больше, чем пользователь.

И это одна из причин, почему у нас в компании есть тестировщики фулл-стеки, которые и руками тестят, и пишут автотесты. А еще это экономит всем время.

В итоге

В работе QA важно уметь задавать вопросы и иногда побыть «детективом» – видеть связи между изменениями и понимать, к чему они могут привести для продукта в целом. Многие решения принимаются не по шаблону, а с учетом контекста задачи, анализа требований и реального поведения пользователей. Такой баланс структуры и исследовательского подхода помогает находить проблемы раньше, снижать риски и делать релизы более предсказуемыми для всей команды.