Pull to refresh
0
0
Артур @mardy_bum

Пользователь

Send message
Проблема с граничными значениями часто в том, что программист не представляет себе реально граничных значений. Если бы представлял, то сразу бы написал без багов, а так и баг допустит, и тест не напишет. Несколько реальных примеров:
1. Функция бинарного поиска в сортированном массиве в куче языков программирования была сломана десятки лет для массивов длиной более 2^30 записей. Никому не приходило в голову, что (a+b)/2 может выдать отрицательное число для 32-битных знаковых целых.
2. Функция преобразования строки в число с плавающей точкой более десяти лет зацикливалась на некоторых входных строках. Миллионы людей пользовались, но никто не написал автотест на этот граничный случай.
3. Некто написал (на Java) код вроде table[Math.abs(str.hashCode())%size]. Многим ли придёт в голову написать тест на этот код, подав на вход строку «polygenelubricants» и одновременно size, не являющийся степенью двойки? Тот, кому бы пришло в голову написать такой тест, никогда бы не написал такой код.

Так что будет здорово, если рэндом случайно выстрелит в тот граничный случай, о котором вы не подумали. Конечно, зависит от ситуации: иногда граничный случай проявляется исключительно редко. Но ведь цель не написать безглючную программу, а написать программу, глюки которой не увидят клиенты.
— Почему вы сегодня здесь?
«В хаосе причинно-следственных связей и вариантов их соединения возникла вселенная, в которой все грани моей личности собрались в суперпозицию моего сознания одновременно с возникновением конкретной пустоты в пространстве вакансий вашей компании в этой же вселенной, в точке пространства возможностей, которая была достижима из моего текущего времени-местоположения в хаосе мироздания. Такая близость создала передо мной закрытую дверь и директиву „Узнай что за этой дверью, открой!“ Среди всех закрытых дверей Вашу решил открыть первой, зная что это изменит само мироздание, ведь беконечное число вселенных, меняющихся каждое мгновение, могут даже не довести это интервью до конца. Кроме того само решение работать, негативное или позитивное, сразу же закроет передо мной тысячи неоткрытых дверей, которые я пока что решил оставить на потом, но также даст мне тысячи новых закрытых дверей Каждая таит за собо возможности. Мой разум в эйфории от дикой смеси страха перед случайной ошибкой, решимости действовать и испытать себя, интереса перед новым и грусти за уже упущенное и то, что еще будет упущено. И понимание, что выбор, который должен быть рациональным, невозможно осуществить рационально в принципе, каждую секунду старается вылпеснуться в реальность и дать власть хаосу разрушить эту дверь», — пронеслось в сознании и через мгновение я ответил:
— Потому что вы хотели и я пришел, я хотел и вы меня пригласили, и пока что мы просто пьем кофе за беседой

Information

Rating
Does not participate
Registered
Activity