Какие кейсы можно сгенерировать для проверки функции печати строки с именем и компанией?
Что проверяют
Это задача на тест-дизайн: умеете ли вы из простой функции вытащить классы эквивалентности, границы и неочевидные входы. Первый плюс вы получаете, если начинаете с уточняющих вопросов, а не с кейсов. Следом обычно спрашивают, какие кейсы вы бы автоматизировали и как.
Как отвечать
Сначала уточните требования: формат итоговой строки, обрезаются ли пробелы, есть ли ограничение длины, что делать с пустым значением (ошибка, заглушка или пропуск) и куда идёт вывод: консоль, веб-страница, PDF. От этого зависят ожидаемые результаты. Дальше кейсы по группам:
- позитивные: обычные имя и компания, двойная фамилия через дефис, имя с апострофом вроде
O'Connor, название компании с кавычками и цифрами; - пустые и отсутствующие: пустая строка в каждом параметре и в обоих,
nullилиNone, строка из одних пробелов, пробелы в начале и в конце; - границы длины: один символ, максимально допустимая длина и на единицу больше, очень длинная строка, которая может обрезаться или переноситься;
- Unicode: кириллица, диакритика, иероглифы, арабский текст справа налево вперемешку с латиницей, эмодзи из нескольких кодовых точек. Для последних смотрят, как считается длина и не режется ли символ пополам;
- спецсимволы и инъекции:
<script>и HTML-теги, если вывод идёт в браузер;%sи{0}, если строка собирается форматированием; перевод строки и управляющие символы внутри имени; - порядок и регистр: параметры не перепутаны местами, регистр сохраняется, между частями ровно один разделитель без лишних пробелов.
Для автоматизации такие кейсы удобно оформить параметризованным тестом через @pytest.mark.parametrize или @ParameterizedTest в JUnit 5.
Где спотыкаются
Сразу выдают десяток кейсов, не спросив требований. Без них непонятно, какой результат считать правильным для пустого имени.
Ограничиваются латиницей и кириллицей. Эмодзи, диакритика и текст справа налево ломают подсчёт длины и выравнивание чаще всего остального.
Забывают про место вывода. Для веб-страницы важны экранирование и XSS, для консоли Windows кодировка терминала, и это разные наборы проверок.