Файл: Обеспечения Базовый курс (3е издание) Версия книги 2 от 17. 04. 2023.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 07.11.2023
Просмотров: 902
Скачиваний: 31
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
Типичные ошибки при разработке чек-листов, тест-кейсов и наборов тест-кейсов
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 160/301
2.4.8.
Типичные ошибки при разработке чек-листов, тест-кейсов и
наборов тест-кейсов
Ошибки оформления и формулировок
Отсутствие заглавия тест-кейса или плохо написанное заглавие. В абсо- лютном большинстве систем управления тест-кейсами поле для заглавия вынесено отдельно и является обязательным к заполнению — тогда эта проблема отпадает.
Если же инструментальное средство позволяет создать тест-кейс без заглавия, возникает риск получить N тест-кейсов, для понимания сути каждого из которых нужно прочитать десятки строк вместо одного предложения. Это гарантированное убийство рабочего времени и снижение производительности команды на порядок.
Если заглавие тест-кейса приходится вписывать в поле с шагами и инстру- ментальное средство допускает форматирование текста, заглавие стоит писать
жирным шрифтом, чтобы его было легче отделять от основного текста.
Продолжением этой ошибки является создание одинаковых заглавий, по ко- торым объективно невозможно отличить один тест-кейс от другого. Более того, воз- никает подозрение, что одинаково озаглавленные тест-кейсы и внутри одинаковы.
Потому следует формулировать заглавия по-разному, при этом подчёркивая в них суть тест-кейса и его отличие от других, похожих тест-кейсов.
И, наконец, в заглавии недопустимы «мусорные слова» вида «проверка»,
«тест» и т.д. Ведь это заглавие тест-кейса, т.е. речь по определению идёт о про- верке, и не надо этот факт подчёркивать дополнительно. Также см. более подроб- ное пояснение этой ошибки ниже в пункте «Постоянное использование слов «про- верить» (и ему подобных) в чек-листах».
Отсутствие нумерации шагов и/или ожидаемых результатов (даже если таковой всего лишь один). Наличие этой ошибки превращает тест-кейс в «поток со- знания», в котором нет структурированности, модифицируемости и прочих полез- ных свойств (да, многие свойства качественных требований
{44}
в полной мере при- менимы и к тест-кейсам) — становится очень легко перепутать, что к чему отно- сится. Даже выполнение такого тест-кейса усложняется, а доработка и вовсе пре- вращается в каторжный труд.
Ссылка на множество требований. Иногда высокоуровневый тест-кейс
{120}
действительно затрагивает несколько требований, но в таком случае рекоменду- ется писать ссылку на максимум 2–3 самых ключевых (наиболее соответствующих цели тест-кейса), а ещё лучше — указывать общий раздел этих требований (т.е. не ссылаться, например, на требования 5.7.1, 5.7.2, 5.7.3, 5.7.7, 5.7.9, 5.7.12, а просто сослаться на раздел 5.7, включающий в себя все перечисленные пункты). В боль- шинстве инструментальных средств управления тест-кейсами это поле представ- ляет собой выпадающий список, и там эта проблема теряет актуальность.
Использование личной формы глаголов. Если вы пишете требования на русском, то пишите «нажать» вместо «нажмите», «ввести» вместо «введите», «пе- рейти» вместо «перейдите» и т.д. В технической документации вообще не рекомен- дуется «переходить на личности», а также существует мнение, что личная форма глаголов подсознательно воспринимается как «чужие бессмысленные команды» и приводит к повышенной утомляемости и раздражительности.
Использование прошедшего или будущего времени в ожидаемых ре-
зультатах. Это не очень серьёзная ошибка, но всё равно «введённое значение отображается в поле» читается лучше, чем «введённое значение отобразилось в поле» или «введённое значение отобразится в поле».
Типичные ошибки при разработке чек-листов, тест-кейсов и наборов тест-кейсов
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 161/301
Постоянное использование слов «проверить» (и ему подобных) в чек-
листах. В итоге почти каждый пункт чек-листа начинается с «проверить …», «про- верить…», «проверить…». Но ведь весь чек-лист — это и есть список проверок!
Зачем писать это слово? Сравните:
Плохо
Хорошо
Проверить запуск приложения.
Проверить открытие корректного файла.
Проверить модификацию файла.
Проверить сохранение файла.
Проверить закрытие приложения.
Запуск приложения.
Открытие корректного файла.
Модификация файла.
Сохранение файла.
Закрытие приложения.
Сюда же относится типичное слово «попытаться» в негативных тест-кейсах
(«попытаться поделить на ноль», «попытаться открыть несуществующий файл»,
«попытаться ввести недопустимые символы»): «деление на ноль», «открытие не- существующего файла», «ввод спецсимволов» намного короче и информативнее.
А реакцию приложения, если она не очевидна, можно указать в скобках (так будет даже информативнее): «деление на ноль» (сообщение «Division by zero detected»),
«открытие несуществующего файла» (приводит к автоматическому созданию файла), «ввод спецсимволов» (символы не вводятся, отображается подсказка).
Описание стандартных элементов интерфейса вместо использования
их устоявшихся названий. «Маленький крестик справа вверху окна приложения»
— это системная кнопка «Закрыть» (system button «Close»), «быстро-быстро два- жды нажать на левую клавишу мыши» — это двойной щелчок (double click), «ма- ленькое окошечко с надписью появляется, когда наводишь мышь» — это всплыва- ющая подсказка (hint).
Пунктуационные, орфографические, синтаксические и им подобные
ошибки. Без комментариев.
Логические ошибки
Ссылка на другие тест-кейсы или шаги других тест-кейсов. За исключе- нием случаев написания строго оговорённого явно обозначенного набора последо- вательных тест-кейсов
{148}
это запрещено делать. В лучшем случае вам повезёт, и тест-кейс, на который вы ссылались, будет просто удалён — повезёт потому, что это будет сразу заметно. Не повезёт в случае, если тест-кейс, на который вы ссы- лаетесь, будет изменён — ссылка по-прежнему ведёт в некое существующее ме- сто, но описано там уже совершенно не то, что было в момент создания ссылки.
Детализация, не соответствующая уровню функционального тестиро-
вания
{79}
.
Например, не нужно на уровне дымового тестирования
{79}
проверять ра- ботоспособность каждой отдельной кнопки или прописывать некий крайне слож- ный, нетривиальный и редкий сценарий — поведение кнопок и без явного указания будет проверено множеством тест-кейсов, объективно задействующих эти кнопки, а сложному сценарию место на уровне тестирования критического пути
{80}
или даже на уровне расширенного тестирования
{81}
(в которых, напротив, недостатком можно считать излишнее обобщение без должной детализации).
Типичные ошибки при разработке чек-листов, тест-кейсов и наборов тест-кейсов
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 162/301
Расплывчатые двусмысленные описания действий и ожидаемых ре-
зультатов. Помните, что тест-кейс с высокой вероятностью будете выполнять не вы (автор тест-кейса), а другой сотрудник, и он — не телепат. Попробуйте дога- даться по этим примерам, что имел в виду автор:
• «Установить приложение на диск C». (Т.е. в «C:\»? Прямо в корень? Или как?)
• «Нажать на иконку приложения». (Например, если у меня есть ico-файл с иконкой приложения, и я по нему кликну — это оно? Или нет?)
• «Окно приложения запустится». (Куда?)
• «Работает верно». (Ого! А верно — это, простите, как?)
• «OK». (И? Что «OK»?)
• «Количество найденных файлов совпадает». (С чем?)
• «Приложение отказывается выполнять команду». (Что значит «отказыва- ется»? Как это выглядит? Что должно происходить?)
1 ... 19 20 21 22 23 24 25 26 ... 38
Описание действий в качестве наименований модуля/подмодуля.
Например, «запуск приложения» — это НЕ модуль или подмодуль. Модуль или под- модуль
{125}
— это всегда некие части приложения, а не его поведение. Сравните:
«дыхательная система» — это модуль человека, но «дыхание» — нет.
Описание событий или процессов в качестве шагов или ожидаемых ре-
зультатов. Например, в качестве шага сказано: «Ввод спецсимволов в поле X».
Это было бы сносным заглавием тест-кейса, но не годится в качестве шага, который должен быть сформулирован как «Ввести спецсимволы (перечень) в поле X».
Куда страшнее, если подобное встречается в ожидаемых результатах.
Например, там написано: «Отображение скорости чтения в панели X». И что? Оно должно начаться, продолжиться, завершиться, не начинаться, неким образом из- мениться (например, измениться должна размерность данных), как-то на что-то по- влиять? Тест-кейс становится полностью бессмысленным, т.к. такой ожидаемый результат невозможно сравнить с фактическим поведением приложения.
«Выдумывание» особенностей поведения приложения. Да, часто в тре- бованиях отсутствуют самоочевидные (без кавычек, они на самом деле самооче- видные) вещи, но нередко встречаются и некачественные (например, неполные) требования, которые нужно улучшать, а не «телепатически компенсировать».
Например, в требованиях сказано, что «приложение должно отображать диа- логовое окно сохранения с указанным по умолчанию каталогом». Если из контекста
(соседних требований, иных документов) ничего не удаётся узнать об этом таин- ственном «каталоге по умолчанию», нужно задать вопрос. Нельзя просто записать в ожидаемых результатах «отображается диалоговое окно сохранения с указанным по умолчанию каталогом» (как мы проверим, что выбран именно указанный по умолчанию каталог, а не какой-то иной?). И уж тем более нельзя в ожидаемых ре- зультатах писать «отображается диалоговое окно сохранения с выбранным ката- логом “C:/SavedDocuments”» (откуда взялось это «C:/SavedDocuments», — не ясно, т.е. оно явно выдумано из головы и, скорее всего, выдумано неправильно).
Типичные ошибки при разработке чек-листов, тест-кейсов и наборов тест-кейсов
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 163/301
Отсутствие описания приготовления к выполнению тест-кейса. Часто для корректного выполнения тест-кейса необходимо каким-то особым образом настроить окружение. Предположим, что мы проверяем приложение, выполняющее резервное копирование файлов. Если тест выглядит примерно так, то выполняю- щий его сотрудник будет в замешательстве, т.к. ожидаемый результат кажется про- сто бредом. Откуда взялось «200»? Что это вообще такое?
Шаги выполнения
Ожидаемые результаты
1.
Нажать на панели «Главная» кнопку «Быст- рая дедубликация».
2.
Выбрать каталог «C:/MyData».
1.
Кнопка «Быстрая дедубликация» переходит в утопленное состояние и меняет цвет с се- рого на зелёный.
2.
На панели «Состояние» в поле «Дубли- каты» отображается «200».
И совсем иначе этот тест-кейс воспринимался бы, если бы в приготовлениях было сказано: «Создать каталог “C:/MyData” с произвольным набором подкаталогов
(глубина вложенности не менее пяти). В полученном дереве каталогов разместить
1000 файлов, из которых 200 имеют одинаковые имена и размеры, но НЕ внутрен- нее содержимое».
Полное дублирование (копирование) одного и того же тест-кейса на
уровнях дымового тестирования, тестирования критического пути, расши-
ренного тестирования. Многие идеи естественным образом развиваются от уровня к уровню
{79}
, но они должны именно развиваться, а не дублироваться. Срав- ните:
Дымовое тестиро-
вание
Тестирование критиче-
ского пути
Расширенное тестирование
Плохо
Запуск приложения.
Запуск приложения.
Запуск приложения.
Хорошо
Запуск приложения.
Запуск приложения из ко- мандной строки.
Запуск приложения через ярлык на рабочем столе.
Запуск приложения через меню «Пуск».
Запуск приложения из команд- ной строки в активном режиме.
Запуск приложения из команд- ной строки в фоновом режиме.
Запуск приложения через ярлык на рабочем столе от имени ад- министратора.
Запуск приложения через меню
«Пуск» из списка часто запуска- емых приложений.
Слишком длинный перечень шагов, не относящихся к сути (цели) тест-
кейса. Например, мы хотим проверить корректность одностороннего режима пе- чати из нашего приложения на дуплексном принтере. Сравните:
Плохо
Хорошо
Односторонняя печать
1.
Запустить приложение.
2.
В меню выбрать «Файл» -> «Открыть».
3.
Выбрать любой DOCX-файл, состоящий из нескольких страниц.
4.
Нажать кнопку «Открыть».
5.
В меню выбрать «Файл» -> «Печать».
6.
В списке «Двусторонняя печать» выбрать пункт «Нет».
7.
Нажать кнопку «Печать».
8.
Закрыть файл.
9.
Закрыть приложение.
Односторонняя печать
1.
Открыть любой DOCX-файл, содержащий три и более непустых страницы.
2.
В диалоговом окне «Настройка печати» в списке «Двусторонняя печать» выбрать
«Нет».
3.
Произвести печать документа на принтере, поддерживающем двустороннюю печать.
Типичные ошибки при разработке чек-листов, тест-кейсов и наборов тест-кейсов
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 164/301
Слева мы видим огромное количество действий, не относящихся непосред- ственно к тому, что проверяет тест-кейс. Тем более что запуск и закрытие прило- жения, открытие файла, работа меню и прочее или будут покрыты другими тест- кейсами (со своими соответствующими целями), или на самом деле являются са- моочевидными (логично ведь, что нельзя открыть приложением файл, если прило- жение не запущено) и не нуждаются в описании шагов, которые только создают информационный шум и занимают время на написание и прочтение.
Некорректное наименование элементов интерфейса или их свойств.
Иногда из контекста понятно, что автор тест-кейса имел в виду, но иногда это ста- новится реальной проблемой. Например, мы видим тест-кейс с заглавием «Закры- тие приложения кнопками "Close" и "Close window"». Уже тут возникает недоумение по поводу того, в чём же различие этих кнопок, да и о чём вообще идёт речь. Ниже
(в шагах тест-кейса) автор поясняет: «В рабочей панели внизу экрана нажать "Close window
"». Ага! Ясно. Но «Close window» — это НЕ кнопка, это пункт системного кон- текстного меню приложения в панели задач.
Ещё один отличный пример: «Окно приложения свернётся в окно меньшего диаметра». Хм. Окно круглое? Или должно стать круглым? А, может, тут и вовсе речь про два разных окна, и одно должно будет оказаться внутри второго? Или, всё же «размер окна уменьшается» (кстати, насколько?), а его геометрическая форма остаётся прямоугольной?
И, наконец, пример, из-за которого вполне можно написать отчёт о дефекте на вполне корректно работающее приложение: «В системном меню выбрать “Фик- сация расположения”». Казалось бы, что ж тут плохого? Но потом выясняется, что имелось в виду главное меню приложения, а вовсе не системное меню.
Непонимание принципов работы приложения и вызванная этим некор-
ректность тест-кейсов. Классикой жанра является закрытие приложения: тот факт, что окно приложения «исчезло» (сюрприз: например, оно свернулось в об- ласть уведомления панели задач (system tray, taskbar notification area)), или прило- жение отключило интерфейс пользователя, продолжив функционировать в фоно- вом режиме, вовсе не является признаком того, что оно завершило работу.
Проверка типичной «системной» функциональности. Если только ваше приложение не написано с использованием каких-то особенных библиотек и техно- логий и не реализует какое-то нетипичное поведение, нет необходимости прове- рять системные кнопки, системные меню, сворачивание-разворачивание окна и т.д.
Вероятность встретить здесь ошибку стремится к нулю. Если всё же очень хочется, можно вписать эти проверки как уточнения некоторых действий на уровне тестиро- вания критического пути
{80}
, но создавать для них отдельные тест-кейсы не нужно.
Неверное поведение приложения как ожидаемый результат. Такое не допускается по определению. Не может быть тест-кейса с шагом в стиле «поделить на ноль» с ожидаемым результатом «крах приложения с потерей пользовательских данных». Ожидаемые результаты всегда описывают правильное поведение прило- жения — даже в самых страшных стрессовых тест-кейсах.
Типичные ошибки при разработке чек-листов, тест-кейсов и наборов тест-кейсов
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 165/301
Общая некорректность тест-кейсов. Может быть вызвана множеством при- чин и выражаться множеством образов, но вот классический пример:
Шаги выполнения
Ожидаемые результаты
…
4.
Закрыть приложение нажатием Alt+F4.
5.
Выбрать в меню «Текущее состояние».
…
4.
Приложение завершает работу.
5.
Отображается окно с заголовком «Текущее состояние» и содержимым, соответствую- щим рисунку 999.99.
Здесь или не указано, что вызов окна «Текущее состояние» происходит где- то в другом приложении, или остаётся загадкой, как вызвать это окно у завершив- шего работу приложения. Запустить заново? Возможно, но в тест-кейсе этого не сказано.
Неверное разбиение наборов данных на классы эквивалентности. Дей- ствительно, иногда классы эквивалентности
{94}
могут быть очень неочевидными. Но ошибки встречаются и в довольно простых случаях. Допустим, в требованиях ска- зано, что размер некоего файла может быть от 10 до 100 КБ (включительно). Раз- биение по размеру 0–9 КБ, 10–100 КБ, 101+ КБ ошибочно, т.к. килобайт не явля- ется неделимой единицей. Такое ошибочное разбиение не учитывает, например, размеры в 9.5 КБ, 100.1 КБ, 100.7 КБ и т.д. Потому здесь стоит применять неравен- ства: 0 КБ ≤ размер < 10 КБ, 10 КБ ≤ размер ≤ 100 КБ, 100 КБ < размер. Также можно писать с использованием синтаксиса скобок: [0, 10) КБ, [10, 100] КБ, (100, ∞)
КБ, но вариант с неравенствами более привычен большинству людей.
Тест-кейсы, не относящиеся к тестируемому приложению. Например, нам нужно протестировать фотогалерею на сайте. Соответственно, следующие тест-кейсы никак не относятся к фотогалерее (они тестируют браузер, операцион- ную систему пользователя, файловый менеджер и т.д. — но НЕ наше приложение, ни его серверную, ни даже клиентскую часть):
• Файл с сетевого диска.
• Файл со съёмного носителя.
• Файл, заблокированный другим приложением.
• Файл, открытый другим приложением.
• Файл, к которому у пользователя нет прав доступа.
• Вручную указать путь к файлу.
• Файл из глубоко расположенной поддиректории.
Формальные и/или субъективные проверки. Чаще всего данную ошибку можно встретить в пунктах чек-листа. Возможно, у автора в голове и был чёткий и подробный план, но из следующих примеров совершенно невозможно понять, что будет сделано с приложением, и какой результат мы должны ожидать:
• «Сконвертировать».
• «Проверить метод getMessage()».
• «Некорректная работа в корректных условиях».
• «Скорость».
• «Объём данных».
• «Должно работать быстро».
В отдельных исключительных ситуациях можно возразить, что из контекста и дальнейшей детализации становится понятно, что имелось в виду. Но чаще всего никакого контекста и никакой дальнейшей детализации нет, т.е. приведённые при- меры оформлены как отдельные полноправные пункты чек-листа. Так — нельзя.
Типичные ошибки при разработке чек-листов, тест-кейсов и наборов тест-кейсов
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 166/301
Как можно и нужно – см. в примере чек-листа
{116}
и всём соответствующем раз- деле
{115}
Теперь для лучшего закрепления рекомендуется заново прочитать про оформление атрибутов тест-кейсов
{124}
, свойства качественных тест-кейсов
{136}
и ло- гику построения
{152}
качественных тест-кейсов и качественных наборов тест-кейсов.
Отчёты о дефектах
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 167/301
2.5.
Отчёты о дефектах
2.5.1.
Ошибки, дефекты, сбои, отказы и т.д.
Упрощённый взгляд на понятие дефекта
Далее в этой главе мы глубоко погрузимся в терминологию (она действи- тельно важна!), а потому начнём с очень простого: дефектом упрощённо можно счи- тать любое расхождение ожидаемого (свойства, результата, поведения и т.д., ко- торое мы ожидали увидеть) и фактического (свойства, результата, поведения и т.д., которое мы на самом деле увидели). При обнаружении дефекта создаётся отчёт о дефекте.
Дефект — расхождение ожидаемого и фактического результата.
Ожидаемый результат — поведение системы, описанное в требованиях.
Фактический результат — поведение системы, наблюдаемое в процессе тестирования.
ВАЖНО! Эти три определения приведены в предельно упрощённой (и даже искажённой) форме с целью первичного ознакомления. Полноцен- ные формулировки см. далее в этой же главе.
Поскольку столь простая трактовка не покрывает все возможные формы про- явления проблем с программными продуктами, мы сразу же переходим к более по- дробному рассмотрению соответствующей терминологии.
Расширенный взгляд на терминологию, описывающую проблемы
Разберёмся с широким спектром синонимов, которыми обозначают про- блемы с программными продуктами и иными артефактами и процессами, сопут- ствующими их разработке.
В силлабусе ISTQB написано
308
, что человек совершает ошибки, которые при- водят к возникновению дефектов в коде, которые, в свою очередь, приводят к сбоям и отказам приложения (однако сбои и отказы могут возникать и из-за внешних усло- вий, таких как электромагнитное воздействие на оборудование и т.д.).
Таким образом, упрощённо можно изобразить следующую схему:
Рисунок 2.5.a — Ошибки, дефекты, сбои и отказы
308
A human being can make an error (mistake), which produces a defect (fault, bug) in the program code, or in a document. If a defect in code is executed, the system may fail to do what it should do (or do something it shouldn't), causing a failure. Defects in software, systems or documents may result in failures, but not all defects do so. Defects occur because human beings are fallible and because there is time pressure, complex code, complexity of infrastructure, changing technologies, and/or many system interactions. Failures can be caused by environmental conditions as well. For example, radiation, magnetism, electronic fields, and pollution can cause faults in firmware or influence the execution of software by changing the hardware conditions.
[ISTQB Syllabus]
Ошибка
Дефект
Сбой или отказ
Ошибки, дефекты, сбои, отказы и т.д.
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 168/301
Если же посмотреть на англоязычную терминологию, представленную в глоссарии ISTQB и иных источниках, можно построить чуть более сложную схему:
Рисунок 2.5.b — Взаимосвязь проблем в разработке программных продуктов
Рассмотрим все соответствующие термины.
Ошибка (error
309
, mistake)
— действие человека, приводящее к некоррект- ным результатам.
Этот термин очень часто используют как наиболее универсальный, описыва- ющий любые проблемы («ошибка человека», «ошибка в коде», «ошибка в докумен- тации», «ошибка выполнения операции», «ошибка передачи данных», «ошибочный результат» и т.п.) Более того, куда чаще вы сможете услышать «отчёт об ошибке», чем «отчёт о дефекте». И это нормально, так сложилось исторически, к тому же термин «ошибка» на самом деле очень широкий.
Дефект (defect
310
, bug, problem, fault)
— недостаток в компоненте или си- стеме, способный привести к ситуации сбоя или отказа.
Этот термин также понимают достаточно широко, говоря о дефектах в доку- ментации, настройках, входных данных и т.д. Почему глава называется именно «от- чёты о дефектах»? Потому что этот термин как раз стоит посередине — бессмыс- ленно писать отчёты о человеческих ошибках, равно как и почти бесполезно просто описывать проявления сбоев и отказов — нужно докопаться до их причины, и пер- вым шагом в этом направлении является именно описание дефекта.
Сбой (interruption
311
) или отказ (failure
312
)
— отклонение поведения си- стемы от ожидаемого.
В ГОСТ 27.002-89 даны хорошие и краткие определения сбоя и отказа:
Сбой — самоустраняющийся отказ или однократный отказ, устраняемый незначительным вмешательством оператора.
Отказ — событие, заключающееся в нарушении работоспособного состо- яния объекта.
Эти термины скорее относятся к теории надёжности и нечасто встречаются в повседневной работе тестировщика, но именно сбои и отказы являются тем, что тестировщик замечает в процессе тестирования (и отталкиваясь от чего, проводит исследование с целью выявить дефект и его причины).
309
Error, Mistake. A human action that produces an incorrect result. [ISTQB Glossary]
310
Defect, Bug, Problem, Fault. A flaw in a component or system that can cause the component or system to fail to perform its required function, e.g. an incorrect statement or data definition. A defect, if encountered during execution, may cause a failure of the component or system. [ISTQB Glossary]
311
Interruption. A suspension of a process, such as the execution of a computer program, caused by an event external to that process and performed in such a way that the process can be resumed. [
http://www.electropedia.org/iev/iev.nsf/display?open- form&ievref=714-22-10
]
312
Failure. Deviation of the component or system from its expected delivery, service or result. [ISTQB Glossary]
Error (Mistake)
Defect
(Problem, Bug,
Fault)
Failure,
Interruption
Anomaly, Incident (Deviation)
Ошибки, дефекты, сбои, отказы и т.д.
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 169/301
1 ... 20 21 22 23 24 25 26 27 ... 38
Например, «запуск приложения» — это НЕ модуль или подмодуль. Модуль или под- модуль
{125}
— это всегда некие части приложения, а не его поведение. Сравните:
«дыхательная система» — это модуль человека, но «дыхание» — нет.
Описание событий или процессов в качестве шагов или ожидаемых ре-
зультатов. Например, в качестве шага сказано: «Ввод спецсимволов в поле X».
Это было бы сносным заглавием тест-кейса, но не годится в качестве шага, который должен быть сформулирован как «Ввести спецсимволы (перечень) в поле X».
Куда страшнее, если подобное встречается в ожидаемых результатах.
Например, там написано: «Отображение скорости чтения в панели X». И что? Оно должно начаться, продолжиться, завершиться, не начинаться, неким образом из- мениться (например, измениться должна размерность данных), как-то на что-то по- влиять? Тест-кейс становится полностью бессмысленным, т.к. такой ожидаемый результат невозможно сравнить с фактическим поведением приложения.
«Выдумывание» особенностей поведения приложения. Да, часто в тре- бованиях отсутствуют самоочевидные (без кавычек, они на самом деле самооче- видные) вещи, но нередко встречаются и некачественные (например, неполные) требования, которые нужно улучшать, а не «телепатически компенсировать».
Например, в требованиях сказано, что «приложение должно отображать диа- логовое окно сохранения с указанным по умолчанию каталогом». Если из контекста
(соседних требований, иных документов) ничего не удаётся узнать об этом таин- ственном «каталоге по умолчанию», нужно задать вопрос. Нельзя просто записать в ожидаемых результатах «отображается диалоговое окно сохранения с указанным по умолчанию каталогом» (как мы проверим, что выбран именно указанный по умолчанию каталог, а не какой-то иной?). И уж тем более нельзя в ожидаемых ре- зультатах писать «отображается диалоговое окно сохранения с выбранным ката- логом “C:/SavedDocuments”» (откуда взялось это «C:/SavedDocuments», — не ясно, т.е. оно явно выдумано из головы и, скорее всего, выдумано неправильно).
Типичные ошибки при разработке чек-листов, тест-кейсов и наборов тест-кейсов
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 163/301
Отсутствие описания приготовления к выполнению тест-кейса. Часто для корректного выполнения тест-кейса необходимо каким-то особым образом настроить окружение. Предположим, что мы проверяем приложение, выполняющее резервное копирование файлов. Если тест выглядит примерно так, то выполняю- щий его сотрудник будет в замешательстве, т.к. ожидаемый результат кажется про- сто бредом. Откуда взялось «200»? Что это вообще такое?
Шаги выполнения
Ожидаемые результаты
1.
Нажать на панели «Главная» кнопку «Быст- рая дедубликация».
2.
Выбрать каталог «C:/MyData».
1.
Кнопка «Быстрая дедубликация» переходит в утопленное состояние и меняет цвет с се- рого на зелёный.
2.
На панели «Состояние» в поле «Дубли- каты» отображается «200».
И совсем иначе этот тест-кейс воспринимался бы, если бы в приготовлениях было сказано: «Создать каталог “C:/MyData” с произвольным набором подкаталогов
(глубина вложенности не менее пяти). В полученном дереве каталогов разместить
1000 файлов, из которых 200 имеют одинаковые имена и размеры, но НЕ внутрен- нее содержимое».
Полное дублирование (копирование) одного и того же тест-кейса на
уровнях дымового тестирования, тестирования критического пути, расши-
ренного тестирования. Многие идеи естественным образом развиваются от уровня к уровню
{79}
, но они должны именно развиваться, а не дублироваться. Срав- ните:
Дымовое тестиро-
вание
Тестирование критиче-
ского пути
Расширенное тестирование
Плохо
Запуск приложения.
Запуск приложения.
Запуск приложения.
Хорошо
Запуск приложения.
Запуск приложения из ко- мандной строки.
Запуск приложения через ярлык на рабочем столе.
Запуск приложения через меню «Пуск».
Запуск приложения из команд- ной строки в активном режиме.
Запуск приложения из команд- ной строки в фоновом режиме.
Запуск приложения через ярлык на рабочем столе от имени ад- министратора.
Запуск приложения через меню
«Пуск» из списка часто запуска- емых приложений.
Слишком длинный перечень шагов, не относящихся к сути (цели) тест-
кейса. Например, мы хотим проверить корректность одностороннего режима пе- чати из нашего приложения на дуплексном принтере. Сравните:
Плохо
Хорошо
Односторонняя печать
1.
Запустить приложение.
2.
В меню выбрать «Файл» -> «Открыть».
3.
Выбрать любой DOCX-файл, состоящий из нескольких страниц.
4.
Нажать кнопку «Открыть».
5.
В меню выбрать «Файл» -> «Печать».
6.
В списке «Двусторонняя печать» выбрать пункт «Нет».
7.
Нажать кнопку «Печать».
8.
Закрыть файл.
9.
Закрыть приложение.
Односторонняя печать
1.
Открыть любой DOCX-файл, содержащий три и более непустых страницы.
2.
В диалоговом окне «Настройка печати» в списке «Двусторонняя печать» выбрать
«Нет».
3.
Произвести печать документа на принтере, поддерживающем двустороннюю печать.
Типичные ошибки при разработке чек-листов, тест-кейсов и наборов тест-кейсов
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 164/301
Слева мы видим огромное количество действий, не относящихся непосред- ственно к тому, что проверяет тест-кейс. Тем более что запуск и закрытие прило- жения, открытие файла, работа меню и прочее или будут покрыты другими тест- кейсами (со своими соответствующими целями), или на самом деле являются са- моочевидными (логично ведь, что нельзя открыть приложением файл, если прило- жение не запущено) и не нуждаются в описании шагов, которые только создают информационный шум и занимают время на написание и прочтение.
Некорректное наименование элементов интерфейса или их свойств.
Иногда из контекста понятно, что автор тест-кейса имел в виду, но иногда это ста- новится реальной проблемой. Например, мы видим тест-кейс с заглавием «Закры- тие приложения кнопками "Close" и "Close window"». Уже тут возникает недоумение по поводу того, в чём же различие этих кнопок, да и о чём вообще идёт речь. Ниже
(в шагах тест-кейса) автор поясняет: «В рабочей панели внизу экрана нажать "Close window
"». Ага! Ясно. Но «Close window» — это НЕ кнопка, это пункт системного кон- текстного меню приложения в панели задач.
Ещё один отличный пример: «Окно приложения свернётся в окно меньшего диаметра». Хм. Окно круглое? Или должно стать круглым? А, может, тут и вовсе речь про два разных окна, и одно должно будет оказаться внутри второго? Или, всё же «размер окна уменьшается» (кстати, насколько?), а его геометрическая форма остаётся прямоугольной?
И, наконец, пример, из-за которого вполне можно написать отчёт о дефекте на вполне корректно работающее приложение: «В системном меню выбрать “Фик- сация расположения”». Казалось бы, что ж тут плохого? Но потом выясняется, что имелось в виду главное меню приложения, а вовсе не системное меню.
Непонимание принципов работы приложения и вызванная этим некор-
ректность тест-кейсов. Классикой жанра является закрытие приложения: тот факт, что окно приложения «исчезло» (сюрприз: например, оно свернулось в об- ласть уведомления панели задач (system tray, taskbar notification area)), или прило- жение отключило интерфейс пользователя, продолжив функционировать в фоно- вом режиме, вовсе не является признаком того, что оно завершило работу.
Проверка типичной «системной» функциональности. Если только ваше приложение не написано с использованием каких-то особенных библиотек и техно- логий и не реализует какое-то нетипичное поведение, нет необходимости прове- рять системные кнопки, системные меню, сворачивание-разворачивание окна и т.д.
Вероятность встретить здесь ошибку стремится к нулю. Если всё же очень хочется, можно вписать эти проверки как уточнения некоторых действий на уровне тестиро- вания критического пути
{80}
, но создавать для них отдельные тест-кейсы не нужно.
Неверное поведение приложения как ожидаемый результат. Такое не допускается по определению. Не может быть тест-кейса с шагом в стиле «поделить на ноль» с ожидаемым результатом «крах приложения с потерей пользовательских данных». Ожидаемые результаты всегда описывают правильное поведение прило- жения — даже в самых страшных стрессовых тест-кейсах.
Типичные ошибки при разработке чек-листов, тест-кейсов и наборов тест-кейсов
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 165/301
Общая некорректность тест-кейсов. Может быть вызвана множеством при- чин и выражаться множеством образов, но вот классический пример:
Шаги выполнения
Ожидаемые результаты
…
4.
Закрыть приложение нажатием Alt+F4.
5.
Выбрать в меню «Текущее состояние».
…
4.
Приложение завершает работу.
5.
Отображается окно с заголовком «Текущее состояние» и содержимым, соответствую- щим рисунку 999.99.
Здесь или не указано, что вызов окна «Текущее состояние» происходит где- то в другом приложении, или остаётся загадкой, как вызвать это окно у завершив- шего работу приложения. Запустить заново? Возможно, но в тест-кейсе этого не сказано.
Неверное разбиение наборов данных на классы эквивалентности. Дей- ствительно, иногда классы эквивалентности
{94}
могут быть очень неочевидными. Но ошибки встречаются и в довольно простых случаях. Допустим, в требованиях ска- зано, что размер некоего файла может быть от 10 до 100 КБ (включительно). Раз- биение по размеру 0–9 КБ, 10–100 КБ, 101+ КБ ошибочно, т.к. килобайт не явля- ется неделимой единицей. Такое ошибочное разбиение не учитывает, например, размеры в 9.5 КБ, 100.1 КБ, 100.7 КБ и т.д. Потому здесь стоит применять неравен- ства: 0 КБ ≤ размер < 10 КБ, 10 КБ ≤ размер ≤ 100 КБ, 100 КБ < размер. Также можно писать с использованием синтаксиса скобок: [0, 10) КБ, [10, 100] КБ, (100, ∞)
КБ, но вариант с неравенствами более привычен большинству людей.
Тест-кейсы, не относящиеся к тестируемому приложению. Например, нам нужно протестировать фотогалерею на сайте. Соответственно, следующие тест-кейсы никак не относятся к фотогалерее (они тестируют браузер, операцион- ную систему пользователя, файловый менеджер и т.д. — но НЕ наше приложение, ни его серверную, ни даже клиентскую часть):
• Файл с сетевого диска.
• Файл со съёмного носителя.
• Файл, заблокированный другим приложением.
• Файл, открытый другим приложением.
• Файл, к которому у пользователя нет прав доступа.
• Вручную указать путь к файлу.
• Файл из глубоко расположенной поддиректории.
Формальные и/или субъективные проверки. Чаще всего данную ошибку можно встретить в пунктах чек-листа. Возможно, у автора в голове и был чёткий и подробный план, но из следующих примеров совершенно невозможно понять, что будет сделано с приложением, и какой результат мы должны ожидать:
• «Сконвертировать».
• «Проверить метод getMessage()».
• «Некорректная работа в корректных условиях».
• «Скорость».
• «Объём данных».
• «Должно работать быстро».
В отдельных исключительных ситуациях можно возразить, что из контекста и дальнейшей детализации становится понятно, что имелось в виду. Но чаще всего никакого контекста и никакой дальнейшей детализации нет, т.е. приведённые при- меры оформлены как отдельные полноправные пункты чек-листа. Так — нельзя.
Типичные ошибки при разработке чек-листов, тест-кейсов и наборов тест-кейсов
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 166/301
Как можно и нужно – см. в примере чек-листа
{116}
и всём соответствующем раз- деле
{115}
Теперь для лучшего закрепления рекомендуется заново прочитать про оформление атрибутов тест-кейсов
{124}
, свойства качественных тест-кейсов
{136}
и ло- гику построения
{152}
качественных тест-кейсов и качественных наборов тест-кейсов.
Отчёты о дефектах
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 167/301
2.5.
Отчёты о дефектах
2.5.1.
Ошибки, дефекты, сбои, отказы и т.д.
Упрощённый взгляд на понятие дефекта
Далее в этой главе мы глубоко погрузимся в терминологию (она действи- тельно важна!), а потому начнём с очень простого: дефектом упрощённо можно счи- тать любое расхождение ожидаемого (свойства, результата, поведения и т.д., ко- торое мы ожидали увидеть) и фактического (свойства, результата, поведения и т.д., которое мы на самом деле увидели). При обнаружении дефекта создаётся отчёт о дефекте.
Дефект — расхождение ожидаемого и фактического результата.
Ожидаемый результат — поведение системы, описанное в требованиях.
Фактический результат — поведение системы, наблюдаемое в процессе тестирования.
ВАЖНО! Эти три определения приведены в предельно упрощённой (и даже искажённой) форме с целью первичного ознакомления. Полноцен- ные формулировки см. далее в этой же главе.
Поскольку столь простая трактовка не покрывает все возможные формы про- явления проблем с программными продуктами, мы сразу же переходим к более по- дробному рассмотрению соответствующей терминологии.
Расширенный взгляд на терминологию, описывающую проблемы
Разберёмся с широким спектром синонимов, которыми обозначают про- блемы с программными продуктами и иными артефактами и процессами, сопут- ствующими их разработке.
В силлабусе ISTQB написано
308
, что человек совершает ошибки, которые при- водят к возникновению дефектов в коде, которые, в свою очередь, приводят к сбоям и отказам приложения (однако сбои и отказы могут возникать и из-за внешних усло- вий, таких как электромагнитное воздействие на оборудование и т.д.).
Таким образом, упрощённо можно изобразить следующую схему:
Рисунок 2.5.a — Ошибки, дефекты, сбои и отказы
308
A human being can make an error (mistake), which produces a defect (fault, bug) in the program code, or in a document. If a defect in code is executed, the system may fail to do what it should do (or do something it shouldn't), causing a failure. Defects in software, systems or documents may result in failures, but not all defects do so. Defects occur because human beings are fallible and because there is time pressure, complex code, complexity of infrastructure, changing technologies, and/or many system interactions. Failures can be caused by environmental conditions as well. For example, radiation, magnetism, electronic fields, and pollution can cause faults in firmware or influence the execution of software by changing the hardware conditions.
[ISTQB Syllabus]
Ошибка
Дефект
Сбой или отказ
Ошибки, дефекты, сбои, отказы и т.д.
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 168/301
Если же посмотреть на англоязычную терминологию, представленную в глоссарии ISTQB и иных источниках, можно построить чуть более сложную схему:
Рисунок 2.5.b — Взаимосвязь проблем в разработке программных продуктов
Рассмотрим все соответствующие термины.
Ошибка (error
309
, mistake)
— действие человека, приводящее к некоррект- ным результатам.
Этот термин очень часто используют как наиболее универсальный, описыва- ющий любые проблемы («ошибка человека», «ошибка в коде», «ошибка в докумен- тации», «ошибка выполнения операции», «ошибка передачи данных», «ошибочный результат» и т.п.) Более того, куда чаще вы сможете услышать «отчёт об ошибке», чем «отчёт о дефекте». И это нормально, так сложилось исторически, к тому же термин «ошибка» на самом деле очень широкий.
Дефект (defect
310
, bug, problem, fault)
— недостаток в компоненте или си- стеме, способный привести к ситуации сбоя или отказа.
Этот термин также понимают достаточно широко, говоря о дефектах в доку- ментации, настройках, входных данных и т.д. Почему глава называется именно «от- чёты о дефектах»? Потому что этот термин как раз стоит посередине — бессмыс- ленно писать отчёты о человеческих ошибках, равно как и почти бесполезно просто описывать проявления сбоев и отказов — нужно докопаться до их причины, и пер- вым шагом в этом направлении является именно описание дефекта.
Сбой (interruption
311
) или отказ (failure
312
)
— отклонение поведения си- стемы от ожидаемого.
В ГОСТ 27.002-89 даны хорошие и краткие определения сбоя и отказа:
Сбой — самоустраняющийся отказ или однократный отказ, устраняемый незначительным вмешательством оператора.
Отказ — событие, заключающееся в нарушении работоспособного состо- яния объекта.
Эти термины скорее относятся к теории надёжности и нечасто встречаются в повседневной работе тестировщика, но именно сбои и отказы являются тем, что тестировщик замечает в процессе тестирования (и отталкиваясь от чего, проводит исследование с целью выявить дефект и его причины).
309
Error, Mistake. A human action that produces an incorrect result. [ISTQB Glossary]
310
Defect, Bug, Problem, Fault. A flaw in a component or system that can cause the component or system to fail to perform its required function, e.g. an incorrect statement or data definition. A defect, if encountered during execution, may cause a failure of the component or system. [ISTQB Glossary]
311
Interruption. A suspension of a process, such as the execution of a computer program, caused by an event external to that process and performed in such a way that the process can be resumed. [
http://www.electropedia.org/iev/iev.nsf/display?open- form&ievref=714-22-10
]
312
Failure. Deviation of the component or system from its expected delivery, service or result. [ISTQB Glossary]
Error (Mistake)
Defect
(Problem, Bug,
Fault)
Failure,
Interruption
Anomaly, Incident (Deviation)
Ошибки, дефекты, сбои, отказы и т.д.
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 169/301
1 ... 20 21 22 23 24 25 26 27 ... 38
Аномалия (anomaly
313
) или инцидент (incident
314
, deviation)
— любое от- клонение наблюдаемого (фактического) состояния, поведения, значения, результата, свойства от ожиданий наблюдателя, сформированных на ос- нове требований, спецификаций, иной документации или опыта и здра- вого смысла.
Итак, мы вернулись к тому, с чего начинали в части этой главы, описывающей предельно упрощённый взгляд на дефекты. Ошибки, дефекты, сбои, отказы и т.д. являются проявлением аномалий — отклонений фактического результата от ожи- даемого. Стоит отметить, что ожидаемый результат действительно может основы- ваться на опыте и здравом смысле, т.к. поведение программного средства никогда не специфицируют до уровня базовых элементарных приёмов работы с компьюте- ром.
Теперь, чтобы окончательно избавиться от путаницы и двусмысленности, до- говоримся, что мы будем считать дефектом в контексте данной книги:
Дефект — отклонение (deviation
314
) фактического результата (actual re- sult
315
) от ожиданий наблюдателя (expected result
316
)
, сформированных на основе требований, спецификаций, иной документации или опыта и здра- вого смысла.
Отсюда логически вытекает, что дефекты могут встречаться не только в коде приложения, но и в любой документации, в архитектуре и дизайне, в настройках тестируемого приложения или тестового окружения — где угодно.
Важно понимать, что приведённое определение дефекта позволяет лишь поднять вопрос о том, является ли некое поведение приложения дефек- том. В случае, если из проектной документации не следует однозначного положительного ответа, обязательно стоит обсудить свои выводы с кол- легами и добиться донесения поднятого вопроса до заказчика, если его мнение по обсуждаемому «кандидату в баги» неизвестно.
Хорошее представление о едва-едва затронутой нами теме теории надёжности можно получить, прочитав книгу Рудольфа Стапелберга
«Руководство по надёжности, доступности, ремонтопригодности и без- опасности в инженерном проектировании» (Rudolph Frederick Stapelberg,
«Handbook of Reliability, Availability, Maintainability and Safety in Engineering
Design»).
А краткую, но достаточно подробную классификацию аномалий в про- граммных продуктах можно посмотреть в стандарте «IEEE 1044:2009
Standard Classification For Software Anomalies
».
313
Anomaly. Any condition that deviates from expectation based on requirements specifications, design documents, user documents, standards, etc. or from so meone’s perception or experience. Anomalies may be found during, but not limited to, reviewing, testing, analysis, compilation, or use of software products or applicable documentation. See also bug, defect, deviation, error, fault, failure, incident, problem. [ISTQB Glossary]