Верификация программного обеспечения. Виды тестирования

Содержание

Слайд 2

Agenda Классификация видов тестирования Agile Testing Quadrants Ещё несколько определений Практика

Agenda

Классификация видов тестирования
Agile Testing Quadrants
Ещё несколько определений
Практика

Слайд 3

Классификация видов тестирования: По знанию внутренностей системы По объекту тестирования По

Классификация видов тестирования:

По знанию внутренностей системы
По объекту тестирования
По субъекту тестирования
По времени

проведения тестирования
По критерию “позитивности” сценариев
По степени изолированности тестируемых компонент
По степени автоматизированности тестирования
По степени подготовленности к тестированию
Слайд 4

1. По знанию внутренностей системы Тестирование черного ящика (Black Box Testing)

1. По знанию внутренностей системы

Тестирование черного ящика (Black Box Testing)
Тестирование серого

ящика (Grey Box Testing)
Тестирование белого ящика (White Box Testing)
Слайд 5

1.1. Тестирование чёрного ящика Black Box (closed box, opaque box, behavioral)

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

Black Box (closed box, opaque box, behavioral) Testing
Тестировщик

производит тестирование, не имея информации о том, как устроена система изнутри
Идеи для тестирования идут от предполагаемого поведения пользователей
Слайд 6

1.2. Тестирование белого ящика White (Glass box, structural) Box Testing Противоположность

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

White (Glass box, structural) Box Testing
Противоположность методу

Черного ящика
Тестирование производится на основании информации, как устроена система изнутри
Обычно производится самими программистами
Слайд 7

1.3. Тестирование серого ящика Grey Box Testing Подход сочетает в себе

1.3. Тестирование серого ящика

Grey Box Testing
Подход сочетает в себе как белый,

так и черный ящики
Это информированное тестирование, ориентированное на пользователя
Слайд 8

2. По объекту тестирования Функциональное тестирование Тестирование пользовательского интерфейса Тестирование локализации

2. По объекту тестирования

Функциональное тестирование
Тестирование пользовательского интерфейса
Тестирование локализации
Тестирование скорости и надежности
Тестирование

безопасности
Тестирование удобства использования
Тестирование совместимости
Тестирование инсталляции
Тестирование документации
Слайд 9

2.1. Функциональное тестирование Один из процессов жизненного цикла программного продукта Проверяет

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

Один из процессов жизненного цикла программного продукта
Проверяет соответствие

реализованных функций требованиям и просто ожиданиям пользователя.
Проверяется каждая из функций приложения и все они в комплексе
Исследуются все сценарии использования
Слайд 10

2.1. Функциональное тестирование Преимущества функционального тестирования: имитирует фактическое использование системы; Недостатки

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

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

упущения логических ошибок в программном обеспечении;
вероятность избыточного тестирования.
Слайд 11

Non-functional testing Non-functional testing is the testing of a software application

Non-functional testing

Non-functional testing is the testing of a software application

for its non-functional requirements.
Non-functional testing includes:
Load testing
Localization testing
Performance testing
Recovery testing
Security testing
Usability testing
Слайд 12

2.2. Тестирование пользовательского интерфейса Для стандартных объектов UI Text box Text

2.2. Тестирование пользовательского интерфейса

Для стандартных объектов UI
Text box
Text area
Numeric field
Drop

down list
Combo box
Check box
Date field
существуют стандартные проверки… Какие?
Слайд 13

2.3. Тестирование локализации Тестирование локализации – это различные проверки, связанные с

2.3. Тестирование локализации

Тестирование локализации – это различные проверки, связанные с адаптацией

приложения для пользователей из других стран
Слайд 14

2.4. Тестирование скорости и надёжности Это тестирование для определения времени задержки

2.4. Тестирование скорости и надёжности

Это тестирование для определения времени задержки в

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

2.4. Тестирование скорости и надёжности Тестирование скорости и надежности можно разделить

2.4. Тестирование скорости и надёжности

Тестирование скорости и надежности можно разделить на:

Load testing
Stress testing
Performance testing
Volume testing
Stability testing
Слайд 16

Load testing A type of performance testing conducted to evaluate the

Load testing

A type of performance testing conducted to evaluate the behavior

of a component or system with increasing load, e.g. numbers of parallel users and/or numbers of transactions, to determine what load can be handled by the component or system.
Слайд 17

Stress testing A type of performance testing conducted to evaluate a

Stress testing

A type of performance testing conducted to evaluate a system

or component at or beyond the limits of its anticipated or specified work loads, or with reduced availability of resources such as access to memory or servers.
Слайд 18

Volume testing Задачей объемного тестирования является получение оценки производительности при увеличении

Volume testing

Задачей объемного тестирования является получение оценки производительности при увеличении объемов

данных в базе данных приложения.

/Performance testing

Слайд 19

Stability testing Задачей тестирования стабильности (надежности) является проверка работоспособности приложения при

Stability testing

Задачей тестирования стабильности (надежности) является проверка работоспособности приложения при длительном

