2. 50е годы – тестирование зародилось как
процесс нахождения и устранения
дефектов (debugging)
70е годы – было предложено разграничить
процессы тестирования (testing) и отладки
(debugging)
В наши дни тестирование все больше
играет превентивную, а не реактивную роль
Дальнейшее развитие в наших руках
3. Тестировщик Программист
Тестирование находит
сбои в системе,
вызванные дефектом
Повторное тестирование
подтверждает, что после
отладки система работает
без сбоев
В процессе отладки
программист находит
причину дефекта, вносит
корректировки и
удостоверяется в их
правильности
4. Тестирование – это одна из техник контроля
качества, включающая в себя выполнение задач по
планированию работ, проектированию тестов,
выполнению тестирования и анализу полученных
результатов
Тестирование ПО – проверка соответствия между
реальным и ожидаемым поведением программы,
осуществляемая на конечном наборе тестов,
выбранном определенным образом.
5. Ошибка (error)– некорректный результат,
который является результатом действий,
выполненных или не выполненных
человеком
Дефект (fault or bug) – изъян в отдельном
компоненте системы или в системе в
целом, из-за которого данный
компонент или система не могут
корректно выполнять свои функции.
Сбой (failure) – несоответствие работы
системы требованиям к ней.
Дефект не всегда приводит к сбоям в
системе!
Ошибка
Дефект
Сбой
9. Качество ПО – степень соответствия
характеристик, присущих программному
обеспечению, указанным требованиям к нему
и/или потребностям и ожиданиям
пользователя (клиента)
10. Тестирование – это не только выполнение
тестов
Задачи тестировщика до выполнения тестов:
◦ Планирование
◦ Проверка документации, кода
◦ Определение условий тестирования
◦ Создание тестовых сценариев
Задачи тестировщика после выполения тестов:
◦ Проверка результатов
◦ Оценка критериев завершения тестирования
◦ Последующий контроль
◦ Документирование тестирования и отчетность
11. Определение соответствия поставляемого
ПО условиям контракта, юридическим
нормам
Предоставление информации о качестве ПО
Предоставление информации о
функциональных и нефункциональных
характеристиках ПО
Оценка соответствия стандартам
(сертификация)
Не забываем учиться на ошибках!
12. Нацелен на все этапы жизненного цикла
Покрывает все виды деятельности
Включает процесс разработки, внедрения и
сопровождения
Может предполагать разработку тест-плана
для всего проекта в целом
14. Нацелено на систему в целом либо на
отдельные еѐ элементы
Зависит от внутренней политики, стратегии,
целей, рисков, ограничений
Продолжается в течение всего проекта
Подлежит постоянному пересмотру и
изменению
15. Определение стратегии тестирования
Определение объектов и целей
тестирования
Измерение уровня риска, определение
мероприятий по его минимизации
Определение уровней и объемов
тестирования
Распределение / координирование
ресурсов
Составление графика выполнения работ
Определений критериев мониторинга
16. Превентивная (предупредительная) –
тестирование начинается на ранних
стадиях разработки
Реактивная (реагирующая) – дизайн и
выполнение тестирования только после
завершения разработки
17. Уровень рисков
Квалификация и опыт
Используемые инструменты
Цели тестирования
Регуляторные нормы
Предметная сфера, отрасль использования
18. Проектные риски
◦ Организационные
◦ Технические (относятся к процессу выполнения
проекта)
◦ Риски третьей стороны
Риски, связанные с продуктом:
◦ Вероятность сбоя
◦ Несоответствие требованиям
◦ Низкая конкурентоспособность
Риски для окружения (людей, среды,
компании)
◦ Потенциальные ущерб
19. Тестирование направлено на контроль и
снижение уровня риска
Снижение вероятности возникновения сбоя
Определение мер предосторожности
Предоставление информации об
имеющемся уровне риска
20. Наличие и уровень рисков определяют:
Стратегию тестирования
Используемые техники
Объемы тестирования
Приоритезацию тестов
График выполнения
21. Постоянный анализ ситуации и оценка
возможных рисков
Определение весомости рисков
Внедрение предупредительных мер
22. Test estimation
Метрический подход
◦ Аналогичные проекты
◦ Предыдущие проекты
◦ Типовые показатели
Экспертный подход
◦ Знания экспертов
◦ Предыдущий опыт
◦ Понимание проекта
23. Характеристики продукта
◦ Размер
◦ Уровень качества
◦ Сложность
◦ Наличие документации
◦ Требования
Характеристики процесса разработки
◦ Организация процесса
◦ Инструменты
◦ Квалификация
◦ Временные ограничения
Результаты тестирования
◦ Обнаруженные ошибки
◦ Необходимость повторного тестирования
24. Опрелеление критериев начала /
завершения тестирования
Трансформация общих целей тестирования
в конкретные задачи
Дополнение тест-плана тестовыми
процедурами и тестовыми сценариями
Уточнение объемов и сроков тестирования
25. Изучение требований и спецификации
Оценка возможности тестирования
Определение условий тестирования
Дизайн и приоритезация тестовых
сценариев
Описание тестовых данных
Определение ожидаемых результатов,
критериев успешного прохождения теста
Определение тестовой среды,
инфраструктуры и инструментов
26. Готовность и доступ к среде тестирования
Наличие / готовность инструментов
тестирования
Готовность объекта тестирования
Доступ к тестовым данным
Наличие / готовность ресурсов
27. Тестовое покрытие
Качество продукта
Остаточные риски
Проектные ограничения
Test metrics
28. Количество выполненных тест-кейсов
Количество протестированных требований
Часть кода, покрытого тестом
32. Определение процедуры тестирования
◦ Детализация тестовых сценариев
◦ Создание тестовой процедуры
◦ Создание тестовых данных
◦ Написание скриптов
Запуск среды тестирования
33. Выполнение теста
Протоколирование результатов
Сравнение фактических результатов с
ожидаемыми
Анализ несоответствий
Повторное тестирование
34. Оценка результатов тестирования
Определение необходимости дальнейшего
тестирования
Необходимость изменения критериев
завершения тестирования
35. Объем тестирования зависит от:
◦ Уровня ожидаемого риска (технического,
проектного, для бизнеса в целом)
◦ Время и бюджета проекта
◦ Наличия и квалификации ресурсов
◦ ...
Тестирование должно предоставить
информацию в объеме достаточном для
принятия взвешенного решения о
завершении этапа в разработке ПО и/или
выпуске новой версии
36. Подведение итогов и предоставление
рекомендаций:
◦ Что произошло за отчетный период
◦ Анализ открытых задач, ошибок
◦ Эффективность и целесообразность
◦ Необходимость дальнейшего тестирования
◦ Остаточные риски
◦ Оценка качества
◦ Уровень уверенности (level of confidence)
37. Оценка возможности релиза (выпуска)
Анализ незавершенных задач
Подписание протоколов
Архивация тестовых атрибутов
Определение возможностей улучшения
процесса
38. Мониторинг процесса и результатов
тестирования
Сравнение фактического прогресса с
запланированным
Текущая отчетность
Корректировка плана и действий!
39. Критерии начала тестирования
Выполнение тестов
Найденные (не закрытые) ошибки
Критерии завершения тестирования
Субъективное мнение
Этапы проекта
40. Своевременное получение информации о
текущем состоянии процесса тестирования и
внесение необходимых изменений в план /
процесс / график / распределение ресурсов
Может предполагать изменения и на других
этапах жизненного цикла разработки ПО
Editor's Notes
Баг-трекеры, статусы ошибок, жизненный цикл ошибок
The separation of debugging from testing was initially introduced by Glenford J. Myers in 1979.[13] Although his attention was on breakage testing ("a successful test is one that finds a bug"[13][14]) it illustrated the desire of the software engineering community to separate fundamental development activities, such as debugging, from that of verification. Dave Gelperin and William C. Hetzel classified in 1988 the phases and goals in software testing in the following stagesThe separation of debugging from testing was initially introduced by Glenford J. Myers in 1979.[13] Although his attention was on breakage testing ("a successful test is one that finds a bug"[13][14]) it illustrated the desire of the software engineering community to separate fundamental development activities, such as debugging, from that of verification. Dave Gelperin and William C. Hetzel classified in 1988 the phases and goals in software testing in the following stagesThe origins of software testing can actually be traced back to the fifties, when the primary method of testing anything was debuggingIn the late seventies the approach evolved to one of destruction; basically, the testers woul break down the code to find holes or gaps in itThis method was effective but it was not until the advent of prevention oriented methodologies that we began to enjoy the benefits of more robust software applications
Технические риски: определение требований (наличие), способность обеспечить выполнение требований в условиях ограничений, качество дизайна, кодирование и тестированиеОрганизационные риски: квалификация, сокращения, тренинги и обучение, коммуникация, анализ и улучшение процессаРиски третьей стороны: поставщики, контрактные обязательства
Типовые показатели: производительность, квалификация, время, необходимое на разные фазы тестированияAnalytical vs. Heuristic
Результаты тестирования влияют на корректировку оценки, но не на первоначальную оценкуРезультаты тестирования предыдущих проектов больше относятся к пункту «квалификация разработчика»
Под тестовыми данными можно также подразумевать тестовые сценарии (для приемочного тестирования или если их запросили у заказчика)
Выполнение тестов: выполнены / не выполнены, успешно выполнены / проваленыНайденные ошибки: важность, срочность, статус