Главная страница
Навигация по странице:

  • Создание Выполнение Количество 12 22 Повторения (проходы) 1 1.2 Общее количество 12 26.4 Время на один тест-кейс

  • Создание Выполнение Количество 12 22 Повторения (проходы) 1 1.2 Общее количество 12 26.4 Время на один тест-кейс, ч

  • 2.7. Примеры использования различных техник тестирования 2.7.1. Позитивные и негативные тест-кейсы

  • Кому и зачем оно нужно (и насколько это важно)

  • Как оно обычно используется

  • Как оно может сломаться, т.е. начать работать неверно

  • 2.7.2. Классы эквивалентности и граничные условия

  • Класс эквивалентности

  • Позитивные тест-кейсы Негативные тест-кейсы Значе- ние AAA 123_zzzzzzzzzzzzzzzz AA Пустая строка 1234_zzzzzzzzzzzzzzzz Поясне- ние

  • Позитивные тест-кейсы Негативные тест-кейсы Зна- чение AAA 123_zzzzzzzzzzzzzzzz AA Пустая строка 1234_zzzzzzzzzzzzzzzz $% Пояс

  • Тестирование приложений. Обеспечения Базовый курс (3е издание) Версия книги 15 от 31. 03. 2022


    Скачать 5.07 Mb.
    НазваниеОбеспечения Базовый курс (3е издание) Версия книги 15 от 31. 03. 2022
    АнкорТестирование приложений
    Дата06.10.2022
    Размер5.07 Mb.
    Формат файлаpdf
    Имя файлаSoftware Testing - Base Course (Svyatoslav Kulikov) - 3rd editio.pdf
    ТипКнига
    #718843
    страница33 из 38
    1   ...   30   31   32   33   34   35   36   37   38
    примерное количество тест-кейсов на каждый пункт из предположения, что мы будем проводить достаточно глубокое тестирование этого требования:
    • Все параметры корректные {1 тест-кейс}.
    • Несуществующий/некорректный путь для: o SOURCE_DIR {3 тест-кейса}; o DESTINATION_DIR {3 тест-кейса}.
    • Недопустимое имя файла LOG_FILE_NAME {3 тест-кейса}.
    • Значения SOURCE_DIR и DESTINATION_DIR являются корректными име- нами существующих каталогов, но DESTINATION_DIR находится внутри
    SOURCE_DIR {3 тест-кейса}.
    • Недопустимые/несуществующие имена объектов ФС указаны в более чем одном параметре {5 тест-кейсов}.
    • Значения SOURCE_DIR и DESTINATION_DIR не являются корректными/су- ществующими именами каталогов, и при этом DESTINATION_DIR находится внутри SOURCE_DIR {3 тест-кейса}.
    У нас получилось примерно 22 тест-кейса. Также давайте для большей пока- зательности примера предположим, что часть тест-кейсов (например, 10) уже была создана ранее.
    Теперь сведём полученные данные в таблицу 2.6.a, где также отразим коли- чество проходов. Этот показатель появляется из соображения, что некоторые тест- кейсы будут находить дефекты, что потребует повторного выполнения тест-кейса для верификации исправления дефекта; в некоторых случаях дефекты будут от- крыты заново, что потребует повторной верификации. Это относится лишь к части тест-кейсов, потому количество проходов может быть дробным, чтобы оценка была более точной.
    Количество проходов для тестирования новой функциональности в общем случае можно грубо оценивать так:
    • Простая функциональность: 1–1.5 (не все тесты повторяются).
    • Функциональность средней сложности: 2.
    • Сложная функциональность: 3–5.
    Таблица 2.6.a — Оценка количества создаваемых и выполняемых тест-кейсов
    Создание
    Выполнение
    Количество
    12 22
    Повторения (проходы)
    1 1.2
    Общее количество
    12 26.4
    Время на один тест-кейс
    Итоговое время
    Осталось заполнить ячейки со значениями времени, необходимого на разра- ботку и выполнение одного тест-кейса. К сожалению, не существует никаких маги- ческих способов выяснения этих параметров — только накопленный опыт о вашей собственной производительности, на которую среди прочего влияют следующие факторы (по каждому из них можно вводить коэффициенты, уточняющие оценку):
    • ваш профессионализм и опыт;
    • сложность и объёмность тест-кейсов;
    • производительность тестируемого приложения и тестового окружения;
    • вид тестирования;
    наличие и удобство средств автоматизации;
    • стадия разработки проекта.

    Оценка трудозатрат
    Тестирование программного обеспечения. Базовый курс.
    © EPAM Systems, 2015–2022
    Стр: 230/298
    Тем не менее существует простой способ получения интегральной оценки вашей собственной производительности, при котором влиянием этих факторов можно пренебречь: нужно измерять свою производительность на протяжении дли- тельного периода времени и фиксировать, сколько создать и выполнить тест-кей- сов вы можете в час, день, неделю, месяц и т.д. Чем больший промежуток времени будет рассмотрен, тем меньше на результаты измерений будут влиять кратковре- менные отвлекающие факторы, появление которых сложно предсказывать.
    Допустим, что для некоторого выдуманного тестировщика эти значения ока- зались следующими — за месяц (28 рабочих дней) ему удаётся:
    • Создать 300 тест-кейсов (примерно 11 тест-кейсов в день, или 1.4 в час).
    • Выполнить 1000 тест-кейсов (примерно 36 тест-кейсов в день, или 4.5 в час).
    Подставим полученные значения в таблицу 2.6.a и получим таблицу 2.6.b.
    Таблица 2.6.b — Оценка трудозатрат
    Создание
    Выполнение
    Количество
    12 22
    Повторения (проходы)
    1 1.2
    Общее количество
    12 26.4
    Время на один тест-кейс, ч
    0.7 0.2
    Итоговое время, ч
    8.4 5.2
    ИТОГО
    13.6 часа
    Если бы оценка производительности нашего выдуманного тестировщика производилась на коротких отрезках времени, полученное значение нельзя было бы использовать напрямую, т.к. в нём не было бы учтено время на написание отчё- тов о дефектах, участие в различных собраниях, переписку и прочие виды деятель- ности. Но мы потому и ориентировались на итоги измерений за месяц, что за 28 типичных рабочих дней все эти факторы многократно проявляли себя, и их влияние уже учтено в оценке производительности.
    Если бы мы всё же опирались на краткосрочные исследования, можно было бы ввести дополнительный коэффициент или использовать допущение о том, что работе с тест-кейсами за один день удаётся посвятить не 8 часов, а меньше (напри- мер, 6).
    Итого у нас получилось 13.6 часа, или 1.7 рабочих дня. Помня идею о за- кладке небольшого «буфера», можем считать, что за два полных рабочих дня наш выдуманный тестировщик точно справится с поставленной задачей.
    В заключение этой главы ещё раз отметим, что для уточнения собственной производительности и улучшения своих навыков оценки трудозатрат стоит форми- ровать оценку, после чего выполнять работу и сравнивать фактический результат с оценкой. И повторять эту последовательность шагов раз за разом.
    Задание 2.6.c: разработайте на основе итогового чек-листа
    {156}
    , представ- ленного в разделе 2.4, тест-кейсы и оцените свою производительность в процессе выполнения этой задачи.

    Примеры использования различных техник тестирования
    Тестирование программного обеспечения. Базовый курс.
    © EPAM Systems, 2015–2022
    Стр: 231/298
    2.7.
    Примеры использования различных техник тестирования
    2.7.1.
    Позитивные и негативные тест-кейсы
    Ранее мы уже рассматривали
    {150}
    алгоритм продумывания идей тест-кейсов, в котором предлагается ответить себе на следующие вопросы относительно тести- руемого объекта:
    • Что перед вами?
    Кому и зачем оно нужно (и насколько это важно)?
    Как оно обычно используется?
    • Как оно может сломаться, т.е. начать работать неверно?
    Сейчас мы применим этот алгоритм, сконцентрировавшись на двух послед- них вопросах, т.к. именно ответы на них позволяют нам придумать много позитив- ных
    {79}
    и негативных
    {79}
    тест-кейсов. Продолжим тестировать наш «Конвертер фай- лов
    {57}
    », выбрав для исследования первый параметр командной строки —
    SOURCE_DIR
    — имя каталога, в котором приложение ищет файлы, подлежащие конвертации.
    Что перед нами? Путь к каталогу. Казалось бы, просто, но стоит вспомнить, что наше приложение должно работать
    {58}
    как минимум под управлением Windows и Linux, что приводит к необходимости освежить в памяти принципы работы фай- ловых систем в этих ОС. А ещё может понадобиться работа с сетью.
    Кому и зачем оно нужно (и насколько это важно)? Конечные пользователи не занимаются конфигурированием приложения, т.е. этот параметр нужен админи- стратору (предположительно, это человек квалифицированный и не делает явных глупостей, но из его же квалификации вытекает возможность придумать такие ва- рианты использования, до которых не додумается рядовой пользователь). Важ- ность параметра критическая, т.к. при каких-то проблемах с ним есть риск полной потери работоспособности приложения.
    Как оно обычно используется? Здесь нам понадобится понимание прин- ципов работы файловых систем.
    • Корректное имя существующего каталога: o Windows:
    ▪ X:\dir

    “X:\dir with spaces”
    ▪ .\dir
    ▪ ..\dir
    ▪ \\host\dir

    Всё вышеперечисленное с “\” в конце пути.
    ▪ X:\ o Linux:
    ▪ /dir

    “/dir with spaces”
    ▪ host:/dir
    ▪ smb://host/dir
    ▪ ./dir
    ▪ ../dir

    Всё вышеперечисленное с “/” в конце пути.
    ▪ /

    Позитивные и негативные тест-кейсы
    Тестирование программного обеспечения. Базовый курс.
    © EPAM Systems, 2015–2022
    Стр: 232/298
    И всё, т.е. в данном конкретном случае существует единственный вариант верного использования первого параметра — указать корректное имя существую- щего каталога (пусть вариантов таких корректных имён и много). Фактически мы получили чек-лист для позитивного тестирования. Все ли варианты допустимых имён мы учли? Может быть, и не все. Но эту проблему мы рассмотрим в следующей главе, посвящённой классам эквивалентности и граничным условиям
    {234}
    В настоящий момент важно ещё раз подчеркнуть мысль о том, что сначала мы проверяем работу приложения на позитивных тест-кейсах, т.е. в корректных условиях. Если эти проверки не пройдут, в некоторых совершенно допустимых и типичных ситуациях приложение будет неработоспособным, т.е. ущерб качеству будет весьма ощутимым.
    Как оно может сломаться, т.е. начать работать неверно? Негативных тест-кейсов (за редчайшим исключением) оказывается намного больше, чем пози- тивных. Итак, какие проблемы с именем каталога-источника (и самим каталогом- источником) могут помешать нашему приложению?
    • Указанный путь не является корректным именем каталога: o
    Пустое значение (“”). o
    Слишком длинное имя:

    Для Windows: более 256 байт. (Важно! Путь к каталогу длиной в
    256 байт допустим, но надо учесть ограничение на полное имя файла, т.к. его превышение может быть достигнуто естествен- ным образом, что приведёт к возникновению сбоя.)

    Для Linux: более 4096 байт. o
    Недопустимые символы, например: ? < > \ * | " \0. o
    Недопустимые комбинации допустимых символов, например: “....\dir”.
    • Каталог не существует: o
    На локальном диске. o
    В сети.
    • Каталог существует, но к нему нет прав доступа.
    • Доступ к каталогу утерян после запуска приложения: o
    Каталог удалён или переименован. o
    Изменены права доступа. o
    Потеря соединения с удалённым компьютером.
    • Использование зарезервированного имени: o
    Для Windows: com1-com9, lpt1-lpt9, con, nul, prn. o
    Для Linux: “..”.
    • Проблемы с кодировками, например: имя указано верно, но не в той коди- ровке.
    Если погружаться в детали поведения отдельных операционных систем и файловых систем, данный список можно значительно расширить. И тем не менее открытыми будут оставаться два вопроса:
    • Все ли эти варианты надо проверить?
    • Не упустили ли мы что-то важное?
    На первый вопрос ответ можно найти, опираясь на рассуждения, описанные в главе «Логика создания эффективных проверок»
    {149}
    Ответ на второй вопрос по- могут найти рассуждения, описанные в двух следующих главах, т.к. классы эквива- лентности, граничные условия и доменное тестирование значительно упрощают решение подобных задач.

    Позитивные и негативные тест-кейсы
    Тестирование программного обеспечения. Базовый курс.
    © EPAM Systems, 2015–2022
    Стр: 233/298
    Задание 2.7.a: как вы думаете, почему в вышеприведённых чек-листах мы не учли требование о том, что SOURCE_DIR не может содержать внутри себя DESTINATION_DIR?

    Классы эквивалентности и граничные условия
    Тестирование программного обеспечения. Базовый курс.
    © EPAM Systems, 2015–2022
    Стр: 234/298
    2.7.2.
    Классы эквивалентности и граничные условия
    В данной главе мы рассмотрим примеры упомянутых ранее техник тестиро- вания на основе классов эквивалентности
    {91}
    и граничных условий
    {92}
    Если уточнить определения, получается:
    Класс эквивалентности (equivalence class
    348
    )
    — набор данных, обраба- тываемых одинаковым образом и приводящих к одинаковому результату.
    Граничное условие (border condition, boundary condition
    349
    )
    — значение, находящееся на границе классов эквивалентности.
    Иногда под классом эквивалентности понимают набор тест-кейсов, пол- ное выполнение которого является избыточным. Это определение не про- тиворечит предыдущему, т.к. показывает ту же ситуацию, но с другой точки зрения.
    В качестве пояснения идеи рассмотрим тривиальный пример. Допустим, нам нужно протестировать функцию, которая определяет, корректное или некорректное имя ввёл пользователь при регистрации.
    Требования к имени пользователя таковы:
    • От трёх до двадцати символов включительно.
    • Допускаются цифры, знак подчёркивания, буквы английского алфавита в верхнем и нижнем регистрах.
    Если попытаться решить задачу «в лоб», нам для позитивного тестирования придётся перебрать все комбинации допустимых символов длиной [3, 20] (это 18- разрядное 63-ричное число, т.е. 2.4441614509104E+32). А негативных тест-кейсов здесь и вовсе будет бесконечное количество, ведь мы можем проверить строку дли- ной в 21 символ, 100, 10000, миллион, миллиард и т.д.
    Представим графически классы эквивалентности относительно требований к длине (см. рисунок 2.7.a).
    Рисунок 2.7.a — Классы эквивалентности для значений длины имени пользова- теля
    Поскольку для длины строки невозможны дробные и отрицательные значе- ния, мы видим три недостижимых области, которые можно исключить, и получаем окончательный вариант (см. рисунок 2.7.b).
    Мы получили три класса эквивалентности:
    • [0, 2] — недопустимая длина;
    • [3, 20] — допустимая длина;
    • [21, ∞] — недопустимая длина.
    348
    An equivalence class consists of a set of data that is treated the same by a module or that should produce the same result. [Lee
    Copeland,
    «A practitioner’s guide to software test design»]
    349
    The boundaries
    — the «edges» of each equivalence class. [Lee Copeland, «A practitioner’s guide to software test design»]
    0 2 3
    20 21
    Допустимо
    Недопустимо
    Недопустимо
    Недостижимо

    Классы эквивалентности и граничные условия
    Тестирование программного обеспечения. Базовый курс.
    © EPAM Systems, 2015–2022
    Стр: 235/298
    Рисунок 2.7.b — Итоговое разбиение на классы эквивалентности значений длины имени пользователя
    Обратите внимание, что области значений [0, 2] и [21, ∞] относятся к разным классам эквивалентности, т.к. принадлежность длины строки к этим диапазонам проверяется отдельными условиями на уровне кода программы.
    Граничные условия уже отмечены на рисунке 2.7.b — это 2, 3, 20 и 21. Зна- чение 0 тоже стоит включить в этот набор на всякий случай, т.к. в программирова- нии ноль, NULL, нулевой байт и т.п. исторически являются «опасными значениями».
    В итоге мы получаем следующий набор входных данных для тест-кейсов
    (сами символы для составления строк можно выбирать из набора допустимых сим- волов случайным образом, но желательно учесть все типы символов, т.е. буквы в обоих регистрах, цифры, знак подчёркивания).
    Таблица 2.7.a — Значения входных данных для тест-кейсов (реакция на длину имени пользователя)
    Позитивные тест-кейсы
    Негативные тест-кейсы
    Значе-
    ние
    AAA
    123_zzzzzzzzzzzzzzzz AA
    Пустая строка
    1234_zzzzzzzzzzzzzzzz
    Поясне-
    ние
    Строка ми- нимальной допустимой длины
    Строка максимальной допустимой длины
    Строка не- допустимой длины по нижней границе
    Строка не- допустимой длины, учтена для надёжно- сти
    Строка недопустимой длины по верхней гра- нице
    Осталось решить вопрос с недопустимыми символами. К сожалению, столь же наглядно, как с длиной, здесь не получится. Даже если подойти строго научно, т.е. выбрать кодировку и по её кодовой таблице определить диапазоны кодов сим- волов (на рисунке 2.7.c приведён пример такого разделения для ASCII-таблицы), у нас нет никакой гарантии, что символы с кодами из каждого диапазона трактуются единообразно.
    Здесь мы видим ярчайший пример случая, в котором тестирование по ме- тоду белого ящика сильно облегчило бы нам жизнь. Если бы мы видели, как в коде приложения реализована проверка на допустимые и недопусти- мые символы, мы могли бы подобрать очень показательные значения входных данных.
    Рисунок 2.7.c — Неудачный способ поиска классов эквивалентности для наборов допустимых и недопустимых символов (коды символов приведены по ASCII- таблице)
    0 2 3
    20 21
    Допустимо
    Недопустимо
    Недопустимо
    Цифры
    48 0
    47 57 58 65 90 64 91 96 97 122 94 95 123 255
    Буквы A-Z
    Буквы a-z
    _

    Классы эквивалентности и граничные условия
    Тестирование программного обеспечения. Базовый курс.
    © EPAM Systems, 2015–2022
    Стр: 236/298
    Раз оказалось, что по кодам символов подбирать классы эквивалентности в нашем случае нерационально, посмотрим на ситуацию по-другому (и намного проще). Поделим символы на недопустимые и допустимые, а последние, в свою очередь, — на группы (см. рисунок 2.7.d).
    Рисунок 2.7.d — Классы эквивалентных допустимых и недопустимых символов
    Интересующие нас комбинации допустимых символов (с представителями всех групп) мы уже учли при проверке реакции приложения на имена пользователя допустимых и недопустимых длин, потому остаётся учесть только вариант с допу- стимой длиной строки, но недопустимыми символами (которые можно выбирать случайным образом из соответствующего набора). В таблицу 2.7.a добавим одну колонку и получим таблицу 2.7.b.
    Таблица 2.7.b — Значения всех входных данных для тест-кейсов
    Позитивные тест-кейсы
    Негативные тест-кейсы
    Зна-
    чение
    AAA
    123_zzzzzzzzzzzzzzzz AA
    Пустая строка
    1234_zzzzzzzzzzzzzzzz #$%
    Пояс-
    нение
    Строка мини- мальной допусти- мой длины
    Строка максимальной допустимой длины
    Строка недопу- стимой длины по ниж- ней гра- нице
    Строка недопу- стимой длины, учтена для надёж- ности
    Строка недопустимой длины по верхней гра- нице
    Строка допусти- мой длины, недопу- стимые символы
    Конечно, в случае критически важных приложений (например, системы управления ядерным реактором) мы бы проверили с помощью средств ав- томатизации реакцию приложения на каждый недопустимый символ. Но предположив, что перед нами некое тривиальное приложение, мы можем считать, что одной проверки на недопустимые символы будет достаточно.
    Теперь мы возвращаемся к «Конвертеру файлов»
    {57}
    и ищем ответ на во- прос
    {232}
    о том, не упустили ли мы какие-то важные проверки в главе «Позитивные и негативные тест-кейсы»
    {231}
    Начнём с того, что выделим группы свойств SOURCE_DIR, от которых зави- сит работа приложения (такие группы называются «измерениями»):
    • Существование каталога (изначальное и во время работы приложения).
    • Длина имени.
    • Наборы символов в имени.
    • Комбинации символов в имени.
    • Расположение каталога (локальный или сетевой).
    • Права доступа к каталогу (изначальные и во время работы приложения).
    • Зарезервированные имена.
    Цифры
    Буквы A-Z
    Буквы a-z
    Знак _
    Все остальные символы
    Допустимо
    Недопустимо

    Классы эквивалентности и граничные условия
    Тестирование программного обеспечения. Базовый курс.
    © EPAM Systems, 2015–2022
    Стр: 237/298
    • Поведение, зависящее от операционной системы.
    • Поведение, зависящее от работы сети.
    1   ...   30   31   32   33   34   35   36   37   38


    написать администратору сайта