Типы тестирования

Существует множество различных видов тестирования программного обеспечения. В этой статье мы рассмотрим те виды тестирования ПО, которые применимы для мобильных и веб-приложений.

Что такое тестирование программного обеспечения?

БЕСПЛАТНО СКАЧАТЬ КНИГИ в телеграм канале "Библиотека тестировщика"

Проще говоря, тестирование программного обеспечения – это процесс поиска дефектов в продукте, будь то мобильное или веб-приложение. К дефектам относятся ошибки в коде, отсутствие требований, сбои в работе и т.д. Тестирование ПО позволяет определить, отличается ли фактический результат работы с приложением от ожидаемого.

В идеале тестирование должно проводиться на всех этапах разработки. В действительности чаще всего этот процесс является заключительным этапом перед релизом приложения. Чтобы конечный продукт был максимально эффективным, тестировщики должны использовать как ручное, так и автоматизированное тестирование.

Выделяют три типа специалистов, которые занимаются тестированием в организации:

  • Бизнес-тестировщики. Заинтересованные лица в бизнес-команде, при этом они часто обладают меньшими техническими навыками. Поэтому бизнес-тестировщики часто применяют ручное исследовательское тестирование.
  • SDET (Software Developer in Testing). Опытные специалисты со знанием языков программирования, почти всегда отвечают за тестирование на основе кода.
  • Разработчики программного обеспечения. Разработчики уделяют больше внимания созданию модульных и приемочных тестов на ранних этапах, хотя иногда принимают участие и в тестировании на основе кода.

Какие бывают виды тестирования?

Ниже представлен обзор лишь нескольких методов тестирования из множества. Многие из них могут выполняться вручную, а могут быть автоматизированы.

1. Тестирование доступности

Тестирование доступности – это проверка работоспособности мобильных и веб-приложений для пользователей с различными видами инвалидности или особенностей восприятия. Это могут быть проблемы со зрением, слухом, ограничения в подвижности рук и другие физические или когнитивные заболевания.

2. Приемочное тестирование

Приемочное тестирование гарантирует, что конечный пользователь сможет достичь целей, поставленных в бизнес-требованиях. Его результат определяет, готово ли программное обеспечение к релизу. Его также называют приемочное тестирование пользователей (UAT).

3. Тестирование “черного ящика

Тестирование методом “черного ящика” подразумевает тестирование системы без знания программного кода. К нему относится работа внешними интерфейсами системы при помощи предусмотренных полей ввода и кнопок.

4. Сквозное тестирование

Сквозное тестирование или “End to end” – это методика, при которой рабочий процесс приложения проверяется от начала до конца, чтобы убедиться, что все функционирует так, как ожидается.

5. Функциональное тестирование

Функциональное тестирование направлено на проверку соответствия функциональных требований программного обеспечения его реальным характеристикам.

6. Интерактивное тестирование

Интерактивное тестирование, известное также как ручное тестирование, позволяет тестировщикам создавать и проводить ручные тесты для тех, кто не использует автоматизацию, и собирать результаты внешних тестов.

7. Интеграционное тестирование

Интеграционное тестирование предназначено для проверки связи между модулями (от 2х и более), а также взаимодействия с различными частями системы (операционной системой, оборудованием и т.д.).

8. Нагрузочное тестирование

Этот вид тестирования программного обеспечения проверяет производительность системы при нормальных условиях.

9. Нефункциональное тестирование

Нефункциональное тестирование проверяет соответствие свойств продукта его нефункциональным требованиям (производительность, доступность, надежность, удобство использования и т.д.), которые не учитываются при функциональном тестировании.

10. Тестирование производительности

Тестирование производительности проверяет скорость, стабильность, надежность, масштабируемость и использование ресурсов программного продукта при заданной рабочей нагрузке.

11. Регрессионное тестирование

Регрессионное тестирование программного обеспечения проводится для определения того, не нарушают ли модификации кода работу приложения и не расходуют ли ресурсы.

