1. Причины и типы ошибок
ПРИЧИНЫ И ТИПЫ ОШИБОК
2. Классификация ошибок по причине возникновения
• синтаксические ошибки;
• семантические ошибки;
• логические ошибки.
3. Синтаксические ошибки
это ошибки, возникающие в связи с
нарушением синтаксических правил
написания предложений используемого
языка программирования (к таким ошибкам
относятся пропущенные точки с запятой,
ссылки на неописанные переменные,
присваивание переменной значений
неверного типа и т. д.).
4. Семантические ошибки
• Причина возникновения ошибок данного
типа связана с нарушением семантических
правил написания программ (примером
являются ситуации попытки открыть
несуществующий файл или выполнить
деление на нуль).
5. Логические ошибки
• связаны с неправильным применением тех
или иных алгоритмических конструкций.
• Эти ошибки при выполнении программы могут
проявиться явно (выдано сообщение об
ошибке, нет результата или выдан неверный
результат, программа «зацикливается»), но
чаще они проявляют себя только при
определенных сочетаниях параметров или
вообще не вызывают нарушения работы
программы, которая в этом случае выдает
правдоподобные, но неверные результаты.
6. Классификация ошибок по этапу обработки программы
Ошибки, которые могут быть в программе,
принято делить на три группы:
• ошибки компиляции;
• ошибки компоновки;
• ошибки выполнения.
7.
Ошибки компиляции
Ошибки компиляции (Compile-time error) – ошибки,
фиксируемые компилятором (транслятором, интерпретатором)
при выполнении синтаксического и частично семантического
анализа программы;
Наиболее легко устранимы.
Их обнаруживает компилятор, а программисту остается только
внести изменения в текст программы и выполнить повторную
компиляцию.
Компилятор просматривает программу от начала. Если
обнаруживается
ошибка,
то
процесс
компиляции
приостанавливается и в окне редактора кода выделяется строка,
которая, по мнению компилятора, содержит ошибочную
конструкцию.
8.
Ошибки компиляции
В нижнюю часть окна редактора кода компилятор выводит сообщения об
ошибках. Первая ошибка – это первая от начала текста программы
синтаксическая ошибка, обнаруженная компилятором. Наличие в тексте даже
одной синтаксической ошибки приводит к возникновению второй, фатальной
ошибки (Fatal Error) – невозможности генерации исполняемой программы.
9. Наиболее типичные ошибки компиляции
Сообщения компилятора
Undeclared identifier
(Необъявленный
идентификатор)
Вероятная причина
Используется переменная, не объявленная в
разделе var программы;
Ошибка при написании имени переменной;
Ошибка при написании имени инструкции
(оператора).
Unterminated string
При записи строковой константы не
(Незавершенная строка)
поставлена завершающая кавычка.
Incompaible types … and В операторе присваивания тип выражения
…
не соответствует или не может быть
(Несовместимые типы)
приведен к типу переменной, получающей
значение выражения.
Missing operator or
Не поставлена точка с запятой после
semicolon
инструкции программы.
(Отсутствует оператор или точка
с запятой)
10. Ошибки компоновки
Ошибки компоновки – ошибки, обнаруженные
компоновщиком (редактором связей) при объединении
модулей программы.
Эти ошибки связаны с проблемами, обнаруженными при
разрешении внешних ссылок. Например, предусмотрено
обращение к подпрограмме другого модуля, а при
объединении модулей данная подпрограмма не найдена
или не стыкуются списки параметров.
В большинстве случаев ошибки такого рода также
удается быстро локализовать и устранить.
11. Ошибки выполнения
Ошибки выполнения – ошибки, обнаруженные
операционной системой, аппаратными средствами или
пользователем при выполнении программы.
Могут иметь разную природу, и соответственно поразному проявляться.
Часть ошибок обнаруживается и документируется
операционной системой.
12. Ошибки выполнения
Выделяют четыре способа проявления таких ошибок:
появление сообщения об ошибке, зафиксированной схемами
контроля выполнения машинных команд, например,
переполнении разрядной сетки, нарушении адресации и
т.п.;
появление
сообщения
об
ошибке,
обнаруженной
операционной системой, например, нарушении защиты
памяти, попытке записи на устройства, защищенные от
записи, отсутствии файла с заданным именем и т.п.;
«зависание» компьютера, как простое, когда удается
завершить программу без перезагрузки операционной
системы, так и «тяжелое», когда для продолжения работы
необходима перезагрузка;
несовпадение полученных результатов с ожидаемыми.
13. Причины ошибок выполнения
Все возможные причины ошибок можно разделить на
следующие группы:
• неверное определение исходных данных,
• логические ошибки,
• накопление погрешностей результатов вычислений.
14. Причины ошибок выполнения
15. Предотвращение и обработка исключений
• При
разработке
проекта
программист
должен
предусмотреть все возможные варианты некорректных
действий пользователя, которые могут привести к
возникновению ошибок времени выполнения, и
обеспечить способы защиты от них.
16. Предотвращение и обработка исключений
Инструкция обработки исключения в общем виде:
try // инструкции, выполнение которых может вызвать
исключение
except // начало секции обработки исключений
on ТипИсключения1 do Обработка1;
on ТипИсключения2 do Обработка2;
…;
else // инструкции обработки остальных исключений
end;
17. Предотвращение и обработка исключений
где:
• try — ключевое слово, обозначающее, что далее следуют
инструкции, при выполнении которых возможно
возникновение исключений, и что обработку этих
исключений берет на себя программа;
• except — ключевое слово, обозначающее начало секции
обработки исключений. Инструкции этой секции будут
выполнены, если в программе возникнет ошибка;
• on — ключевое слово, за которым следует тип
исключения, обработку которого выполняет инструкция,
следующая за do;
• else — ключевое слово, за которым следуют инструкции,
обеспечивающие обработку исключений, тип которых не
указаны в секции except.
18. Типичные исключения
Тип
исключения
Возникает
EZeroDivide
При выполнении операции деления, если
делитель равен нулю
EConvertError
При выполнении преобразования, если
преобразуемая величина не может быть
приведена к требуемому виду. Наиболее часто
возникает при преобразовании строки символов в
число
EFilerError
При обращении к файлу. Наиболее частой
причиной является отсутствие требуемого файла
или, в случае использования сменного диска,
отсутствие диска в накопителе
19. Пример: Обработка исключения типа EZeroDivide
procedure TForm1.Button1Click(Sender: TObject);
Var u, r, i: real; // напряжение , сопротивление, ток
begin
Labels.Caption := ‘ ‘;
try // инструкции, которые могут вызвать исключение (ошибку)
u := StrToFloat(Edit1.Text);
r := StrToFloat(Edit2.Text);
i := u/r;
except // секция обработки исключений
onEZeroDivide do // деление на ноль
begin
ShowMessage(‘Сопротивление не может быть равно нулю!’);
exit;
end;
on EConvertError do // ошибка преобразования строки в число
begin
ShowMessage(‘Напряжение и сопротивление должны быть заданы числом. ‘ );
exit;
end; end;
20. Отладка и тестирование
ОТЛАДКА И ТЕСТИРОВАНИЕ
21.
Немного истории
Долгое время было принято считать, что целью тестирования
является доказательство отсутствия ошибок в программе.
Но полный
перебор
всех
возможных
вариантов
выполнения
программы
находится
за
пределами
вычислительных возможностей даже для очень небольших
программ.
«Тестирование – это процесс выполнения программ с
целью обнаружения ошибок».
Гленфорд Майерс
Майерс, Г. Искусство тестирования программ, 1982
22.
Немного истории
До начала 80-х годов процесс тестирования программного
обеспечения (ПО) был разделен с процессом разработки: вначале
программисты реализовывали заданную функциональность, а
затем тестировщики приступали к проверке качества созданных
программ.
Проблемы:
• разработка программ может оказаться достаточно длительной –
чем в это время должны заниматься тестировщики?
• Плохая предсказуемости результатов такого процесса разработки.
Ключевой вопрос: сколько времени потребуется на завершение
продукта, в котором существует 500 известных ошибок?
23.
Немного истории
Статистика:
Даже
однострочное
изменение
в
программе
с
вероятностью 55 % либо не исправляет старую ошибку,
либо вносит новую. Если же учитывать изменения любого
объема, то в среднем менее 20 % изменений корректны с
первого раза.
24.
Немного истории
В 90-х годах появилась другая методика разработки
(zero-defect mindset), основная идея которой заключается в
том, что качество программ проверяется постоянно в
процессе разработки.
Тестирование становится центральной частью любого
процесса разработки программ
Данная методика предъявляет существенно более высокие требования к
квалификации инженера тестирования: в сферу его ответственности
попадает не только функциональное тестирование, но и организация
процесса разработки (процесс ежедневной сборки, участие в инспекциях,
сквозных просмотрах и обычное чтение исходных текстов тестируемых
программ). Поэтому идеальной кандидатурой на позицию тестировщика
становится наиболее опытный программист в команде.
25. Зависимость вероятности правильного исправления ошибок и стоимости исправления ошибок от этапа разработки
Многократно проводимые исследования показали, что чем
раньше обнаруживаются те или иные несоответствия или
ошибки, тем больше вероятность их правильного
исправления (рис. а) и ниже его стоимость (рис. б).
26.
Основные понятия, связанные с
тестированием и отладкой
Отладка программного средства – это деятельность,
направленная на обнаружение и исправление ошибок в ПС с
использованием процессов выполнения его программ.
Тестирование программного средства — процесс выполнения
программ на некотором наборе данных, для которого заранее
известен результат применения или известны правила поведения
этих программ.
Отладка = Тестирование + Поиск ошибок + Редактирование
27.
Основные понятия, связанные с
тестированием и отладкой
Процесс отладки включает:
• действия, направленные на выявление ошибок
(тестирование);
• диагностику и локализацию ошибок (определение
характера ошибок и их местонахождение);
• внесение исправлений в программу с целью устранения
ошибок (редактирование).
Отладка = Тестирование + Поиск ошибок + Редактирование
Самым трудоемким и дорогим является тестирование,
затраты на которое приближаются к 45% общих затрат на
разработку ПС и от 30 до 60% общей трудоемкости создания
программного продукта.
28.
Две задачи тестирования
Первая задача тестирования – подготовить набор тестов и
применить к ним ПС, чтобы обнаружить в нём по возможности
большее число несоответсвий.
Вторая задача тестирования — определить момент окончания
отладки ПС (или отдельной его компоненты).
29.
Для повышения качества тестирования рекомендуется
соблюдать следующие основные принципы:
• предполагаемые результаты должны быть известны до
тестирования;
• следует избегать тестирования программы автором;
• необходимо досконально изучать результаты каждого
теста;
• необходимо проверять действия программы на неверных
данных;
• необходимо проверять программу на неожиданные
побочные эффекты на неверных данных.
30. Требования к программному продукту и тестирование
Разработка любого программного продукта начинается с
выявления требований к этому продукту.
Спецификация (англ. Software Requirements Specification, SRS) документ, в котором отражены все требования к продукту описываются, как функциональные (что должна делать
программа, варианты взаимодействия между пользователями
и программным обеспечением), так и нефункциональные
(например, на каком оборудовании должна работать
программа,
производительность, стандарты качества)
требования.
31. Рекомендуемая стандартом IEEE 830 структура SRS
Введение
– Цели
– Соглашения о терминах
– Предполагаемая аудитория и последовательность восприятия
– Масштаб проекта
– Ссылки на источники
Общее описание
– Видение продукта
– Функциональность продукта
– Классы и характеристики пользователей
– Среда функционирования продукта (операционная среда)
– Рамки, ограничения, правила и стандарты
– Документация для пользователей
– Допущения и зависимости
Функциональность системы
– Функциональный блок X (таких блоков может быть несколько)
• Описание и приоритет
• Причинно-следственные связи, алгоритмы
• Функциональные требования
32. Рекомендуемая стандартом IEEE 830 структура SRS (продолжение)
Требования к внешним интерфейсам
– Интерфейсы пользователя (UX)
– Программные интерфейсы
– Интерфейсы оборудования
– Интерфейсы связи и коммуникации
Нефункциональные требования
– Требования к производительности
– Требования к сохранности (данных)
– Критерии качества программного обеспечения
– Требования к безопасности системы
Прочие требования
– Приложение А: Глоссарий
– Приложение Б: Модели процессов и предметной области и другие
диаграммы
– Приложение В: Список ключевых задач
33.
Подходы к выработке стратегии
проектирования тестов
1. Тестирование по отношению к спецификациям функциональный подход
2. Тестирование по отношению к текстам программ структурный подход
34. Стратегия проектирования тестов
В тестирование ПС входят
• постановка задачи для теста,
• проектирование,
• написание тестов,
• выполнение тестов,
• изучение результатов тестирования.
35.
По объекту тестирования
Функциональное тестирование
Тестирование производительности
Нагрузочное тестирование
Стресс-тестирование
Тестирование стабильности
Конфигурационное тестирование
Юзабилити-тестирование
Тестирование интерфейса пользователя
Тестирование безопасности
Тестирование локализации
Тестирование совместимости
По знанию системы
Тестирование чёрного ящика
Тестирование белого ящика
Тестирование серого ящика
По степени автоматизации –
Ручное тестирование
Автоматизированное тестирование
Полуавтоматизированное тестирование
По степени изолированности компонентов
Модульное тестирование
Интеграционное тестирование
Системное тестирование
По времени проведения тестирования
Альфа-тестирование
Дымовое тестирование
Тестирование новой функции
Подтверждающее тестирование
Регрессионное тестирование
Приёмочное тестирование
Бета-тестирование
По признаку позитивности сценариев
Позитивное тестирование
Негативное тестирование
По степени подготовленности к
тестированию
Тестирование по документации
(формальное тестирование)
Интуитивное тестирование (англ. ad hoc
testing)
36.
Подходы к выработке стратегии
проектирования тестов
Функциональный подход основывается на том, что
структура программного обеспечения не известна (программа
рассматривается как «черный ящик»). В этом случае тесты
проектируют, исследуя внешние спецификации или
спецификации сопряжения программы или модуля, которые
он тестирует.
Логика проектировщика тестов такова: «Меня не
интересует, как выглядит эта программа, и выполнил ли я все
команды. Я удовлетворен, если программа будет вести себя
так, как указано в спецификациях».
В идеале — проверить все возможные комбинации
и значения на входе.
37.
Подходы к выработке стратегии
проектирования тестов
Структурный подход базируется на том, что известна
структура тестируемого программного обеспечения, в том
числе его алгоритмы («стеклянный ящик»). В этом случае
тесты строят так, чтобы проверить правильность реализации
заданной логики в коде программы.
Проектировщики
тестов
стремятся
подготовить
достаточное число тестов, чтобы каждая команда была
выполнена, хотя бы, один раз. Чтобы каждая команда
условного перехода выполнялась в каждом направлении
хотя бы раз.
В идеале — проверить каждый путь, каждую ветвь
алгоритма.
38.
Подходы к выработке стратегии
проектирования тестов
Тестирование
по отношению
к спецификациям
Тестирование
по отношению
к текстам программ
Оптимальная
стратегия
Оптимальная
стратегия
проектирования
тестов
расположена внутри интервала между этими крайними
подходами, но ближе к левому краю
Наборы тестов, полученные в соответствии с методами
этих
подходов,
обычно
объединяют,
обеспечивая
всестороннее тестирование программного обеспечения.
39.
Критерии полноты тестирования
40.
Критерии полноты тестирования
Только на основании выбранного критерия можно определить
тот момент времени, когда конечное множество тестов
окажется достаточным для проверки программы с некоторой
полнотой (степень полноты, определяется экспериментально).
Используется два вида критериев: критерии черного и белого
ящика.
Соответственно тесты делятся на функциональные и
структурные.
• функциональные тесты составляются исходя
из спецификации программы;
• структурные тесты составляются исходя из
текста программы.
41. Критерии полноты тестирования
• Функциональные критерии:
• Структурные критерии:
1)
2)
3)
4)
5)
Покрытие операторов
Покрытие условий
Покрытие путей
Покрытие функций
Покрытие вход/выход
42. Критерии полноты тестирования
Критерий тестирования функций
43. Критерии полноты тестирования
Критерии тестирования входных и
выходных данных
44. Критерий тестирования функций
Критерии тестирования входных и
выходных данных
• Пример. Программа для учета кадров предприятия
45. Критерии тестирования входных и выходных данных
Тестирование области допустимых значений
Процесс тестирования области допустимых значений
можно разделить на три этапа:
1. Проверка в нормальных условиях.
2. Проверка в экстремальных условиях.
3. Проверка в исключительных ситуациях.
Проверка в нормальных условиях
Проверка в нормальных условиях предполагает тестирование на основе
данных, которые характерны для реальных условий функционирования
программы. Проверка в нормальных условиях должна показать, что
программа выдает правильные результаты для характерных
совокупностей данных.
46. Критерии тестирования входных и выходных данных
• Проверка в экстремальных условиях
Тестовые данные этого этапа включают граничные значения области
изменения входных переменных, которые должны восприниматься
программой как правильные данные.
Для нецифровых данных необходимо использовать подобные
типичные символы, охватывающие все возможные ситуации.
Для цифровых данных в качестве экстремальных условий следует
брать начальное и конечное значения допустимой области
изменения переменной при одновременном изменении длины
соответствующего поля от минимальной до максимальной.
Типичными примерами таких экстремальных значений являются
очень большие числа, очень малые числа и отсутствие
информации.
Каждая
программа
характеризуется
своими
собственными экстремальными данными, которые должны
подбираться программистом.
47. Критерии тестирования входных и выходных данных
Проверка в экстремальных условиях (продолжение)
Особый интерес представляют так называемые нулевые примеры.
Для цифрового ввода — это обычно нулевые значения вводимых
данных; для последовательностей символов — это цепочка пробелов
или нулей.
Нулевые примеры представляют собой один из лучших тестов,
поскольку они имитируют состояние данных, которое время от
времени имеет место в реальных условиях эксплуатации программы.
Если подобное тестирование не выполняется, то впоследствии часто
приходится сталкиваться с непонятным поведением программы.
48. Критерии тестирования входных и выходных данных
• Проверка в исключительных ситуациях.
проводится с использованием данных, значения которых
лежат за пределами допустимой области изменения.
Например:
• Что произойдет, если программе, не рассчитанной на обработку
отрицательных или нулевых значений переменных, в результате
какой-либо ошибки придется иметь дело как раз с такими данными?
• Как будет вести себя программа, работающая с массивами, если
количество их элементов превысит величину, указанную в описании?
• Что случится, если цепочки символов окажутся длиннее или короче,
чем это предусмотрено?
49. Критерии тестирования входных и выходных данных
Структурные критерии
Структурные критерии — критерии покрытия кода.
Покрытие кода — мера, используемая при тестировании
программного обеспечения. Она показывает процент, насколько
исходный код программы был протестирован.
• Покрытие операторов — каждая ли строка исходного кода была
выполнена и протестирована?
• Покрытие условий — каждая ли точка решения (вычисления
истинно ли или ложно выражение) была выполнена и
протестирована?
• Покрытие путей — все ли возможные пути через заданную
часть кода были выполнены и протестированы?
• Покрытие функций — каждая ли функция программы была
выполнена
• Покрытие вход/выход — все ли вызовы функций и возвраты из
них были выполнены
50. Критерии тестирования входных и выходных данных
Пример. Показывает отличие количества тестов при различных выбранных
структурных критериях.
В случае выбора критерия «Покрытие операторов» достаточен 1 тест
(рис.а)
В случае выбора критерия «Покрытие условий» достаточно двух тестов,
покрывающих пути 1, 4 или 2, 3 (рис.б)
В случае выбора критерия «Покрытие путей необходимо четыре теста
для всех четырех путей (рис.б)
51. Структурные критерии
Покрытие операторов
Пример 1
If ((A>1) and (B =0))
then X := X/A;
If ((A=2) or (X>1))
then X:=X+1;
Можно выполнить каждый оператор,
записав один-единственный тест,
который реализовал бы путь асе.
Иными словами, если бы в точке а были
установлены значения А = 2, В = 0 и Х =
3, каждый оператор выполнялся бы
один раз (в действительности Х может
принимать любое значение)
52.
Покрытие операторов
Пример 2
53. Покрытие операторов
Покрытие условий
Пример 1
If ((A>1) and (B =0))
then X = X/A;
If ((A=2) or (X>1))
then X:=X+1;
Покрытие условий может быть выполнено двумя тестами,
покрывающими либо пути асе и abd, либо пути acd и abe.
Если мы выбираем последнее альтернативное покрытие, то входами двух тестов являются A = 3, В = 0, Х = 1 и A = 2, В = 1, Х = 1.
54. Покрытие операторов
Покрытие условий
Пример 2
a:=7;
while a>x do a:=a-1;
b:=1/a;
a:=7
a>x
—
b:=1/a
+
a:=a-1
Для того чтобы удовлетворить критерию покрытия ветвей в данном
случае достаточно одного теста. Например такого, чтобы х был равен
6 или 5. Все ветви будут пройдены. Но ошибка в программе
обнаружена так и не будет. Она проявится в единственном случае,
когда х=0. Но такого теста от нас критерий покрытия ветвей не
требует.
55. Покрытие условий
Покрытие путей
Пример 1
If ((A>1) and (B =0))
then X = X/A;
If ((A=2) or (X>1))
then X:=X+1;
Покрытие путей (все возможные пути
через заданную часть кода должны быть
выполнены и протестированы) может быть
выполнено четырьмя тестами:
a,c,e – A=2, B=0, X=3
a,b,e – A=2, B=1, X=1
a,b,d – A=3, B=1, X=1
a,c,d – A=3, B=0, X=1
56. Покрытие условий
Покрытие путей
a
Пример 1
If ((A>1) and (B =0))
then X = X/A;
If ((A=2) or (X>1))
then X:=X+1;
c
b
е
d
57. Покрытие путей
Критерий комбинаторного покрытия условий
Пример 2
If (a=0) or (b=0) or (c=0)
Then d:=1/(a+b)
Else d:=1;
Ошибка будет выявлена только при a=0 и b=0.
Критерий покрытия путей не гарантирует
проверки такой ситуации.
Для решения этой проблемы был предложен критерий комбинаторного
покрытия условий, который требует подобрать такой набор тестов, чтобы
хотя бы один раз выполнялась любая комбинация простых условий.
Критерий значительно более надежен, чем покрытие путей, но обладает
двумя существенными недостатками.
• Во-первых, он может потребовать очень большого числа тестов.
Количество тестов, необходимых для проверки комбинаций n простых
условий, равно 2n.
• Во-вторых, даже комбинаторное покрытие условий не гарантирует
надежную проверку циклов.
58. Покрытие путей
Уровни тестирования
• Модульное тестирование (автономное тестирование,
юнит-тестирование) — тестируется минимально
возможный для тестирования компонент, например,
отдельный класс или функция. Часто модульное
тестирование осуществляется разработчиками ПО.
• Интеграционное тестирование — тестируются
интерфейсы между компонентами, подсистемами. При
наличии резерва времени на данной стадии тестирование
ведётся итерационно, с постепенным подключением
последующих подсистем.
• Системное тестирование — тестируется интегрированная
система на её соответствие требованиям.
59.
Основные этапы разработки
сценария автономного тестирования
1. На основании спецификации отлаживаемого модуля
подготовить тесты для
– каждой логической возможности ситуации;
– каждой границы областей возможных значений всех
входных данных;
– каждой области недопустимых значений;
– каждого недопустимого условия.
2. Проверить текст модуля, чтобы убедиться, что каждое
направление любого разветвления будет пройдено хотя
бы один раз. Добавить недостающие тесты.
60. Два основных вида тестирования
Основные этапы разработки
сценария автономного тестирования
3. Проверить текст модуля, чтобы убедиться, что для
каждого цикла существуют тесты, обеспечивающие, по
крайней мере, три следующие ситуации
– тело цикла не выполняется ни разу;
– тело цикла выполняется один раз;
– тело цикла выполняется максимальное число раз;
4. Проверить текст модуля, чтобы убедиться, что существуют
тесты, проверяющие чувствительность к отдельным
особым значениям входных данных. Добавить
недостающие тесты.
61. Уровни тестирования
Основная особенность практики
тестирования ПС
По мере роста числа обнаруженных и исправленных
ошибок в ПС растёт также относительная вероятность
существования в нём необнаруженных ошибок.
Это подтверждает важность предупреждения ошибок на
всех стадиях разработки ПС.
62. Основные этапы разработки сценария автономного тестирования
Творческая работа
1. Разделиться на группы
2. Получить тему (практические работы по Delphi №№ 3, 5, 7,
9, 10)
3. Составить спецификацию
4. Разработать программу тестирования:
4.1. Определить виды тестирования
4.2. Определить объекты тестирования
4.3. Определить субъекты тестирования
4.4. Определить классы входных данных
4.5. Написать тест-кейсы для тестирования функций и ожидаемые
результаты
4.6. Написать тест-кейсы для структурного тестирования и
ожидаемые результаты
Составить чек-листы для проведения всех видов тестирования
5. Провести тестирование
6. Сделать выводы
63. Основные этапы разработки сценария автономного тестирования
Содержание ПЗ к проекту
Титульный лист
Бриф
Спецификация
ТЗ
Пользователи
Интерфейсы
Информационно-логическая схема
Схема БД
Алгоритм одной процедуры
Программа тестирования
Результаты тестирования
Презентация на тему «Ошибки в программах»
-
Скачать презентацию (0.17 Мб)
-
25 загрузок -
1.7 оценка
Ваша оценка презентации
Оцените презентацию по шкале от 1 до 5 баллов
- 1
- 2
- 3
- 4
- 5
Комментарии
Добавить свой комментарий
Аннотация к презентации
Смотреть презентацию онлайн с анимацией на тему «Ошибки в программах» по информатике. Презентация состоит из 9 слайдов. Для студентов. Материал добавлен в 2016 году. Средняя оценка: 1.7 балла из 5.. Возможность скчачать презентацию powerpoint бесплатно и без регистрации. Размер файла 0.17 Мб.
-
Формат
pptx (powerpoint)
-
Количество слайдов
9
-
Слова
-
Конспект
Отсутствует
Содержание
-
Слайд 1
Источники ошибок в ПК
Прусак А.В.
-
Слайд 2
Известно, что практически во всех более или менее сложных программах (а также в ОС, представляющих собой комплекс многих программ) имеются ошибки. Причина этого очевидна — программы составляют люди, а людям свойственно ошибаться.
Рассмотрим источники ошибок на разных этапах проектирования -
Слайд 3
На этапе составления спецификаций, формирования и утверждения технического задания источниками ошибок могут быть:
логическая несогласованность требований
упущения
неточности алгоритма. -
Слайд 4
На этапе определения функций отдельных модулей источниками ошибок могут быть:
упущения функций
несогласованность протокола взаимодействия аппаратуры и программ
неверный выбор протоколов общения
неточности алгоритмов
неверная интерпретация технических требований
упущение некоторых информационных потоков. -
Слайд 5
На этапе разработки и изготовления соответственно опытного образца источниками ошибок могут быть:
-
Слайд 6
Каждый из перечисленных источников ошибки может породить большое число субъективных или физических неисправностей, которые необходимо локализовать и устранить.
Обнаружение ошибки и локализация неисправности являются сложной задачей по нескольким причинам:
из-за большого числа неисправностей;
из-за того, что различные неисправности могут проявляться одинаковым образом.
Так как отсутствуют модели субъективных неисправностей, указанная задача не формализована. -
Слайд 7
Имеются определенные успехи в области создания методов и средств обнаружения ошибок и локализации физических неисправностей. Эти методы и средства широко используются для проверки работоспособного состояния и диагностики неисправностей дискретных систем при проектировании, производстве и эксплуатации последних.
-
Слайд 8
Субъективные неисправности отличаются от физических тем, что после обнаружения, локализации и коррекции больше не возникают.
Однако, как следует из перечня источников ошибок, субъективные неисправности могут быть внесены на этапе разработки спецификации комплекса, а это означает, что даже после самых тщательных испытаний комплекса на соответствие его внешним спецификациям в нем могут находиться субъективные неисправности. -
Слайд 9
Процесс проектирования – итерационный (численный) процесс. Неисправности, обнаруженные на этапе приемосдаточных испытаний, могут привести к коррекции спецификаций, а следовательно, к началу проектирования всего комплекса.
Обнаруживать неисправности необходимо как можно раньше, для этого надо контролировать корректность проекта на каждом этапе разработки.
Посмотреть все слайды
Сообщить об ошибке
Похожие презентации
![]()
Спасибо, что оценили презентацию.
Мы будем благодарны если вы поможете сделать сайт лучше и оставите отзыв или предложение по улучшению.
Добавить отзыв о сайте
Презентация «Ошибки в программах» по информатике – проект, доклад
Слайд 1
Слайд 2
Слайд 3
Слайд 4
Слайд 5
Слайд 6
Слайд 7
Слайд 8
Слайд 9
Презентацию на тему «Ошибки в программах»
можно скачать абсолютно бесплатно на нашем сайте. Предмет
проекта: Информатика. Красочные слайды и иллюстрации помогут вам
заинтересовать своих одноклассников или аудиторию.
Для просмотра содержимого воспользуйтесь плеером, или если вы хотите скачать доклад — нажмите на
соответствующий текст под плеером. Презентация
содержит 9 слайд(ов).
Слайды презентации
![]()
Слайд 1
Источники ошибок в ПК
Прусак А.В.
![]()
Слайд 2
Известно, что практически во всех более или менее сложных программах (а также в ОС, представляющих собой комплекс многих программ) имеются ошибки. Причина этого очевидна — программы составляют люди, а людям свойственно ошибаться. Рассмотрим источники ошибок на разных этапах проектирования
![]()
Слайд 3
На этапе составления спецификаций, формирования и утверждения технического задания источниками ошибок могут быть:
логическая несогласованность требований упущения неточности алгоритма.
![]()
Слайд 4
На этапе определения функций отдельных модулей источниками ошибок могут быть:
упущения функций несогласованность протокола взаимодействия аппаратуры и программ неверный выбор протоколов общения неточности алгоритмов неверная интерпретация технических требований упущение некоторых информационных потоков.
![]()
Слайд 5
На этапе разработки и изготовления соответственно опытного образца источниками ошибок могут быть:
![]()
Слайд 6
Каждый из перечисленных источников ошибки может породить большое число субъективных или физических неисправностей, которые необходимо локализовать и устранить. Обнаружение ошибки и локализация неисправности являются сложной задачей по нескольким причинам: из-за большого числа неисправностей; из-за того, что различные неисправности могут проявляться одинаковым образом. Так как отсутствуют модели субъективных неисправностей, указанная задача не формализована.
![]()
Слайд 7
Имеются определенные успехи в области создания методов и средств обнаружения ошибок и локализации физических неисправностей. Эти методы и средства широко используются для проверки работоспособного состояния и диагностики неисправностей дискретных систем при проектировании, производстве и эксплуатации последних.
![]()
Слайд 8
Субъективные неисправности отличаются от физических тем, что после обнаружения, локализации и коррекции больше не возникают. Однако, как следует из перечня источников ошибок, субъективные неисправности могут быть внесены на этапе разработки спецификации комплекса, а это означает, что даже после самых тщательных испытаний комплекса на соответствие его внешним спецификациям в нем могут находиться субъективные неисправности.
![]()
Слайд 9
Процесс проектирования – итерационный (численный) процесс. Неисправности, обнаруженные на этапе приемосдаточных испытаний, могут привести к коррекции спецификаций, а следовательно, к началу проектирования всего комплекса. Обнаруживать неисправности необходимо как можно раньше, для этого надо контролировать корректность проекта на каждом этапе разработки.
Список похожих презентаций
Использование массивов в программах
1. Значения двух массивов A[1..100] и B[1..100] задаются с помощью следующего фрагмента программы. Сколько элементов массива B будут иметь положительные …
Антивирусные программы
Вирус.Что это? Компьюютерный вирус — вид вредоносного программного обеспечения, способного создавать копии самого себя и внедряться в код других программ, …
Антивирусные программы
Компьютерный вирус. это небольшая программа, написанная программистом высокой квалификации, способная к саморазмножению и выполнению разных деструктивных …
Антивирусные программы
Борьба с вирусами. В наше время существуют разные способы борьбы с вирусами. Самый лучший способ защитить свой персональный компьютер это установить …
Алгоритмы и программы
КОМАНДЫ ДЛЯ КОМПЬЮТЕРА. Компьютерная программа представляет собой список команд, которые указывают компьютеру , что он должен делать.Некоторые программы …
Алгоритмы и программирование
АЛГОРИТМ Линейный Циклический С ветвлением С процедурой. Программа – запись алгоритма на языке программирования для компьютера. Алфавит языка. Алфавит …
Компьютерные программы по геометрии
Wingeom Geogebra Живая геометрия Poly Kig Математический конструктор 1С. Wingeom (Wgeomru). Лицензия: Freeware 1985-2009 (свободное пользование) Автор: …
Антивирусные программы
Описание программного продукта антивируса Avast. Описание программного продукта Антивируса Avast. Аvast Internet Security является одной из лучших …
Антивирусные программы
Введение. Компьютеры в наше время выполняют множество задач. Практически никто сейчас не работает без компьютера. Рынок IT процветает и развивается, …
Советы как сделать хороший доклад презентации или проекта
- Постарайтесь вовлечь аудиторию в рассказ, настройте взаимодействие с аудиторией с помощью наводящих
вопросов, игровой части, не бойтесь пошутить и искренне улыбнуться (где это уместно). - Старайтесь объяснять слайд своими словами, добавлять дополнительные интересные факты, не нужно
просто читать информацию со слайдов, ее аудитория может прочитать и сама. - Не нужно перегружать слайды Вашего проекта текстовыми блоками, больше иллюстраций и минимум текста
позволят лучше донести информацию и привлечь внимание. На слайде должна быть только ключевая
информация, остальное лучше рассказать слушателям устно. - Текст должен быть хорошо читаемым, иначе аудитория не сможет увидеть подаваемую информацию, будет
сильно отвлекаться от рассказа, пытаясь хоть что-то разобрать, или вовсе утратит весь интерес. Для
этого нужно правильно подобрать шрифт, учитывая, где и как будет происходить трансляция презентации,
а также правильно подобрать сочетание фона и текста. - Важно провести репетицию Вашего доклада, продумать, как Вы поздороваетесь с аудиторией, что скажете
первым, как закончите презентацию. Все приходит с опытом. - Правильно подберите наряд, т.к. одежда докладчика также играет большую роль в восприятии его
выступления. - Старайтесь говорить уверенно, плавно и связно.
- Старайтесь получить удовольствие от выступления, тогда Вы сможете быть более непринужденным и будете
меньше волноваться.
1
Лекция 2. ИСТОЧНИКИ ОШИБОК В ПРОГРАММНЫХ СРЕДСТВАХ
2
Учебные вопросы 1. Интеллектуальные возможности человека 2. Неправильный перевод как причина ошибок в программных средствах 3. Модель перевода. 4. Основные пути борьбы с ошибками
3
Вопрос 1.
4
Программа или логически связанная совокупность программ на носителях данных, снабженная программной документацией, называется программным средством (ПС). Программа позволяет осуществлять некоторую автоматическую обработку данных на компьютере. Программная документация позволяет понять: какие функции выполняет та или иная программа ПС, как подготовить исходные данные и запустить требуемую программу в процесс ее выполнения, что означают получаемые результаты (или каков эффект выполнения этой программы). помогает разобраться в самой программе, что необходимо, например, при ее модификации.
5
Надежность (reliability) ПС это его способность безотказно выполнять определенные функции при заданных условиях в течение заданного периода времени с достаточно большой вероятностью. При этом под отказом в ПС понимают проявление в нем ошибки.
6
Выделяют три интеллектуальные возможности человека, используемые при разработке ПС: 1. способность к перебору, 2. способность к абстракции, 3. способность к математической индукции.
7
Способность человека к перебору связана с возможностью последовательного переключения внимания с одного предмета на другой, позволяя узнавать искомый предмет. Эта способность весьма ограничена — в среднем человек может уверенно (не сбиваясь) перебирать в пределах 1000 предметов (элементов). Человек должен научиться действовать с учетом этой своей ограниченности.
8
Средством преодоления этой ограниченности является его способность к абстракции, благодаря которой человек может объединять разные предметы или экземпляры в одно понятие, заменять множество элементов одним элементом (другого рода). Способность человека к математической индукции позволяет ему справляться с бесконечными последовательностями.
9
При разработке ПС человек имеет дело с системами. Под системой будем понимать совокупность взаимодействующих (находящихся в отношениях) друг с другом элементов. Примеры систем: ПС можно рассматривать как пример системы. Логически связанный набор программ является другим примером системы. Любая отдельная программа также является системой. Понять систему значит осмысленно перебрать все пути взаимодействия между ее элементами.
10
Под простой будем понимать такую систему, в которой человек может уверенно перебирать все пути взаимодействия между ее элементами, а под сложной будем понимать такую систему, в которой он этого делать не в состоянии. Между простыми и сложными системами нет четкой границы, поэтому можно говорить и о промежуточном классе систем: к таким системам относятся программы, о которых программистский фольклор утверждает, что «в каждой отлаженной программе имеется хотя бы одна ошибка».
11
При разработке ПС мы не всегда можем уверенно знать о всех связях между ее элементами из-за возможных ошибок. Поэтому полезно уметь оценивать сложность системы по числу ее элементов: числом потенциальных путей взаимодействия между ее элементами, т.е. n!, где n число ее элементов. Систему назовем малой, если n 7. При n=7 имеем промежуточный класс систем. Малая система всегда проста, а большая может быть как простой, так и сложной. Задача технологии программирования научиться делать большие системы простыми.
12
Полученная оценка простых систем по числу элементов широко используется на практике. Так, для руководителя коллектива весьма желательно, чтобы в нем не было больше шести взаимодействующих между собой подчиненных. Весьма важно также следовать правилу: «все, что может быть сказано, должно быть сказано в шести пунктах или меньше». Полезно ему следовать и при разработке ПС.
13
Вопрос 2.
14
При разработке и использовании ПС многократно осуществляется преобразование (перевод) информации из одной формы в другую: 1. Заказчик формулирует свои потребности в ПС в виде некоторых требований. 2. Исходя из этих требований, разработчик создает внешнее описание ПС, используя при этом спецификацию (описание) заданной аппаратуры и, возможно, спецификацию базового программного обеспечения. 3. На основании внешнего описания и спецификации языка программирования создаются тексты программ ПС на этом языке. 4. По внешнему описанию ПС разрабатывается также и пользовательская документация. 5. Текст каждой программы является исходной информацией при любом ее преобразовании, в частности, при исправлении в ней ошибки. 6. Пользователь на основании документации выполняет ряд действий для применения ПС и осуществляет интерпретацию получаемых результатов.
15
Грубая схема разработки и применения ПС
16
На каждом из этих этапов перевод информации может быть осуществлен неправильно, например, из-за неправильного понимания исходного представления информации. Возникнув на одном из этапов разработки ПС, ошибка в представлении информации преобразуется в новые ошибки результатов, полученных на последующих этапах разработки, и, в конечном счете, окажется в ПС.
17
Вопрос 3.
18
Процесс перевода информации из представления A в представление B.
19
Основные шаги перевода: он получает информацию, содержащуюся в представлении A, с помощью своего читающего механизма R; он запоминает полученную информацию в своей памяти M; он выбирает из своей памяти преобразуемую информацию и информацию, описывающую процесс преобразования, выполняет перевод и посылает результат своему пишущему механизму W; с помощью этого механизма он фиксирует представление B.
20
Ошибки перевода: На первом шаге способность человека «читать между строк» (способность, которая часто оказывается полезной, позволяя ему понимать текст, содержащий неточности или даже ошибки) может стать причиной ошибки в ПС. Ошибка возникает в том случае, когда при чтении документа A человек, пытаясь восстановить недостающую информацию, видит то, что он ожидает, а не то, что имел в виду автор документа A. В этом случае лучше было бы обратиться к автору документа за разъяснениями.
21
Ошибки перевода: При запоминании информации человек осуществляет ее осмысливание (здесь важен его уровень подготовки и знание предметной области, к которой относится документ A). И, если он поверхностно или неправильно поймет, то информация будет запомнена в искаженном виде.
22
Ошибки перевода: На третьем этапе забывчивость человека может привести к тому, что он может выбрать из своей памяти не всю преобразуемую информацию или не все правила перевода, в результате чего перевод будет осуществлен неверно. Это обычно происходит при большом объеме плохо организованной информации.
23
Ошибки перевода: На четвертом этапе стремление человека быстрее зафиксировать информацию часто приводит к тому, что представление этой информации оказывается неточным, создавая ситуацию для последующей неоднозначной ее интерпретации.
24
Вопрос 4.
25
Учитывая рассмотренные особенности действий человека при переводе можно указать следующие пути борьбы с ошибками: сужение пространства перебора (упрощение создаваемых систем), обеспечение требуемого уровня подготовки разработчика (это функции менеджеров коллектива разработчиков), обеспечение однозначности интерпретации представления информации, контроль правильности перевода (включая и контроль однозначности интерпретации).
Слайд 1
Понятие об ошибке программного обеспечения. Источники ошибок