(многочасовом) тестировании со среднем уровнем нагрузки.
Слайд 20

2.5. Тестирование безопасности Целью тестирования безопасности является определение правильности ограничения доступа

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

Целью тестирования безопасности является определение правильности ограничения доступа

к различным объектам системы согласно пользовательским правам
Слайд 21

Тестирование контроля доступа Тестирование авторизации пользователей Тестирование валидации ввода Тестирование надежности

Тестирование контроля доступа
Тестирование авторизации пользователей
Тестирование валидации ввода
Тестирование надежности

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

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

Слайд 22

2.6. Тестирование удобства использования Usability testing оценивает приложение с точки зрения

2.6. Тестирование удобства использования

Usability testing оценивает приложение с точки зрения конечного

пользователя и может включать в себя такие проверки как:
Человеческий фактор
Эстетика
Непротиворечивость пользовательского интерфейса
Онлайновая и контекстно-зависимая помощь
Пользовательская документация
Обучающие материалы
Слайд 23

Внешний вид экранов и меню, функций помощи, стиля иконок, расположение их

Внешний вид экранов и меню, функций помощи, стиля иконок, расположение их

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

2.6. Тестирование удобства использования

Слайд 24

2.6. Usability testing. Assessment efficiency accuracy recall emotional response

2.6. Usability testing. Assessment

efficiency
accuracy
recall
emotional response

Слайд 25

2.7. Тестирование совместимости Тестирование на совместимость (compatibility testing) проводится для проверки

2.7. Тестирование совместимости

Тестирование на совместимость (compatibility testing) проводится для проверки того,

что программный продукт работает без ошибок на конфигурациях с различными операционными системами, браузерами, почтовыми клиентами
Кроме того, может проверяться совместимость с hardware, etc.
Слайд 26

2.8. Инсталляционное тестирование Режимы инсталляционного тестирования (installation testing): Install Uninstall or

2.8. Инсталляционное тестирование

Режимы инсталляционного тестирования (installation testing):
Install
Uninstall or Remove
Modify (Add/Remove components)
Repair
Upgrade

Слайд 27

2.9. Тестирование документации Цель тестирования документации – определение, насколько точна, полна,

2.9. Тестирование документации

Цель тестирования документации – определение, насколько точна, полна, достоверна

и ясна документация, которая поставляется с ПП
Поставляемая документация:
Инструкция пользователя
Инструкция по установке
Help
И так далее …
Слайд 28

3. По субъекту тестирования Альфа-тестирование Проводится сотрудниками компании Бета-тестирование Вид тестирования,

3. По субъекту тестирования

Альфа-тестирование
Проводится сотрудниками компании
Бета-тестирование
Вид тестирования, который

производится обычно потенциальными пользователями (проверка в “боевых условиях”)
Слайд 29

4. По времени проведения тестирования Тест приемки (Smoke test) Тестирование новых

4. По времени проведения тестирования

Тест приемки (Smoke test)
Тестирование новых функций
Регрессионное тестирование
Тест

сдачи (acceptance test)
Maintenance testing
Слайд 30

Smoke test Короткий тест, проверяющий основную функциональность программного продукта и его

Smoke test

Короткий тест, проверяющий основную функциональность программного продукта и его работоспособность,

ограниченный по времени, по результатам которого ведущий инженер по тестированию принимает решение о приемке версии ПП на тестирование
Слайд 31

New feature testing Целью является проверка того, что новая функциональность работает корректно

New feature testing

Целью является проверка того, что новая функциональность работает корректно

Слайд 32

Regression testing Регрессионное тестирование – повторное проведение тестов для проверки того,

Regression testing

Регрессионное тестирование – повторное проведение тестов для проверки того,

что изменения, внесенные в программу, не повлияли на функционал, который не изменялся.
Не путать с retesting!
Слайд 33

Full regression test Полный регрессионный тест включает в себя все ранее

Full regression test

Полный регрессионный тест включает в себя все ранее уже

проверенное
Может проводится на этапе, когда продукт уже заявлен как готовый к поставке
Может включать в себя перепроверки ранее описанных багов
Слайд 34

Sanity testing Узконаправленное тестирование, достаточное для доказательства того, что конкретная функция

Sanity testing

Узконаправленное тестирование, достаточное для доказательства того, что конкретная функция работает

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

Acceptance testing Приёмо-сдаточное тестирование - это набор тестов, по которому осуществляется приемка продукта (возможно заказчиком)

Acceptance testing

Приёмо-сдаточное тестирование - это набор тестов, по которому осуществляется

приемка продукта (возможно заказчиком)
Слайд 36

Maintenance testing Тестирование системы во время ее эксплуатации

Maintenance testing

Тестирование системы во время ее эксплуатации

Слайд 37

5. По критерию позитивности сценариев Позитивное тестирование Негативное тестирование

5. По критерию позитивности сценариев

Позитивное тестирование
Негативное тестирование

Слайд 38

Позитивное тестирование Класс тестов, которые проверяют, что программа делает то, что должна делать (результатом ожидается УСПЕХ)

