Ответ
Пример набора тест-кейсов для поля "Имя пользователя" с требованиями:
- Обязательное поле.
- Допустимы только буквы и пробелы.
- Длина от 2 до 50 символов.
Тест-кейсы (покрывают позитивные и негативные сценарии):
| Тип теста | Входные данные | Действие | Ожидаемый результат |
|---|---|---|---|
| Позитивный | Анна |
Ввести и отправить форму | Данные принимаются, форма отправляется. |
| Позитивный (граница) | А (2 символа) |
Ввести и отправить форму | Данные принимаются. |
| Позитивный (граница) | Александр Сергеевич Пушкин (50 символов) |
Ввести и отправить форму | Данные принимаются. |
| Негативный (валидация) | (пробел) |
Ввести и отправить форму | Сообщение об ошибке: "Поле обязательно для заполнения". |
| Негативный (валидация) | А (1 символ) |
Ввести и отправить форму | Сообщение об ошибке: "Минимум 2 символа". |
| Негативный (валидация) | А.repeat(51) (51 символ) |
Ввести и отправить форму | Ввод обрезается до 50 символов или выводится ошибка. |
| Негативный (валидация) | John123 |
Ввести и отправить форму | Сообщение об ошибке: "Допустимы только буквы и пробелы". |
| Негативный (безопасность) | <script>alert(1)</script> |
Ввести и отправить форму | Скрипт не выполняется, данные санитизируются или отклоняются. |
Пример автоматизированного теста на Cypress:
describe('Валидация поля "Имя"', () => {
beforeEach(() => {
cy.visit('/registration');
});
it('Успешно принимает корректное имя', () => {
cy.get('#name-input').type('Мария').blur();
cy.get('.error-message').should('not.exist');
cy.get('#name-input').should('have.value', 'Мария');
});
it('Показывает ошибку при вводе цифр', () => {
cy.get('#name-input').type('Анна1').blur();
cy.get('.error-message')
.should('be.visible')
.and('contain.text', 'Допустимы только буквы и пробелы');
});
it('Показывает ошибку при вводе менее 2 символов', () => {
cy.get('#name-input').type('Я').blur();
cy.get('.error-message').should('contain.text', 'Минимум 2 символа');
});
});
Дополнительные проверки (не функциональные):
- Юзабилити: Подсказка (placeholder), фокус при загрузке страницы.
- Доступность (a11y): Наличие связанного
<label>, корректные ARIA-атрибуты. - Интеграция: Сохранение введенного значения после обновления страницы (если требуется).