Слайд 2
Вопросы для повторения:
Назовите некоторые советы по отладке программы
Для чего необходимы
комментарии в программе? Что необходимо комментировать в коде программы?

Слайд 3
Как определить, когда следует остановить отладку?
Ясно, что отладка должна
идти до тех пор, пока не будут выявлены все ошибки, — или нам так покажется.
А как узнать, что мы нашли последнюю ошибку? Мы не знаем.
Последняя ошибка — это шутка программистов. Такой ошибки не существует. В большой программе никогда невозможно найти последнюю ошибку.
Кроме отладки, нам необходим систематический подход к поиску ошибок.

Слайд 4
Классификация ошибок:
1) Ошибки во время компиляции. Это ошибки, обнаруженные компилятором.
Их можно подразделить на категории в зависимости от того, какие правила языка он нарушают:
синтаксические ошибки;
ошибки, связанные с типами.

Слайд 5
Классификация ошибок:
2) Ошибки во время редактирования связей. Это ошибки, обнаруженные
редактором связей при попытке объединить объектные файлы в выполняемый модуль.

Слайд 6
Классификация ошибок:
3) Ошибки во время выполнения. Это ошибки, обнаруженные в
ходе контрольных проверок выполняемого модуля. Эти ошибки подразделяются на следующие категории:
ошибки, обнаруженные компьютером (аппаратным обеспечением и/или операционной системой);
ошибки, обнаруженные с помощью библиотеки (например, стандартной);
ошибки, обнаруженные с помощью программы пользователя.

