Наш комфорт все больше и больше обеспечивают программы и цифровые технологии. Их создание нуждается в тестировании не меньше, а зачастую даже больше, чем тестирование автомобилей, мотоциклов, табуреток и других предметов повседневного обихода.
Тестирование – процесс исследования и контроль качества, который состоит из планирования, проектирования, собственно проверки и анализа ее результатов.
Существует три уровня тестирования:
- Модульное (или компонентное) тестирование, когда проверяется только какая-то часть ПО: отдельная функция, класс, модуль программы. Стандартно оно проводится через вызов кода. Зачастую тестирование на этом уровне осуществляется самим разработчиком. Модульное тестирование от компонентного отличается тем, что в компонентном используют реальные объекты и драйверы, а в модульном – конкретные значения.
- Интеграционное тестирование – процесс исследования ПО, когда проверяются интерфейсы между компонентами или подсистемами. К интеграционному тестированию можно отнести также проверку взаимодействия двух систем в заданных точках. Например, передачу данных из одной системы в другую.
- Системное тестирование – проверка соответствия системы требованиям заказчика. Исследуются функциональные и нефункциональные требования к системе в целом, выявляются дефекты и непредусмотренные сценарии. Например, что будет, если в поле, в которое вводится два знака, попробовать ввести три, букву вместо цифры и т.д.
Классификация видов тестирования
Как видите, классов не так много, но в каждом из них можно выделить несколько разных видов тестирования.
Перечислим основные:
- Функциональное тестирование – проверка, что ПО правильно решает пользовательские задачи.
- Тестирование производительности позволяет оценить быстродействие ПО при заданной нагрузке. Тестирование производительности проводится до и после оптимизации. Его целью является проверка и выявление факторов, которые влияют на производительность ПО.
- Нагрузочное тестирование предполагает оценку ПО при плановой, повышенной и пиковой нагрузке. Ресурсы системы конечны и такое тестирование позволяет избежать связанных с нагрузкой инцидентов после ее внедрения.
- Стресс-тест – проверка работы ПО в критических условиях: миграция данных из другой системы в больших объемах, загрузка большого количества данных, нехватка памяти или дискового пространства. Также проверяется, как будет работать ПО, когда им одновременно начнет пользоваться большое количество пользователей.
- Тестирование стабильности – проверка реакции ПО на взлом, попытки хищения данных и т.д.
- Тестирование совместимости – проверка реакции ПО на окружение, заданные условия использования другими системами и проч.
- Тестирование black box или тестирование черного ящика проводится только через интерфейсы пользователя.
- Тестирование white box или тестирование белого ящика – тестирование с доступом к исходному коду программы. Этот способ позволяет оценить реакции внутри ПО на те или иные события, более тонко и точечно выявить ошибки или неоднозначные реализации логических цепочек.
- Альфа-тестирование – имитация реальной работы с ПО, чтобы оценить его в максимально приближенных к реальным условиях.
- Бета-тестирование проводится группой по основным параметрам с целью проверки наличия в ПО минимального количества ошибок.
- Регресс-тест – проверка ранее найденных ошибок. После разработки и доработки проверяется, что ни одна из них не появилась вновь.
- Дымовой тест – проверка «А запускается ли ПО?». Smoke testing проводят, когда отдельные компоненты нужно собрать в один продукт. Бывает, что по отдельности каждая компонента работает стабильно и корректно, а вместе – нет.
- Ручное тестирование – тестирование, при котором не используются доп. инструменты, для проверки проводится только имитация действий пользователя.
- Автоматизированное тестирование – тестирование с использованием специальных программных средств. Автоматизированное тестирование экономит время и ресурсы, а также увеличивает надежность ПО.
- Динамический анализ кода – анализ исходного текста программы в процессе ее выполнения. В этом случае проблемы в коде обнаруживаются по мере их появления.
- Статический анализ кода проводится без реального выполнения исследуемых программ. Он позволяет обнаружить дефекты еще до того, как код будет готов к запуску. Статический анализ также называю аудитом кода.
Как видите, в рамках тестирования могут идти самые разные процессы на различных уровнях. Управляют ими специалисты, которых называют тестировщиками.
Инженер по QA не только проводит тестирование, но и дает рекомендации по исправлению багов в некоторых случаях.
Обязанности тестировщика
- контроль качества разрабатываемых продуктов;
- выявление и анализ ошибок, возникающих при работе с ПО;
- разработка тестов, тест-кейсов;
- тестирование;
- анализ результатов тестирования;
- классификация ошибок;
- сопровождение процесса ликвидации найденной ошибки;
- документирование всего процесса.
О работе тестировщика существует немало мифов, причем разных полюсов: от того, что туда вход открыт всем, до того, что без знания языков программирования в тестировщики не попасть.
Это крайности, освоить профессию с нуля можно, причем способ стоит выбрать такой, который понравится – самостоятельно, в компании или сразу в работе.
Стек технологий тестировщика:
У каждого инженера по QA есть свой уникальный опыт и собственный стек технологий – набор инструментов, которые он использует в работе, включая языки программирования, СУБД и прочее.
Перечислим наиболее распространенные варианты:
Языки разметки и программирования:
- HTML/CSS
- Python
- SQL
- Java/JavaScript
Фреймворки:
- Selenium
- Allure
Системы автоматизации:
- Jenkins
ПО для управления проектами:
- Jira
- Redmine
Библиотеки модульного тестирования:
- Nose
- SimpleTest
- Jest
- Jasmine
- Chai
- JUnit
- Nunit
- Boost Test
- Watir
Серверы, для запуска легковесных оболочек:
- Selenoid
- Docker
Это примерный список: важно понимать, что в каждом проекте будет уникальная комбинация стека технологий, отвечающая индивидуальным требованиям. Какой-нибудь веб-проект может работать, например, с таким стеком: Java + Html elements + Selenoid + Allure + Jenkins + Readmine.
Список того, чем может владеть и что может изучать тестировщик огромен, начиная c английского и языков программирования, именно поэтому профессия становится такой гибкой и востребованной. Только постоянно развиваясь, инженер по QA может стать дорогим и уникальным специалистом. Начните с малого, постоянно практикуйтесь и развивайте уникальные компетенции. Удачи вам в освоении этой интересной профессии!
Комментарии