902.62K
Category: softwaresoftware

Тестирование ПО: Цели, этапы, виды тестирования

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
- Может выполняться автоматически

12.

Ваши вопросы

13.

Всем спасибо за внимание!
English     Русский Rules