Добрый день, уважаемые коллеги!
Сегодня разберем задачу про палиндромы. Нам на почту поступило несколько решений.
Задача на первый взгляд достаточно простая, но с множеством нюансов. Естественно, как тестировщики, мы проверяем лишь черный ящик, а о реализации лишь можем предположить. Хотя особо интересно было б реализовать самим программу и затем протестировать.
Давайте посмотрим, как можно было решить задачу.
Шаг 1. Задать уточняющие вопросы.
Очень важно перед началом тестирования понять, как работает программа. Для этого задать уточняющие вопросы тому, кто в теме (заказчику, ПМу, аналитику). Так что молодцы, кто так делает. Это верный шаг. На худой конец Вы всегда можете записать свои вопрос (в виде тест-кейса), и исследовать поведение программы.
- Скобки поворачиваем? Т.е. в зеркальном отображении открывающая должна превратиться в закрывающую? – Нет. В данном случае это не важно.
- Считается ли симметричный текст палиндромом? – Да.
- Считается ли один символ палиндромом? – Да.
- Иероглифы и им подобные символы национальных азбук анализируются фонетически или по внешнему виду? – В иероглифах не силен. J Здесь потребуется помощь специалистов по восточным языкам. Так что не будем рассматривать этот случай, а как дополнительный тест-кейс себе отметим.
- Считаются ли корректными излишние с точки зрения грамматики знаки препинания и пробелы? – Грамматику здесь не будем проверять. Всякие скобочки (пробелы и другие спец. символы) просто игнорируются.
- Является ли определяющим признаком палиндрома осмысленность текста? – Бессмысленный набор символов будем считать буквосочетанием.
Шаг 2. Проверить работоспособность программы.
Тестирование необходимо начать с проверки, а работает ли программа так, как задумывалось. Другими словами, умеет ли она, верно определять палиндромы.
Прежде всего обратимся к спецификации вспомним определение. Чем же является палиндром?
Палиндром – это
- Число
- Буквосочетание
- Слово
- Текст
… одинаково читающиеся в обоих направлениях.
Под буквосочетанием давайте будем понимать некое выражение, состоящее из набора букв и цифр.
Итак, у нас есть 4 сущности, которые надо будет проверить. Лучше взять характерные реальные примеры палиндромов. А не просто начать вводить какие-то однобуквенные слова или пустые строки.
- Так типичное число-палиндром это «404» или «666»; слово, например, «шалаш» и «ДОХОД»; текст – «А роза упала на лапу Азора.»; буквосочетание – «18 или 81?».
- Текст может быть написан латиницей. Проверяем: «saippuakauppias» и «Don’t nod».
- Помним, что заглавные и строчные буквы в палиндромах не различаются.
Шаг 3. Провести граничные, исследовательские и негативные тесты.
- Самая короткая строка. Проверяем строки из одного символа: «5» и «Я».
- Длинная строка: «Коростели летели, летели-летели, летели-летели, … , летели лет сорок.»
- Подумайте, почему может быть плох, как тест, палиндром «Я дядя! А я тётя! А я дядя! А я тётя! А я дядя! …»
- И второй вопрос каким должен быть негативный тест с длинной строкой, где лучше разместить символы с ошибкой?
- Особый случай – это буквы Е и Ё: «Ужас — ангел лёг на сажу.»
- Буквы с ударениями тоже встречаются: «Fešná paní volá: Má málo vína pan šéf?»
- Проверим и перевод строки:
- «Им я
- иранец
- со сценариями,
- имя
- и ранец
- со сцен ариями.»
- Арабский или иероглифы – запишем для галочки.
- Одинаково пишущиеся символы из разных языков.
Проверим и следующие кейсы (для каждого может быть несколько примеров – не выписываю для краткости):
- Пустая строка
- Пробелы
- Спецсимволы
- Плохие символы (♣ ☺ ♂)
- Кодировка
Самое интересное решение прислал Ф. Терехов. С разрешения автора размещаю его решение.
До новых встреч!
В уточняющих вопросах отсутствует вопрос о том, различаются или нет строчные и прописные буквы. Ну и в зависимости от ответа - соответствующий тест.
ОтветитьУдалитьПля, Саня, давай я тебе лучше код программки покажу. :)
ОтветитьУдалитьДа на кой мне код, я его сам написать могу. Тема ж не про код, а про тестирование. Я просто обратил внимание, что у тебя в списке вопросов один важный отсутствует, и дописал его в комментарий.
ОтветитьУдалитьСаша, надеюсь ты продолжишь читать и коментить наш блог, даже после отъезда за бугор?
ОтветитьУдалитьЕстественно
ОтветитьУдалить