
Кто такой тестировщик ПО?



Тестировщик ПО — внимательный и чуткий гарант качества продукта, который следит за тем, чтобы пользователь получил удобное и слаженно работающее приложение. Вместе с Романом Орловым, автором модулей для курса «Автоматизация и тестирование на Python», разбираемся, зачем таким специалистам нужно уметь общаться с командой и что творческого есть в этой профессии.
Кто такие тестировщики
Тестировщики — это специалисты, которые занимаются проверкой программного обеспечения на соответствие заданным требованиям. Они ищут ошибки в работе программы, помогают исправить их и убеждаются, что программа работает корректно и без сбоев. Тестировщики могут использовать различные методы тестирования, такие как ручное тестирование, автоматизированное тестирование, функциональное тестирование, нагрузочное тестирование и др. Они играют важную роль в разработке ПО, помогая разработчикам создавать более надежные и качественные программы.
Что делает тестировщик
Тестировщик ПО прорабатывает возможные сценарии, в которых может оказаться продукт. Если в поисковую строку ввели много символов или захотели купить все товары с сайта, он убеждается, что приложение работает правильно. Также он ищет противоречия в требованиях и описывает поведение, при котором ошибка воспроизводится, чтобы разработчик потом мог быстрее локализовать и исправить проблему.
Какие виды тестирования бывают
По степени автоматизации тестирование делится на ручное, автоматизированное, полуавтоматическое.
При ручном тестировании специалист самостоятельно проверяет продукт, а при автоматизированном — пишет программы, которые позволяют автоматически тестировать ПО без помощи человека. Реже встречается полуавтоматическое тестирование, когда ручное тестирование сочетают с автоматизацией, например чтобы контролировать выполнение тестов.
Есть и другие виды тестирования.
По функциональности
- Функциональное — проверка того, как продукт выполняет свои функции. В этом случае специалист имитирует использование продукта, например, проверяет, работают ли кнопки, отправляется ли форма с данными
- Нефункциональное — тестирование свойств, которые не относятся к функциональности системы, например производительность (как работает сервис, если нагрузка на него больше обычной), usability testing (насколько удобно пользователю работать с сервисом).
По уровню покрытия
- Модульное — в этом случае проверяют каждый модуль (функцию) отдельно.
- Интеграционное — тестировщик проверяет совместную работу нескольких модулей продукта.
- Системное — тестирование программы или приложения в целом.
По функциональному покрытию продукта
- Смоук — smoke testing или «дымовое тестирование», тестирование новых версий ПО, чтобы на ранней стадии выявить критические ошибки.
- Акцептанс — как правило, проводится на завершающем этапе подготовки ПО, когда нужно убедиться, что оно готово к использованию реальными пользователями.
- Регрессионное — повторно смотрят на участки, в которые добавили новые функции. Это нужно, чтобы убедиться, что вносимые изменения не повлияли на стабильную работу продукта.
Тестировщик / Что, если… (тестировщик проверяет нестандартный пользовательский сценарий)
Где нужен тестировщик
Профессия «тестировщик» необходима везде, если проект так или иначе связан с IT. Например, человек может разрабатывать методику тестирования банковского ПО, проверять верстку и дизайн интернет-магазинов или оценивать функционал и локализацию игры.
Он критически смотрит на результат и уязвимые места, например стыки между разными частями продукта. Поэтому специалисты особенно востребованы в крупных компаниях, где у продукта много функциональных возможностей и сервисов. При этом в банковской сфере тестированию уделяют больше внимания из-за высокого уровня ответственности за безопасность данных.
В небольших проектах один тестировщик может делать все. В больших компаниях все формализовано, специалисты не думают, как получить задачи, они просто спускаются сверху.
Часто можно встретить разделение на продуктовые команды. Это не только организовывает, но и оживляет рабочий процесс. «Мне нравится разделение на команды, потому что там больше живого общения между людьми, — говорит Роман. — Чтобы достучаться до разработчиков, тебе не нужно писать тонны писем на почту, не нужно ходить согласовывать задачи с миллионом людей. Ты решаешь все внутри команды буквально здесь и сейчас».
Роман добавляет, что изменения происходят быстрее. «Не надо ждать релиза, чтобы посмотреть, что у тебя все плохо. Проблема возникла — мы тут же ее решили. Это положительно сказывается на продукте».
Пример задачи
Если нужно протестировать интерфейс интернет-магазина, то специалист:
- переходит на тестовый сервер, закрытый для клиента;
- проверяет в Jira, появились ли новые задачи (протестировать исправленные баги или проверить новые функции);
- читает в bug report необходимые для воспроизведения шаги и ожидаемый результат;
- возвращается в тестовый сервер и выполняет шаги из bug report;
- проверяет соседние функции, чтобы убедиться, что они не поломались;
- отправляет ошибку обратно к разработчику, если она осталась.
Неправильно прописанные шаги воспроизведения (последовательности действий для воспроизведения бага) приводят к странным результатам
Чем отличается QA и QC
Тестирование принято разделять на два направления: QA и QC.
Что такое QC
Специалист по QC (Quality Control, или контроль качества) проверяет, соответствует ли продукт требованиям, описанным в документах. Он тоже может выполнять задачи из тестирования, проверять требования при их создании, но при этом смотрит на результат разработки в целом.
Что такое QA
Специалист QA (Quality Assurance, или обеспечение качества) обеспечивает контроль создания продукта от идеи до эксплуатации. Он разрабатывает стандарты, подбирает инструменты, чтобы количество ошибок на всех этапах было минимальным.
По словам Романа, в России разделение встречается редко, только в компаниях, которые специализируются на тестировании. «У нас идет параллельное разделение: есть менеджеры, которых можно назвать QA, они следят за качеством процессов, а рядовые тестировщики (синьоры, мидлы, джуны) исполняют роль QC, непосредственно делают работу руками. QC более узко видит область, которую он тестирует; QA смотрит вширь, видит пробелы во всем процессе».
Что ему нужно знать
Кодить тестировщику не обязательно. Для ручного тестирования существуют уже готовые тест-кейсы, в них все описано, нужно выполнять уже продуманную последовательность действий. Программировать нужно при автоматизированном тестировании, но и это намного легче, чем разрабатывать сайты или приложения.
При этом Роман обращает внимание, что сравнивать программирование и тестирование некорректно. «У тестировщика и разработчика разные майндсеты. Конечно, разработчик более технически прокачан в программировании, но он, скорее всего, не проверит продукт так же качественно, как тестировщик, равно как и наоборот».
Он поясняет: «Тестировщик анализирует и ломает продукт, чтобы убедиться, что он готов к использованию. Разработчик может даже не думать про бизнес-процессы. Он сидит в коде и может не задумываться, как его встраивать в другие части продукта — не потому что он плохой специалист, а потому что он не знает всех тонкостей продукта и как его изменения могут аукнуться в неожиданных местах».
Чтобы заниматься тестированием, новичку нужно разбираться в техниках тест-дизайна, понимать жизненный цикл ПО, базово представлять, что такое веб-разработка, знать хотя бы один из самых распространенных среди язык — Java или Python — для разработки автотестов.
Для удобства коммуникации и управления проектом используют Jira (менеджер задач), для совместной работы над кодом — GitHub (веб-сервис для совместной разработки). Для веб-приложений в браузере есть уже встроенные инструменты, например Chrome DevTools в Google Chrome или Firebug в Firefox, а Postman позволяет тестировать API-запросы.
Помимо этого, для автотестирования на Python нужно знать фреймворк PyTest, инструменты Selenium для тестирования веб-приложений, которые подходят и для Java. При этом для работы с базами данных еще пригодится язык SQL.
Как выглядит его рабочий день
В течение рабочего дня тестировщик составляет тест-кейсы: что тестировать, как и сколько. С утра команда собирается на стендап, где делится впечатлениями о прошедшем дне. Бывает, что кто-то, например, сталкивался в прошлый день с такой же сложностью и он может поделиться опытом, как ее решить. После специалист смотрит код-ревью.
Разработчики отправляют pull requests (запросы на корректировку кода), чтобы проверить, что новый код соответствует стандартам, что там нет ошибок, что все хорошо написано. IT-тестировщик публикует код и проверяет его. Составление тест-кейсов, анализ покрытия, заведение багов — в этом есть определенная монотонность, нужно быть готовым к тому, что придется посидеть над документацией. Но в работе есть и творчество, считает Роман.
«Когда ты приступаешь к проектированию куска тест-кейса, у тебя есть куча разных методик, которые можно применять в самых разных вещах. Особенно интересно это проявляется с железом: возникает много сайд-эффектов с какими-нибудь особенностями ОС, жесткими дисками».
Как строят карьеру тестировщики
Новичкам Роман предлагает несколько вариантов: «Если вы не хотите идти на курсы, Google вам в помощь. Существуют разные road map тестировщика, которые помогут самостоятельно определить траекторию обучения. Другой рабочий, прагматичный способ — открываете вакансию, смотрите требования и идете их изучать».
После обучения можно брать заказы на фрилансе, чтобы набить руку, а потом идти к крупному работодателю с уже готовым портфолио. «К вам будет другое отношение, потому что вы принесли бизнес-ценность компании, а не просто прочитали основы и тренировались на кошках дома», — добавляет Роман.
Карьера тестировщика начинается с уровня джуниора, который ищет простые ошибки по готовым тест-планам.
Мидлом можно стать уже спустя 1–2 года работы. Такие специалисты самостоятельно могут разрабатывать документацию, подбирать инструменты и не только проверять ошибки, но и предотвращать их.
Синьор, помимо этого, может управлять командой и вырабатывать стратегии и стандарты тестирования для всех этапов создания продукта. Благодаря хорошим коммуникативным навыкам тестировщики могут вырастать в менеджеров проектов или продуктов, а также в тимлидов. Можно также уйти в разработку. «Со скиллами тестировщика это хороший путь, — говорит Роман. — Потому что ты понимаешь, как писать код так, чтобы не было типичных ошибок». Сейчас он как раз занимается разработкой: пишет сервис для автоматизации внутренней коммуникации команды.
У разработчика работало нормально / Теперь проблема у тестировщика (А потом он найдет баги, которые не мешали разработчику корректно исполнять код)
Какие нужны софт-скиллы
Одним из первых софт-скиллов Роман называет умение общаться с командой. «Вам придется общаться много с кем: разработчиками, аналитиками, другими тестировщиками; с менеджментом, чтобы понимать, какие бизнес-цели преследует продукт и как он устроен внутри».
«Стандартная ситуация, когда разработчик думает, что тестировщик ломает его код и мешает релизу, — приводит пример Роман. — Это не так. Нужно объяснить, что мы в одной лодке. Продукт разрабатывают для пользователя, и если я столкнусь с этой проблемой — я переживу, может, не буду им пользоваться. Когда другой увидит, какое приложение кривое, он тоже от него откажется. А от количества пользователей зависит зарплата. Может, давить на больное — грязный ход, но рабочий».
Кроме общения с командой, нужно научиться говорить простым языком о сложном: «Уметь рассказать даже пятилетнему ребенку, как работает микросервис, — уточняет Роман. — Потому что бывают ситуации, когда нужно объяснить клиенту технические моменты и то, какие проблемы могут из-за них возникнуть».
Софт-скиллы не ограничиваются коммуникацией. Нужно также уметь представлять результаты своей работы. «Наверное, составлять презентации — это частный случай, но объяснять, что значит тот или иной отчет по тестированию и как его читать, — тоже полезный скилл», — поясняет Роман.
Насколько это востребовано
В марте 2021 года на сайте hh.ru было почти 1900 вакансий.
Роман Орлов:
«Сейчас на рынке ценятся автоматизаторы. При этом компании ожидают, что к тому, что вы умеете писать код, будут прикладываться умения ручного тестировщика: составлять тест-кейсы, анализировать проблемные участки, писать баг-репорты».
Сколько получает тестировщик
Новичкам платят от 50 до 70 тыс. рублей в месяц. Но уже спустя год можно удвоить оклад: мидл-тестировщики получают около 100–120 тыс. рублей. Опытные синьоры зарабатывают 200–300 тыс. рублей, основываясь на данных hh.ru за март 2021 года.
Плюсы и минусы профессии
Плюсы
- У тестировщика большие карьерные возможности. Можно не только становиться опытным специалистом в сфере, но и брать на себя другие обязанности по руководству и управлению продуктом.
- Низкий порог входа. Стать тестировщиком можно даже без технического бэкграунда, при должных усидчивости и внимательности.
- Можно работать удаленно. Тестировать удобно и на фрилансе, и в штате, и в крупной фирме, и в развивающемся стартапе.
- Спрос на тестировщиков только растет. Все больше компаний хотят делать проект качественно, чтобы сохранять своих клиентов.
Роман Орлов:
«Мне нравится, когда пользователь пишет хорошие отзывы. Если говорят: “Крутую штуку вы запилили, классная фича, работает здорово”, — то я чувствую, что доношу ценность до пользователя и это мотивация моего труда. Технические знания второстепенны, в первую очередь — ценность для клиента».
Минусы
- На стартовых позициях много однотипных задач. Чтобы не остаться в этом навсегда, можно предлагать какие-то новые идеи команде, чтобы вам доверили что-то поинтереснее.
- Иногда тестировщиков не любят за то, что они указывают на ошибки, поэтому нужно научиться общаться с разработчиками максимально корректно, чтобы никого не обижать.
Роман добавляет: «Вас может остановить широта знаний, которая нужна тестировщику. Разработчик — узкоспециализированный человек. У него есть один стек, он работает с ним постоянно. Тестировщик должен обладать широкими знаниями во всем: в архитектурах приложений, устройств. Простор для обучения большой, нюансов много. Но это вопрос, который решается опытом».
Тестировщикам не нравится ломать продукт / Им нравится развеивать иллюзию, что все работает
В каких случаях становятся тестировщиками
- Когда устали от сферы, в которой долго работали, и хочется найти перспективную профессию.
- Интересуетесь ИТ, но не готовы сразу погружаться в разработку: тестировщиком можно стать и без опыта написания кода, набраться опыта, а потом переквалифицироваться в разработчика.
- Когда хочется управлять проектами — специалисты не только проверяют текущие задачи, но и участвуют в развитии и улучшении продукта от начала до запуска и после.
Роман Орлов:
«Неосознанно я начал тестировать еще со школы. Тогда мне было интересно придумывать ситуации, которые мою программку сломают. Мне нравилось, когда все тесты зеленые. Интересно изучать разные подходы, технологии, стеки. Я не просто так сейчас разрабатываю сервисы. Это потому, что я в свое время изучил стеки, которые мне позволили писать backend и frontend. Сейчас я это использую в работе. Мы работаем над тем, чтобы в команде все могли разрабатывать fullstack-приложение».
Есть ли у тестировщиков профессиональный праздник
Да! 9 сентября отмечается неофициальный День тестировщика. У его появления интересная история: в 1947 году в Гарвардском университете инженеры обнаружили, что из-за мотылька остановился компьютер Марк II. Тогда они извлекли насекомое из реле и задокументировали его в журнале испытаний. К нему добавили комментарий: «Первый случай найденного жука» («First actual case of bug being found»). С тех пор ошибки называют багами, а их выявлением занимаются тестировщики (test — «испытывать»).
Полезные ссылки
- Мероприятия, например QA-фесты;
- паблик «Типичный тестировщик»;
- телеграм-канал automation-remarks.com;
- чат QA — Load & Performance, где выкладывают полезные статьи, ссылки и мероприятия;
- сабреддит про разные виды тестирования;
- SQAForums — зарубежный форум;
- еще одна Road map о профессии;
- подкаст AB Testing;
- проект Software-Testing.RU, где можно найти не только полезные статьи, но и форум.
Как начать
Как и для любой работы в IT, новичку важна практика. Для начала можно ознакомиться с языками и основами профессии с помощью книг, например «Искусство тестирования программ» Гленфорда Майерса или «Гибкое тестирование. Практическое руководство для тестировщиков ПО и гибких команд» Лизы Криспин и Джанета Грегори.
Теоретические знания можно отработать на бесплатных курсах на образовательных онлайн-платформах, например Coursera. С их помощью удобно систематизировать полученные знания.
При этом важно нарабатывать руку на стажировках или фрилансе. В обзоре hh.ru почти все работодатели отметили, что хотят в свою команду специалистов с опытом работы в проектах.
Кроме того, можно повысить квалификацию и получить сертификат или диплом на курсах тестировщика. На них можно практиковаться с реальными заказчиками и сделать качественное портфолио с проверенными сильными кейсами.
Сколько учиться на тестировщика
Чтобы стать тестировщиком, не обязательно учиться в университете пять лет. Сегодня для получения профессии тестировщика достаточно пройти обучение на специальных курсах или попробовать самостоятельно освоить профессию. Это может быть дольше и сложнее.
Получить специальность «Специалист по ручному тестированию» можно за четыре месяца. Этого достаточно для быстрого входа в IT. Чтобы стать QA-инженером, нужно больше времени. Обучение рассчитано на девять месяцев для Python или десять месяцев для Java.
В бесплатном карьерном гиде можно узнать лайфхаки, мнения начинающих специалистов и получить скидку на обучение.