От теории пирамиды к практическим примерам. Часть 2.
Оптимальный набор для тестирования функции валидации пароля. Вспомнить контекст можно
тут.Давайте на практике разберем как нам нужно спроектировать оптимальный набор тест кейсов. Напомню параметры:
✔️длина минимальная и максимальная(min, max);
✔️заглавные буквы(cap);
✔️набор спецсимволов и цифр(spec, digits).
Как я уже говорил, параметры настраиваемые, то есть их можно задать. Например, задать количество требуемых заглавных букв равных нулю.
В качестве техник тест дизайна возьмем мои любимые: граничные значения и разделение на классы эквивалентности.
У нас есть 2 глобальных класса: это валидный пароль и невалидный.
❗️Напомню что позитивные кейсы мы можем объединять, а вот негативные нет.
Далее каждый большой класс нужно разделить на подклассы для увеличения покрытия.
Я буду расписывать сразу подходящий тест кейс для каждого класса. В скобках указаны значения для условий.
Валидный пароль:
T1: (min=34, max=34, cap=2, spec=28, digits=1) набор необходимых символов согласно заданным параметрам. Пароль может быть таким - "AbcD1x!#$%&()*+,-./:;<=>?@[]^_{|}~". В данном кейсе очень классно, что мы ещё и граничные значения проверяем. Заодно я вбил все возможные спец символы;
T2: (min=2, max=8, cap=0, spec=0, digits=0) обнулим все требования. Данный кейс позволит нам проверить что при отключении любой из опции это действительно работает. Пароль тут может быть любым - password;
T3: (min=2, max=9, cap=2, spec=2, digits=1) теперь предлагаю проверить верхнюю границу настроек . Пароль - ABcD12!#$. Данный кейс позволит нам проверить кейс когда условия выполнены больше чем требуется. Так как это валидный пароль, но в коде могут быть ошибки когда требования могут жестко сравниваться с условиями;
Невалидный пароль:
Т4: (min=2, max=8, cap=0, spec=0, digits=0): Важно занулить спец символы, для уверенности, что фейл действительно из-за нужного параметра. Проверим минимальную длину, пароль - а;
Т5: (min=2, max=2, cap=0, spec=0, digits=0): проверим максимальную длину, пароль - ааа;
Т6: (min=2, max=8, cap=1, spec=0, digits=0): проверяем заглавные, пароль - аа;
Т7: (min=2, max=8, cap=0, spec=1, digits=0): проверяем специ символы - аа;
Т8: (min=2, max=8, cap=0, spec=0, digits=1): проверяем цифры - аа;
Т9: (min=2, max=8, cap=2, spec=2, digits=0): проверяем кейс когда одно условие выполнено, а одно нет. Пароль - “ААw!A” В данном кейсе 2ое условие выполним на половину;
Т10: (min=2, max=8, cap=0, spec=2, digits=2): пароль - “!$1d%”;
T11: (min=2, max=8, cap=2, spec=2, digits=2): пароль - “A!@235”;
Кстати, пока писал кейсы, понял что я не сделал проверки в коде! На то, что настраиваемые параметры не должны превышать максимальной допустимой длины пароля.
Т12: (min=2, max=2, cap=1, spec=1, digits=1): ожидаемые результат, приложение завершится с ошибкой;
Т13: (min=2, max=1, cap=0, spec=0, digits=0): так же проверим что макс не может быть меньше мин;
На мой взгляд – это достаточно оптимальный и полный набор проверок. Но, возможно, я не прав? Пишите в комментариях.
#qaroomThoughts #testingPyramid
#testing