Когда вы начинаете подумывать о том, чтобы стать тестировщиком, и читаете что-то на эту тему, новые термины и понятия встречаются буквально в каждом предложении. Процесс контроля качества, “черный ящик”, “белый ящик”, модульные тесты, регрессионные тесты, ручное и автоматическое тестирование, BrowserStack, Jira... Все это звучит так сложно! Складывается впечатление, что на то, чтобы освоить эту профессию, у вас уйдут годы.
Что ж, нужно признать: чтобы стать тестировщиком, потребуются определенные усилия. Но поверьте, это не так сложно, как может показаться на первый взгляд. Под умелым руководством вы можете обучиться основным навыкам довольно быстро.
Эта статья поможет вам разобраться в процессе QA, основных этапах тестирования программного обеспечения и наиболее часто используемых при этом инструментах.
Прочитав её, вы узнаете:
- В чем разница между процессом обеспечения качества (QA) и контролем качества (QС)
- Каковы основные этапы QA процесса при разработке программного обеспечения
- В чем разница между ручным и автоматическим тестированием
- Какие бывают виды тестов и подходы к тестированию
- Какие инструменты помогают оптимизировать процесс
Что такое процесс обеспечения качества (QA) и чем он отличается от контроля качества (QC)?
Процесс обеспечение качества при разработке программного обеспечения или QA (quality assurance) — это процесс, который предотвращает появление ошибок в конечном продукте и гарантирует, что компания выпустит по-настоящему качественное приложение. Процесс QA — это больше, чем просто контроль качества и тестирование. В то время как контроль качества (QC) сосредоточен на проверке конечного продукта, QA является частью всех этапов и стадий разработки программного обеспечения. Другими словами, QA — это комплекс мероприятий, направленных на предотвращение дефектов и ошибок, а QC — на их выявление. Правильно настроенный процесс QA гарантирует, что все члены команды будут работать эффективно, время, необходимое для разработки, сократится, а затраты снизятся.
Конечно, в разных компаниях процесс QA может отличатся. Однако, как правило, основные стадии и этапы совпадают. И если вы с ними знакомы, вам проще будет разобраться во всех этих новых терминах и концепциях.
Каковы основные этапы QA процесса?
Работа с требованиями
В современных компаниях процесс QA начинается на очень ранних этапах жизненного цикла разработки программного обеспечения — прямо на этапе анализа требований. Тестировщики проверяют требования и функциональные спецификации, чтобы убедиться, что они чёткие, непротиворечивые, полные, выполнимые и их возможно протестировать.
Планирование тестирования
После того, как тестировщики поняли требования, они могут начать разработку стратегии тестирования и планирование процедур по контролю качества. На этом этапе они определяют объем работ и бюджет, решают, какой подход использовать на каждом этапе разработки программного обеспечения, какие виды и типы тестирования потребуются, какие инструменты лучше использовать.
Разработка тестовых сценариев
Имея на руках план, пора разработать тестовые сценарии или тест кейсы, создать чек-листы, подготовить среду для выполнения тестов и создать сценарии для автоматического тестирования.
Тестирование программного обеспечения
На этом этапе всё готово для поиска ошибок и дефектов. Команда QA специалистов начинает выполнять различные типы тестов. Тестировщики сообщают обо всех обнаруженных ошибках.
Повторное тестирование
Как только группа разработчиков устраняет проблему, тестировщики повторно проверяют функциональность и проводят так называемое регрессионное тестирование, чтобы убедиться, что после внесённых изменений программное обеспечение по-прежнему работает правильно.
Завершение тестирования
После того, как все запланированные тесты выполнены и все исправления перепроверены, наступает время подготовки отчёта о результатах тестирования. В документации описываются все тесты, выполненные в течение жизненного цикла разработки программного обеспечения.
Какие типы или виды тестирования используются в QA процессе?
Теперь, когда мы понимаем, что представляет собой процесс QA, давайте поговорим о различных типах тестов, используемых при тестировании программного обеспечения. Да, их очень много. Но волноваться не стоит. Как только вы поймёте, по каким принципам тесты делятся на группы, вы легко сможете в них ориентироваться.
Функциональные и нефункциональные тесты
Основные категории тестов — это функциональные и нефункциональные тесты.
При функциональном тестировании мы проверяем, работает ли приложение должным образом. Другими словами, мы проверяем, соответствует ли фактический результат ожидаемому результату.
В нефункциональном тестировании мы проверяем, как наше приложение работает в различных условиях. Нагрузочные тесты, тесты безопасности, стрессовые тесты и тесты удобства пользования — все они попадают в эту категорию.
Знание исходного кода
Если тестировщики знают исходный код до тестирования, речь идет о тестировании “белого ящика” (white box testing). В противном случае мы имеем дело с тестированием “черного ящика” (black box testing), когда тестировщики оценивают только поведение приложения, не зная его внутреннего устройства. Тестирование “серого ящика” (grey box testing) представляет собой комбинацию этих двух подходов. Тестировщикам предоставляется ограниченная информация о внутренней структуре системы.
Подход к выполнению тестов
Некоторые тесты выполняются людьми, и мы говорим о ручном тестировании. При этом подходе тестировщики выполняют тестовые сценарии и создают отчеты о результатах.
Другие тесты выполняются компьютерами. Инженеры по автоматизации тестирования создают сценарии автоматического тестирования и пишут код, который многократно проверяет программное обеспечение на наличие ошибок. Здесь мы имеем дело с автоматическим тестированием.
У каждого из этих подходов есть свои плюсы и минусы. Они дополняют друг друга. Например, ручное тестирование лучше подходит для проверки небольших изменений. Во время ручного тестирования тестировщики часто могут найти такие проблемы, которые остались бы незамеченными, если бы они полагались только на автоматизированные тесты. Ручное тестирование не требует глубоких знаний языков программирования и его достаточно легко освоить.
В то же время, при работе над большими приложениями, тестирование без использования автоматических тестов может занять слишком много времени. Мы также не можем исключить вероятность человеческих ошибок.
Для каждого отдельно взятого проекта QA специалисты определяют идеальный баланс между ручным и автоматическим тестированием.
Фаза разработки программного обеспечения
Мы разделяем тесты на модульные, интеграционные, системные — в зависимости от того, на каком этапе цикла разработки программного обеспечения находится команда.
Вот еще несколько типов тестов, с которыми вы часто будете сталкиваться в публикациях:
Дымовые тесты (smoke tests) предназначены для проверки базовой функциональности приложения. Это быстро выполнимые тесты, с помощью которых тестировщики следят за тем, чтобы основные функции системы работали правильно.
Регрессионные тесты (regression tests) помогают проверить, работает ли приложение так, как оно должно работать, после внесения каких-либо изменений, например исправления дефектов.
Нагрузочные тесты (load tests) необходимы для проверки приложения как при средней, так и при пиковой нагрузке.
Кроссбраузерное / кроссплатформенное тестирование помогает анализировать поведение приложения в различных браузерах и системах.
Конечно, это не все типы тестов, которые используются в процессе разработки программного обеспечения. Но знание этих основных категорий поможет вам лучше ориентироваться в теме QA.
Инструменты тестирования
Теперь, когда мы знаем, что такое процесс QA и какие существуют методы, подходы и типы тестов, давайте поговорим о том, какие инструменты тестировщики используют в своей работе. Инструмент тестирования — это любой продукт, который помогает оптимизировать различные действия: сбор требований, планирование, выполнение тестов, создание отчётов и анализ результатов.
Существует огромное количество таких сервисов и приложений. Никто не будет ожидать от начинающего тестировщика знание всех этих продуктов. Но будет полезно ознакомиться с некоторыми из наиболее популярных, такими как Selenium, Jira или BrowserStack.
Selenium — самый популярный инструмент тестирования. Он не требует глубоких знаний языков программирования и удобен для новичков.
Jira — это распространённый инструмент для отслеживания ошибок и дефектов. Он также используется для управления проектами.
BrowserStack позволяет разработчикам тестировать свои приложения в разных браузерах, устройствах или операционных системах.
Заключение
Независимо от того, какие подходы или методы использует компания, конечная цель всегда одна — предоставить клиентам продукт высочайшего качества. Хорошо налаженный QA процесс помогает снизить затраты на разработку и улучшить качество программного обеспечения. И вы можете внести свой вклад в этот процесс.
И вы сможете внести свой вклад в этот процесс. Как видите, придётся многому научиться. Но когда вы понимаете основные концепции, методы и инструменты, разобраться во всём этом не так уж сложно.
Наши краткосрочные курсы помогают таким же людям, как вы, преодолеть свои первые страхи и начать строить новую карьеру в качестве тестировщика. Изучение основ под чутким руководством наших опытных преподавателей — это вопрос нескольких недель.