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

Welcome!

План курса

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

● программное обеспечение вокруг нас


● ПО пишут люди
● людям свойственно ошибаться
● ошибки в ПО могут привести к потере денег,
репутации и здоровья
Баг (Bug)

● Bug - отличие актуального от ожидаемого


результата работы системы
Отладка (Debugging)

● процесс поиска и устранения причины


возникновение бага
● производиться разработчиком после передачи
информации тестировщиком о найденном баге
Тестирование

● Тестирование - процесс, включающий в себя


комплекс активностей, направленный на
проверку продукта на предмет соответствия
требованиям
Цели тестирования

● обнаружение ошибок
● повышение уверенности в уровне качества
● предоставление информации для принятия
решения
● предотвращение ошибок
Валидация и верификация

● верификация - процесс проверки системы на


соответствие описанным требованиям
● валидация - процесс проверки системы на
соответствие ожиданиям пользователя
Позитивное и негативное тестирование

● Позитивное тестирование - направленное на


проверку работы при корректных действиях
пользователя
● Негативное тестирование - направленное на
проверку работы при некорректных действиях
пользователя
Процесс тестирования

● Планирование и управление (Planning and Control)


● Анализ и проектирование (Analysis and design)
● Внедрение и реализация (Implementation and Execution)
● Оценка критериев выхода и создание отчетов (Evaluating
exit criteria and reporting)
● Действия по завершение (Test closure activities)
Планирование и управление (Planning and Control)

● планирование - определение целей и задач


тестирования, подходов, техник, и необходимых
ресурсов, определение критериев выхода
● контроль - отслеживание текущих процессов, задач,
измерение метрик, сопоставление с планами и
принятие мер
Анализ и проектирование (Analysis and design)

● рассмотрение базиса тестирования


● определение тестовых условий
● расстановка приоритетных условий
● разработка высокоуровневых сценариев
● установка тестового окружения
Внедрение и реализация (Implementation and Execution)

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

Execution
● выполнение тестов
● фиксирование результатов тестирования
● сравнение актуальных и ожидаемых результатов
● создание отчетов об ошибках
Оценка критериев выхода и создание отчетов
(Evaluating exit criteria and reporting)

● сверка хода тестирования с критериями выхода


● проверка на необходимость дополнительного
тестирования
● написание итогового отчета по тестированию
Действия по завершение (Test closure activities)

● проверка на достижение запланированных целей


● сворачивание тестового окружения
● подведение итогов и изучение уроков для
улучшения последующих проектов
7 принципов тестирования

● тестирование демонстрирует наличие дефектов, но не


демонстрирует их отсутствие
● исчерпывающее тестирование невозможно
● принцип раннего тестирования
● скопление дефектов
● парадокс пестицида
● тестирование зависит от контекста
● заблуждение от отсутствии ошибок
Жизненный цикл бага
Уровни тестирования
● компонентное тестирование - проверка функциональности и поиск
дефектов в частях приложения, которые могут быть
протестированы изолированно
● интеграционное тестирование - проверка связи между
компонентами и взаимодействия между различными частями
приложения
● системное тестирование - проверка поведения системы в целом
● приемочное тестирование - проверка системы на готовность к
использованию
- альфа тестирование - на стороне разработчика, потенциальные
пользователи
- бета тестирование - на стороне клиента, реальные пользователи
Виды тестирования

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

- тестирование функций системы


- проверка того, ЧТО система делает
- обычно относится к тестированию черного ящика
(Black box testing)
- Black box testing - тестирование системы не
заглядывая в код и без знаний внутренней системы
Нефункциональное тестирование

- тестирование нефункциональных характеристик


системы
1. надежность
2. удобство использования
3. производительность (load, stress testing)

- проверка того, КАК работает система


Структурное тестирование

- тестирование на основе структуры/архитектуры


системы
- желательно проводить на основе спецификации
- относится к тестированию методом White Box
- White box - тестирование системы на основании
понимании системы изнутри
Тестирование изменений

- re-testing - тестирование измененной функции в системе, с целью


убедиться что баг был устранен
- regression testing - тестирование уже протестированной ранее
системы, с целью убедиться что новые изменения не влекут за
собой баги
- smoke testing - минимальный набор базовых тестов, с целью
убедиться что система функционирует хорошо и не содержит
ошибок
- sanity testing - направлено на определенную функцию, чтобы
убедиться что она работает ожидаемо
Критерии входа

определяет когда можно начинать тестирование

примеры:
- тестовое окружение готово
- тестируемый код доступен
- тест кейсы подготовлены
- тестовые данные готовы
Критерие выхода

определяют когда нужно завершать тестирование

примеры:
- выполнение всех тест кейсов
- соблюдение сроков и дедлайнов
- найдено определенное количество багов
- достигнуто определенное количество покрытия
- все найденные баги пофикшены