Лабораторная работа № 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. Проверьте работоспособность функции на предложенных вами тестовых данных.