12. Sanity тестирование

Проводится после исправления ошибок и определяет, что ошибки исправлены и что эти изменения не вызвали новых проблем.

13. Тестирование безопасности

Тестирование безопасности позволяет выявить уязвимые места системы и убедиться в том, что программное обеспечение не подвержено никаким угрозам и рискам. Эти тесты направлены на обнаружение любых потенциальных недостатков, которые могут привести к потере данных, доходов и репутации сотрудников или клиентов компании.

14. Однопользовательское тестирование производительности

Однопользовательское тестирование производительности проверяет, что тестируемое приложение работает нормально в соответствии с заданным порогом без какой-либо нагрузки на систему. Этот показатель затем может быть использован для определения реалистичного порога при увеличении нагрузки.

15. Smoke тестирование

Этот вид тестирования программного обеспечения проводится в самом начале, после каждого нового билда. На этом этапе проверяется готовность продукта к проведению расширенного тестирования, определяется общее состояние качества продукта и подтверждается возможность выполнения приложением своих основных функций.

16. Стресс-тестирование

Стресс-тестирование – это тестирование программного обеспечения, в ходе которого проверяется работоспособность системы при экстремальных нагрузках.

17. Юнит-тестирование

Юнит-тестирование – это процесс проверки небольших фрагментов кода, позволяющий убедиться, что отдельные части программы работают правильно сами по себе, что ускоряет стратегии тестирования и сокращает количество тестов, проводимых впустую.

18. Тестирование “белого ящика

Тестирование методом “белого ящика” включает в себя проверку структуры, архитектуры и кода продукта с целью проверки потока ввода-вывода, улучшения дизайна, удобства использования и безопасности.

Ручное, автоматизированное и непрерывное тестирование

Существует три основных способа тестирования: ручное, автоматизированное и непрерывное. Давайте рассмотрим каждый из них подробнее.

Ручное тестирование – это наиболее практичный вид тестирования, который в той или иной степени используется каждой командой. Хотя, бесспорно, в современном быстро меняющемся жизненном цикле разработки программного обеспечения ручное тестирование сложно масштабировать.

В автоматизированном тестировании используются тестовые сценарии и специализированные инструменты для автоматизации процесса тестирования программного обеспечения.

Непрерывное тестирование идет еще дальше, применяя принципы автоматизированного тестирования масштабируемым и непрерывным образом для достижения наиболее надежного покрытия тестами для предприятия.

Виды ручного тестирования

Несмотря на важность автоматизированного тестирования в обеспечении высокого качества приложений при меньших временных и финансовых затратах, ручное тестирование по-прежнему играет очень важную роль в общем процессе проверки продукта.

Существует два основных типа ручного тестирования:

1. Тестирование “белого ящика

Тестирование методом “белого ящика” включает в себя тестирование структуры, архитектуры и кода продукта с целью проверки потоков ввода-вывода, улучшения дизайна, удобства использования и безопасности.

2. Тестирование методом “черного ящика

Тестирование методом “черного ящика” предполагает тестирование системы, в которой код и пути его реализации недоступны.

Чтобы максимально эффективно использовать ручное тестирование, важно проводить проверки в тех областях, где это действительно необходимо. Например, нельзя автоматизировать мнения конечного пользователя. Независимо от того, какой инструмент вы используете, практически невозможно определить поведение пользователей и их отношение к вашему продукту.

Поэтому ручное тестирование по-прежнему считается крайне необходимым в таких областях, как юзабилити-тестирование, бета-тестирование, A/B-тестирование и т.д.

Виды автоматизированного тестирования

Существует несколько видов автоматизированного тестирования, а также фреймворки и инструменты для их поддержки.

К наиболее популярным тестам, которые обычно автоматизируют, относятся:

Причина автоматизации этих тестов заключается в том, что все они выполняются на ранних этапах жизненного цикла разработки программного обеспечения (SDLC). Такой подход позволяет командам быстрее получать обратную связь и оперативно выявлять и решать проблемы.

