Module (88%)
Section (57%)

Когда Python закрывает глаза

Такой тест крайне важен. Мы хотим показать вам, почему Вы не должны его пропускать. Посмотрите на код:

temperature = float(input('Enter current temperature:')) if temperature > 0: print("Above zero") elif temperature < 0: prin("Below zero") else: print("Zero")

Мы намеренно ввели ошибку в код - надеемся, что Ваши зоркие глаза сразу ее заметили. Да, мы удалили только одну букву, и, по сути, действительный вызов функции print() превращается в явно недопустимое выражение "prin()". В области видимости нашей программы нет такой функции, как "prin()", но действительно ли это очевидно для Python?

Запустите код и введите 0.

Как видите, код завершает свое выполнение без каких-либо препятствий.

Как такое возможно? Почему Python упускает из виду такую очевидную ошибку разработчика?

Можете ли Вы найти ответы на эти фундаментальные вопросы?



Тесты, тестирование и тестировщики

Ответ проще, чем Вы можете ожидать, и к тому же немного разочаровывающий. Python - как Вы точно знаете - это интерпретируемый язык. Это означает, что исходный код анализируется и выполняется одновременно. Следовательно, Python может не успеть проанализировать строки кода, которые не подлежат исполнению. Как сказал старый разработчик: "Это фича, а не баг" (разг. от англ. - it's a feature, not a bug) (пожалуйста, не используйте эту фразу для оправдания странного поведения Вашего кода).

Теперь Вы понимаете, почему прохождение всех путей исполнения так важно и неизбежно?

Предположим, Вы завершили свой код и все тесты прошли успешно. Вы доставляете свой код тестировщикам и - к счастью! - они нашли в нем какие-то ошибки. Мы используем выражение "к счастью" совершенно сознательно. Вы должны признать, что, во-первых, тестировщики - лучшие друзья разработчика. Не относитесь к обнаруженным ими ошибкам как к преступлению или злокачественному новообразованию; и, во-вторых, каждая ошибка, которую обнаруживают тестировщики, не затрагивает пользователей. Оба фактора ценны и заслуживают вашего внимания.

Вы уже знаете, что Ваш код содержит ошибку или ошибки (последнее более вероятно). Как их найти и как исправить код?