Позитивное тестирование

Класс тестов, которые проверяют, что программа делает то, что должна

делать (результатом ожидается УСПЕХ)
Слайд 39

Негативное тестирование Класс тестов, которые проверяют, что программа НЕ делает то,

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

Класс тестов, которые проверяют, что программа НЕ делает то, что

НЕ должна делать (ожидается НЕУСПЕХ в результате)
Слайд 40

6. По степени изолированности компонент Модульное тестирование (unit) Компонентное тестирование (component)

6. По степени изолированности компонент

Модульное тестирование (unit)
Компонентное тестирование (component)
Интеграционное тестирование

(integration)
Системное тестирование (system)
Слайд 41

Unit testing Тестирование на самом нижнем уровне (unit – часть исходного

Unit testing

Тестирование на самом нижнем уровне (unit – часть исходного кода,

которая не включает никаких вызываемых подпрограмм или функций). Выполняется в основном разработчиками
Слайд 42

Component testing Тестирование отдельных компонентов (модулей) общей системы

Component testing

Тестирование отдельных компонентов (модулей) общей системы

Слайд 43

Integration testing Тестируется взаимодействие отдельных модулей между собой (In the small)

Integration testing

Тестируется взаимодействие отдельных модулей между собой (In the small)

In the big – тестируется взаимодействие системы с внешним окружением
Слайд 44

Bottom Up Integration (снизу вверх) Top down integration (сверху вниз) “Big

Bottom Up Integration (снизу вверх)
Top down integration (сверху вниз)
“Big bang” integration

(большой взрыв)

Integration testing

Слайд 45

System testing Тестирование системы в целом для обнаружения общих системных багов,

System testing

Тестирование системы в целом для обнаружения общих системных багов,

таких как потеря ресурсов, синхронизация и временные проблемы, конфликты разделенных ресурсов.
Слайд 46

7. По автоматизированности системы Ручное Автоматизированное Смешанное\полуавтоматическое

7. По автоматизированности системы

Ручное
Автоматизированное
Смешанное\полуавтоматическое

Слайд 47

Ручное Выполняется без привлечения средств автоматизации Выполняется, обычно, по подготовленным тест кейсам

Ручное

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

Слайд 48

Автоматизированное тестирование Выполняется с использованием специализированных программных продуктов Требуется высокая квалификация тестировщиков и навыки программирования

Автоматизированное тестирование

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

тестировщиков и навыки программирования
Слайд 49

Смешанное/полуавтоматическое

Смешанное/полуавтоматическое

Слайд 50

8. По подготовленности к тестированию Тестирование по тест кейсам (documented testing) Интуитивное тестирование (ad hoc testing)

8. По подготовленности к тестированию

Тестирование по тест кейсам (documented testing)
Интуитивное тестирование

(ad hoc testing)
Слайд 51

Documented testing Тестирование по уже разработанной тестовой документации Выполняемые тесты определены заранее

Documented testing

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

Слайд 52

Ad hoc testing Тестирование может происходить без сценария, когда тестировщик бессистемно перебирает различные варианты работы системы

Ad hoc testing

Тестирование может происходить без сценария, когда тестировщик бессистемно

перебирает различные варианты работы системы
Слайд 53

Agile Testing Quadrants (ATQ)

Agile Testing Quadrants (ATQ)

Слайд 54

TDD

TDD

Слайд 55

Верификация (Verification) Верификация – процесс проверки того что любой созданный проектом

Верификация (Verification)

Верификация – процесс проверки того что любой созданный проектом артефакт

соответствует своим специфическим требованиям, т.е. проверяет что артефакт создан правильно
Целью верификации является достижение гарантии того, что верифицируемый объект (требования, документация или программный код) соответствует требованиям и удовлетворяет проектным спецификациям и стандартам.
Тестирование – один из методов верификации ПО
Основной результат верификации это Дефект
Слайд 56

Валидация (Validation) Валидация – процесс проверки того что продукт или его

Валидация (Validation)

Валидация – процесс проверки того что продукт или его компоненты

соответствует своему предполагаемому предназначению, находясь в предполагаемых условиях
Валидация проверяет, что создан правильный продукт, и в итоге проверяет соответствие продукта ожиданиям заказчика
Хорошо проведённое тестирование – обнаруживает несоответствия продукта ожидаемым потребностям пользователя
Основной результат валидирования – Улучшение или запрос на изменение
Слайд 57

Verification & Validation

Verification & Validation

Слайд 58

Практика Протестировать карандаш, распределить кейсы по видам тестирования.

Практика

Протестировать карандаш, распределить кейсы по видам тестирования.

Слайд 59

Классификация видов тестирования: По знанию внутренностей системы По объекту тестирования По

Классификация видов тестирования:

По знанию внутренностей системы
По объекту тестирования
По субъекту тестирования
По времени

проведения тестирования
По критерию “позитивности” сценариев
По степени изолированности тестируемых компонент
По степени автоматизированности тестирования
По степени подготовленности к тестированию