Кто такой тестировщик ПО?
Профессия тестировщика программного обеспечения требует от специалиста внимательности и аккуратности, чтобы обеспечить качество продукта и удобство его использования для пользователя. В этой роли, работая вместе с Романом Орловым, создателем модулей для курса “Автоматизация и тестирование Python”, мы узнаем, почему важно уметь общаться с коллегами и находить творческий подход в этой области.
Кто такие тестировщики
Тестировщик программного обеспечения (ПО) – это специалист, который проверяет работоспособность программы или приложения, выявляет ошибки и помогает разработчикам устранить их. Тестировщики используют различные методы и инструменты для проверки программ, такие как ручное тестирование, автоматизированное тестирование и нагрузочное тестирование. Их работа важна для обеспечения качества и надежности программного обеспечения.
Что делает тестировщик
Тестировщик ПО разрабатывает и проводит тесты, чтобы убедиться, что программное обеспечение работает правильно и соответствует всем требованиям. Он проверяет, как программа работает в различных ситуациях, таких как ввод большого количества символов в поисковой строке или попытка купить все товары на сайте. Если есть какие-то проблемы или ошибки, тестировщик описывает их и создает сценарии, которые помогут разработчикам быстрее найти и исправить эти проблемы.
Какие виды тестирования бывают
Тестирование программного обеспечения может быть выполнено вручную, автоматически или полуавтоматически. В ручном режиме тестировщик проверяет продукт самостоятельно, а в автоматическом – пишет программы для автоматического тестирования без участия человека. Полуавтоматическое тестирование включает в себя сочетание ручного тестирования с автоматизацией для контроля выполнения тестов.
Существуют и другие виды тестирования.
По функциональности
- Функциональное — Функциональное тестирование проверяет, как продукт выполняет определенные функции. Тестировщик имитирует использование продукта и проверяет, работают ли все кнопки и формы.
- Нефункциональное - Нефункциональное тестирование касается свойств системы, которые не связаны с ее функциональностью, таких как производительность и удобство использования.
По уровню покрытия
- Модульное — Тестирование может быть модульным (проверка каждого модуля по отдельности).
- Интеграционное — тестирование совместной работы нескольких модулей одновременно.
- Системное — тестирование продукта в целом.
По функциональному покрытию продукта
- Смоук — smoke testing или «дымовое тестирование», выявление критических ошибок на ранней стадии.
- Акцептанс — установление готовности продукта к использованию.
- Регрессионное — повторная проверка участков, в которые были внесены изменения.
Где нужен тестировщик
Профессия “тестировщик” необходима в любой сфере, связанной с информационными технологиями (IT). Например, специалист может разрабатывать методы тестирования банковского программного обеспечения, проверять верстку и дизайн интернет-магазинов, оценивать функционал и локализацию игр.
Работа тестировщика заключается в критическом анализе продукта и поиске уязвимых мест, например стыков между различными частями продукта. Именно поэтому специалисты особенно востребованы в крупных компаниях, где продукт обладает большим количеством функциональных возможностей и сервисов, а также в банковской сфере, где тестированию уделяется особое внимание из-за высокой ответственности за безопасность данных.
В малых проектах один тестировщик обычно выполняет все задачи, а в больших компаниях процесс формализован, и специалисты не занимаются поиском задач, они просто выполняют поставленные перед ними задачи.
Часто в компаниях разделяют специалистов на продуктовые группы. Это не только организует работу, но и делает процесс более интересным. Роман отмечает, что такое разделение помогает улучшить общение между людьми: “Мне нравится, когда есть разделение на группы, потому что это способствует более живому общению между людьми. Вам не нужно писать множество писем, не требуется согласование задач с множеством людей. Вы решаете все вопросы внутри своей команды здесь и сейчас”.
Пример задачи
Если нужно протестировать интерфейс интернет-магазина, то специалист:
- переходит на тестовый сервер, закрытый для клиента;
- проверяет в Jira, появились ли новые задачи (протестировать исправленные баги или проверить новые функции);
- читает в bug report необходимые для воспроизведения шаги и ожидаемый результат;
- возвращается в тестовый сервер и выполняет шаги из bug report;
- проверяет соседние функции, чтобы убедиться, что они не поломались;
- отправляет ошибку обратно к разработчику, если она осталась.
Чем отличается QA и QC
Тестирование принято разделять на два направления: QA и QC.
Что такое QC
Специалист по QC (Quality Control, или контроль качества) проверяет соответствие продукта требованиям, указанным в документации. В его обязанности может входить выполнение задач по тестированию, проверка требований на этапе их создания и оценка общего качества разработки продукта.
Что такое QA
Специалист QA (Quality Assurance, или обеспечение качества) отвечает за контроль процесса разработки продукта от идеи до ввода в эксплуатацию. Он создает стандарты и выбирает инструменты для минимизации количества ошибок на всех этапах разработки.
Роман отмечает, что в России такое разделение не распространено, и только некоторые компании, специализирующиеся на тестировании, используют его. В большинстве случаев у них есть менеджеры (QA), которые следят за качеством процессов, и рядовые тестировщики (senior, middle и junior), которые выполняют роль контролеров качества (QC), непосредственно выполняя работу. QC имеет более узкий взгляд на область тестирования, в то время как QA смотрит шире, выявляя пробелы во всем процессе.
Что ему нужно знать
Тестировщику не обязательно уметь программировать, так как для ручного тестирования уже существуют готовые тест-кейсы с подробным описанием действий. При автоматизированном тестировании нужно уметь программировать, но это гораздо проще, чем разработка сайтов или приложений.
Однако, по словам Романа, некорректно сравнивать программирование и тестирование. У тестировщика и разработчика разное мышление. Разработчик более технически подкован в программировании, но вряд ли сможет проверить продукт так же тщательно, как тестировщик. И наоборот, тестировщик, который не разбирается в технических аспектах программирования, может не учесть все тонкости продукта и возможные последствия его изменений.
Чтобы заниматься тестированием, новичку нужно разбираться в техниках тест-дизайна, понимать жизненный цикл ПО, базово представлять, что такое веб-разработка, знать хотя бы один из самых распространенных среди язык — Java или Python — для разработки автотестов.
Для управления проектами и организации рабочего процесса используются различные инструменты. Например, Jira - менеджер задач, GitHub - веб-сервис для совместной работы над кодом, Chrome DevTools и Firebug - инструменты для веб-приложений и Postman для тестирования API-запросов.
Автоматизация тестирования на Python требует знания фреймворка PyTest, инструментов Selenium для тестирования веб-приложений (подходит и для Java), а для работы с базами данных понадобится знание языка SQL.
Как выглядит его рабочий день
В течение рабочего дня, тестировщик программного обеспечения создает тестовые сценарии (тест-кейсы), определяя что, как и в течение какого времени необходимо тестировать. Утром команда собирается на стенд-ап встречу, где участники делятся своими успехами и проблемами за прошедший день. Если кто-либо из коллег столкнулся с похожей сложностью в предыдущий день, он может поделиться своим опытом ее решения. После этого, специалист просматривает код на ревью.
Разработчики программного обеспечения отправляют запросы на внесение изменений в код (pull requests), чтобы убедиться, что новый код соответствует установленным стандартам, не содержит ошибок и написан качественно. ИТ-тестировщик утверждает код и проводит его проверку. Создание тестовых сценариев, анализ покрытия, регистрация ошибок - это может быть монотонным занятием, требующим усидчивости, так как придется провести много времени над документацией. Однако, Роман считает, что работа тестировщика также предполагает творческий подход.
«Когда вы начинаете разрабатывать тестовый сценарий, у вас есть множество различных методов, которые можно использовать в самых разных ситуациях. Особенно интересно, когда дело доходит до работы с аппаратным обеспечением: здесь возникает множество побочных эффектов, связанных с особенностями операционной системы или жесткими дисками».
Как строят карьеру тестировщики
Новичкам Роман предлагает несколько вариантов: «Если вы не хотите идти на курсы, Google вам в помощь. Существуют разные road map тестировщика, которые помогут самостоятельно определить траекторию обучения. Другой рабочий, прагматичный способ — открываете вакансию, смотрите требования и идете их изучать».
После обучения можно брать заказы на фрилансе, чтобы набить руку, а потом идти к крупному работодателю с уже готовым портфолио. «К вам будет другое отношение, потому что вы принесли бизнес-ценность компании, а не просто прочитали основы и тренировались на кошках дома», — добавляет Роман.
Карьера специалиста по тестированию программного обеспечения начинается с позиции младшего сотрудника (джуниора), который занимается поиском простых ошибок по готовым тестовым планам.
Через 1-2 года работы младший сотрудник может стать средним специалистом (мидлом), способным самостоятельно разрабатывать документацию, выбирать инструменты и не только находить ошибки, но и устранять их.
Старший специалист (сеньор), помимо этого, умеет управлять командой, создавать стратегии и стандарты для тестирования всех этапов разработки продукта. Хорошие коммуникативные навыки позволяют специалистам по тестированию занимать руководящие должности, такие как менеджер проекта или продукта, а также тимлид. Также возможно перейти в область разработки: со знаниями в тестировании это хороший вариант, поскольку специалист понимает, как написать код без типичных ошибок.
Какие нужны софт-скиллы
Одним из главных навыков коммуникации в профессиональной среде Роман называет умение эффективно общаться с коллегами по команде. Тестировщикам приходится постоянно общаться с разработчиками, аналитиками и менеджерами, чтобы понимать бизнес-цели продукта и его внутреннее устройство.
Часто возникают ситуации, когда разработчики считают, что тестировщики ломают их код и препятствуют выпуску продукта, однако это не так. Тестировщики помогают пользователям, а не мешают им. Если продукт окажется некачественным, пользователи просто откажутся от его использования. Зарплата разработчиков зависит от количества пользователей, поэтому они должны стремиться к созданию качественного продукта.
Помимо коммуникации с коллегами, тестировщикам необходимо научиться объяснять сложные вещи простым языком. Иногда необходимо объяснить клиенту технические детали и возможные проблемы, связанные с ними.
Навыки коммуникации не ограничиваются общением с коллегами. Тестировщикам также необходимо уметь представлять результаты своей работы. Составление презентаций - это частный случай, однако умение объяснить, что означает тот или иной тест и как его интерпретировать, является важным навыком.
Насколько это востребовано
В марте 2024 года на сайте hh.ru было почти 1900 вакансий.
Сколько получает тестировщик
В начале карьеры специалиста по тестированию программного обеспечения зарплата составляет от 50 000 до 70 000 рублей в месяц, согласно данным hh.ru за март 2023 года. Спустя год работы средняя зарплата может увеличиться до 100-120 тысяч рублей для среднего специалиста (мидл). Опытные старшие специалисты (сеньоры) могут зарабатывать от 200 до 300 тысяч рублей.
Плюсы и минусы профессии
Преимущества работы тестировщиком:
- У тестировщика большие карьерные возможности. Можно Большие возможности для карьерного роста: можно не только стать опытным специалистом в своей области, но и взять на себя руководящие и управленческие функции по отношению к продукту.li>
- Низкий порог входа: стать тестировщиком возможно даже без технического образования, при условии наличия усидчивости и внимания.
- Возможность работать удаленно: тестировать можно как на фрилансе, так и в штате компании, независимо от ее размера и стадии развития.
- Постоянный спрос на специалистов в области тестирования: все больше компаний стремятся создавать качественные продукты, чтобы удерживать клиентов.
О своем опыте работы Роман Орлов говорит: “Мне доставляет удовольствие, когда пользователи оставляют положительные отзывы о нашем продукте. Ощущение того, что я внес свою лепту в создание чего-то ценного для клиента, является для меня главной мотивацией в работе. Технические знания, безусловно, важны, но ценность продукта для клиента стоит на первом месте”.
Недостатки
- На начальных позициях может быть много однообразных задач. Чтобы избежать рутинной работы, можно предложить команде новые идеи и подходы, чтобы получить более интересные и ответственные задания.
- В некоторых случаях, работа тестировщика может вызывать неприязнь со стороны коллег.
В каких случаях становятся тестировщиками
Когда вы устали от своей текущей профессии и ищете новые возможности, вам стоит рассмотреть сферу информационных технологий. Тестировщик программного обеспечения - это перспективная профессия, которая не требует опыта написания кода. Вы можете начать свою карьеру в этой области и получить необходимые навыки, которые помогут вам в дальнейшем переквалифицироваться в разработчика программного обеспечения. Кроме того, работа тестировщиком позволяет участвовать в развитии продукта от начала и до его запуска, включая этап улучшения и управления проектами.
Как рассказывает Роман Орлов, его интерес к тестированию начался еще в школе, когда ему было интересно придумывать сценарии, которые могли бы “сломать” его программу. Ему нравилось получать “зеленые” результаты тестов, и он всегда стремился изучать новые технологии и методы тестирования. Именно поэтому он сейчас разрабатывает собственные сервисы - он хочет поделиться своими знаниями и опытом с другими. Работая над fullstack-приложениями, команда Романа старается сделать так, чтобы каждый член команды мог разрабатывать полнофункциональное приложение.
Полезные ссылки
- Мероприятия, например QA-фесты;
- паблик «Типичный тестировщик»;
- телеграм-канал automation-remarks.com;
- чат QA — Load & Performance, где выкладывают полезные статьи, ссылки и мероприятия;
- сабреддит про разные виды тестирования;
- SQAForums — зарубежный форум;
- еще одна Road map о профессии;
- подкаст AB Testing;
- проект Software-Testing.RU, где можно найти не только полезные статьи, но и форум.
С чего начать?
Чтобы начать карьеру в области тестирования программного обеспечения, новичок должен получить практические навыки. Ознакомиться с языками программирования и основами данной профессии можно с помощью литературы, такой как “Искусство тестирования программ” Гленфорда Майерса и “Гибкое тестирование. Практическое руководство для тестировщиков ПО и гибких команд” Лизы Криспин и Джанет Грегори. Также можно пройти бесплатные курсы на образовательных онлайн платформах, таких как Coursera, для систематизации полученных знаний.
Важным этапом в получении практических навыков является работа на стажировке или фрилансе, поскольку работодатели все чаще предпочитают специалистов с опытом участия в проектах. Кроме того, можно пройти курсы тестировщика и получить сертификат или диплом, что позволит практиковаться с реальными клиентами и создать качественное портфолио с сильными кейсами в области тестирования.
В отличие от традиционного обучения в университете, которое может занять пять лет, для получения специальности тестировщика сегодня достаточно пройти специализированные курсы или самостоятельно освоить данную профессию. Однако, этот путь может быть более длительным и сложным.