- •Тестирование
- •Понятие и цели тестирования
- •Тестирование
- •Тесты:
- •Тесты:
- •Тесты:
- •Тесты:
- •Цель тестирования:
- •Стратегии тестирования:
- •Стратегии тестирования:
- •Защитное
- •Защитное
- •Принципы защитного программирования
- •Простота реализации
- •Простота
- •Простота
- •Рекомендации:
- •Рекомендации:
- •Контроль
- •Контроль
- •Контроль
- •Контроль
- •Контроль
- •Контроль
- •Тестовые данные
- •Результаты тестовых прогонов
- •Результаты тестовых прогонов
- •Процесс тестирования
- •Рядовые (ординарные) тестовые данные
- •Рядовые (ординарные) тестовые данные
- •Экстремальные тестовые данные
- •Экстремальные тестовые данные
- •Экстремальные тестовые данные
- •Экстремальные тестовые данные
- •Исключительные тестовые данные
- •Принципы тестирования
- •Принципы тестирования
- •Принципы тестирования
- •Принципы тестирования
- •Методы тестирования
- •Достоинства восходящего метода тестирования
- •Достоинства восходящего метода тестирования
- •Восходящее
- •Восходящее
- •Нисходящее
- •Нисходящее
- •Нисходящее
- •Достоинства нисходящего метода тестирования:
- •Достоинства нисходящего метода тестирования:
- •Достоинства нисходящего метода тестирования:
- •Недостатки нисходящего метода тестирования:
- •Восходящее
Защитное
программирование
Защитное программирование
характеризует такой стиль написания программ, при котором уменьшается вероятность возникновения ошибок, а сделанные ошибки легко и быстро идентифицируются
Защитное
программирование
защитное программирование реализуется двумя путями:
во-первых, необходимо придерживаться определенного стиля программирования,
во-вторых, добавлять в программу некоторое количество операторов, призванных контролировать вероятные ошибки.
Принципы защитного программирования
Простота реализации кодов повышает надежность программы.
Общее недоверие: как к входным данным, так и к результатам.
Максимально раннее (в смысле использования программы) обнаружение и локализация ошибок.
Простота реализации
При разработке проекта программы из нескольких равнозначных решений следует выбирать наиболее простые (но не примитивные!).
Приемами, усложняющими алгоритм, следует пользоваться с максимальной осторожностью.
Простота
Пример неоправданной сложности:
for (i=0; i<n; i++) for (j=0;j<n; j++) v[i][j]=(i/j)*(j/i);
Простота
Правильный вариант:
for (i=0; i<n; i++)
{
for (j=0;j<n; j++) v[i][j]=0; v[i][i]=1;
};
Рекомендации:
Следует избегать слишком длинных операторов
Постоянство входных форматов способствует уменьшению ошибок
Циклы: следует осторожно менять значения как самого параметра цикла, так и его пределов изменения в теле цикла
Рекомендации:
Переменные: не следует использовать переменную более, чем для одной цели
Контроль
Контроль ввода. Все вводимые значения переменных должны в
обязательном порядке подвергаться контрольному выводу (так называемый эхо- вывод).
Контроль
Контроль вычислений. Результаты вычислений следует подвергать разумному контролю, привлекая для этого дополнительную информацию о характере получаемых величин