вторник, 15 октября 2019 г.

Ивану кредит не давать!

Пару лет назад мой коллега Иван зашел на сайт банка Х и попробовал оставить заявку на кредит. Ввел ФИО и получил отлуп — «Имя «Иван» вводить нельзя».


Оказалось, что это криво реализованная защита от дурака. ФИО «Иванов Иван Иванович» вызывает подозрение. Скорее всего, это вымышленные данные, которые ввел тестировщик, или человек, который просто дурачится, не хочет давать свои данные.

Конечно, даже Иванов Иван Иванович может встретиться, но таких очень мало и с ними проще работать в ручном режиме. А от вымышленных данных защититься.

Проблема в том, что нужно было запретить связку: имя Иван и фамилия Иванов и отчество Иванович. То есть условие в коде записать через AND.

А разработчики сделали через OR: если фамилия Иванов ИЛИ имя Иван ИЛИ отчество Иванович — получай ошибку!

Так что увы, все Ивановы, и даже просто Иваны. Таких имен нет, выберите другое!

**************************************************************************

Это реальная история, не вымышленная. Я писала о ней в статье «Классы эквивалентности: будни Золушки» — как пример того, что вроде выделил классы эквивалентности, а баг пропустил!


Если вы тестируете черный ящик, вы никогда не можете с уверенностью сказать, что проверили все классы эквивалентности. Никогда не знаешь, что придет в голову разработчику и какую «защиту» он поставит на поле. Пусть даже в остальном это будет простое текстовое поле, куда можно вводить всё, что угодно...

И именно поэтому так важно уметь выделять классы эквивалентности. И думать о конкретном поле, а не просто как о «это строка, а это число». Это не просто строка, это имя. Вот и проверяйте имена.

Да, и это не убережет от пропущенного бага. Потому что никогда не угадаешь, что может прийти в голову разработчику ¯\_(ツ)_/¯

И все же шансов найти проблему у вас будет больше! Да, закапываться тоже не стоит. Не надо часами тестировать простую строку. Но провести проверки для конкретного поля, а не string — можно и нужно.

Комментариев нет:

Отправить комментарий