Виды тестирования :
- Функциональные (проверяем как работает)
- Нефункциональные (проверяем характеристики)
-
Связанные с изменениями (проверяем как ведёт себя система
после внесения изменений, т.е. после того, как внесли изменения в
код)
Функциональные виды тестирования
Функциональные тесты базируются на функциях и особенностях, а
также взаимодействии с другими системами, и могут быть представлены на
всех уровнях тестирования: компонентном или модульном, интеграционном,
системном и приемочном. Также к функциональному тестированию относится
тестирование безопасности.
Уровни Тестирования :
- Модульное тестирование
- Интеграционное тестирование
- Системное тестирование
- Приемочное тестирование
-
Модульное тестирование -
Компонентное(модульное) тестирование проверяет
функциональность и ищет дефекты в частях приложения, которые
доступны и могут быть протестированы по-отдельности.
(Модули - это части нашего приложения, такие как: аватар,
комментарий, сообщение, лайк и т.д. Приложение состоит из кучи
модулей. Модули можно представить как пазлы)
-
Интеграционное тестирование - Проверяем взаимодействие между
компонентами внутри системы, так и со сторонними системами(другими
сайтами):
Список больниц определяется выбранным диагнозом на предыдущей
вкладке(интеграция между компонентами системы).
Расположение больницы на карте(интеграция с Яндекс-картой).
Курсы валют на главной странице Яндекса(интеграция с биржей).
Интеграцию между компонентами можно представить как несколько
пазлов, образующих какую-то картинку.
-
Системное тестирование - Это тестирование программного
обеспечения выполняемое на полной, интегрированной системе, с целью
проверки соответствия системы исходным требованиям, как
функциональным, так и не функциональным.
При этом выявляются дефекты, такие как неверное использование
ресурсов системы, несовместимость с окружением, отсутствующая или
неверная функциональность, неудобство использования и т.д.
(Системное тестирование - это когда все пазлы собраны в единое
целое).
-
Приемочное тестирование - Формальный процесс тестирования,
который проверяет соответствие системы требованиям и проводится с
целью:
• определения удовлетворяет ли система приемочным критериям;
• вынесения решения заказчиком или другим уполномоченным лицом
принимается приложение или нет.
Это финальный этап тестирования продукта перед его релизом. При
этом, он не является сверх тщательным – тестируется, в основном,
только основной функционал.
Тестирование безопасности - это стратегия тестирования,
используемая для проверки безопасности системы.
Нефункциональные виды тестирования
Нефункциональное тестирование описывает тесты, необходимые для
определения характеристик программного обеспечения, которые могут быть
измерены различными величинами. В целом, это тестирование того, "Как"
система работает.
Виды нефункциональных тестов :
-
Все виды тестирования производительности :
-
Нагрузочное тестирование — это автоматизированное
тестирование, имитирующее работу определенного количества
пользователей на каком-либо ресурсе.
-
Стрессовое тестирование - позволяет проверить насколько
приложение и система в целом работоспособны в условиях стресса,
т.е. повышение интенсивности выполнения операций до очень
высоких значений или аварийное изменение конфигурации сервера.
-
Тестирование стабильности или надежности - проверка
работоспособности приложения при длительном тестировании со
средним уровнем нагрузки.
-
Тестирование на отказ и восстановление - проверяет
тестируемый продукт с точки зрения способности противостоять и
успешно восстанавливаться после возможных сбоев, возникших в связи с
ошибками программного обеспечения, отказами оборудования или
проблемами связи (например, отказ сети)
-
Тестирование пользовательского интерфейса(UI - User Interface)
- соответствие интерфейса приложения(сайта), которые сделал
разработчик макетам, сделанным дизайнером интерфейсов
-
Тестирование удобства пользования(UX - User Experience) -
характеризует систему с точки зрения удобства использования
конечного пользователя.
Это метод тестирования, направленный на установление степени
удобства использования, понятности и привлекательности для
пользователей разрабатываемого продукта в контексте заданных
условий.
Связанные с изменениями виды тестирования
Связанные с изменениями виды тестирования - после проведения
необходимых изменений, таких как исправление бага/дефекта, программное
обеспечение должно быть пере тестировано для подтверждения того факта,
что проблема была действительно решена.
К связанным с изменениями относятся :
- Дымовое(Smoke) тестирование
- Санитарное тестирование
- Регрессионное тестирование
-
Дымовое(Smoke) тестирование рассматривается как короткий цикл
тестов, выполняемый для подтверждения того, что после сборки кода
(нового или исправленного) устанавливаемое приложение, стартует и
выполняет основные функции.
Вывод о работоспособности основных функций делается на основании
результатов поверхностного тестирования наиболее важных модулей
приложения на предмет возможности выполнения требуемых задач и
наличия быстро находимых критических и блокирующих дефектов. В
случае отсутствия таковых дефектов дымовое тестирование объявляется
пройденным, и приложение передается для проведения полного цикла
тестирования, в противном случае, дымовое тестирование объявляется
проваленным, и приложение уходит на доработку.
Для облегчения работы, экономии времени и человеческих ресурсов
используется автоматизация тестовых сценариев для дымового
тестирования. (Проверяются наиболее важные модули, например,
регистрация, авторизация, поиск, подписка, загрузка аватара,
отправление сообщений, лайк, комментарий и т.п. Проверяем на предмет
работы используя позитивные проверки, т.е. действуя по
требованиям(если в требованиях написано, что на аватар можно
загрузить картинку не более 10 Мб, то мы грузим картинку не более 10
Мб и выполняем проверку следующего модуля)).
-
Санитарное тестирование — это узконаправленное тестирование
достаточное для доказательства того, что конкретная функция работает
согласно заявленным в спецификации требованиям. Используется для
определения работоспособности определенной части приложения после
изменений, произведенных в ней или окружающей среде. Обычно
выполняется вручную.
(Т.е. мы концентрируемся на одном компоненте и тестируем только его,
например, проверяем только аватар. По требованиям на аватар можно
загрузить изображение не более 10 Мб. Сначала мы грузим картинку png
не более 10 Мб и убеждаемся что она загрузилась. Далее картинку jpeg
не более 10 Мб и убеждаемся что и она загрузилась. Далее картинку
более 10 Мб и убеждаемся что она не загрузится. После грузим
отличные от картинки файлы: docx, gif, mp3 и т.д.)
Отличие санитарного тестирования от дымового
Эти виды тестирования имеют "вектора движения", направления в разные
стороны. В отличии от дымового, санитарное тестирование направлено
вглубь проверяемой функции(т.е. мы концентрируемся на одном
компоненте и тестируем только его), в то время как дымовое
направлено вширь(т.е. мы проверяем различные компоненты: ,
регистрация, авторизация, поиск, подписка, загрузка аватара,
отправление сообщений, лайк, комментарий и т.п.)
-
Регрессионное тестирование — это вид тестирования,
направленный на проверку изменений, сделанных в приложении, для
подтверждения того факта, что существующая ранее функциональность
работает, как и прежде.
Таким образом, мы можем сказать, что цель регрессионного
тестирования – убедиться, что исправление одних багов не стало
причиной возникновения других и что внесение изменений в код не
создало новых дефектов в уже проверенном коде.
Как правило, для регрессионного тестирования используются
тест-кейсы, написанные на ранних стадиях разработки и тестирования.
Это дает гарантию того, что изменения в новой версии приложения не
повредили уже существующую функциональность. Рекомендуется делать
автоматизацию регрессионных тестов, для ускорения последующего
процесса тестирования и обнаружения дефектов на ранних стадиях
разработки программного обеспечения.
Хорошей практикой является выбор таких тестов для регрессионного
тестирования:
- проверяющие часто используемые функции,
- проверяющие основные функций приложения,
- проверяющие функции, которые затронули недавние изменения в
коде,
- проверяющие граничные значения.
Методики тестирования
-
Black-box(Чёрный ящик)Проверка «черного ящика» – это метод
тестирования программного обеспечения, при котором функциональность
исследуется без рассмотрения кода, деталей реализации и знаний о
внутреннем устройстве программного обеспечения.
При данной стратегии тестировщик осуществляет проверку продукта, не
имея информации об особенностях его реализации, используя только
интерфейс. Метод имитирует поведение пользователя, у которого нет
никаких знаний о внутреннем устройстве программы.
-
White-box(Белый ящик)Проверка «белого ящика» – это метод
тестирования программного обеспечения, который предполагает, что
внутренняя структура, устройство и реализация системы известны
тестировщику.
Тестировщик имеет доступ к реализованному коду, тестовой
документации, изучает их и получает всю необходимую информацию, как
должен работать продукт. Как правило, таким видом тестирования на
проектах занимаются сами программисты.
-
Gray-box(Серый ящик)Проверка «серого ящика» – это метод
тестирования программного продукта или приложения с частичным
знанием его внутреннего устройства. Для выполнения тестирования
«серого ящика» нет необходимости в доступе тестировщика к исходному
коду. Тесты пишутся на основе знания алгоритма, архитектуры,
внутренних состояний или других высокоуровневых описаний поведения
программы.