Тестирование и отладка программ для профессионалов будущих и настоящих. — 2-е изд. (эл.). [Михаил Александрович Плаксин] (pdf) читать постранично, страница - 2

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

& ООО «Aгентство Kнига-Cервис»

Введение

Учебные планы программистских факультетов большинства
вузов подразумевают, что студенты-первокурсники уже умеют
программировать. Однако тот курс программирования, который входит в школьную программу, недостаточен. В частности,
в нем почти не уделяется внимания таким важным вопросам,
как тестирование и отладка. Профессионалы знают, что затраты на тестирование и отладку оцениваются в 50–60% всех
затрат на разработку программы. Но для подавляющего большинства школьников, да и многих студентов «написать программу» означает написать некий текст на языке программирования и, в лучшем случае, добиться того, чтобы в нем не было
ошибок трансляции. О проверке соответствия программы поставленной задаче, поиске и исправлении смысловых ошибок,
как правило, речь даже не заходит. Причиной этого в большой
степени является отсутствие наглядной и доходчивой методики
тестирования и отладки программ.
В данной книге изложена методика тестирования учебных
программ, основанная на классических научных исследованиях и опыте преподавания начального курса программирования в
старших классах средней школы и младших курсах университета. Подробно рассматриваются отладочные средства популярной
системы Турбо Паскаль. В главах 14 и 15 описываются статистические модели оценки количества ошибок в программе и количества тестов, необходимых для их обнаружения. Изучение
этого материала требует определенной математической подготовки. Данные главы отмечены звездочкой.
Классик жанра Гленфорд Майерс свою легендарную книгу
«Искусство тестирования программ» начал с того, что предложил читателям сформировать набор тестов для проверки простенькой программы. Программа читала 3 целых числа (у Майерса — с перфокарт, мы скажем — из файла; впрочем, кто не
умеет вводить числа из файла, может вводить их с терминала),
рассматривала их как длины сторон треугольника и печатала
сообщение о том, является ли этот треугольник разносторонним, равносторонним или равнобедренным. Далее набор тестов,
предложенный читателем, надо было сравнить с набором, предложенным самим Майерсом.

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

6

Введение

Мы также используем майерсову задачу, но порядок работы
несколько изменим. Читателю предлагается составить набор
тестов для задачи про треугольники. Но обсуждать полученный
набор немедленно мы не будем. Вместо этого мы еще несколько
раз вернемся к этой задаче по ходу изучения темы с тем, чтобы
читатель мог на практике применить получаемые знания и оценить свой прогресс в этой области. И только после этого мы обсудим полученный результат.
Итак, перед дальнейшим чтением вам предлагается самостоятельно составить набор тестов для вышеуказанной программы.
Готово? Тогда — продолжим.

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Глава 1

В каком случае программа
содержит ошибку?
Понятия тестирования и отладки связаны с процессом поиска и исправления ошибок в программе. Поэтому первый вопрос, на который надо ответить, будет звучать так: в каком
случае в программе есть ошибка?
Программа содержит ошибку, если она ведет себя неразумно
с точки зрения пользователя.
Это утверждение повергает новичков в замешательство: откуда же я знаю, какое поведение программы пользователь сочтет разумным? Но если вы не знаете, какое поведение программы разумно с точки зрения вашего заказчика, значит, вы
не понимаете, какую задачу решаете. Как можно писать программу, не понимая, что она должна делать?
Как определить разумность поведения программы?
Во-первых, естественно, программа должна быть верна синтаксически, т. е. при ее трансляции не должно быть ошибок.
Текст, содержащий синтаксические ошибки, вообще не имеет
права называться программой. Такая «программа» вообще никак себя не ведет.
Во-вторых, программа должна правильно решать поставленную перед ней задачу. То есть при вводе в нее корректных исходных данных она должна выдавать правильный результат.
Какой именно результат считать правильным, надо уточнить у
заказчика. Например, если вам заказывают программу для вычисления квадратного корня, то должна ли она выдавать оба
корня (положительный и отрицательный) или только арифметический? Корень из нуля — это ±0 или просто 0? Какова требуемая точность? Она всегда должна быть одна и та же или может меняться? Если меняться, то каким образом и по чьей
инициативе? Надо ли выявлять периодические дроби? Как программа должна реагировать на отрицательное подкоренное выражение? А на предложение извлечь корень из a 2 ? Вы можете
предложить свои ответы на все эти вопросы. Но в данном случае важно не то, что думаете по этому поводу вы, а то, что думает по этому поводу ваш заказчик. Ваша задача — выявить и
сформулировать все эти вопросы, а не придумывать на них
свои собственные ответы. Для