- •Понятие формального языка. Описание синтаксиса языка.
- •Понятия тестирования и отладки. Принципы тестирования.
- •Полнота тестирования. Критерии черного ящика.
- •Критерии белого ящика.
- •Мгт. Ошибкоопасные ситуации при работе с файлами.
- •Ошибкоопасные ситуации при обращении к данным.
- •Ошибкоопасные ситуации при вычислениях.
- •Ошибкоопасные ситуации при передаче управления и вызовах подпрограмм.
- •Безмашинное тестирование.
- •Оценка количества ошибок в программе.
- •Мера доверия к миллсовой модели оценки количества ошибок в программе. Оценка количества необходимых тестов.
- •Отладка. Отладочные операторы.
- •Методы поиска ошибки. Принципы отладки. Анализ обнаруженной ошибки.
- •Отладочные средства авс-Паскаля.
- •Нисходящее программирование. Нисходящее тестирование.
- •Стиль программирования
- •Понятие алгоритма. Свойства алгоритма.
- •Операторы Паскаля
- •Замкнутые подпрограммы.
- •Открытые подпрограммы.
- •Передача параметров.
- •Рекурсия.
- •Рекуррентные вычисления. Вычисления рекурсивные и итеративные. Реализация одного и того же алгоритма рекурсивно и итеративно.
- •Блочная структура.
- •Понятие типа данных. Классификация языков по типизации.
- •Классификация типов данных. Числовые типы.
- •Перечисления. Диапазоны.
- •Массивы.
- •Моделирование массивом последовательностей: стек.
- •Моделирование массивом последовательностей: очереди
- •Моделирование массивом последовательностей: деки
- •Записи. Присоединяющий оператор.
- •Файлы. Виды файлов. Методы доступа. Триада для работы с файлом.
- •Синхронизация. Буферизация. Блокирование.
- •Двоичные файлы в авс-Паскале.
- •Строки Тип string в авс Паскале.
- •Множества.
- •Процедурные типы.
- •1 ) Описание процедурной константы в Паскале:
- •2 ) Не в Паскале:
- •Типовая безопасность. Идентичность типов.
- •Абстракция данных. Модули в Турбо-Паскале и в авс-Паскале.
- •Подходы к созданию универсального языка программирования
- •Запись с вариантами
- •Классы памяти
- •Понятие конечного автомата и мп-автомата
- •Понятие Машины Тьюринга, нормальных алгоритмов Маркова
Оценка количества ошибок в программе.
Модель Миллса – N естественных ошибок в программе, М искусственных ошибок внесем, обнаружено n естественных и m искусственных, тогда:
(N-n) – количество необнаруженных ошибок.
n/N=m/M
Модель Миллса достаточно проста, ее слабое место – предположение о равновероятности нахождения ошибок, требование отыскать все искусственные ошибки.
Парная оценка – требует тестирования двумя независимыми специалистами, обнаружение всех ошибок считаем равновероятным, не требует искусственного внесения ошибок
Предположим, что в программе N естественных ошибок
Эффективность работы: E1=N1/N, E2=N2/N
Доля всех ошибок, найденных первой группой, равна N1/N. Доля ошибок, найденных первой группой среди тех ошибок, которые были найдены второй группой равна N12/N2. Согласно рассуждениям, эти две величины должны быть равны:
количество ненайденных ошибок = N1*N2N12-N1-N2+N12
Исторический опыт – использование опыта предыдущих программ, после написания текста программы в ней содержится 4-8 ошибок на 100 операторов, по окончании автономной отладки остается 1 ошибка на 100 операторов
Мера доверия к миллсовой модели оценки количества ошибок в программе. Оценка количества необходимых тестов.
N естественных ошибок в программе, М искусственных ошибок внесем
Если мы нашли 100% искусственных ошибок, мы нашли бы 100% естественных (а если внесем только 1 ошибку?)
Предположим, что в программе N естественных ошибок, будем тестировать пока не найдем все ошибки, к моменту, когда найдено n естественных ошибок, мера доверия к модели составляет…
С=1, при n>NMM+N+1при n≤N
С – мера доверия к модели
Если предположить что N=0, внесем 4 ошибки, если не обнаружили естественных ошибок, мера доверия = 80% = (4/(4+0+1)), чтобы быть уверенными до 95% необходимо внести 19 ошибок
Оценка количества необходимых тестов – P=k=0n-11N-kk=0N-11N-k
Чем больше ошибок в программе, тем дороже обойдется поиск последних ошибок. Речь идет о доле числа тестов (чем сложнее программа, тем больше будет тестов)
Отладка. Отладочные операторы.
Отладка – процесс локализации места ошибки и внесение изменений в программу.
По каким-то внешним признакам можно найти только место проявления ошибки, место нахождения ошибки можно определить только путем содержательного анализа текста программы
Отладочные операторы - операторы печати, которые выполняют полную или частичную трассировку значений нужных переменных, трасса может выдаваться на экран или записываться в файл.
Информация, выводимая на экран, может быстро «убежать» с него, поэтому следует делать паузы.
Метод «грубой силы» - полученная информация записывается в файл, копится там «авось пригодится» и потом невозможно разобраться
В отладочном сообщении полезно отображать, какой отладочный оператор ее выдал
Для того чтобы отделять обычные комментарии от отладочных (можно временно ненужные отладочные операторы комментировать), нужно использовать разные виды скобок
Еще один инструмент отладки – встраивание в текст утверждений о том, каким ограничениям должны удовлетворять те или иные переменные
Отладочные флаги – как правило логические переменные, описанные в программе, отладочные операторы могут быть включены в одной части программы, но выключены в другой, могут существовать наборы таких операторов, управляющих одним и тем же флагом (вкл/выкл одновременно) и отслеживающих одну и ту же переменную
Уровень отладки – меняя значение соответствующей переменной (число) можно регулировать подробность трассировочной таблицы
Отладочные операторы увеличивают размер исходной программы, время трансляции, размер кода, время выполнения
Изменение отладочных операторов /удаление /добавление может внести ошибки в код