Слайд 7
Классификация ошибок:
4) Логические ошибки. Это ошибки, найденные программистом в поисках
причины неправильных результатов.

Слайд 8
Программа должна стремиться удовлетворять следующим условиям:
1. Должна вычислять желаемые результаты
при всех допустимых входных данных.
2. Должна выдавать осмысленные сообщения обо всех неправильных входных данных.
3. Не обязана обрабатывать ошибки аппаратного обеспечения.
4. Не обязана обрабатывать ошибки программного обеспечения.
5. Должна завершать работу после обнаружения ошибки.
Часть основных проф. требований
Слайд 9
Источники ошибок:
Плохая спецификация. (Плохо представили назначение программы → невозможно предусмотреть
обработку всех ошибок)
Неполные программы. В ходе разработки неизбежно возникают варианты, которые мы не предусмотрели.
Непредусмотренные аргументы. Если функция принимает аргумент, который не был предусмотрен, то возникнет проблема (sqrt(-1.2)).
Непредусмотренные входные данные.
Неожиданное состояние. Большинство программ хранит большое количество данных («состояний»): списки адресов, каталоги телефонов и данные о температуре, записанные в объекты типа vector. Что произойдет, если эти данные окажутся неполными или неправильными?
Логические ошибки. Эти ошибки приводят к тому, что программа просто делает не то, что от нее ожидается.
И др.

