Рост и развитие индустрии, большая конкуренция, разнообразие и сложность ПО требуют все больших навыков и знаний в сфере IT. Требования к начинающему специалисту также повышаются, все больше возникает потребность в специалистах более узкой направленности. В этой статье мы ознакомимся с такими узкими направлениями в области QA.
Профессия Тестировщика, как и любая другая профессия в IT, предполагает карьерный рост либо в техническом либо в управленческом направлении:
- Manual QA (Junior, Middle, Senior)
- Automation QA (Junior, Middle, Senior)
- Tech Lead/Team Lead QA
- Project Manager
Об этом более подробно мы поговорим в следующий статье.
Также профессия Тестировщика может разделятся на разные специальности, узкие направленности, требующие более глубоких знаний в определенных областях или особенностях ПО:
- WEB Тестировщик
- Security Тестировщик
- Mobile Тестировщик
- GameDev Тестировщик
- Performance Тестировщик
- Тестировщик Fin Tech
- Тестировщик VR
WEB тестировщик
Веб-приложение – это клиент-серверное приложение, в котором клиентом выступает браузер, а сервером – веб-сервер (в широком смысле). Основная часть приложения, как правило, находится на стороне веб-сервера, который обрабатывает полученные запросы в соответствии с бизнес-логикой продукта и формирует ответ, отправляемый пользователю. На этом этапе в работу включается браузер, именно он преобразовывает полученный ответ от сервера в графический интерфейс, понятный рядовому пользователю.
Основополагающие для тестировщика знания:
- этапы разработки программного обеспечения;
- типы дефектов и их жизненный цикл;
- виды и правила составления тестовой документации;
- подходы к тестированию и его уровни.
Эти базовые знания необходимы для всех специализаций Тестировщиков.
Security Тестировщик
Данное направление уже давно выделилось в отдельный сегмент, которое требует специальной сертификации.
Security Engineer, Penetration Tester, Security Expert, специалист по информационной безопасности ПО. Названия данной позиции отличаются в зависимости от компании, но суть работы остается неизменной ― выявление уязвимостей ПО и оценка защищенности IТ-систем.
Тестировщик безопасности работает не только с программными продуктами. Полноценная оценка надежности ПО включает анализ тестового окружения, способов передачи и хранения данных.
Иногда о тестировщиках безопасности говорят как об этичных или «белых» хакерах. И это имеет смысл, ведь и тестировщики, и хакеры пытаются взломать систему, проникнуть в неё. Отличие в том, что первые работают в команде с другими инженерами по обеспечению качества и выявляют дефекты ПО, чтобы сделать продукт надёжнее.
Поиск уязвимостей начинается с заключения соглашения между сторонами. Ведь без юридического регулирования целей и задач тестирование на проникновение превращается в хакерскую атаку. Оценка безопасности программного продукта проходит в рамках утвержденной методологии. Часто специалисты обращаются к документам, которые разрабатывались независимым проектом по обеспечению безопасности веб-приложений OWASP. Их стандарт проверки безопасности ПО является наиболее полным.
Ключевые для тестировщика безопасности знания:
- типы кибератак;
- особенности server-side- и client-side-уязвимостей;
- методики анализа защищенности;
- и многие другие.
Кроме того, тестировщику безопасности будет полезно иметь представление о следующих нюансах:
- основы криптографии и подходы к шифрованию информации;
- некоторые аспекты сетевых технологий (модель OSI, маршрутизация пакетов в сети…);
- основы SQL и Javascript, языка разметки HTML
В обязанности тестировщика также входит: мониторинг безопасности продукта и его окружения, проверка на соответствие стандартам безопасности, оценка серьезности выявленных дефектов,составление тестовой документации.
Mobile Тестировщик
Тестирование мобильных приложений тоже стало самостоятельной областью QA, которая активно развивается в последние годы.
Типы мобильных приложений
Прежде чем мы расскажем о классификации ПО, стоит оценить масштабы этой индустрии. К началу 2020 года уже более 5,19 миллиардов человек активно использовали мобильные устройства ежедневно. Прирост пользователей всего за год составил 124 миллиона.
По данным международных экспертов, 10 минут из 11 при использовании мобильного телефона приходится на приложения, которые охватывают практически все сферы нашей жизни (развлечения, финансы, здоровье, общение и прочее).
Только во втором квартале 2020 года из Google Play и App Store скачали 37,8 млрд приложений. Это рекордный показатель, флагманами которого стали TikTok и Zoom.
Так что же из тебя представляет мобильное приложение? Это программа, которая написана на языке высокого уровня и позволяет ускорить выполнение действия в соответствии со своим функционалом. ПО создается под конкретную платформу (Android, iOS, Windows 10 Mobile, BlackBerry и прочие).
Особенности тестирования мобильных приложений
Разработка мобильных приложений отличается от десктопных. Поэтому и в процессе тестирования инженер обязан провести проверки, обусловленные природой программных продуктов. Например, необходимо провести проверку установки обновлений.
Разработчики операционных систем постоянно улучшают платформы и делают их более безопасными и производительными. Это формирует и новые требования к мобильным приложениям. Пользователь не должен испытывать каких-либо сложностей в процессе обновления. А если пользователь не устанавливает новые версии вовремя? Как на это отреагирует приложение? На эти вопросы тестировщик ищет ответы.
Тестирование помогает выявить реакцию приложения на непредсказуемые пользовательские действия. Представьте, разблокированный гаджет оказался в кармане или сумке, и приложение должно корректно справляться с набором хаотичных и бессвязных действий.
Ещё один вид проверок – оценка качества различного вида соединений. Такое тестирование проходит в лабораторных условиях, где возможно воссоздать максимально реалистичные условия связи. Этот вид проверки демонстрирует, как приложение будет вести себя в нестандартных ситуациях, например, когда сигнал Wi-Fi едва уловим.
Команда на проекте может состоять целиком из тестировщиков мобильных приложений или оставаться комбинированной. Это зависит от особенностей тестируемого продукта. В аутсорсинговой компании может быть всего несколько специалистов по оценке качества мобильного ПО или большой отдел. В этом случае начинающий специалист может построить карьеру от джуниора до лида. Продуктовые компании также могут иметь собственное QA-подразделение.
Инструменты для тестирования мобильных приложений
Инструментарий QA-инженера достаточно богат: эмуляторы, сервисы бета-тестирования, программы для сбора статистических данных и прочее. Рассмотрим их подробнее.
Эмуляторы
Эмуляторы – программы, которые имитируют поведение других устройств. Главное преимущество эмуляторов в том, что они помогают протестировать сложные сценарии, которые не рекомендуется проводить на настоящих мобильных телефонах (если тесты могут вывести устройство из строя).
Сервисы для бета-тестирования
Напоминаем, что бета-тестирование – активная работа с почти готовой версией продукта для нахождения всех возможных ошибок и их дальнейшего устранения. The Beta Family – бесплатный сервис, позволяющий завести аккаунт и загрузить бета-версию приложения. После этого можно отправить приглашение протестировать ПО и затем проанализировать полученные результаты.
Сбор статистики
Статистическая информация о том, как пользователи работают с приложением, будет не лишней. Вы узнаете, какие функции привлекают пользователей больше всего, какие ошибки они совершают.
Для эффективного тестирования программных продуктов многие компании комплектуют собственный парк мобильных устройств. Это большая коллекция самых разнообразных гаджетов от умных часов до планшетов и электронных книг на базе различных ОС. Чем больше парк устройств, тем больше дефектов ПО можно выявить и сделать мобильное приложение более качественным и надежным.
GameDev Тестировщик
Профессию тестировщика видеоигр часто сравнивают с работой мечты. Многие представляют её так: сидишь и играешь целый день в игры, и вдобавок получаешь за это деньги. Но эта профессия не такая простая, какой может казаться. Работа тестировщиком требует намного больше, чем простое прохождение видеоигры. И даже считая себя классным игроком, без особых знаний невозможно сделать грамотный тест, как требует работодатель.
Тестировщик не просто играет, его задача пытаться «сломать» игру, найти ее уязвимые места. Он передвигается по всем локациям, переходит на разные уровни, просматривает — правильно ли работает меню, а также все опции и функции персонажей, стараясь выявить в системе недостатки. Спецэффекты, сопровождение звука, тени и т.д.
Гейм-тестер должен проверить в игре все возможные действия, чтобы найти ошибки. Каждая из ошибок говорит о том, что есть проблема с программированием, а таких ошибок бывает немало. Например, если игровой персонаж вдруг застревает в ходе игры, без возможности двигаться дальше, или анимация не отображается некорректно. Таких ошибок может быть миллион, от незначительных до вполне серьёзных, затрудняющих игру. И именно благодаря тестировщикам, многие предоставляемые пользователям игры выпускаются практически без багов.
Во время работы нужно стараться использовать игру всякими способами, предпринимая даже такие действия, которые обычный пользователь никогда не применяет. Эта задача довольно трудоемкая, но это обязательное требование к тестировщику. Также он обязан проводить матричные тесты, которые особенно актуальны для игр боевого жанра, например, Mortal Kombat.
Например, в файтинге участвует около 20 персонажей и есть 20 уровней сложности. Специалист обязан сыграть за каждого из этих персонажей против других персонажей, на каждом из 20 уровней. А это целых 8000 матчей. При этом нужно будет внимательно относиться ко всем деталям, применять все доступные функции, все удары, движения и т.д. В конце работы, нужно предоставить полный отчёт о найденных ошибках. И это только один простой пример задачи, возложенной на специалиста.
Performance Тестировщик
Перформанс-тестированию можно подвергнуть любое приложение или изделие, но здесь и далее подразумевается только тестирование веб-ориентированных приложений.
Проверка продуктивности сайта подразумевает следующее:
- эмулирование пользовательских запросов к тестируемому сайту на минимальных, средних, и максимальных величинах (которые должны быть определены ДО начала перформанс-тестинга). Это называется испытание сайта в рабочих условиях, или максимально к ним приближенных;
- Сравнение изначальных критериев оценки продуктивности функционирования сайта (чего хотели добиться) с реальными показателями (что получилось).
Критерии продуктивности исследуемого приложения определяются как часть общих требований задолго до того, как это самое приложение появится в сети.
Критерии продуктивности должны быть:
- измеримыми
- количественными
- прогнозируемыми
- понятными
Пример критериев
- при поиске профилей с фотографиями сервер должен «выдерживать» не меньше 150 одновременным запросов,
- генерация страницы с результатами запроса не превышает 4 секунд,
- результаты запросов кэшируются и выдаются очередному пользователю, который делает запрос, аналогичный предыдущему,
- приложение «выдерживает» 600 активных пользователей.
Что следует проверять при перформанс-тестировании:
- Время отклика (Response time). В секундах время между исходным запросом к серверу и его «окончательным» ответом клиенту во всех рабочих режимах — как в режиме нормальной нагрузки, так и в усиленном режиме.
- Максимально допустимая нагрузка (Load testing). Лоад-тестинг является составной частью всеобщего перформанс-тестинга. Последовательно увеличиваем нагрузку с нуля до «допустимых» параметров. Основной вопрос, на который мы пытаемся ответить посредством лоад-тестинга: «Как изменяется время отклика при увеличении нагрузки на сервер? Линейно: если время отклика растет пропорционально увеличению нагрузки. Это нормально. Логарифмически: если время отклика растет непропорционально увеличению нагрузки.
- Максимально выдерживаемая нагрузка (Stress testing). Делаем то же самое, что и при load testing, но не останавливаемся, когда доходим до предполагаемых пределов. Продолжаем увеличивать нагрузку до предела, до полного отказа системы.
- Среднее время наработки на отказ (Mean time to failure (MTTF). Разработчики говорят, что при нагрузке в 300 активных пользователей сервер «будет беспроблемно работать в течение часа, пока кэш не переполнится». Тестировщики начинают подсчитывать сколько времени будет «безотказно» работать сервер с базой данных отдельно от сервера с приложением, а процессор не перегревается?
- Настройка продуктивности (Performance tuning). Звучит странно, но тут действительно подразумевается конечная подстройка производительности тестируемого сервера. Тестировщики СОВМЕСТНО с разработчиками настраивают и в сотый раз перепроверяют работу сервера с учетом сделанных изменений. Сами по себе тестировщики здесь беспомощны. В тысячный раз увеличивается нагрузка на сервер до тех пор, пока все «узкие места» не объявлены «выявленными и ликвидированными». Или «выявленными, но признанными недопустимыми».
Инструменты для тестирования продуктивности, это отдельные программы, для работы с которыми требуются дополнительные знания и навыки.
Тестировщик Fin Tech
Финансовые технологии (финтех) – это относительно молодая отрасль. С учётом цифровой модернизации этот сегмент рынка активно растет. Высокий уровень проникновения киберпространства в жизнь людей способствует росту потребности в высокотехнологичном, но в то же время надежном и понятном конечному пользователю ПО.
Разработчики используют в ПО функции распознавания лиц и отпечатков пальцев – это делает работу с сервисами более оперативной и удобной. А благодаря персонализации общения с покупателями и многоканальной доступности степень пользовательской вовлеченности увеличивается в разы. При всем этом, приложения в области финансов следует тестировать более интенсивно, чем иное ПО.
Важность тестирования
Нужно учитывать тот факт, что финансовое ПО априори считается продуктом со сложной бизнес-логикой, ведь оно управляет и обрабатывает важные пользовательские данные, которые к тому же являются конфиденциальными (данные кредитной карты, номера социального страхования и т. д.).
Любая программная ошибка в области банков и финансов может стоить очень дорого и существенно повлиять на репутацию бренда. Чтобы компания могла успешно конкурировать, стабильно расти, важно не просто запускать новые продукты, но и тщательно их тестировать.
Выпуская ПО с дефектами, бизнес невольно становится свидетелем того, как потребитель спрашивает себя: «А может ли это приложение гарантировать защиту моих личных и финансовых данных?»
Каждое ПО, к какой бы сфере оно ни принадлежало, от платежей и переводов, страхования, онлайн-банкинга, поддержки бизнеса, следует тестировать с учетом всех нюансов:
- Конфиденциальность данных и безопасность частной и финансовой информации.
- Соответствие финансовых операций нормативным требованиям.
- Особенности обработки транзакций.
- Скорость обработки пользовательских запросов.
- Доступность приложения для всех потенциальных пользователей.
- Сложная в обращении клиентская база данных.
- Возможности угроз и нарушений безопасности.
- Многоуровневая функциональность.
Тестирование в основных моментах
Традиционно любой процесс тестирования должен начинаться с ручных функциональных проверок. На этом этапе приложение нужно исследовать со всех сторон с учетом специфики работы с финансовыми транзакциями и конфиденциальными данными пользователей.
Также без глубокого погружения в финансовый бизнес-процесс и углубления в детали провести качественное тестирование невозможно. Например, в случае с биллинговым продуктом нужно учесть большие объемы данных, технически сложные требования, основы бухгалтерского учета, правила формирования транзакций и многое другое.
Стоит помнить и про частые изменения в финансовом законодательстве и постоянно актуализировать знания правовых норм. А чтобы приложение соответствовало всем требованиям, тестировщики также должны убедиться, что приложение правильно взаимодействует как с другими системами, так и с программными компонентами.
Также крайне актуально для тестирования финтех-приложений нагрузочное тестирование, во время которого оценивается поведение ПО под ожидаемой нагрузкой. Вдобавок к обнаружению узких мест в работе ПО при большом потоке данных, можно гарантировать необходимую скорость обработки пользовательских запросов, а также оценить мощности, необходимые для стабильной работы ПО при ожидаемой нагрузке.
Невозможно выпустить ПО в релиз без проведения тестирования безопасности, которое помогает защитить личную, финансовую, банковскую информацию от действий злоумышленников в киберпространстве. Проверки на проникновение – это лояльный способ понять, как приложение реагирует на кибератаки, и найти критические области рисков и уязвимостей ПО. Учитывая, что к финтех-приложениям внешний доступ есть у множества пользователей, защищать их следует тщательнее любых других продуктов.
Наряду с этим, также важно проверить удобство использования приложения, совместимость с различными ОС и тестовыми средами, а также доступность для людей с ограниченными возможностями.
Тестировщик ПО VR
Когда разговор заходит на тему «программное обеспечение VR», большинство представляют себе развлекательные и игровые приложения виртуальной реальности. Однако это далеко не так. Сегодня в кругах разработчиков дополненная и виртуальная реальность являются одной из самых обсуждаемых тем. Активное развитие этих технологий позволит людям получить доступ к любой информации, путешествовать во времени и пространстве, не покидая дома, получать полноценное онлайн-образование или встречаться на конференциях с коллегами, не садясь в самолет. Особенно актуальна данная технология стала в свете последних событий в мире, связанных с пандемией.
Для начала следует понять разницу между VR и другими продвинутыми технологиями, в числе которых стоит упомянуть, к примеру, CRM или банковское дело. Тестировщик обязан изучить все тонкости самой технологии и работы с данным продуктом в разных сферах деятельности человека.
Продукты VR ориентированы на очень широкий круг потребностей пользователей, начиная от демонстрации, заканчивая денежными транзакциями. В данном случае факторы развлечения и восхищения превалируют над стандартными требованиями клиентов к другим продуктам.
Конечные пользователи VR:
- предприятия, специализирующиеся на предоставлении клиентам услуг развлекательного характера;
- диагностические центры;
- туристическая сфера;
- организации образовательного характера, в том числе по переподготовке специалистов.
Конечными пользователями VR являются организации из сфер:
- здравоохранения;
- производства;
- образования;
- автомобиле- и самолетостроения;
- военного дела;
- оптовой и розничной торговли;
- недвижимости;
- социальных сетей.
В процессе проведения тестирования программного обеспечения приложения должны вести себя, как конечный пользователь. К примеру, если взять пожарных, какую пользу они могут получить от виртуальной реальности при отработке стандартных действий на выезде? В данном случае обучающиеся получат массу информации о том, как вести себя в тех или иных ситуациях, что можно, а что запрещено делать при возгорании, что предпринять при возникновении ЧС и т.д. Поэтому представьте себя пожарным и только после этого начинайте тестирование.
Тестирование приложений VR
- изучите основные требования к тестируемому продукту, что поможет точно определить его прямое назначение и условия, в которых он будет эксплуатироваться;
- определите перечень устройств, варианты взаимодействия, которые поддерживаются данным ПО;
- обратите внимание на наличие содержания и решений об авторских правах и требованиях;
- определите ориентировочное время взаимодействия пользователей с программой.
В последнем случае стоит обязательно уточнить, сколько времени планируется конечному потребителю на получение конкретной информации за одно взаимодействие. Это объясняется тем, что длительное использование VR может быть вредным для здоровья человека. Разрешенный период обязательно указывается в аннотации к программному обеспечению. Если необходимое время превышает рекомендованное, задайте вопрос вашему руководителю.
- расставьте приоритеты, UI / UX – первостепенной важности;
- совместимость устройств – второстепенный момент;
- определите, что VR точно отражает заданную информацию;
- исключите постороннюю архитектуру и плагины;
- убедитесь: сканирование в норме, 2D/3D объекты зарегистрированы в системе;
- обратите внимание на качество объемных объектов;
- оцените производительность самого приложения, условия конфиденциальности пользователя и работы интернета.
Задействуйте собственную фантазию и опыт и не паникуйте. В подавляющем большинстве случаев вы можете не получить решения в Гугл, поэтому попробуйте пройти парное тестированию. Не бойтесь задавать возникающие в процессе оценки вопросы разработчикам, аналитикам, руководителям проекта. В качестве тестировщика вы должны опробовать несколько сценариев использования ПО, которые вы могли бы спрогнозировать в реальности. Также стоит остановиться на форс мажорных обстоятельствах, которые только можно себе представить. Стоит собрать максимальное количество данных о тестируемом продукте, и только в этом случае процесс оценки будет считаться успешно завершенным.
Как вы уже поняли, для всех специализаций существует одна общая база знаний. Дальше, у вас есть возможность получить дополнительное обучение в выбранном вами направлении. Каждая профессия ценит профессионалов. Практика показывает, что невозможно быть хорошим специалистом во всем. Ставьте правильные приоритеты, достигайте своих целей и будьте успешны!