"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В. М. Котов, А. И. Лапо, Ю.А. Быкадоров, Е.Н. Войтехович
Получение решения задачи — этап, на котором программу запускают с подготовленными исходными данными и получают ответ. Компьютер выполняет команды алгоритма, но сам факт завершения программы ещё не доказывает, что ответ верен. Поэтому результат сравнивают с ожидаемым и проверяют программу на нескольких тестах: обычных, граничных и особых. Если обнаружена ошибка, выясняют её причину, исправляют программу и проводят проверку заново.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Исходные данные — значения, которые вводят для решения конкретной задачи. Они соответствуют данным, заданным при постановке задачи: условие определяет, какие значения нужны и какими могут быть их ограничения. Например, если требуется сложить два числа, исходными данными будут оба слагаемых. Они нужны, чтобы программа могла выполнить алгоритм именно для выбранного случая.
Результат решения — данные, полученные после выполнения программы. Это может быть одно число, несколько значений или сообщение, отвечающее на вопрос задачи. Результат должен удовлетворять условию, а не просто появиться на экране. Поэтому его проверяют, прежде чем считать решение правильным.
Тестовый пример — набор входных данных, для которого заранее известен правильный результат. Например, для сложения чисел 3 и 5 ожидаемая сумма равна 8. Такой пример нужен, чтобы сопоставить ответ программы с известным ответом. Несколько разных тестов позволяют проверить работу в разных ситуациях.
Тестирование программы — проверка её работы на тестовых примерах, в том числе с разными допустимыми входными данными. При этом смотрят, правильно ли программа обрабатывает обычные и особые случаи. Тестирование помогает обнаружить ошибки до того, как решением воспользуются для других данных. Оно не заменяет проверку алгоритма, но показывает, как программа работает на выбранных примерах.
Перед запуском подготовьте исходные данные: выясните, какие именно значения требуются программе и в каком виде их вводить. Это нужно потому, что программа ожидает данные определённого типа и порядка, заданных условием и алгоритмом. Проверьте также ограничения: например, допустимый диапазон чисел. Если ввести неподходящие значения или перепутать порядок, даже верная программа может дать неожиданный результат.
После ввода данных компьютер последовательно выполняет команды алгоритма и использует эти значения в вычислениях. Каждая команда преобразует данные или проверяет условие, а последующие команды работают с полученными значениями. В результате программа формирует ответ, предусмотренный её алгоритмом. Поэтому важно, чтобы запущена была нужная версия программы и все данные были введены полностью.
Полученный ответ нужно сопоставить с ожидаемым или проверить непосредственно по условию задачи. Это необходимо, потому что отсутствие сообщения об ошибке означает лишь, что программа смогла завершиться, но не гарантирует правильность вычислений. Для простого теста ожидаемый ответ можно вычислить самостоятельно. В более сложном случае проверьте, выполняет ли выведенное значение требование задачи.
Одного запуска обычно недостаточно: программа может верно работать на одних данных и ошибаться на других. Поэтому подготовьте несколько тестов: обычные входные значения, граничные допустимые значения и случаи, которые проверяют особые условия. Например, при проверке определения чётности стоит рассмотреть не только обычное число, но и ноль. Такой набор помогает увидеть, не пропущена ли часть возможных ситуаций.
Если ответ не совпал с ожидаемым, не исправляйте программу наугад. Сначала убедитесь, что тестовые данные введены правильно, затем проследите ход алгоритма и найдите команду, где возникает расхождение. Ошибка может быть в данных, в самом алгоритме или в его программной записи. После исправления снова запустите программу и повторите проверки: это покажет, устранена ли причина и не появились ли новые ошибки.
| Этап проверки | Что выполняют | На что обратить внимание |
|---|---|---|
| Подготовка данных | Выбирают значения для проверки. | Данные допустимы и соответствуют условию. |
| Ввод данных | Вводят значения в требуемом формате. | Не перепутаны порядок, тип и количество значений. |
| Выполнение программы | Запускают программу и получают ответ. | Выполнена нужная версия программы, ввод завершён. |
| Проверка результата | Сравнивают ответ с ожидаемым или условием. | Совпадает ли результат с правильным ответом. |
| Исправление ошибок и повторная проверка | Находят причину, исправляют и снова запускают программу. | Устранена ли ошибка и проходят ли остальные тесты. |
Используйте таблицу как последовательность действий: переходите к следующему этапу, когда предыдущий выполнен. В последнем столбце собраны вопросы для самопроверки. Если результат не прошёл проверку, вернитесь к данным, алгоритму или программе, а затем повторите запуск.
Задача 1. Программа вычисляет сумму двух чисел. Проверим её на входных данных 3 и 5. Для такого теста правильный ответ можно определить независимо от программы. Это позволяет сразу заметить расхождение, если программа выполнит сложение неверно.
Ответ: на входных данных 3 и 5 правильный результат равен 8. Совпадение подтверждает работу программы только для этого теста, поэтому для надёжной проверки понадобятся и другие пары чисел. Например, можно проверить отрицательные числа, если они разрешены условием. Каждый раз заранее определяйте ожидаемый результат.
Задача 2. Программа определяет, является ли число чётным. Проверим положительное чётное и нечётное число, а также ноль. Здесь недостаточно взять два похожих значения: проверка должна показать, как программа обрабатывает разные варианты. Для каждого ввода заранее установим правильный ответ.
Ответ: правильные результаты для 4, 7 и 0 — «чётное», «нечётное» и «чётное». Три теста проверяют разные случаи, но не обязательно охватывают все возможные ограничения задачи. Если программа не принимает отрицательные числа, их не включают в тесты; если принимает, стоит проверить и их.
Задача 3. Программа находит наибольшее из трёх чисел. Проверим разные расположения максимума, равные числа и отрицательные значения. Такое сочетание тестов важно, потому что ошибка может скрываться не в самом сравнении, а в порядке обработки значений или равенстве. Сначала составим набор случаев и заранее определим, какое число должно быть ответом.
Ответ: правильный максимум в приведённых наборах равен 9, 9, 9, 5 и −3. Если программа ошиблась только в одном случае, это помогает сузить поиск: например, неверный ответ при равных числах указывает на особенность обработки равенства. Затем проверьте исходные данные и ход алгоритма. После исправления повторите все тесты, а не только тот, на котором обнаружилась ошибка.
Проверять программу только на одном примере — недостаточно: ошибка может проявляться лишь при других или граничных данных. Так поступают, потому что первый успешный запуск кажется доказательством правильности. Проверьте себя: составьте несколько тестов, которые отличаются значениями и проверяют особые случаи. Убедитесь, что программа верно обработала каждый из них.
Считать любой выведенный ответ правильным — значит пропустить ошибку в алгоритме или программе. Ответ появляется даже тогда, когда вычисление выполнено неверно, поэтому сам факт вывода ничего не доказывает. Сравните его с заранее известным результатом или проверьте по условию. Если объяснить, почему ответ удовлетворяет условию, не получается, проверка не завершена.
Использовать данные, не соответствующие ограничениям задачи, — плохой способ проверить решение. Такие значения могут вызывать поведение, которое условие не требует обрабатывать, поэтому выводы о корректности будут ненадёжными. Перед тестированием сверьте каждое значение с ограничениями. Для проверки особых случаев выбирайте только те, которые допустимы по условию.
Не запускать программу повторно после исправления — значит не проверить, помогло ли изменение. Ошибку могли понять неверно, исправление могло затронуть другие части программы или создать новую проблему. После правки снова запустите тест, на котором обнаружили сбой, а затем остальные подготовленные тесты. Только совпадение результатов с ожидаемыми показывает, что проверка пройдена.
Получение решения опирается на предыдущие действия: нужно понять условие задачи, определить исходные и результативные данные, разработать алгоритм и записать его в виде программы. Если любой из этих элементов неясен, запуск не гарантирует правильного ответа. Проверка результата и тестирование пригодятся при создании программ и поиске ошибок. Эти умения особенно важны при решении сложных вычислительных задач, где вручную проверить каждый ответ трудно.
Зачем проверять результат, если программа завершилась без ошибок?
Программа может завершиться штатно, но выполнить неверный алгоритм или неправильно обработать данные. Поэтому ответ сравнивают с ожидаемым либо проверяют, удовлетворяет ли он условию задачи.
Как выбрать данные для тестирования программы?
Берите допустимые по условию данные, которые показывают обычные ситуации и возможные особые случаи. Полезно проверить граничные значения и разные варианты расположения данных.
Почему нельзя ограничиться одним тестовым примером?
Один пример проверяет только один набор входных данных. Ошибка может проявиться при другом значении, на границе допустимого диапазона или в особом случае.
Что делать, если программа выдаёт неправильный ответ?
Сначала проверьте, правильно ли введены данные и соответствуют ли они условию. Затем разберите алгоритм и программу, исправьте найденную ошибку и снова выполните тесты.
Нужно ли повторно запускать программу после исправления ошибки?
Да. Повторный запуск позволяет проверить, устранена ли причина неверного ответа. Кроме того, исправление могло повлиять на другие случаи, поэтому стоит пройти тесты заново.
25.8. Получение решения задачи (этап 5)