Слайд 10
Ошибки во время компиляции
Многие ошибки, которые обнаруживает компилятор, относятся
к категории «грубых ошибок», представляющих собой ошибки, связанные с типами, или результат неполного редактирования кода. Другие ошибки являются результатом плохого понимания взаимодействия частей нашей программы.

Слайд 11
Синтаксические ошибки
//функция
int area(int length, int width); // Sпрямоуг.
int si =
area(7,2;
int si = area(7)
Int s3 = агеа(7);
int s4 >> area(‘7,2’);

Слайд 12
Итак, если вы не видите ничего неправильного в строке, на
которую ссылается компилятор, проверьте предшествующие строки программы.
Синтаксические ошибки
Слайд 13
Ошибки, связанные с типами
После того как вы устраните синтаксические ошибки,
компилятор начнет выдавать сообщения об ошибках, связанных с типами переменных, функций и др.
//функция
int area(int length, int width); // Sпрямоуг.
int x0 = arena(7,2);
int x1 = area(7);
int x2 = area(«seven»,2) ;

Слайд 14
Не ошибки
(логические ошибки)
int area(int length, int width);
// Sпрямоуг.
int х4
= аrеа(10,-7); // ОК: но …
int х5 = area(10.7,9.3); // ОК: но…
char х6 = area (100, 9999); // ОК: но …

Слайд 15
Ошибки во время редактирования связей
Любая программа состоит из нескольких отдельно
компилируемых частей, которые называют единицами трансляции (translation units). Каждая функция в программе должна быть объявлена с теми же самыми типами, которые указаны во всех единицах трансляции, откуда она вызывается. Для этого используются заголовочные файлы. Кроме того, каждая функция должна быть объявлена в программе только один раз. Если хотя бы одно из этих правил нарушено, то редактор связей выдаст ошибку.

Слайд 16
Ошибки во время выполнения программы
Если программа не содержит ошибок, которые
можно обнаружить на этапах компиляции и редактирования связей, то она выполняется. Здесь-то и могут проявиться настоящие ошибки.
Например, файл не найден.

Слайд 17
Сообщения об ошибках
Иногда можно вернуть сообщение «Неправильное значение».
Предотвратить ошибку при
вызове функции area (x, у) в модуле main() относительно просто:
if (x<=0) error(«неположительное х»);
if (у<=0) error(«неположительное у»);
int area1 = area(x,у);

Слайд 18
Существует другой способ решить описанную проблему: использовать исключения (exceptions)
Сообщения об
ошибках

Слайд 19
if(x==1)
// правильно!
{
y=x+3;
z=y*5;
}

Слайд 20
Найдите ошибки:
if (x=1)
// неправильно!
// выполняется всегда!
{
y=x+3;
z=y*5;
}

Слайд 21
Найдите ошибки:
if (x==1);
{
y=x+3;
z=y*5;
}
// неправильно!
// выполняется
всегда!
эквивалентно коду:
if(x==1)
{
[пустой оператор];
}
y=x+3;
z=y*5;

Слайд 22
Найдите ошибки:
if(x==1)
y=x+3;
z=y*5;
// неправильно!
отсутствуют фигурные скобки, хотя в условии задумано
больше одного оператора
эквивалентно коду:
if (x==1)
{
y=x+3;
}
z=y*5;

Слайд 23
Домашнее задание:
Выучить основные источники ошибок
написать примеры возможных ошибок для
нескольких операторов

Слайд 1Технология программирования
Надежность программного обеспечения
Слайд 3Введение
Ошибка – это неспособность системы действовать в соответствии с перечнем требований,
предъявляемых к системе
Ошибка имеет место, если программное обеспечение не выполняет того, что пользователю разумно от него ожидать
Отказ – проявление ошибки
Слайд 4Введение
Тестирование – это процесс выполнения программы с целью обнаружения ошибок
Доказательство –
попытка найти ошибку в программе безотносительно к входным данным
Контроль (верификация) – поиск ошибок в ПО при выполнении его в тестовой моделируемой среде
Испытание – поиск ошибок в ПО при выполнении его в заданной реальной среде
Отладка – установление точной причины обнаруженной ошибки. Результаты тестирования являются исходным материалом для отладки
Надежность ПО – это вероятность его работы без отказов в течение определенного периода времени, рассчитанная с учетом стоимости для пользователя каждого отказа
Слайд 5Связь процесса тестирования и процесса проектирования
Потребности
Архитектура
системы
Внешние
спецификации
Реализация
модулей
Приемо-сдаточные испытания
(Acceptance Testing)
Системное
тестирование
(System Testing)
Тестирование интеграции
(Integration Testing)
Тестирование модулей
(Unit Testing)
Контроль
проектирования
Контроль
проектирования
Контроль
требований
Подтверждение
требований
Уровни тестирования
Подготовка тестов
Исполнение тестов
Комплексное тестирование
Слайд 6Связь процесса тестирования и процесса проектирования
Defect correction cost profile for the
software industry
Software testing : testing across the entire software development life
cycle / by Gerald D. Everett, Raymond McLeod, Jr.
Слайд 7Уровни тестирования
Тестирование модуля. Выявление ошибок в минимальных элементах программной системы. Выполняется
по мере разработки модулей
Интегрированное тестирование. Тестируется взаимодействие между компонентами, в том числе и сторонними
Системное тестирование. Тестирование разработанной системы в целом. Цель проверить, что все системные элементы объединены и выполняют заданные функции. Может выполняться в моделируемой или реальной среде
Приемо-сдаточное тестирование. Проверка готовности для использования конечными пользователями. Цель – подтвердить, что функции, описанные в спецификациях соответствуют ожиданиям пользователей. Альфа-тестирование – заказчиком в организации разработчика. Бета-тестирование – выполняется конечными пользователями.
Слайд 8Виды тестирования
Тестирование функциональности (functionality testing)
Функциональные тесты (function test). Выявляют ошибки в
реализации требуемых функций. Эти тесты выполняются для модулей, интеграции компонентов, приложений и систем в целом
Тесты безопасности (security test). Проверка того, что данные и функции системы доступны только тем актантам, которым они предназначены. Выполняются на всех уровнях тестирования
Тесты предельных значений (volume test). Тестируется возможность обработки максимальных объемов данных
Тестирование практичности/удобства (usability testing). Включает тестирование удобства пользовательского интерфейса, всех видов эксплуатационной документации (включая оперативную документацию)
Тестирование надежности (reliability testing)
Тесты интеграции (integrity). Дают оценку устойчивости к ошибкам отдельных модулей и их сборок
Тесты структуры (structure). Например, в веб-приложении проверяется корректность всех ссылок, определяется правильность предоставления информации
Стрессовые (stress) тесты. Проверяется работоспособность приложения в «ненормальных» условиях (превышение загрузки, недостаток памяти, недоступные устройства, недоступные внешние компоненты)
Тестирование производительности (performance testing)
Сравнительные (benchmark) тесты. Сравнение производительности разрабатываемой системы со сторонними системами
Тесты конфликтов (contention). Тестирование одновременного доступа актантов к одним и тем же ресурсам (БД, память, и т.д.)
Нагрузочные (load) тесты. Тестирование границ приемлемого выполнения функций под изменяющейся нагрузкой. Эмулируются средние и пиковые нагрузки. Анализируется время ответа и время реакции системы на запросы (реакция системы – некоторые ответные действия системы, не обязательно ответ на запрос).
Тестирование сопровождаемости (supportability testing)
Тесты конфигурирования (configuration). Проверяется правильность функционирования при различных конфигурациях программного обеспечения и аппаратуры.
Тесты инсталляции (installation). Тесты возможности инсталляции системы при различных конфигурациях программного обеспечения и аппаратуры.
Слайд 9Стратегии тестирования
Тестирование по спецификациям
Тестирование «черного ящика»
Формальное тестирование
Тестирование по тексту программ
Тестирование «белого
ящика»
Содержательное тестирование
Учет сведений о внутренней реализации
Слайд 10Стратегии тестирования
2
1
3
4
4 теста
10 раз
10 раз
N = (23)10 ⋅ 2 ⋅ (23)10
= 261 = 2 ⋅ (210)6 > 2 ⋅ (103)6 = 2 ⋅1018
4 ⋅1017сек
Слайд 11Цикломатическая сложность
процедуры – количество
независимых путей
V(G)=1
V(G)=2
V(G)=P+1
P – количество ветвлений
…
Классы эквивалентности
и
граничные значения
Правильные
значения
Не правильные
значения
Не правильные
значения
empty
full
-1
0
70
71
Стратегии тестирования
Стек
Количество студентов [0;70]
Слайд 12Тестирование модуля
1. Тестирование модуля, как черного ящика
Матрица тестирования
классов эквивалентности и
граничных значений
Слайд 13Тестирование модуля
2. Тестирование базового пути
(каждая ветвь хотя бы один раз)
Матрица
учета ветвей
A
B
C
T
F
T
F
T
F
Ранее подготовленные
тесты
Дополнительные
тесты
Слайд 14Тестирование модуля
3. Тестирование циклов (в т.ч. вложенных)
Ранее подготовленные
тесты
Дополнительные
тесты
Матрица учета циклов
4.
Тестирование чувствительности к входным данным
Это тестирование граничных значений локальных структур данных:
— ситуации деления на ноль, переполнение
— утечки памяти
Слайд 15Тестирование интеграции (интегрированное тестирование)
Цель – обнаружение ошибок взаимодействия модулей
Последовательность тестирования определяется
порядком сборки (интеграции) модулей
Средства: драйверы и заглушки
Слайд 16Тестирование интеграции
Восходящее тестирование (снизу — вверх)
Д
Д
Д
1
2
— Автономно тестируются только модули нижнего
уровня
— Количество драйверов определяется количеством модулей
— Ошибки локализуются в последнем подключаемом модуле
Д
3
Слайд 17Тестирование интеграции
Нисходящее тестирование (сверху — вниз)
Проблемы:
— Обращение к модулю, который
еще не существует
— Передача тестовых данных модулю самого верхнего уровня
— Сложные заглушки с тестовыми данными
Достоинства:
— Совмещение тестирования модулей, интеграции и системное тестирование (функциональное) совмещены и выполняются на ранних этапах
— Тестовые данные готовятся в естественном виде (при наличии модулей ввода-вывода)
— Меньшее количество данных (ограничение передачи данных вниз)
Недостатки:
— Большое количество отложенных решений
Низкая надежность модулей нижних уровней
Разработка и тестирование начинаются с модуля верхнего уровня
Слайд 18Тестирование интеграции
Метод «большого скачка» (монолитное тестирование)
Достоинства:
— Распараллеливание работ по проектированию
и автономному тестированию
Все модули тестируются автономно и одновременно интегрируются в систему
Недостатки:
— Необходимость и в драйверах, и в заглушках
— Модули долгое время не тестируются совместно
— Трудность локализации ошибок
Слайд 19Тестирование интеграции
Модифицированный нисходящий
В нисходящем методе
Модификация
Каждый модуль проходит автономное тестирование перед
Слайд 20Тестирование интеграции
Метод сэндвича
Д
Д
Д
1
2
З
З
З
2
1
Прикладной уровень
Уровень элементарных
операций
Стыковка
Одновременно начинается нисходящая и восходящая интеграция и
тестирование.
Достоинства:
— Раннее начало интеграции системы и тестирования
— Надежное тестирование модулей нижних уровней
Слайд 21Тестирование интеграции
Модифицированный метод сэндвича
Д
Д
Д
1
2
З
З
З
2
1
Прикладной уровень
Уровень элементарных
операций
Стыковка
З
Д
З
Д
З
Д
То же самое, что метод сэндвича,
но модули верхнего уровня тестируются сначала автономно (модифицированный нисходящий метод). Это требует дополнительных драйверов
Слайд 22Тестирование интеграции
Сравнительный анализ
Слайд 23Системное тестирование (разработка функциональных тестов)
Метод диаграмм причин-следствий (cause-effect):
Выявляются причины (значения из
классов эквивалентности входных данных) и следствия (ожидаемые отклики системы)
Разрабатывается граф причинно-следственных связей (автоматная модель приложения)
Формируется таблица решений
Столбцы решений образуют тестовые данные (тестовые случаи)
Слайд 24Метод диаграмм причин-следствий
c
e
c
e
c1
c2
e
∨
c1
c2
e
∧
с1
с2
E
с1
с3
I
с2
Функция «тождество»
Функция «не»
c = {0,1} e = {0,1}
Функция «или»
Функция
«и»
Ограничение «исключает»
(только одна величина = 1)
Ограничение «включает»
(хотя бы одна величина = 1)
Может
отсутствовать
Слайд 25Метод диаграмм причин-следствий
Пример. Тестировать исполнение команды операционной системы
rename name1 [name2]
Описание тестируемой
функции
Заменить имя name1 указанного файла на name2
Если не указано name2, то файл с name1 удаляется
Сообщать об ошибке, если нет файла с name1
Сообщать об ошибке, если нарушен синтаксис команды
Если файл с name2 существует, то не удалять его, и сообщать об ошибке
Слайд 26Метод диаграмм причин-следствий
Причины:
(с1) Длина name1 от 1 до 8 символов
(с2) Длина
name2 от 1 до 8 символов
(с3) Длина name2 равна 0
(с4) Файл с именем name1 существует
(с5) Файл с именем name2 существует
Промежуточные причины:
(c6) Правильные name1 и name2
(c7) Правильное name1, а name2 отсутствует
(c8) Команда синтаксически правильная
Следствия:
(e1) Файл переименован
(e2) Сообщение «Файл переименован»
(e3) Сообщение «Нет файла»
(e4) Сообщение «Синтаксическая ошибка»
(e5) Файл удален
(e6) Сообщение «Файл удален»
(e7) Сообщение «Файл существует»
rename name1 [name2]
Полный перебор
требует 25 = 32 теста
Слайд 27Метод диаграмм причин-следствий
c5
e7
c1
c2
c3
c4
e1
e2
e3
e4
e5
e6
Длина name1
от 1 до 8 символов
Длина name2
от
1 до 8 символов
Длина name2
равна 0
Файл с именем name1
существует
Файл с именем name2
существует
Файл
переименован
Сообщение
«Файл переименован»
Сообщение
«Нет файла»
Сообщение
«Синтаксическая
ошибка»
Файл удален
Сообщение
«Файл удален»
Сообщение
«Файл существует»
E
c6
c7
c8
∧
∧
∨
Таблица решений
Рассматриваются только те следствия, которые не были рассмотрены ранее
1
Первый слайд презентации
ТЕМА №4
Корректность ПС
МиКПО

Изображение слайда
2
Слайд 2: Рассматриваемые вопросы
Основные понятия и виды корректности программ.
Типы эталонов и методы измерений и проверки корректности программ.
Ошибки в ПС (количественное описание ошибок, классификационная схема программных ошибок, источники ошибок).
Управление технологической безопасностью ПС и данных
МиКПО

Изображение слайда
Корректность комплексов программ
Корректность
текстов
программ
Синтаксическая
Корректность
программных
модулей
Корректность
данных
Корректность
групп и комплексов
программ
Семантическая
Структурная
Функциональная
Структурная
Конкретных
значений
Структурная и
межмодульных
связей
Функциональная
Детерминированная
Стохастическая
Детерминированная
Динамическая
Стохастическая
МиКПО

Изображение слайда
КОНСТРУКТИВНАЯ
Заключается в соответствии их структуры общим правилам структурного программирования и конкретным правилам оформления и внутреннего построения программных модулей.
данных
модулей
ФУНКЦИОНАЛЬНАЯ
Определяется корректностью обработки исходных данных и получения результатов.
КОНСТРУКТИВНАЯ
Определяется правилами их структурирования и упорядочения.
ФУНКЦИОНАЛЬНАЯ
Связана, в основном, с конкретизацией их содержания в процессе исполнения программ, а также при подготовке данных внешними абонентами.
МиКПО

Изображение слайда
5
Слайд 5: Корректность групп программ
КОНСТРУКТИВНАЯ
Определяется правилами структурного, модульного построения программных комплексов и общими правилами организации межмодульных связей. Эта составляющая может быть проверена формализованными автоматизированными методами.
ФУНКЦИОНАЛЬНАЯ
Можно разделить на:
детерминированную корректность – обеспечивается тогда, когда между исходными и результирующими данными используемых программ и определенными эталонными значениями устанавливается однозначное соответствие
стохастическую корректность – результирующие и исходные данные соответствуют распределениям случайных величин
динамическую корректность – соответствие изменяющихся во времени результатов исполнения программ эталонным данным
МиКПО

Изображение слайда
6
Слайд 6: Схема взаимодействия компонент, определяющих обнаруживаемые отклонения программ от эталонов
Модель области
определения исходных данных
Эталоны:
формализованные правила;
программные спецификации;
тесты
Проверяемые программы:
исходные тесты;
результаты исполнения
Средства сравнения программ
и их результатов с эталонами
Отклонение от эталонов
МиКПО

Изображение слайда
Методы получения
эталонных значений
ручные или на ЭВМ расчеты
по аналитическим формулам
использование результатов
функционирования ранее
разработанных реальных комплексов
программ или их компонент
разработка упрощенных
или обобщенных математических
моделей проверяемых программ
разработка правдоподобных
гипотез и постановка
умозрительных экспериментов
МиКПО

Изображение слайда
8
Слайд 8: Верификация программ и инварианты
Верификация (подтверждение правильности) программ состоит в проверке и доказательстве корректности разработанной программы по отношению к совокупности формальных утверждений, представленных в программной спецификации и полностью определяющих связи между входными и выходными данными этой программы, при этом отношения между переменными на входе и на выходе программы анализируется не в виде конкретных значений (или распределений, как при тестировании), а в виде описания их свойств, проявляющихся при любых процессах обработки этих переменных в контролируемой программе (т.е. проверка на более высоком уровне).
Инварианты – представляют собой условия, не зависящие от входных спецификаций программы и отражающие фактические отношения между переменными программы.
МиКПО

Изображение слайда
9
Слайд 9: Блок-схема системы верификации программных модулей
Разработчик
программы
Текст программы
на языке
Автоматическая генерация
инвариантов верификации
Контроль исходных данных
и дополнение условий верификации
Группирование условий верификации
по этапам доказательства корректности
Доказательство корректности
компонент программы
Доказательство корректности взаимодействия
компонент и программы в целом
Спецификации на
программный модуль
Синтаксический контроль
корректности спецификаций
МиКПО

Изображение слайда
10
Слайд 10: Понятие ошибки
В широком смысле слова под ошибкой понимают неправильность, погрешность или неумышленное, невольное искажение объекта или процесса. При этом подразумевается, что известно правильное или неискаженное состояние объекта, к которому относится ошибка.
Считается, что в программе имеется ошибка, если она не выполняет того, что пользователю разумно от нее ожидать. В результате наличие ошибки становится функцией, как самого программного комплекса, так и неформализованных ожиданий его пользователей.
МиКПО

Изображение слайда
11
Слайд 11: Первичные и вторичные ошибки (часть 1)
Первичные ошибки – это искажения в тексте программ, подлежащие корректировке. Однако непосредственно обнаруживается ошибка по ее вторичным проявлениям, путем сравнения результатов функционирования программы с одним из перечисленных выше типов эталонов. Искажение выходных результатов исполнения программы, или вторичная ошибка, вызывает необходимость выполнения ряда операций по локализации и устранению первичной ошибки.
В первом приближении величину вторичной ошибки в j -х результатах решения задачи за счет пропущенных при отладке первичных ошибок можно оценить статистически следующим образом:
Если принять, что при длительности отладки величина есть вероятность наличия в программе первичной ошибки k -го типа, которая при исполнении программы вносит в результирующую j -ю переменную дополнительную ошибку, то значение вторичной ошибки у j -й переменной можно представить выражением
,
где m – полное количество типов, не выявленных в программе, первичных ошибок.
МиКПО

Изображение слайда
12
Слайд 12: Первичные и вторичные ошибки (часть 2)
Формальная оценка значений и затруднительна, в лучшем случае их можно оценить методами экспертного опроса при условии четкой предварительной классификации m типов первичных ошибок в программах (индекс k ) и q выходных величин (индекс j ). Тогда можно получить общую средневзвешенную ошибку функционирования системы вследствие не выявленных первичных ошибок:
Потеря эффективности программ за счет неполной отлаженности в первом приближении можно считать прямо пропорциональным (с коэффициентом ) среднеквадратическим вторичным ошибкам в выходных результатах:
МиКПО

Изображение слайда
13
Слайд 13: Первичные и вторичные ошибки (итог)
Таким образом, оценка вторичных ошибок функционирования программ может в принципе производиться по значениям потерь вследствие не устраненных первичных ошибок в программе. Вторичные ошибки являются определяющими для эффективности функционирования программ, и не каждая первичная ошибка вносит заметный вклад в выходные результаты. Вследствие этого ряд первичных ошибок может оставаться необнаруженным и, по существу, не влияет на функциональные характеристики программы.
МиКПО

Изображение слайда
14
Слайд 14: Классификационная схема ошибок

Изображение слайда
ОБЕСПЕЧЕНИЕ ТЕХНОЛОГИЧЕСКОЙ БЕЗОПАСНОСТИ
ПС И БД
МиКПО

Изображение слайда
16
Слайд 16: Основные понятия
Безопасность данных – защита данных от случайного или преднамеренного разрушения, раскрытия или модификации.
Секретность – право лица решать, какую информацию он желает разделить с другими, а какую скрыть.
Конфиденциальность – понятие, которое употребляется по отношению к данным; это статус, предоставленный данным и согласованный между лицом или организацией, предоставляющей данные, и организацией, получающей данные. Конфиденциальность определяет требуемую степень защиты данных.
Целостность – имеет место тогда, когда данные в системе не отличаются от данных в исходных документах, т.е. не произошло случайного или преднамеренного изменения данных, их уничтожения.
МиКПО

Изображение слайда
17
Слайд 17: Цели обеспечения безопасности использования программ и данных
Сохранение целостности, полноты и достоверности информации и программ обработки данных, установленных собственником или уполномоченным им лицом.
Предотвращение утечки, хищения, утраты, несанкционированного уничтожения, искажения модификации (подделки), блокирования, копирования и других непредусмотренных негативных воздействий на ПС и данные, информационную систему.
Обеспечение конституционных прав граждан на сохранение личной тайны и конфиденциальности персональной информации, накапливаемой в БД.
Сохранение секретности, конфиденциальности информации в соответствии с действующим законодательством.
Соблюдение прав авторов программной и информационной продукции, используемых в информационной системе.
МиКПО

Изображение слайда
18
Слайд 18: Модель анализа безопасности информационной системы при отсутствии злоумышленных угроз
Объекты уязвимости
вычислительный процесс
информация БД
объектный код программ
информация для потребителей
Дестабилизирующие факторы и угрозы безопасности
Внутренние:
ошибки проектирования при постановке задач
ошибки алгоритмизации задач
ошибки программирования
недостаточное качество средств защиты
Внешние:
ошибки персонала при эксплуатации
искажения информации в каналах
сбои и отказы аппаратуры ЭВМ
изменения конфигурации системы
Меры предотвращения угроз безопасности
предотвращение ошибок в CASE -технологиях
систематическое тестирование
обязательная сертификация
Оперативные методы повышения безопасности
временная избыточность
информационная избыточность
программная избыточность
Последствия нарушения безопасности
разрушение вычислительного процесса
разрушение информации БД
разрушение текста программ
разрушение информации для потребителей
Модель анализа безопасности информационной системы при отсутствии злоумышленных угроз
МиКПО

Изображение слайда
19
Слайд 19: Оперативные методы повышения безопасности
Временная избыточность состоит в использовании некоторой части производительности ЭВМ для контроля исполнения программ и восстановления вычислительного процесса.
Информационная избыточность состоит в дублировании накопленных, исходных и промежуточных данных, обрабатываемых программой.
Программная избыточность для контроля обеспечения достоверности наиболее важных решений по обмену и обработки информации.
МиКПО

Изображение слайда
20
Последний слайд презентации: ТЕМА №4
Корректность ПС
МиКПО
КОНЕЦ ТЕМЫ №4
МиКПО

Изображение слайда
Тестирование и отладка программ
Всякая программа содержит ошибки. Задача разработчика – свести их количество к минимуму и не допустить серьезных сбоев при эксплуатации программы.
После программирования программист переходит к тестированию и отладке программы.
Тестирование – проверка работоспособности
программного продукта при всевозможных вариантах его эксплуатации с целью обнаружения ошибок.
Отладкой называется процесс поиска и устранения ошибок.
После отладки необходимо повторить весь процесс тестирования, так как устранение одних ошибок нередко приводит к появлению других.
2
Типы ошибок в программах
Синтаксические ошибки, их также называют ошибками времени компиляции (Compile-time error), наиболее легко устранимы. Их обнаруживает компилятор, а программисту остается только внести изменения в текст программы и выполнить повторную компиляцию
Ошибки времени выполнения (Run-time error) возникают не при каждом запуске программы, а лишь при определенном наборе входных данных (например, делении на ноль или вводе некорректной даты). Для их выявления требуется тщательно подготовить тестовые примеры. Если причиной являются не программные ошибки, а действия пользователя, то в программе должна быть предусмотрена обработка исключительных ситуаций
Алгоритмические ошибки. Компиляция программы, в которой есть алгоритмическая ошибка, завершается успешно. При пробных запусках программа ведет себя нормально, однако результата получается неверный. Для того чтобы устранить алгоритмическую ошибку, приходится анализировать алгоритм, вручную «прокручивать» его выполнение
3
Синтаксические ошибки
4
Ошибки времени выполнения
5
Алгоритмические ошибки
правильно n-2
6
Методы тестирования программ
Авторское тестирование (еще его называют методом «белого ящика») – проверка программы исходя из ее логики. Автор, зная внутреннюю логику программы, подбирает тестовые примеры так, чтобы проверить работу всех ее блоков.
Неавторское тестирование (стороннее, по методу «черного ящика») – проверка программы с точки зрения пользователя. Тестовые примеры подбираются исходя из реальных ситуаций, возникающих в ходе эксплуатации.
В крупных фирмах – разработчиках ПО тестированием занимается специальный персонал. В небольших коллективах практикуется «перекрестное тестирование»
Массовое тестирование. Для продуктов, выпускаемых на рынок,
используют тестирование широким кругом потенциальных пользователей. Для этого выпускают так называемую «бета-версию»
продукта и распространяют ее (обычно бесплатно) без гарантий надежной работы. Сбор информации об ошибках и отказах дает неоценимый материал для отладки.
7
Методы отладки программ
Трассировка — это процесс выполнения программы по шагам (step-by-step), инструкция за инструкцией. Во время трассировки программист дает команду:
выполнить очередную инструкцию программы.
Метод точек останова – заключается в том, что программист помечает некоторые инструкции программы (ставит точки останова), при достижении которых программа приостанавливает свою работу, и можно начать трассировку или проконтролировать значения переменных.
Наблюдение значений переменных
Как правило все методы используются совместно
8
Средства отладки в Delphi: трассировка
Delphi обеспечивает два режима трассировки: без захода в процедуру (Step over) и с заходом в процедуру (Trace into).
Режим трассировки без захода в процедуру выполняет трассировку только главной процедуры, при этом трассировка подпрограмм не выполняется, вся подпрограмма выполняется за один шаг.
В режиме трассировки с заходом в процедуру выполняется трассировка всей программы, т. е. по шагам выполняется не только главная программа, но и все подпрограммы.
Средства отладки в Delphi: точки останова
Программа доходит до указанной точки и останавливается. Затем можно выполнить трассировку
Для точки останова можно задать некоторые дополнительные параметры при
помощи диалогового окна Add Source Breakpoint меню
Run.
10
Соседние файлы в папке ИТ
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Слайды и текст этой презентации
Слайд 1
Описание слайда:
Качество программного обеспечения
Слайд 2
Описание слайда:
Качественные характеристики программного продукта
— надежность;
— эффективность;
— модифицируемость;
— мобильность;
— понятность (программа должна быть составлена так, чтобы ее легко было читать и использовать, так как программа пишется для людей);
— учет человеческого фактора.
Слайд 3
Описание слайда:
Эффективность программы — это минимальные затраты оперативной и внешней памяти, времени работы процессора, необходимые для выполнения программы.
Слайд 4
Описание слайда:
Мобильность — программа является завершенной и машинонезависимой.
Слайд 5
Описание слайда:
Модифицируемость — это возможность расширения вычислительных возможностей отдельных модулей.
Слайд 6
Описание слайда:
Учет человеческого фактора — программа не требует излишних затрат времени и усилий пользователя по поддержанию ее функционирования.
Слайд 7
Описание слайда:
Надежность программы определяется как свойство выполнять заданные функции в заданных условиях работы и на заданной вычислительной машине
Слайд 8
Описание слайда:
Сбои в работе:
выдача неверных результатов;
отсутствие результатов;
уменьшение производительности;
порча данных пользователя.
Слайд 9
Описание слайда:
Отказ программного продукта может быть обусловлен двумя причинами:
1) нарушение разработчиком программы спецификации — технических требований к программе;
2) спецификация неточная или не полная.
Слайд 10
Описание слайда:
Классификация программ
По степени точности спецификации:
1) программы, функции которых полностью определяются спецификацией;
2) программы, функции которых корректируются сопоставлением вычислительных и измеренных результатов (сюда относятся моделирующие программы , реализующие математическую модель физического объекта )
3) программы, действующие в постоянно изменяющейся среде (эта среда состоит из других программ, данных пользователей, реальных установок и схем и т.п.; к ним относятся операционные системы, управляющие программы и т.д.).
Слайд 11
Описание слайда:
В связи с этой классификацией введено понятие корректности программы — ее соответствие спецификации.
Но поскольку спецификация не всегда и не полностью соответствует фактическим требованиям к программе, возможны случаи, когда некорректная программа работает надежно или, наоборот, корректная программа — ненадежно.
Слайд 12
Описание слайда:
Характерной особенностью ошибок, вызывающих отказы программ, является их скрытность — проявление лишь в редких комбинациях исходных данных.
Слайд 13
Описание слайда:
Обеспечение и повышение надежности программ
1) Усовершенствование технологии программирования.
Методологические подходы
необходимо широко использовать принципы модульного программирования в сочетании с практикой минимизации числа соединений между модулями
необходимо искать и применять способы так называемого оборонительного программирования, направленного на уменьшение вероятности ошибок в программах.
Слайд 14
Описание слайда:
Обеспечение и повышение надежности программ
Основные концепции программирование
а) Защита –ограничение неправильного использования программных объектов.
Требование проектировать и программировать таким образом, чтобы не только гарантировать ожидаемое использование программы в строгом соответствии со спецификациями, но и сделать невозможным ее неправильное использование.
Слайд 15
Описание слайда:
Обеспечение и повышение надежности программ
Основные концепции программирование
б) Устойчивость к ошибкам, заключается в том, что как бы хорошо ни была спроектирована и реализована программа, в ней обязательно будет содержаться несколько остаточных ошибок.
Модули программы, которые могут дать сбой, должны иметь “резервный запас”.
Слайд 16
Описание слайда:
Обеспечение и повышение надежности программ
Модуль проектируется в виде блоков восстановления. Каждый блок восстановления содержит пропускной тест и один или несколько вариантов реализации. Основной вариант инициируется при вызове блока восстановления, и когда его выполнение завершается, происходит проверка значения пропускного теста.
Если он дает «истину», то считается, что выполнение блока восстановления успешно завершено.
Если же тест дает «ложь», то инициируется другой вариант, за которым следует определение значения пропускного теста и т. д. , и так до успешного выполнения блока восстановления.
Если же ни один вариант не прошел пропускного теста, то блок восстановления рассматривается как ошибочный и начинается исполнение другого варианта вызываемого модуля.
Слайд 17
Описание слайда:
Обеспечение и повышение надежности программ
2) Выбор алгоритмов не чувствительных к различного рода нарушениям вычислительного процесса (использование алгоритмической избыточности).
Слайд 18
Описание слайда:
Обеспечение и повышение надежности программ
Мерой чувствительности алгоритма может являться погрешность вычислений.
Результаты вычислений искажаются следующими погрешностями:
а) исходных данных, трансформированными в ходе вычислений;
б) округления;
в) погрешностями метода;
г) погрешностями, обусловленными отказами, сбоями и ошибками в программе;
Слайд 19
Описание слайда:
Обеспечение и повышение надежности программ
3) Резервирование программ (введение структурной избыточности).
Основано на осознании того факта, что достижение необходимого уровня надежности программы путем использования технологических мер обычно ограничено.
Для этого подготавливаются две или более версий программы для решения одной и той же задачи.
Слайд 20
Описание слайда:
Обеспечение и повышение надежности программ
При дуальном программировании (если разрабатываются две версии программы) в случае обнаружения расхождения в результатах, необходимо определить по дополнительным критериям, какой результат правильный и отбросить другой результат.
Слайд 21
Описание слайда:
Обеспечение и повышение надежности программ
При N-версионном программировании
подготавливаются N версий программы и правильный результат определяется по мажоритарному признаку, т.е. выбирается тот результат, который наблюдается в большинстве вариантов программы.
Слайд 22
Описание слайда:
Обеспечение и повышение надежности программ
при модифицированном дуальном программировании наряду с достаточно точной, но сложной основной программой используется менее точная, но простая резервная программа.
Если при одинаковых исходных данных результаты работы программ отличаются на величину большую, чем допустимая погрешность, делается предположение, что отказала основная программа, как менее надежная, и в качестве правильного результата принимается результат работы резервной программы.
Слайд 23
Описание слайда:
Обеспечение и повышение надежности программ
4) Тестирование программ. Тестирование — проверка работы программы по результатам ее выполнения на специально подобранных наборах исходных данных — тестах.
Программа может быть тестирована либо полностью, либо выборочно в отдельных точках пространства исходных данных.
Слайд 24
Описание слайда:
Обеспечение и повышение надежности программ
При выборочном тестировании надежность программы не может быть полностью гарантирована. Если тесты предлагаются программистом, то они могут охватить только те части программы, с которыми программист наиболее знаком. Поэтому многие скрытые ошибки могут оставаться не обнаруженными.
Слайд 25
Описание слайда:
Обеспечение и повышение надежности программ
Полное тестирование при всех возможных входных наборах программы или даже тестирование всех путей в структуре программы нереально, так как число тестов будет недопустимо большим.
Слайд 26
Описание слайда:
Обеспечение и повышение надежности программ
Структурное выборное тестирование
основанно на разделении пространства исходных данных на классы, причем каждый класс позволяет подтвердить определенные свойства или работоспособность определенных элементов структуры программы.
Слайд 27
Описание слайда:
Методы обеспечения надежности программных средств
создавать программные модули и функциональные компоненты высокого, гарантированного качества;
предотвращать дефекты проектирования за счет эффективных технологий и средств автоматизации обеспечения всего жизненного цикла комплексов программ и баз данных;
обнаруживать и устранять различные дефекты и ошибки проектирования, разработки и сопровождения программ путем систематического тестирования на всех этапах жизненного цикла ПС;
удостоверять достигнутое качество и надежность функционирования ПС в процессе их испытаний и сертификации перед передачей в регулярную эксплуатацию;
оперативно выявлять последствия дефектов программ и данных и восстанавливать нормальное, надежное функционирование комплексов программ.
Слайд 28
Описание слайда:
Методы обеспечения надежности программных средств
Все принципы и методы обеспечения надежности в соответствии с их целью можно разбить на четыре группы:
предупреждение ошибок,
обнаружение ошибок,
исправление ошибок,
обеспечение устойчивости к ошибкам.
Слайд 29
Описание слайда:
Методы обеспечения надежности программных средств
Предупреждение ошибок
принципы и методы, позволяющие минимизировать или вообще исключить ошибки.
Слайд 30
Описание слайда:
Методы обеспечения надежности программных средств
Обнаружение ошибок
Методы сосредоточивают внимание на функциях самого программного обеспечения, помогающих выявлять ошибки.
Слайд 31
Описание слайда:
Методы обеспечения надежности программных средств
Исправление ошибок
Функции программного обеспечения, предназначенные для исправления ошибок или их последствий.
Слайд 32
Описание слайда:
Методы обеспечения надежности программных средств
Обеспечение устойчивости к ошибкам
Мера способности системы программного обеспечения продолжать функционирование при наличии ошибок.
Слайд 33
Описание слайда:
Предупреждение ошибок
Цель — не допустить появления ошибок в готовой программе.
Слайд 34
Описание слайда:
Предупреждение ошибок
1) методы, позволяющие справиться со сложностью, свести ее к минимуму, так как это — главная причина ошибок перевода;
2) методы достижения большей точности при переводе;
3) методы улучшения обмена информацией;
4) методы немедленного обнаружения и устранения ошибок. Эти методы направлены на обнаружение ошибок на каждом шаге перевода, не откладывая до тестирования программы после ее написания.
Слайд 35
Описание слайда:
Предупреждение ошибок
Предупреждение ошибок — оптимальный путь к достижению надежности программного обеспечения.
Лучший способ обеспечить надежность — прежде всего не допустить возникновения ошибок.
Слайд 36
Описание слайда:
Обнаружение ошибок
Если предполагать, что в программном обеспечении какие-то ошибки все же будут, то лучшая (после предупреждения ошибок) стратегия — включить средства обнаружения ошибок в само программное обеспечение.
Слайд 37
Описание слайда:
Обнаружение ошибок
Немедленное обнаружение имеет два преимущества: можно минимизировать влияние ошибки и последующие затруднения для человека, которому придется извлекать информацию о ней, находить ее и исправлять.
Слайд 38
Описание слайда:
Обнаружение ошибок
Меры по обнаружению ошибок можно разбить на две подгруппы:
пассивные попытки обнаружить симптомы ошибки в процессе «обычной» работы программного обеспечения
активные попытки программной системы периодически обследовать свое состояние в поисках признаков ошибок.
Слайд 39
Описание слайда:
Обнаружение ошибок
Пассивное обнаружение.
Меры по обнаружению ошибок могут быть приняты на нескольких структурных уровнях программной системы.
Слайд 40
Описание слайда:
Обнаружение ошибок
1. Взаимное недоверие. Каждый из компонентов должен предполагать, что все другие содержат ошибки. Когда он получает какие-нибудь данные от другого компонента или из источника вне системы, он должен предполагать, что данные могут быть неправильными, и пытаться найти в них ошибки.
2. Немедленное обнаружение. Ошибки необходимо обнаружить как можно раньше. Это не только ограничивает наносимый ими ущерб, но и значительно упрощает задачу отладки.
3. Избыточность. Все средства обнаружения ошибок основаны на некоторой форме избыточности (явной или неявной).
Слайд 41
Описание слайда:
Обнаружение ошибок
Активное обнаружение ошибок
Диагностический монитор -параллельный процесс, который периодически анализирует состояние системы с целью обнаружить ошибку:
периодически выполняемая задача (например, она планируется на каждый час)
задача с низким приоритетом, которая планируется для выполнения в то время, когда система переходит в состояние ожидания.
Слайд 42
Описание слайда:
Обнаружение ошибок
Монитор может
обследовать основную память, чтобы обнаружить блоки памяти, не выделенные ни одной из выполняемых задач и не включенные в системный список свободной памяти.
проверять также необычные ситуации: например, процесс не планировался для выполнения в течение некоторого разумного интервала времени.
осуществлять поиск «затерявшихся» внутри системы сообщений или операций ввода-вывода, которые необычно долгое время остаются незавершенными, участков памяти на диске, которые не помечены как выделенные и не включены в список свободной памяти, а также различного рода странностей в файлах данных.
Слайд 43
Описание слайда:
Исправление ошибок
После того как ошибка обнаружена, либо она сама, либо ее последствия должны быть исправлены программным обеспечением.
Исправление ошибок самой системой — плодотворный метод проектирования надежных систем аппаратного обеспечения.
Слайд 44
Описание слайда:
Исправление ошибок
Некоторые устройства способны обнаружить неисправные компоненты и перейти к использованию идентичных запасных.
Аналогичные методы неприменимы к программному обеспечению вследствие глубоких внутренних различий между сбоями аппаратуры и ошибками в программах.
Если некоторый программный модуль содержит ошибку, идентичные «запасные» модули также будут содержать ту же ошибку.
Слайд 45
Описание слайда:
Исправление ошибок
Другой подход к исправлению связан с попытками восстановить разрушения, вызванные ошибками, например искажения записей в базе данных или управляющих таблицах системы.
Слайд 46
Описание слайда:
Исправление ошибок
Польза от методов борьбы с искажениями ограничена, поскольку предполагается, что разработчик заранее предугадает несколько возможных типов искажений и предусмотрит программно реализуемые функции для их устранения.
Слайд 47
Описание слайда:
СПАСИБО ЗА ВНИМАНИЕ!