Лабораторная работа № 8. Тестирование и отладка программ
Теоретические сведения
Сообщение об ошибке
После возникновения ошибки, интерпретатор Python выводит сообщение с информацией для программиста. На изображении показаны важные элементы сообщения:
Чтобы сделать описание ошибок подробным и более понятным учащемуся, рекомендуется использовать модуль под названием friendly.
Если вы заходите в дальнейшем использовать модуль friendly в своей работе, его нужно установить на ваш компьютер. Для этого нужно открыть командную строку и набрать команду pip install friendly.
Список ошибок
В таблице перечислены имена часто появляющихся ошибок и описание причин их появления.
| Имя ошибки | Пояснение |
|---|---|
SyntaxError |
Ошибка в синтаксисе: пропущен необходимый символ, не хватает открывающей или закрывающей скобки и т.д. |
NameError |
В выражении используется переменная, которой ещё не было присвоено значение. Возможна опечатка в имени переменной, функции, класса. |
ValueError |
Функция ожидала аргумент другого типа. Например в функцию int передана строка, которая не содержит целое число. |
TypeError |
В выражении используются несовместимые типы. Например попытка сложить строку и число. Или в функцию передано неправильное количество аргументов. Для проверки типа переменной можно использовать функцию type(). |
IndexError |
Попытка получить элемент из списка, или символ из строки по индексу, которого нет в последовательности. |
Исправление синтаксических ошибок
- Убедитесь, что для имён переменных не используются служебные слова языка.
- В начале нового блока расположено двоеточие (после
for,while,if,def,class). - Соблюдены правила использования отступов.
- Строки обладают парными кавычками.
- Для каждой открывающей скобки есть своя закрывающая –
(),{},[].
Исправление ошибок времени выполнения
Программа ничего не выводит на экран
Убедитесь, что описанные в программе функции или методы классов вызываются, для получения результата и вывода их на экран с помощью print.
Программа выполняется без остановки
Это может произойти за-за бесконечного цикла. Чтобы найти цикл, который не завершается, разместите перед каждым циклом в программе print c сообщением “Начало цикла N”, а после цикла - “Конец цикла N”, где N - номер цикла по-порядку. Таким образом можно определить, какой из циклов в программе выполняется бесконечно:
Когда бесконечный цикл найден, разместите в конце цикла print с выводом переменной цикла и условия завершения цикла (для while):
В примере выше получим следующее:
...
1 True
1 True
1 True
...
Исходя из вывода становится понятно, что условие завершения цикла никогда не становится ложным, так как не изменяется значение переменной x. Исправленная программа выглядит следующим образом:
Задания для самостоятельной работы
Задание 1. Тестирование программ
Предложите набор тестовых данных для проверки корректности работы функции triangle(a, b, c), которая по введённым длинам сторон треугольника a, b и c вернёт одно из следующих значений: не треугольник, разносторонний, равнобедренный, равносторонний.
В текстовые поля формы вводите различные комбинации входных данных, которые позволят проверить корректность работы функции.
Полоска Покрытие тестами полностью заполнится после того. как будут проверены все тестовые кейсы.
Задание 2. Отладка программ
Распакуйте архив Задание2.zip. Последовательно открывайте программы из архива в редакторе IDLE. Исправьте синтаксические и семантические ошибки в программах. Убедитесь, что решение соответствует условию задачи.
*Задание 3. Функция triangle()(sam03.py)
Реализуйте функцию из Задания 1. Проверьте работоспособность функции на предложенных вами тестовых данных.
