- •Технология программирования и основные этапы ее развития
- •Три стратегии конструирования по
- •Классический жизненный цикл
- •Макетирование
- •Инкрементная модель
- •Спиральная модель
- •Общая таблица
- •Тестирование и отладка по
- •Отладка
- •Тестирование
- •Техническое задание
- •1. Общие сведения
- •2. Назначение и цели создания (развития) системы
- •3. Характеристики объекта автоматизации
- •4. Требования к системе
- •5. Состав и содержание работ по созданию (развитию) системы
- •6. Порядок контроля и приемки системы
- •7. Требования к составу и содержанию работ по подготовке объекта автоматизации к вводу системы в действие
- •8. Требования к документированию
- •Case-технологии
- •Моделирование бизнес процессов на основе idef0
- •Декомпозиция процессов. 5 типов связей работ в idef0. Миграция стрелок. Синтаксические ошибки.
- •Диаграммы dfd и idef3. Строительные блоки. Особенности. Примеры.
Тестирование
Как бы ни была тщательно отлажена программа, решающим этапом, устанавливающим ее пригодность для работы, является контроль программы по результатам ее выполнения на системе тестов.
Программу условно можно считать правильной, если ее запуск для выбранной системы тестов во всех случаях дает правильные результаты.
Но, как сказал известный теоретик программирования Эдсгер Вибе Дейкстра «тестирование может показать лишь наличие ошибок, но не их отсутствие». Нередки случаи, когда новые входные данные вызывают «отказ» или получение неверных результатов работы программы, которая считалась полностью отлаженной.
До реализации метода тестов заранее должны быть известны эталонные результаты. В противном случае имеется опасность невольной подгонки вычисляемых значений под желаемые, полученные ранее на машине.
Тестовые данные должны обеспечивать проверку всех возможных условий возникновения ошибок:
- должна быть испытана каждая ветвь алгоритма;
- очередной тестовый прогон должен контролировать те действия, которые еще не были проверены на предыдущих прогонах;
- первый тест самый простой для проверки работоспособности программы;
- арифметические операции должны предельно упрощаться для уменьшения объема вычислений;
- количество элементов последовательностей, точность вычислений, количество проходов цикла так же должны задаваться из соображений сокращения объема вычислений;
- минимизация вычислений не должна снижать надежности контроля;
- тестирование должно быть целенаправленным и систематизированным, так как случайный выбор исходных данных привел бы к трудностям в определении ручным способом ожидаемых результатов; кроме того, при случайном выборе тестовых данных могут оказаться непроверенными многие ситуации;
- усложнение тестовых данных должно происходить постепенно.
Рассмотрим
пример. Система тестов для задачи
нахождения корней квадратного уравнения
Номер теста |
Проверяемый случай |
Коэффициенты |
Результаты |
|||
1 |
d > 0 |
1 |
1 |
-2 |
x1 = 1, x2 = -2 |
|
2 |
d = 0 |
1 |
2 |
1 |
x1 = -1, x2 = -1 |
|
3 |
d < 0 |
2 |
1 |
2 |
корней нет |
|
4 |
a = 0, b = 0, c = 0 |
0 |
0 |
0 |
x - любое число |
|
5 |
a = 0, b = 0, c != 0 |
0 |
0 |
2 |
неправильное уравнение |
|
6 |
a = 0, b != 0 |
0 |
2 |
1 |
линейное уравнение. один корень: x = -0,5 |
|
7 |
a != 0, b != 0, c = 0 |
2 |
1 |
2 |
x1 = 0, x2 = -0,5 |
|
На входе процесса тестирования три потока:
- текст программы;
- исходные данные для запуска программы;
- ожидаемые результаты.
Выполняются тесты, все полученные результаты оцениваются. Это значит, что реальные результаты тестов сравниваются с ожидаемыми результатами. Когда обнаруживается несовпадение, фиксируется ошибка - начинается отладка.
В конечном счете, если тесты не обнаруживают ошибок, появляется сомнение в том, что тестовые варианты достаточно продуманы и что в ПО нет скрытых ошибок. Такие ошибки будут, в конечном итоге, обнаруживаться пользователями и корректироваться разработчиком на этапе сопровождения.
Существуют два принципа тестирования программы:
1) функциональное тестирование (тестирование «черного ящика»).
2) структурное тестирование (тестирование «белого ящика»).
Тестирование черного ящика
Тестирование белого ящика
