Сбросив секундное оцепенение, я понял, что это просто человек. Видимо, чем-то больной. Но выглядел он настолько уродливо и непривычно, что я не мог на него смотреть. Даже отведя глаза в сторону, я не мог избавиться от этого образа. Глаза навыкате, узкий выпуклый лоб, длинные узкие ноздри на плоском кривом носу, губы, которые не смыкались до конца и обнажали длинные корявые зубы.
– Так вот, – сказал я уже менее уверенно. – Программ очень много. Казалось бы, тестирование – это занятие вторичное. Написал программист код, и он заработает. Машина поедет, банкомат выдаст деньги. Но цена ошибки часто слишком высока.
Я вновь наткнулся взглядом на уродливого слушателя. Я понимал, что это всего-навсего внешность. И он, скорее всего, такой же человек, как и все остальные. Но от него исходило ощущение полной нереальности. Такого человека не могло быть в нашем мире. Я бы скорее поверил, что он пришёл из страшной сказки прямо сквозь стену или переместился из параллельного пространства при помощи специального батута.
– История знает много случаев, когда компании теряли огромные средства из-за недостаточного тестирования программ…
Я хотел привести примеры с датами и деталями, но распечатки под рукой не было, а память подводила.
– К примеру, были случаи, – продолжил я, – когда из-за простой ошибки на несколько месяцев останавливался конвейер завода. Терялись дорогостоящие спутники, потому что не могли навестись на передающую станцию. Падали самолёты. Целые штаты оставались без света. Но это громкие события, о которых становится известно всем. А ведь есть много фирм, которые пишут программное обеспечение и разоряются только потому, что их программы не устраивают пользователей своим качеством… Надеюсь, я смог вас убедить, что тестирование необходимо. Но что же это такое? Есть много разных определений. Мне кажется наиболее правильным следующее. Тестирование – это любая деятельность, направленная на проверку соответствия продукта предъявляемым к нему требованиям. Таким образом…
Вверх взлетела рука. Седой, хотя и не старый, мужчина прямо передо мной подал неуверенный голос:
– Можно вопрос?
– Да, конечно, – сказал я. Я немного напрягся, ожидая вопроса, на который не смогу ответить.
– Кто выдаёт требования?
– Чаще всего – заказчик продукта, – ответил я. – Или их вырабатывает совместно с заказчиком проектная команда. Иногда требования бывают неявные, например, мало в каких документах обычно оговаривается, что программа не должна завершать работу с ошибкой. Но если такая ошибка возникает, все соглашаются, что это критический дефект.
На лице автора вопроса я прочёл неудовлетворённость.
– Вы в начале упомянули, что тестировать можно и человека. Кто в таком случае заказчик?
– Хороший вопрос, – сказал я. – Ну, вы понимаете, что я это достаточно условно отнёс к тестированию в нашем понимании. Хотя в данном случае тот, кто проводит тест, тоже имеет в виду некоторые требования. Те, которые описаны в справочниках по психическим заболеваниям.
– Я спросил, потому что мне кажется… – заволновался мой собеседник. – Мне кажется, это неправильно.
– Что неправильно? – не понял я.
– Ну, тесты Роршаха или как они там называются… Я тоже пробовал проходить. Мне кажется, что в этих пятнах может что-то необычное увидеть не только психически больной человек, но и вполне нормальный, у которого просто фантазия богатая…
– Возможно, – сказал я. – Я не специалист. Но это не относится к делу. Мы же не утверждаем, что требования – это истина в последней инстанции. Просто тестируем на соответствие им.
– И с восприятием реальности то же самое, – не унимался седой, – я вот, скажем, вижу одно, а другой человек другое… И кто может сказать, кто видит правильно? Может, тот, кто принял какие-то наркотики, видит правильно, а я, нормальный и трезвый человек – искажённую реальность…
– Простите, – перебил я его. – Мне кажется, это имеет очень отдалённое отношение к теме нашего занятия…
– Да, конечно, – седой вдруг затих, склонил голову и закрыл лицо руками.
После некоторой паузы я продолжил.
– Тестирование нужно прежде всего потому, что мы хотим снизить предполагаемые потери от последующего возникновения ошибки. Чем раньше мы находим ошибку, тем дешевле нам обходится её исправление…
Я снова умолк, наткнувшись взглядом на мутанта. Я постарался на него не смотреть и, скосив глаза влево, увидел, что Андрей сидит на стуле рядом и скучает. Он поймал мой взгляд.
– Действительно, – сказал он. – Ведь если ошибку исправить раньше, чем тогда, когда, ну, мы программу выпустим, то это одно, а если потом, то совсем уже плохо… Вот.
Я решил вернуть бразды правления в свои руки.
– Вот некоторые цифры, чтобы убедить вас окончательно в важности тестирования. По статистике, 55 процентов однострочных исправлений ошибки в коде приводит к новой ошибке. Вдумайтесь – если мы что-то чиним, очень простое, то в большинстве случаев тут же что-то ломаем. А если исправление сложное и требует правки больше чем одной строки, то этот процент вырастает…