С помощью стратегии автоматизации тестирования можно быстрее масштабировать тесты и увеличить процент покрытия для ускорения поставки продукта пользователям. Ускоренная поставка за счет масштабного тестирования в конечном итоге сэкономит организации деньги, ресурсы и время, обеспечив при этом лучший пользовательский опыт.

При выборе тестов для автоматизации нужно учитывать следующие факторы:

  • Большой объем и повторяемость. Автоматизация тестирования лучше всего подходит для трудоемких тестовых сценариев, которые команды должны выполнять многократно.
  • Детерминированные результаты. Результаты должны иметь относительно предсказуемые исходы, которые тестовый сценарий способен уловить.
  • Критические для бизнеса тесты. Автоматизация тестирования также полезна для сценариев, которые могут привести к прерыванию обслуживания или нанести ущерб бизнесу.

Примеры основных видов тестирования

Непрерывное тестирование

Непрерывное тестирование – это процесс проверки и устранения проблем и рисков программного обеспечения на каждом этапе цикла разработки.

Целью непрерывного тестирования является раннее и частое тестирование для минимизации бизнес-рисков и максимального повышения качества приложений, предоставляемых конечным пользователям.

Для достижения непрерывного тестирования существует несколько этапов, включая:

  • Стабильная автоматизация.
  • Полное покрытие.
  • Масштабируемость.

Регрессионное тестирование

Регрессионное тестирование является одним из основных видов тестирования программного обеспечения.

С его помощью можно убедиться в том, что обновления и изменения кода не оказывают негативного влияния на характеристики программного обеспечения.

Сегодня регрессионное тестирование жизненно необходимо, поскольку разработка приложений и программного обеспечения ведется постоянно. Это означает, что код меняется регулярно, и тестирование должно проводиться столь же последовательно.

Тестирование производительности

За последнее десятилетие тестирование производительности в Agile претерпело значительные изменения. Эволюция жизненного цикла разработки программного обеспечения подняла эту проверку на более сложную высоту.

Существует несколько типов тестирования производительности, но чаще всего под ним подразумевают нагрузочное и стресс-тестирование.

Нагрузочное тестирование означает проверку поведения системы путем измерения таких факторов, как отзывчивость, стабильность, масштабируемость, надежность, скорость и использование ресурсов. Оно позволяет определить, как ведет себя система при одновременной работе нескольких пользователей, а стресс-тестирование – как работает приложение при пиковой нагрузке.

С другой стороны тестирование производительности можно разделить на две практики:

  • Тестирование производительности для одного пользователя – охватывает все факторы, влияющие на работу конечного пользователя.
  • Многопользовательское нагрузочное тестирование – предполагает параллельное выполнение тестов на реальных устройствах в реальных сетях для измерения подлинного пользовательского опыта.

При успешном тестировании производительности можно заметить, что рост числа пользователей не влияет на время отклика приложения или количество ошибок.

Функциональное и нефункциональное тестирование

Функциональное тестирование включает в себя модульное, интеграционное и другие виды тестирования. Оно гарантирует, что приложение работает именно так, как и было задумано.

Также существует и нефункциональное тестирование.

Нефункциональное тестирование фокусируется на том, насколько хорошо работает приложение. В то время как функциональное тестирование фокусируется на том, выполняет ли продукт основные задачи, нефункциональное анализирует другие области, такие как удобство использования и надежность приложения.

К сожалению, иногда этот вид тестирования оставляют на конец жизненного цикла разработки. Если его пропустить или выполнить некачественно, то можно выпустить приложение с проблемами в UX и производительности, что негативно повлияет на репутацию продукта.

Нефункциональное тестирование также включает в себя тестирование доступности, безопасности, удобства использования и т.д.

Перевод статьи «Different Types of Testing in Software».

1 комментарий к “Типы тестирования”

  1. Пингбэк: Тест-кейсы для страницы входа в систему

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *