629.45K
Категория: ПрограммированиеПрограммирование

Проверка ПО. Лекция 11

1.

Проверка ПО
Лекция 11
Тема 4:
Тестирование и
отладка ПО
1

2.

Проверка ПО
Надежность ПО – комплексное свойство ПО
сохранять во времени в установленных
пределах значения всех параметров,
характеризующих способность ПО выполнять
свои функции в заданных режимах и условиях
эксплуатации
Проверка правильности функционирования и
соответствия предъявляемым требованиям
Стадия разработки ПО непосредственно
следующая за кодированием
Цель проверки – выявление несоответствия
программного обеспечения предъявляемым
требованиям
3

3.

Источники проблем
1.
Недостаточная оценка отрасли
2.
(окружающей обстановки)
Абстрактные цели (недостижимы)
3.
Несоответствие средств целям
(специалисты, технологии, ПО)
4.
5.
6.
7.
Неправильное планирование ресурсов и времени
Недостаточная или излишняя коммуникация
Отсутствие стандартов организации
Некомпетентное руководство
(сроки, ресурсы, порядок задач, поощрение)
Неправильный дизайн (интерфейс)
9. Некомпетентные разработчики
10. Отсутствие обучения (роста) сотрудников
8.
4

4.

Ошибка в ПО
Дефект (ошибка) – несоответствие ПО
предъявляемым требованиям
Типы ошибок:
Ошибки этапа компиляции
(синтаксические ошибки)
Ошибки этапа выполнения
(семантические ошибки)
Ошибка, сбой (error) – неправильный результат
Отказ (failure) – невозможность работы
Логические ошибки
Плавающая ошибка
5

5.

Классификация ошибок
32% в логике
5%
4%
19% в документации
5%
32%
6%
18% в вычислениях
11%
11% в коде
6% в управлении
данными
5% в интеграции
18%
19%
5% в требованиях
4% в аппаратуре
8

6.

Динамически развивающийся проект
Изменить
старый код
Старый код
перестал
соответствовать
(появились
ошибки)
Изменение в
требованиях
или архитектуре
Технический долг
(известная проблема, решение
которой отложено на потом)
Высокая вероятность
необнаруженных
ошибок
Сделать
«заглушку»
«костыль»
Изменения
потом
Новые изменения
Новые «ошибки»
Новые «костыли»
Технический
долг растет
9

7.

Примеры ошибок в коде
Отсутствие инициализации переменных
Ошибки порядка вычислений
Проблемы с указателями
Неверная интерпретация сообщений
компилятора о синтаксических ошибках
«Потеря» данных при неправильном значении
указателя или индекса массива
Выход за границы массива
Неправильное использование аргументов функций
Переполнения стека или очереди
10

8.

Проверка ПО
Проверка вручную – без выполнения
модулей и запуска ПО – анализ исходных
текстов (понимание программы), возможно с
использованием специальных средств
проверки (статический анализ кода)
Проверка тестированием – с выполнением
модулей (динамический анализ кода)
11

9.

Проверка вручную
Проводится разработчиком или тестировщиком,
знающим алгоритм работы программы, логику
ее функционирования, ориентирующимся в
исходных текстах
Проводится путем просмотра исходных
текстов с возможным использованием
специальных средств проверки, упрощающих
процесс выявления ошибок
12

10.

Проверка тестированием
Проводится тестировщиком, не знающим логики
работы программы, а обладающим знаниями только
о внешних спецификациях
Выполняется весь набор тестов, чтобы проверить
программное обеспечение на входных данных,
составленных на основе внешних спецификаций
При выявлении ошибки – передача информации
разработчику о выявленной ошибке для конкретных
входных данных
Разработчик проводит проверку вручную, но не
полностью, а ориентируясь по логике работы
программы, пытается определить место выявленной
тестировщиком ошибки
13

11.

Виды проверок вручную
Лексический и синтаксический контроль с
использованием компиляторов (статический
анализ кода)
Инспекция модуля – изучения исходного текста
модуля с целью выявления распространенных
ошибок (требуется опыт программирования)
Сквозной просмотр – обнаружение
несоответствия между спецификацией
программы и логикой работы
Доказательство корректности – формальные
средства соответствия логики работы программы
и ее внешней спецификации
15

12.

Тестирование
Тестирование –
процесс исследования
программного
Требования
обеспечения или его
+
40%
отдельных модулей
Проектирование
путем выполнения с
целью определения
Кодирование +
20%
соответствия
Интеграция
заданным
требованиям
(внешним
Тестирование 40%
спецификациям)
17

13.

Принципы тестирования
Тестировщики – минимально заняты в разработке
Разработчики тестов – опытные разработчики
Разделение разработчиков тестов и тестировщиков
Вероятность ошибки в части ПО тем выше, чем
больше обнаружено уже в нем ошибок
Тестирование должно всегда повторяться после
внесения изменений
Системность тестирования
Тщательное проектирование тестов как для
допустимых, так и для недопустимых ситуаций
Целесообразна проверка побочных эффектов
программы
18

14.

Виды тестирования
По степени изолированности
Модульное тестирование – автономное
тестирование модуля, класса или функции
в отрыве от всей системы
Интеграционное тестирование –
20%
одновременное тестирование двух и более
модулей на совместимость
Системное тестирование – тестирование
10%
всей системы в целом, как правило, через ее
внешний интерфейс
70%
19

15.

Виды тестирования
По времени проведения
Тестирование новой функции – вновь
разработанный код (модульное тестирование)
Приемочное тестирование – тестирование,
проводимое при приемке системы заказчиком
Регрессионное тестирование –
последовательное тестирование системы в
процессе ее разработки. Повторные итерации
тестирования проводятся после исправления и
модификации системы с целью проверки того, что
изменения не ухудшили существующей
функциональности и не внесли новые ошибки
20

16.

Виды тестирования
По объекту тестирования:
Функциональное тестирование – проверка того,
что программа в целом ведет себя в соответствии
с ожиданиями пользователя, формализованными
в виде внешних спецификаций
Тестируются:
все функции системы (внешние спецификации)
все входные и выходные значения
некорректные входные значения – система должна остаться
стабильной
23

17.

Виды тестирования
По объекту тестирования:
Тестирование конфигурации – определение
возможности функционирования программной
системы на различных конфигурациях
оборудования
Тестируется:
корректная работа с заявленным аппаратным
обеспечением
корректная работа с другими программными системами
корректное поведение на изменение аппаратного или
программного обеспечения
корректная обработка проблем, возникающих в
аппаратном или программном обеспечении
24

18.

Виды тестирования
По объекту тестирования:
Тестирование безопасности – проверка
защиты информации, обрабатываемой
программой
Тестируется:
сохранность информации (защита от
удаления, изменения, повреждения)
возможность несанкционированного доступа
25

19.

Виды тестирования
По объекту тестирования:
Тестирование удобства использования –
проверка удобства пользовательского
интерфейса
Тестируются:
время или количество необходимых действий
для достижения определенной цели
время или количество необходимых действий
для доступа к нужной информации
интерпретация ответов системы
26

20.

Виды тестирования
По объекту тестирования:
Тестирование производительности –
определение того, что система обеспечивает
должный уровень производительности при
обработке пользовательских запросов
Выполняется при различных уровнях нагрузки на систему, на
различных конфигурациях оборудования
27

21.

Тестирование производительности
Требования по производительности системы
должны быть четко определены
Требуются генератор запросов подающий на
вход системы поток данных, типичных для
сеанса работы с ней и тестовое окружение из
программной и аппаратной компонент с
возможностью моделирования различного
уровня доступных ресурсов
28

22.

Тестирование производительности
Нагрузочное тестирование – тестирование системы
на корректную работу с большими объемами данных,
проверяются и определяются действующие пределы
работоспособности системы
Стрессовое тестирование – тестирование
поведения системы при длительной непрерывной
эксплуатации в условиях высокой нагрузки на
систему, в том числе стрессовой нагрузки
29

23.

Виды тестирования
По объекту тестирования:
Тестирование надежности и восстановления
после сбоев – проверка возможности системы
восстанавливать свою функциональность и
корректную работу после сбоев
Имитируются сбои аппаратного или программного
обеспечения
Проверяется:
минимизация потерь данных
минимизация времени восстановления
31

24.

Виды тестирования
По степени автоматизации:
Ручное тестирование – запуск тестов и
анализ результатов тестирования вручную
Автоматическое – запуск тестов и анализ
результатов тестирования производится
специальным программным обеспечением
Автоматизированное – запуск тестов
автоматический, анализ результатов и
принятие решения о дальнейшем проведении
тестирования осуществляет человек
32

25.

Проверка ПО
Лекция 11
Тема 4: Тестирование и отладка ПО
33

26.

Вопросы
1.
2.
Проверка ПО. Виды проверок. Ошибка,
определение и классификация.
Классификация и виды тестирования ПО.
34
English     Русский Правила