Вы находитесь на странице: 1из 27

skillup.com.

ua
Уровни и виды тестирования.
2.1. Уровни тестирования
2.2. Юнит тесты
2.3. Классификация и Виды тестирования

skillup.com.ua
Ad-hoc
Error Guessing
Exploratory testing
Регрессионное тестирование
2.1. Уровни тестирования

Тестирование на разных
уровнях производится на
протяжении всего жизненного
цикла разработки и

skillup.com.ua
сопровождения программного
обеспечения. Уровень
тестирования определяет то,
над чем производятся тесты:
над отдельным модулем,
группой модулей или системой,
в целом. Проведение
тестирования на всех уровнях
системы - это залог успешной
реализации и сдачи проекта.
Модульное (компонентное) тестирование
(Module testing, Component testing)

На данном уровне тестируются по отдельности небольшие

skillup.com.ua
элементы системы, максимально отделенные от других
элементов и, в то же время, пригодные для тестирования.
Такое тестирование обычно проводится сразу же вслед за
разработкой каждого из элементов и направлено на оценку
соответствия функциональности каждого из компонентов
спроектированной “модели компонентов”.
Интеграционное тестирование (Integration Testing)

● На данном уровне тестируются объединенные элементы


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

skillup.com.ua
элементов.
● Комплексное тестирование направлено не на проверку
взаимодействия компонентов в соответствии с
«Архитектурой системы».
● Тесты данного уровня обычно проверяют все интерфейсы
взаимодействия между компонентами, до тех пор, пока
все компоненты не будут разработаны, отлажены и
проинтегрированы друг с другом в единую систему.
Системное тестирование (System Testing)

Цель – проверить реализованы ли все функциональные и

skillup.com.ua
нефункциональные требования к разрабатываемой системе.

На данном уровне тестируется приложение целиком.

Системное тестирование выполняется при помощи имитации


действий пользователей над элементами этого интерфейса.
Приемочное тестирование (Acceptance Testing)

это тестирование готового продукта конечными


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

skillup.com.ua
Формальный процесс тестирования, который проверяет
соответствие системы требованиям и проводится с целью:
● определения удовлетворяет ли система приемочным
критериям;
● вынесения решения заказчиком или другим
уполномоченным лицом принимается приложение или
нет.
2.2. Юнит тесты

Модульное тестирование, или юнит-тестирование


(англ. unit testing) — процесс в программировании,
позволяющий проверить на корректность отдельные модули

skillup.com.ua
исходного кода программы.

Идея состоит в том, чтобы писать тесты для каждой


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

При переходе к гибким методологиям разработки возник


вопрос - как сделать каждую итерацию максимально
эффективной?

skillup.com.ua
Есть требование к продукту, его надо реализовать с
минимальными затратами времени и сил. Для этого
разработчику нужно четко представлять конечный результат
на языке программного кода. Один из вариантов такого
представления – модульные тесты, сердце TDD (Test driven
development - разработка через тестирование) .
Достоинства модульных тестов:

1. Лучше качество кода.

2. В случае TDD: ожидаемый результат выполнения кода.

3. Модульные тесты соответствуют бизнес-требованиям.

4. Возможность проводить рефакторинг без опасений “поломать”


работу приложения.

skillup.com.ua
5. Скорость нахождения багов.

6. Возможность тестирования базовой функциональности без UI.

7. Более удобная координация работы распределенной группы


программистов.

8. Модульные тесты служат дополнением к документации.

9. Точечная настройка производительности системы и


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

1. Временные затраты. Вместо написания кода, который можно


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

skillup.com.ua
2. Модульных тестов недостаточно для качественного
тестирования приложений. Ясно, что модульные тесты не
охватывают работу всей системы в целом.
3. Модульные тесты выполняются “в вакууме”, в стерильных
условиях. В реальной жизни код может валиться, скажем, из-за
проблем с производительностью, причем именно в том месте,
где, казалось бы, модульные тесты и не нужны.
4. Модульные тесты, как и любые другие, покажут наличие ошибок,
но не докажут их отсутствие.
skillup.com.ua
2.3. Классификация и Виды тестирования

skillup.com.ua
1. По запуску кода на исполнение:

● Статическое тестирование (Static Testing) — без


запуска кода. В рамках этого подхода тестированию

skillup.com.ua
могут подвергаться документы, графические прототипы,
код приложения и т.д.
● Динамическое тестирование (Dynamic Testing) —
тестирование с запуском кода на исполнение. Основная
идея состоит в том, что проверяется реальное поведение
(части) приложения.
2. По доступу к коду и архитектуре приложения:

Black box White box Grey box

skillup.com.ua
3. По степени автоматизации:

● Ручное тестирование (Manual Testing) — тест-кейсы


