Как протестировать способ разбиения по эквивалентности процесс аутентификации пользователя?
Не могу разобраться с тем, как создать классы эквивалентности. Процесс аутентификации очень простой. Пользователь вводит мейл и пароль, если мейл существует в БД, подходит под паттерн и пароль верный, то мы загружаем пользователю его главную страницу. В случае, если он первый раз входит в систему, но его мейл имеется в БД, то мы просим его повторно ввести пароль, введенный в первый раз и перезаписываем пароль в БД. Во всех остальных случаях выдаем сообщение об ошибке. Как можно это всё разбить на классы эквивалентности и какими должны быть тестовые варианты?
классы для мэйла:
1. мейл существует в БД, подходит под паттерн и пользователь уже заходил в систему
2. мейл существует в БД, но пользователь первый раз входит в систему
3. мейл некорректный:
а) не существует в БД
б) не подходит под паттерн
пароль:
1. корректный
2. некорректный
если есть доп.ограничения на пароль, то еще разбивается
Тестовые варианты: различные комбинации классов (ну и если я правильно помню, то можно не комбинировать плохой вариант с плохим)