Речь идет обо всем остальном, что может случиться.

Почему вы тестируете?

Люди обычно думают, что тестирование — это рутинная работа, и не делают его, потому что «оно уже работает».

Кроме тех случаев, когда это не так, и тогда они спешат это исправить и надеются, что на этот раз никто не будет жаловаться.

Конечно, счастливый путь работает. Но что, если вы получите ошибку? Что, если вы попробуете что-то другое?

Почему тестирование — это не счастливый путь

Особенно если добавить к этому ЗОМБИ:

  • Z — Ноль
  • О — Один
  • M — Многие (или более сложные)
  • B — Граничное поведение
  • I — Определение интерфейса
  • E — Упражнение «Исключительное поведение»
  • S — Простые сценарии, простые решения

Это вынуждает вас добавлять сценарии, которые фактически будут тестировать ваше приложение способами, которые никогда не будут реализованы в счастливом пути.

И что лучше всего? Вы можете легко найти распространенные ошибки, которые обнаружит пользователь, злонамеренный или нет.

Затраты на тестирование и отсутствие тестирования

Некоторые люди любят говорить о цене «траты времени» на создание тестов.

Что ж, кто-то показал мне последний пример «тестирования в продукте»: фиаско управления воздушным движением Великобритании.

Я не совсем знаком с тем, что произошло, но, по общему мнению, какая-то компания ввела неправильные или неверные данные, и это обрушило все, что привело к отмене сотен рейсов и потере миллионов долларов. Судя по полученному мной обзору, два километра друг от друга имели один и тот же идентификатор, и система была спроектирована так, чтобы безопасно отказывать и останавливать все, когда она не может обработать данные.

В любом случае дублирование данных — это настолько распространенное явление, что обычно это одно из первых вещей, которые мы тестируем. Мало того, обычно вы добавляете один слой во внешний интерфейс, а затем другой во внутренний, иногда вы даже добавляете ограничения в свою базу данных.

Я не говорю, что у них нет тестов, я ожидаю, что они есть. Но я также видел подобные (хотя и не такие дорогостоящие) проблемы, возникающие из-за отсутствия тестирования.

Никогда не доверяйте пользователям… или даже разработчикам!

Я говорю о ваших пользователях, вредоносных агентах, ваших коллегах и даже о вас! Не доверять никому!

Отсутствие тестирования означает, что вы просто слепо доверяете людям делать то, что вы думали во время написания кода, и вы можете видеть, что количество людей в списке «людей, которые знают», начинается с очень малого числа и стремится к нулю. .

Пользователи будут пробовать странные вещи… в конце концов, они пользователи. Мало того, у многих разработчиков нет близких отношений с обычными пользователями, вам может показаться что-то странным, но для других это нормально. (Например: меня сбивает с толку то, что нормальным людям нужны телефонные приложения для вещей, для которых приложение на самом деле не нужно. Я не хочу загружать плохо написанное, раздутое приложение, чтобы иметь возможность что-то делать в продуктовом магазине.)

Вредоносным агентам нравится, что большинство разработчиков не любят тестирование. Если они тебе нравятся… ок?

Ваши коллеги иногда могут быть хуже пользователей. Гипотетический пример: они знают ровно столько, чтобы оставить своего рода бэкдор открытым, потому что им проще использовать такой способ.

Наконец… ты! Ты думаешь, что знаешь это как свои пять пальцев только потому, что написал эту чертову вещь. Но это был прошлый ты, с тех пор ты вырос, но теперь тебе приходится иметь дело с проблемами, которые осталось решить «будущему».

Ограждения важны для всех, кто-то неизбежно поскользнется, и когда это время придет… это будет стоить, будь то время и/или деньги, и в зависимости от того, где вы работаете и чем, жизни людей.