Слайд 1Тестирование
программного обеспечения
- Введение в автоматизацию тестирования(АТ) ПО -
Василий Корпусов
СПБ
2020 г.
Слайд 2Василий Корпусов
Test Automation Engineer, Bercut ltd
Автоматизировал 700+ ручных тест-кейсов
Аспирант кафедры
«Автоматизация предприятий связи», СПБГУТ им. Бонч-Бруевича
Слайд 3План
История развития тестирования
Процесс тестирования(тестировщик, уровни, виды и типы тестирования)
Автоматизированное тестирование(автоматизатор)
Подходы
к АТ
Области применения АТ
Преимущества и недостатки АТ
Навыки и умения
Слайд 4Источники
ISTQB (International Software Testing Qualifications Board) - https://www.rstqb.org/ru/istqb-downloads.html
ГОСТ Р 56922-2016/ISO/IEC/IEEE
29119-1:2013 Системная и программная инженерия. Тестирование программного обеспечения. Часть 1-3
- http://docs.cntd.ru/document/1200134996,
Слайд 5Введение
„Тестирование программы может весьма эффективно продемонстрировать наличие ошибок, но оно
не демонстрирует их отсутствие.“
Эдсгер Вибе Дейкстра, Ученый-информатик, сооснователь структурного программирования
Слайд 6История: Появление процесса тестирования ПО
Первые программы разрабатывались для МО
Строго формализованное
тестирование
Отдельный процесс тестирование
Слайд 7Тестирование в 1960-х
В 1960-х много внимания уделялось «исчерпывающему» тестированию, которое
должно проводиться с использованием всех путей в коде или всех
возможных входных данных
Слайд 8Тестирование в 1970-х
В начале 1970-х тестирование ПО обозначалось как «процесс,
направленный на демонстрацию корректности продукта»
Слайд 9Тестирование в 1980-х
В 1980-х тестирование расширилось таким понятием, как предупреждение
дефектов
В середине 1980-х появились первые инструменты для автоматизированного тестирования
Слайд 10Тестирование в 1990-х
В начале 1990-х переход от тестирования к обеспечению
качества, охватывающего весь цикл разработки ПО
В середине 1990-х с
развитием Интернета и разработкой большого количества веб-приложений особую популярность стало получать «гибкое тестирование»
Слайд 11Тестирование в 2000-х
В 2000-х появилось еще более широкое определение тестирования,
когда в него было добавлено понятие «оптимизация бизнес-технологий» (en:business technology
optimization, BTO). BTO направляет развитие информационных технологий в соответствии с целями бизнеса.
Слайд 12Testing - Quality Control – Quality Assurance
TESTING
(detection)
QC
(verification & Validation)
QA
(bugs prevention)
Проверка
ПО,
поиск ошибок, дефектов , багов
+ Работа на предотвращение багов и
улучшения качества
+ Анализ полученных результатов
Слайд 13Software Testing
Software Testing (тестирование ПО) — процесс исследования, испытания программного
продукта, имеющий своей целью проверку соответствия между реальным поведением программы
и её ожидаемым поведением на конечном наборе тестов, выбранных определённым образом (ISO/IEC TR 19759:2005)
Слайд 14Quality Control
Quality Control (контроль качества) — это процесс нахождения ошибок
в продукте, с целью их последующего исправления.
Задачей Quality Control
является поддержка качества продукта в текущий момент времени.
Слайд 15Quality Assurance
Quality Assurance (обеспечение качества) — это превентивный процесс, задачей
которого является обеспечение качества продукта в будущем.
Слайд 16Тестировщик – QA/QC Engineer
Тестировщик (tester) – это опытный специалист, принимающий
участие в тестировании компонента или системы. [ISTQB Glossary]
Слайд 17Уровни тестирования
UNIT TESTING
INTEGRATION TESTING
SYSTEM TESTING
ACCEPTANCE TESTING
Слайд 18Unit Testing
Модульное(компонентное) тестирование - тестирование отдельных компонентов программного обеспечения. [Согласно
IEEE 610]
Слайд 19Integration Testing
Интеграционное тестирование - тестирование, выполняемое для обнаружения дефектов в
интерфейсах и во взаимодействии между интегрированными компонентами или системами. [ISTQB
Glossary]
Component Integration Testing (компонентное тестирование)
System Integration Testing (Системное тестирование)
Слайд 20System Testing
Системное тестирование - процесс тестирования системы в целом с
целью проверки того, что она соответствует установленным требованиям. [ISTQB Glossary]
Alpha
Testing
(альфа тестирование)
Beta Testing
(бета тестирование)
Слайд 21Acceptance Testing
Приёмочное тестирование - проводится с целью определения соответствия системы
критериям приёмки и дать возможность пользователям, заказчикам или иным авторизированым
лицам определить, принимать систему или нет. [Согласно IEEE 610]
Слайд 23По объекту тестирования
Functional testing
GUI testing
Localization testing
Performance testing
Security testing
Usability testing
Compatibility
testing
Слайд 24Functional Testing
Функциональное тестирование - тестирование, основанное на анализе спецификации функциональности
компонента или системы. [ISTQB Glossary]
Проводится в двух аспектах:
Требования
Бизнес-процессы
Слайд 25По объекту тестирования
Functional testing
GUI testing
Localization testing
Performance testing
Security testing
Usability testing
Compatibility
testing
Слайд 26GUI Testing
Тестирование пользовательского интерфейса – функциональная проверка интерфейса на соответствие
требованиям(размер, шрифт, цвет и т.д.).
Слайд 27По объекту тестирования
Functional testing
GUI testing
Localization testing
Performance testing
Security testing
Usability testing
Compatibility
testing
Слайд 28Localization Testing
Тестирование локализации - это процесс тестирования локализованной версии программного
продукта. [ISTQB Glossary]
Слайд 29По объекту тестирования
Functional testing
GUI testing
Localization testing
Performance testing
Security testing
Usability testing
Compatibility
testing
Слайд 30Performance Testing
Performance
Testing
Stability
Scalability
Volume
Stress
Load
Recovery
Слайд 31По объекту тестирования
Functional testing
GUI testing
Localization testing
Performance testing
Security testing
Usability testing
Compatibility
testing
Слайд 32Security Testing
Тестирование безопасности - тестирование с целью оценить защищенность программного
продукта. [ISTQB Glossary]
Слайд 33По объекту тестирования
Functional testing
GUI testing
Localization testing
Performance testing
Security testing
Usability testing
Compatibility
testing
Слайд 34Usability Testing
Тестирование удобства пользования - тестирование с целью определения степени
понятности, легкости в изучении и использовании, привлекательности программного продукта для
пользователя. [ISO 9126]
Слайд 35По объекту тестирования
Functional testing
GUI testing
Localization testing
Performance testing
Security testing
Usability testing
Compatibility
testing
Слайд 36Compatibility Testing
Тестирование совместимости - процесс тестирования для определения возможности взаимодействия
программного продукта. [ISTQB Glossary]
Обратная совместимость
Прямая совместимость
Слайд 37По запуску кода на исполнение
Static testing
(статическое тестирование)
Dynamic testing
(динамическое тестирование)
Слайд 38По доступу к коду
Black box
(system test)
Grey box
(integration testing)
White box
(unit testing)
Слайд 39По степени автоматизации
Manual testing
Automated testing
Semi automated testing
Слайд 40По степени автоматизации
Manual testing
Automated testing
Semi automated testing
Слайд 41По степени автоматизации
Manual testing
Automated testing
Semi automated testing
Слайд 42Связанное с изменениями
Build Verification Test
Smoke Testing
Sanity Testing
Regression Testing
Слайд 43Связанное с изменениями
Build Verification Test
Smoke Testing
Sanity Testing
Regression Testing
Слайд 44Связанное с изменениями
Build Verification Test
Smoke Testing
Sanity Testing
Regression Testing
Слайд 45Связанное с изменениями
Build Verification Test
Smoke Testing
Sanity Testing
Regression Testing
Слайд 46По признаку позитивности сценариев
Positive testing
Negative testing
Слайд 47По признаку позитивности сценариев
Positive testing
Negative testing
Слайд 49Тестирование без плана
Ad hoc testing(свободное тестирование)
Exploratory testing(исследовательское тестирование)
Слайд 50Типы тестирования
Smoke test
Critical path test
Extended test
Слайд 51Smoke test
Пример Smoke-теста для калькулятора:
Ввести число
Выбрать функцию(сложение, вычитание, умножение и
т.д.)
Ввести второе число
Нажать на равно
Убедиться в наличии ответа
Слайд 52Типы тестирования
Smoke test
Critical path test
Extended test
Слайд 53Critical path test
Примеры шагов критического теста для тестирования калькулятора:
Проверка сложения,
умножения, деления и т.д.
Деление на ноль
Оставить пустым
Специальные символы
Ноль вначале, без
разделяющего символа
Пробелы
Ноль после разделяющего символа для десятичных значений
И т.д.
Слайд 54Типы тестирования
Smoke test
Critical path test
Extended test
Слайд 55Extended test
Примеры шагов расширенного теста для тестирования калькулятора:
Нажатие нескольких кнопок
подряд (сначала сложение, потом вычитание)
Вычисление результата уравнения
И т.д.
Слайд 56Test Automation
Автоматизация тестирования (test automation): Использование программного обеспечения для осуществления
или помощи в проведении определенных тестовых процессов, например, управление тестированием,
проектирование тестов, выполнение тестов и проверка результатов. [ISTQB Glossary]
Слайд 57Из чего состоит автоматизация?
Автотесты (скрипты)
Система запуска
Анализ результатов
Слайд 58Когда необходима автоматизация?
Масштабное приложение с большим количеством бизнес-функций
Значительный срок жизни
приложения (от 1 года и более)
Внедрение CI/CD, регулярные релизы +
небольшое количество QA специалистов
Слайд 59Концепция непрерывной интеграции и доставки(CI/CD)
Слайд 60Зачем нужна автоматизация?
Решение рутинных задач
Ускорение выполнения тестирования
Уменьшение затрат на ручное
тестирование
Увеличение тестового покрытия
Слайд 61Тестировщик-Автоматизатор
Разработка
Тестирование
«Типичный Автоматизатор — хитрец. Он сделает все для того, чтобы не делать одно
и то же несколько раз».
Слайд 62Плюсы автоматизации
Неутомимость
Скорость
Многофункциональность
Масштаб
Экономия сил
Экономия средств
Слайд 69Минусы автоматизации
Поломки
Близорукость
Трудно поддерживать
Не везде применимы
Затратность
Слайд 77Когда автоматизировать?
Regression testing
Performance testing
Compatibility testing
Unit testing
Smoke testing
Security testing
GUI testing
Слайд 78Automated Regression Testing
Какую проблему решает автоматизация регрессионного тестирования?
Необходимость выполнять вручную
тесты, количество которых неуклонно растёт с каждым билдом, но вся
суть которых сводится к проверке того факта, что ранее работавшая функциональность продолжает работать корректно.
Слайд 79Когда автоматизировать?
Regression testing
Performance testing
Compatibility testing
Unit testing
Smoke testing
Security testing
GUI testing
Слайд 80Automated Performance Testing
Какую проблему решает автоматизация производительности?
Создание нагрузки с интенсивностью
и точностью, недоступной человеку.
Сбор с высокой скоростью большого набора
параметров работы приложения.
Анализ большого объёма данных из журналов работы системы автоматизации.
Слайд 81Когда автоматизировать?
Regression testing
Performance testing
Compatibility testing
Unit testing
Smoke testing
Security testing
GUI testing
Слайд 82Automated Compatibility Testing
Какую проблему решает автоматизация тестирования совместимости?
Выполнение одних и
тех же тест-кейсов на большом множестве входных данных, под разными
платформами и в разных условиях.
Слайд 83Когда автоматизировать?
Regression testing
Performance testing
Compatibility testing
Unit testing
Smoke testing
Security testing
GUI testing
Слайд 84Automated Unit Testing
Какую проблему решает автоматизация модульного тестирования?
Проверка корректности работы
атомарных участков кода и элементарных взаимодействий таких участков кода —
практически невыполнимая для человека задача при условии, что нужно выполнить тысячи таких проверок и нигде не ошибиться.
Слайд 85Когда автоматизировать?
Regression testing
Performance testing
Compatibility testing
Unit testing
Smoke testing
Security testing
GUI testing
Слайд 86Automated Smoke Testing
Какую проблему решает автоматизация smoke тестирования?
Выполнение при получении
каждого билда большого количества достаточно простых тест-кейсов необходимых для проверки
работоспособности приложения.
Слайд 87Когда автоматизировать?
Regression testing
Performance testing
Compatibility testing
Unit testing
Smoke testing
Security testing
GUI testing
Слайд 88Automated Security Testing
Какую проблему решает автоматизация тестирования безопасности?
Необходимость проверки прав
доступа, паролей по умолчанию, открытых портов, уязвимостей текущих версий ПО
и т. д., т. е. быстрое выполнения очень большого количества проверок, в процессе которого нельзя что-то пропустить, забыть или «не так понять».
Слайд 89Когда автоматизировать?
Regression testing
Performance testing
Compatibility testing
Unit testing
Smoke testing
Security testing
GUI testing
Слайд 90Automated GUI Testing
Какую проблему решает автоматизация тестирования пользовательского интерфейса?
Автоматизация предельно
рутинных действий (например, проверить покупку всех товаров в интернет-магазине).
Слайд 92Необходимые знания и навыки
Сочетание программирования и тестирования в автоматизации:
Автоматизация тестирования
Программирование
Тестирование
Слайд 94Связь со мной
Телеграмм: @korpusovv
Почта: korpusov.vd@yandex.ru