выполняет человек. Ручное тестирование – самый
низкоуровневый и простой тип тестирования, не требующих

skillup.com.ua
большого количества дополнительных знаний.
● Автоматизированное тестирование (Automated Testing) —
тест-кейсы частично или полностью выполняет специальное
инструментальное средство.
● Полуавтоматизированное (Partially automated). Один из
фундаментальных принципов тестирования гласит: 100%
автоматизация невозможна. Поэтому, ручное тестирование –
необходимость.
4. По уровню детализации приложения (по уровню
тестирования):

● Модульное (компонентное) тестирование (Module


testing, Component testing) — проверяются отдельные

skillup.com.ua
небольшие части приложения.
● Интеграционное тестирование (Integration Testing) —
проверяется взаимодействие между несколькими частями
приложения.
● Системное тестирование (System Testing) —
приложение проверяется как единое целое.
5. По принципам работы с приложением:

● Позитивное тестирование — все действия с


приложением выполняются строго по инструкции без

skillup.com.ua
никаких недопустимых действий, некорректных данных и
т.д.
● Негативное тестирование — в работе с приложением
выполняются (некорректные) операции и используются
данные, потенциально приводящие к ошибкам (классика
жанра — деление на ноль).
6. По степени подготовленности:

● Тестирование по документации
● Интуитивное тестирование (Ad-hoc)

skillup.com.ua
7. По объекту тестирования:

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


поведение и основывается на анализе спецификаций
функциональности компонента или системы в целом.
Функциональные тесты основываются на функциях, выполняемых
системой, и могут проводиться на всех уровнях тестирования. Как

skillup.com.ua
правило, эти функции описываются в требованиях, функциональных
спецификациях или в виде случаев использования системы (use
cases).
Преимущества функционального тестирования:
● имитирует фактическое использование системы;
Недостатки функционального тестирования:
● возможность упущения логических ошибок в программном
обеспечении;
● вероятность избыточного тестирования.
Функциональное тестирование (Functional testing) рассматривает
заранее указанное поведение и основывается на анализе
спецификаций функциональности компонента или системы в целом.

Тестирование безопасности (Security and Access Control Testing)


— это стратегия тестирования, используемая для проверки
безопасности системы, а также для анализа рисков, связанных с

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

Тестирование взаимодействия (Interoperability Testing) — это


функциональное тестирование, проверяющее способность
приложения взаимодействовать с одним и более компонентами или
системами и включающее в себя тестирование совместимости
(compatibility testing) и интеграционное тестирование (integration
testing).
Нефункциональное (non-functional testing)

skillup.com.ua
Нефункциональное тестирование описывает тесты, необходимые
для определения характеристик программного обеспечения,
которые могут быть измерены различными величинами.
В целом, это тестирование того, "Как" система работает.
● Все виды тестирования производительности:
○ нагрузочное тестирование (Performance and Load
Testing)
○ стрессовое тестирование (Stress Testing)
тестирование стабильности или надежности

skillup.com.ua
(Stability / Reliability Testing)
○ oбъемное тестирование (Volume Testing)

● Тестирование установки (Installation testing) —


направлено на проверку успешной инсталляции и
настройки, а также обновления или удаления
программного обеспечения.
● Тестирование удобства пользования (Usability Testing) —
установление степени удобства использования, обучаемости,
понятности и привлекательности для пользователей
разрабатываемого продукта в контексте заданных условий. [ISO
9126]
● Тестирование на отказ и восстановление (Failover and

skillup.com.ua
Recovery Testing) — способность противостоять и успешно
восстанавливаться после возможных сбоев, возникших в связи с
ошибками программного обеспечения, отказами оборудования
или проблемами связи (например, отказ сети).
● Конфигурационное тестирование (Configuration Testing) —
проверка работы программного обеспечения при различных
конфигурациях системы (заявленных платформах, при
различных конфигурациях компьютеров и т.д.)
Связанные с изменениями виды тестирования:

● Дымовое тестирование (Smoke Testing, Build Verification


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

skillup.com.ua
прогон программы (после написания или после внесения
существенных изменений). Как правило, используется для
определения, готова ли программа для проведения более
обширного тестирования.
● Санитарное тестирование или проверка
согласованности/исправности (Sanity Testing) — это
узконаправленное тестирование достаточное для
доказательства того, что конкретная функция работает согласно
заявленным в спецификации требованиям
skillup.com.ua
● Регрессионное тестирование (Regression Testing)

Тестирование, направленное на проверку того факта, что в ранее


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

skillup.com.ua
используется практически в любом проекте.

● Повторное тестирование (Re-testing, Confirmation testing)

Выполнение тест-кейсов, которые ранее обнаружили дефекты, с


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