Similar presentations:
Тестирование ПО: Цели, этапы, виды тестирования
1.
Тестирование ПОЦели, этапы, виды тестирования
Интенсив по профессии “Тестировщик” от @yakorqa
2.
План занятия1.
2.
3.
4.
5.
Что такое тестирование
Основные этапы тестирования ПО
Принципы тестирования
Классификация тестирования
Виды тестирования
3.
Что такое тестирование?Тестирование – процесс проверки ПО на соответствие требованиям с целью повышения
качества продукта.
Цели тестирования:
Предоставить гарантии того, что продукт работает как задумано
Добавить уверенности в качестве продукта
Обнаружить и исправить дефекты до выпуска продукта
Оптимизировать затраты на исправление дефектов
Снизить риск сбоев и негативных отзывов после релиза
4.
Основные этапы тестирования ПО1.
2.
3.
4.
5.
6.
7.
Анализ требований
Планирование тестирования
Написание тестовой документации
Настройка тестовой среды
Выполнение тестов
Анализ результатов прогонов и
подготовка отчетности
Завершение тестирования
5.
Принципы тестирования1.
2.
3.
4.
5.
6.
7.
Невозможно протестировать все – проверить все возможные сценарии невозможно,
поэтому тесты выбираются по приоритету.
Тестирование показывает наличие ошибок, но не их отсутствие — успешные тесты не
гарантируют, что багов нет
Раннее тестирование экономит ресурсы — ошибки легче исправлять на ранних этапах
разработки
Скопление дефектов — большинство ошибок сосредоточены в небольшом числе модулей
Парадокс пестицида — одни и те же тесты со временем перестают находить новые
ошибки, их нужно обновлять
Тестирование зависит от контекста — методы выбираются в зависимости от типа продукта и
требований
Отсутствие ошибок не значит готовность продукта — важно учитывать и нефункциональные
требования, например, удобство и производительность
6.
Классификациявидов
тестирования
7.
Виды тестированияФункциональное тестирование:
Проверка функций, которые ПО должно
выполнять. Проверка, что система работает
так, как заявлено в требованиях
Нефункциональное тестирование:
Проверка способа работы системы, свойств, которые
не относятся к функциональности системы. Данные
свойства определяются нефункциональными
требованиями, которые характеризуют
производительность с таких сторон, как надёжность,
производительность, удобства использования,
безопасность и т.д
Тестирование, связанное с изменениями (эксплуатационное тестирование):
Проверка изменений, которые были внесены в программное обеспечение или компоненты и
как они влияют на всю систему
8.
Функциональное тестированиеПо способу выполнения:
По уровню тестирования:
● Ручное тестирование — тестировщик вручную проверяет
работу программы.
● Автоматизированное тестирование — тесты выполняются с
помощью специальных программ и скриптов
● Полуавтоматизированное — основная часть тестирования
выполняется вручную, но с частичным использованием
средств автоматизации
● Модульное (Unit Testing) – проверка отдельных
компонентов кода (функций, классов).
● Интеграционное (Integration Testing) – тестирование
взаимодействия модулей между собой.
● Системное (System Testing) – проверка всей системы в
целом.
● Приемочное (Acceptance Testing) – тестирование на
соответствие требованиям заказчика (UAT, Alpha/Beta).
По стадии тестирования:
● Статическое тестирование — анализ документации, кода и
других артефактов без запуска программы.
● Динамическое тестирование — проверка работы программы в
действии
По доступу к коду:
● Тестирование белого ящика — тестировщик имеет доступ к
исходному коду.
● Тестирование чёрного ящика — тестировщик работает только
с внешним интерфейсом программы.
● Тестирование серого ящика — частичный доступ к коду и
внутренней логики
По степени подготовленности:
● Формальное – по документации/тестам
● Ad-hoc – интуитивное, свободное тестирование, без
подготовки, ожидаемых результатов, без проектирования
тест-кейсов
● Исследовательское (exploratory) тестирование – изучение
ПО, проектирование тестов и их выполнение,
предполагает, что каждый следующий тест вытекает из
предыдущего
9.
Нефункциональное тестированиеТестирование установки - проверка успешной установки приложения, его настройки и удаления.
Снижает риски потери пользовательских данных, потери работоспособности приложения и тд
Тестирование удобства использования (usability testing) — характеризует систему с точки зрения
конечного пользователя, насколько удобно пользоваться системой
Конфигурационное тестирование (тестирование портируемости) — исследование
работоспособности программного обеспечения в условиях различных программных
конфигураций
Тестирование локализации — проверка языков, переводов, формата дат, соответствие
нормативным актам страны
Тестирование производительности - набор типов тестирования, направленное на воссоздание
пользовательских запросов и сравнение ожидаемых результатов с полученными
показателями.
проводится после функционального тестирования и всегда автоматизировано.
Тестирование безопасности — комплекс исследований программного обеспечения,
направленный на тестирование, обнаружение и исправление дефектов, связанных с
сохранностью пользовательских данных
10.
Нефункциональное тестированиеТестирование производительности разделяют на
● Нагрузочное тестирование (loadtesting) — оценивается
поведение системы при возрастании нагрузки для
определения максимума, при котором будет работать
система
● Тестирование стабильности (stability testing) — проверка на
длительном интервале времени, нагрузка может быть не
пиковая.
● Тестирование на отказ и восстановление (failover&recovery
testing) — проверка, как система будет вести себя при
отказе, сбое, как восстановится после снижения нагрузки
на него
● Стресс-тестирование (stress testing) — работоспособность
приложения при нагрузках превышающие
пользовательские в несколько раз. Оценка
производительности системы при пороговых значениях
нагрузки или за ее пределами (граничные значения) при
изменении доступных ресурсов (времени, памяти и тд)
● Объемное тестирование (volume testing) — оценивается
поведение программы при увеличении объемов данных
в базе
Тестирование безопасности направлено на тестирование:
1. Целостности — ограничение круга
пользователей, имеющий доступ к данным,
определенной степени вреда при потери тех или иных
данных
- Доверие — ожидается, что
изменения будут вноситься только определенная
группа пользователей определенным образом
- Повреждение и
восстановление — определяет на сколько важным
является процедура восстановления, если данные
меняются неправильно (повреждаются
пользователями)
2. Доступности — ресурсы должны быть
доступными авторизированным пользователям, чем
критичнее данные, тем выше уровни доступа
3. Конфиденциальности — сокрытие
определенных ресурсов или информации
(разграничении доступов)
Тестирование безопасности используется для проверки
безопасности системы, а также анализа рисков,
обеспечения защиты приложения, хакерских атак,
вирусов и тд
11.
Эксплуатационное тестирование● Регрессионное (regression) тестирование - то, что работало раньше, продолжает работать и
сейчас. Проверяется вся система
● Санитарное (sanity) тестирование - проверяется, что определенные части работают после
исправления минорных багов и внесения минорных изменения
Цель — проверить общее состояние системы в деталях, чтобы приступить к более тщательному
тестированию.
Ключевые аспекты:
- Проверка дефектов не является частью sanity тестирования.
- Выполняется перед регрессионным и после smoke.
- Выполняется вручную
- Может выполняться без тест-кейсов, но знание программы обязательно
● Дымовое (smoke) тестирование - проверяется, что критически важный функционал работает как
ожидается.
Цель — проверить стабильность системы в целом, чтобы начать более подробное тестирование.
Ключевые аспекты:
- Перепроверка найденных дефектов не входит в smoke
- Может выполняться автоматически
software