воскресенье, 20 октября 2019 г.

Классы эквивалентности для имен


Какие могут быть имена:
  • свое, короткое, длинное, составное, на английском, транслитерация, регистр
  • полное, краткое, уменьшительное: Ольга, Оля, Оленька
  • буквы, которые одинаково выглядят на русском и на английском: Oльга и Ольга
  • имя, с которого может начинаться фамилия и/или отчество: Александр(ов)
  • или не может: Михаил никак не может начинать отчество, потому что в русском языке И в Й перейдет
  • имена, у которых возможны разные варианты написания: Наталья/Наталия, Алена/Алёна
  • имя, которое бывает и полной формой, и краткой одновременно (Лана, Ася). Может быть и Лана, и Ася по паспорту, а могут быть Светлана и Анастасия
  • имя, которое в мужском и женском варианте отличается только окончанием, особенно интересно в подсказках — оба варианта система покажет или только один? (Александр/Александра, Владлен/Владлена)
Нужно ли каждый раз проводить все эти тесты? Конечно, нет! Все зависит от проекта, доступа к коду, времени, отведенного на тестирование...
Например, если вы четко знаете, что «имя» — это просто строка (на окне регистрации, в личном кабинете, или где-то еще), то нет смысла так изгаляться. Тут нам поможет любимое всеми «русские буковки, английские, перемешал, цифр и спецсимволов добавил — профит!».

А что, если вы не знаете наверняка? У вас нет доступа к коду, это вообще не ваш сайт?


Как понять, есть ли проверки на этой форме? Вдруг она запрещает вводить фамилии или другой треш? Или вдруг там есть ограничение на длину имени и вполне адекватный «Ян» будет в пролете? А что, если она не даст ввести имя Иван (вполне реальная история, между прочим)?

А что потом произойдет с введенным значением? Оно сохранится в личном кабинете? Может, система попробует определить по нему ваш пол? Что, если система умеет определять только мужской пол, это прям в коде зашито из серии «пока все мужчины, потом доработаем»? Или что, если система туповата: «все имена, которые заканчиваются на А — женские»? Вам смешно, а мой коллега Никита рассказывал о такой...

А что, если система не смогла определить пол? Вдруг она даже карточку открыть не даст, потому что по коду значение undefined не предусмотрено?

Мы можем попробовать найти, куда приведут нас данные. То есть после регистрации проверить приветственное письмо в почте, зайти в личный кабинет. Увидеть, на что влияет имя.

Мы можем попробовать через F12 увидеть ограничения, которые зашиты на клиенте. Но без доступа к коду мы не узнаем обо всех ограничениях на сервере. Да и с доступом это не всегда легко найти, мало ли, где эти условия там закопаны...

В общем, верить системе «на слово» нельзя, нужно проверять. Правда ли разные имена попадут в один клас эквивалентности?
  • Ян = Павел?
  • Ольга = Никита?
  • Маша = Мария?
Доходить до абсурда и тестировать одно поле 2 часа не нужно. Но проверить несколько разных значений — можно! А дальше зависит от условий:
  • Если у нас есть на тестирование всей регистрации минут 10, то проверяем парочку базовых значений (мужское / женское хотя бы), и всё!
  • Если у нас есть ТЗ и мы знаем, что это просто строка, то тут вообще все просто. Не надо выдумывать самые разные имена. Проверили обычное, потестировали длину строки. Всё. Для избежания эффекта пестицида при следующей проверке использовали другое имя.
  • Если у нас система определяет пол или выдает подсказки — то тут уже нужны тесты на имя, а не абстрактную строку.
Вся задача этих примеров или похожих заданий — чтобы вы могли придумывать очень много позитивных в первую очередь проверок. Да, конечно, на реальном проекте у вас просто не хватит времени проверить все, что вам в голову придет. На ту же форму регистрации у вас будет минут пятнадцать. На всю форму.

Но вы должны уметь выделять как можно больше классов, и расставлять свои приоритеты. Потому что когда у вас на всю форму пятнадцать минут, в эти пятнадцать минут вы должны успеть впихнуть самые позитивные варианты, а не Ц;УДЛодлод и пустые поля.

А выкинуть лишнее мы всегда успеем. Вот если научитесь генерировать проверки именно своего поля, а не абстрактной строки — это вам ОЧЕНЬ сильно поможет. Потому что когда пойдут более сложные требования, вы увидите там то, что пропустят любители серебряной пули.

См также:

Заблуждения программистов об именах — еще больше классов эквивалентности и идей для тестов!

Классы эквивалентности: будни Золушки — подробнее о классах эквивалентности
Ивану кредит не давать! — история о баге, который обязательно пропустят те, кто в ютубе возмущен количеством придуманных мной тестов

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

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

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