Файл: Обеспечения Базовый курс (3е издание) Версия книги 2 от 17. 04. 2023.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 07.11.2023
Просмотров: 866
Скачиваний: 31
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
Низкая квалификация
Высокая квалификация
Не склонен к экспериментам «Осторожный»
«Консервативный»
Склонен к экспериментам
«Отчаянный»
«Изощрённый»
Согласитесь, уже на этой стадии не составляет труда представить себе от- личия в логике работы с приложением, например, «консервативного» и «отчаян- ного» пользователей.
Но мы пойдём дальше и озаглавим для них сами сценарии, например, в си- туациях, когда такой пользователь позитивно и негативно относится к идее внедре- ния нашего приложения:
Наборы тест-кейсов
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 148/301
Таблица 2.4.b — Сценарии поведения на основе классификации пользователей
«Осторожный»
«Консерватив-
ный»
«Отчаянный»
«Изощрённый»
Позитивно
«А можно вот так?»
«Начнём с ин- струкции!»
«Гляньте, что я придумал!»
«Я всё оптимизи- рую!»
Негативно
«Я ничего не по- нимаю.»
«У вас вот здесь несоответ- ствие…»
«Всё равно поло- маю!»
«А я говорил!»
Проявив даже самую малость воображения, можно представить, что и как будет происходить в каждой из получившихся восьми ситуаций. Причём на созда- ние пары таких таблиц уходит всего несколько минут, а эффект от их использова- ния на порядки превосходит бездумное «кликанье по кнопкам в надежде найти баг».
Куда более полное и техничное объяснение того, что такое сценарное те- стирование, как его применять и выполнять должным образом, можно про- честь в статье Сэма Канера «An Introduction to Scenario Testing»
305
Подробная классификация наборов тест-кейсов
Представленный здесь материал сложно отнести к категории «для начи- нающих» (и вы можете сразу перейти к пункту «Принципы построения наборов тест-кейсов»
{150}
). Но если вам любопытно, взгляните на подроб- ную классификацию, которая представлена ниже.
Подробная классификация наборов тест-кейсов может быть выражена сле- дующей таблицей.
Таблица 2.4.c — Подробная классификация наборов тест-кейсов
По изолированности тест-кейсов друг от
друга
Изолированные
Обобщённые
По образованию тест-
кейсами строгой по-
следовательности
Свободные
Изолированные свободные
Обобщённые свобод- ные
Последовательные
Изолированные последовательные
Обобщённые последовательные
• Набор изолированных свободных тест-кейсов (рисунок 2.4.g): действия из раздела «приготовления» нужно повторить перед каждым тест-кейсом, а сами тест-кейсы можно выполнять в любом порядке.
• Набор обобщённых свободных тест-кейсов (рисунок 2.4.h): действия из раз- дела «приготовления» нужно выполнить один раз (а потом просто выполнять тест-кейсы), а сами тест-кейсы можно выполнять в любом порядке.
• Набор изолированных последовательных тест-кейсов (рисунок 2.4.i): дей- ствия из раздела «приготовления» нужно повторить перед каждым тест-кей- сом, а сами тест-кейсы нужно выполнять в строго определённом порядке.
• Набор обобщённых последовательных тест-кейсов (рисунок 2.4.j): действия из раздела «приготовления» нужно выполнить один раз (а потом просто вы- полнять тест-кейсы), а сами тест-кейсы нужно выполнять в строго опреде- лённом порядке.
305
«An Introduction to Scenario Testing», Cem Kaner [
http://kaner.com/pdfs/ScenarioIntroVer4.pdf
]
Наборы тест-кейсов
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 149/301
Главное преимущество изолированности: каждый тест-кейс выполняется в
«чистой среде», на него не влияют результаты работы предыдущих тест-кейсов.
Главное преимущество обобщённости: приготовления не нужно повторять
(экономия времени).
Главное преимущество последовательности: ощутимое сокращение шагов в каждом тест-кейсе, т.к. результат выполнения предыдущего тест-кейса является начальной ситуацией для следующего.
Главное преимущество свободы: возможность выполнять тест-кейсы в лю- бом порядке, а также то, что при провале некоего тест-кейса (приложение не при- шло в ожидаемое состояние) остальные тест-кейсы по-прежнему можно выполнять.
Рисунок 2.4.g — Набор изолированных свободных тест-кейсов
Рисунок 2.4.h — Набор обобщённых свободных тест-кейсов
Приготовления
Тест 1
Тест 2
Тест 3
Приготовления
Приготовления
Приготовления
Тест 1
Тест 2
Тест 3
Наборы тест-кейсов
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 150/301
Рисунок 2.4.i — Набор изолированных последовательных тест-кейсов
Рисунок 2.4.j — Набор обобщённых последовательных тест-кейсов
Принципы построения наборов тест-кейсов
Теперь — о самом главном: как формировать наборы тест-кейсов. Правиль- ный ответ звучит очень кратко: логично. И это не шутка. Единственная задача набо- ров — повысить эффективность тестирования за счёт ускорения и упрощения вы- полнения тест-кейсов, увеличения глубины исследования некоей области приложе- ния или функциональности, следования типичным пользовательским сценариям
{146}
или удобной последовательности выполнения тест-кейсов и т.д.
Набор тест-кейсов всегда создаётся с какой-то целью, на основе какой-то ло- гики, и по этим же принципам в набор включаются тесты, обладающие подходя- щими свойствами.
Если же говорить о наиболее типичных подходах к составлению наборов тест-кейсов, то можно обозначить следующее:
• На основе чек-листов. Посмотрите внимательно на примеры чек-листов
{116}
, которые мы разработали в соответствующем разделе
{115}
: каждый пункт чек- листа может превратиться в несколько тест-кейсов — и вот мы получаем го- товый набор.
Приготовления
Тест 1
Тест 2
Тест 3
Приготовления
Приготовления
Приготовления
Тест 1
Тест 2
Тест 3
Наборы тест-кейсов
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 151/301
• На основе разбиения приложения на модули и подмодули
{125}
. Для каждого модуля (или его отдельных подмодулей) можно составить свой набор тест- кейсов.
• По принципу проверки самых важных, менее важных и всех остальных функ- ций приложения (именно по этому принципу мы составляли примеры чек-ли- стов
{116}
).
• По принципу группировки тест-кейсов для проверки некоего уровня требова- ний или типа требований
{39}
, группы требований или отдельного требования.
• По принципу частоты обнаружения тест-кейсами дефектов в приложении
(например, мы видим, что некоторые тест-кейсы раз за разом завершаются неудачей, значит, мы можем объединить их в набор, условно названный
«проблемные места в приложении»).
• По архитектурному принципу (см. «многоуровневая архитектура»
150
самосто- ятельно): наборы для проверки пользовательского интерфейса и всего уровня представления, для проверки уровня бизнес-логики, для проверки уровня данных.
• По области внутренней работы приложения, например: «тест-кейсы, затра- гивающие работу с базой данных», «тест-кейсы, затрагивающие работу с файловой системой», «тест-кейсы, затрагивающие работу с сетью», и т.д.
• По видам тестирования (см. главу «Подробная классификация тестирова- ния»
{69}
).
Не нужно заучивать этот список. Это всего лишь примеры — грубо говоря,
«первое, что приходит в голову». Важен принцип: если вы видите, что выполнение некоторых тест-кейсов в виде набора принесёт вам пользу, создавайте такой набор.
Примечание: без хороших инструментальных средств управления тест-кей- сами работать с наборами тест-кейсов крайне тяжело, т.к. приходится самостоя- тельно следить за приготовлениями, «недостающими шагами», изолированностью или обобщённостью, свободностью или последовательностью и т.д.
Логика создания эффективных проверок
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 152/301
2.4.7.
Логика создания эффективных проверок
Теперь, когда мы рассмотрели принципы построения чек-листов
{115}
и оформ- ления тест-кейсов
{124}
, свойства качественных тест-кейсов
{136}
, а также принципы объ- единения тест-кейсов в наборы
{150}
, настало время перейти к самой сложной, «фи- лософской» части, в которой мы будем рассуждать уже не о том, что и как писать, а о том, как думать.
Ранее уже было сказано: если у тест-кейса не указаны входные данные, условия выполнения и ожидаемые результаты, и/или не ясна цель тест-кейса — это плохой тест-кейс. И здесь во главе угла стоит цель. Если мы чётко понимаем, что и зачем мы делаем, мы или быстро находим всю остальную недостающую ин- формацию, или столь же быстро формулируем правильные вопросы и адресуем их правильным людям.
Вся суть работы тестировщика в конечном итоге направлена на повышение качества (процессов, продуктов и т.д.). Но что такое качество? Да, существует сухое официальное определение
306
, но даже там сказано про «user/customer needs and expectations
» (потребности и ожидания пользователя/заказчика).
И здесь проявляется главная мысль: качество — это некая ценность для
конечного пользователя (заказчика). Человек в любом случае платит за исполь- зование продукта — деньгами, своим временем, какими-то усилиями (даже если вы не получаете эту «оплату», человек вполне обоснованно считает, что что-то уже на вас потратил, и он прав). Но получает ли он то, на что рассчитывал (предположим, что его ожидания — здравы и реалистичны)?
Если мы подходим к тестированию формально, мы рискуем получить про- дукт, который по документам (метрикам и т.д.) выглядит идеально, но в реальности никому не нужен.
Поскольку практически любой современный программный продукт представ- ляет собой непростую систему, среди широкого множества её свойств и функций объективно есть самые важные, менее важные и совсем незначительные по важ- ности для пользователей.
Если усилия тестировщиков будут сконцентрированы на первой и второй ка- тегории (самом важном и чуть менее важном), наши шансы создать приложение, удовлетворяющее заказчика, резко увеличиваются.
Есть простая логика:
• Тесты ищут ошибки.
• Но все ошибки найти невозможно.
• Значит, наша задача — найти максимум ВАЖНЫХ ошибок за имеющееся время.
Под важными ошибками здесь мы понимаем такие, которые приводят к нару- шению важных для пользователя функций или свойств продукта. Функции и свой- ства разделены не случайно — безопасность, производительность, удобство и т.д. не относятся к функциям, но играют ничуть не менее важную роль в формировании удовлетворённости заказчика и конечных пользователей.
Ситуация усугубляется следующими фактами:
• в силу множества экономических и технических причин мы не можем выпол- нить «все тесты, что придут нам в голову» (да ещё и многократно) — прихо- дится тщательно выбирать, что и как мы будем тестировать, принимая во внимание только что упомянутую мысль: качество — это некая ценность для конечного пользователя (заказчика);
306
Quality. The degree to which a component, system or process meets specified requirements and/or user/customer needs and expectations. [ISTQB Glossary]
Логика создания эффективных проверок
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 153/301
• никогда в реальной жизни (как бы мы ни старались) мы не получим «совер- шенного и идеального набора требований» — там всегда будет некоторое количество недоработок, и это тоже надо принимать во внимание.
Однако существует достаточно простой алгоритм, позволяющий нам созда- вать эффективные проверки даже в таких условиях. Приступая к продумыванию чек-листа, тест-кейса или набора тест-кейсов, задайте себе следующие вопросы и получите чёткие ответы:
• Что перед вами? Если вы не понимаете, что вам предстоит тестировать, вы не уйдёте дальше бездумных формальных проверок.
• Кому и зачем оно нужно (и насколько это важно)? Ответ на этот вопрос поз- волит вам быстро придумать несколько характерных сценариев использова- ния
{146}
того, что вы собираетесь тестировать.
• Как оно обычно используется? Это уже детализация сценариев и источник идей для позитивного тестирования
{82}
(их удобно оформить в виде чек-ли- ста).
• Как оно может сломаться, т.е. начать работать неверно? Это также детали- зация сценариев использования, но уже в контексте негативного тестирова- ния
{82}
(их тоже удобно оформить в виде чек-листа).
К этому алгоритму можно добавить ещё небольшой перечень универсальных рекомендаций, которые позволят вам проводить тестирование лучше:
• Начинайте как можно раньше — уже с момента появления первых требова- ний можно заниматься их тестированием и улучшением, можно писать чек- листы и тест-кейсы, можно уточнять план тестирования, готовить тестовое окружение и т.д.
• Если вам предстоит тестировать что-то большое и сложное, разбивайте его на модули и подмодули, функциональность подвергайте функциональной декомпозиции
307
— т.е. добейтесь такого уровня детализации, при котором вы можете без труда удержать в голове всю информацию об объекте тести- рования.
• Обязательно пишите чек-листы. Если вам кажется, что вы сможете запом- нить все идеи и потом легко их воспроизвести, вы ошибаетесь. Исключений не бывает.
• По мере создания чек-листов, тест-кейсов и т.д. прямо в текст вписывайте возникающие вопросы. Когда вопросов накопится достаточно, соберите их отдельно, уточните формулировки и обратитесь к тому, кто может дать от- веты.
• Если используемое вами инструментальное средство позволяет использо- вать косметическое оформление текста — используйте (так текст будет лучше читаться), но старайтесь следовать общепринятым традициям и не раскрашивать каждое второе слово в свой цвет, шрифт, размер и т.д.
• Используйте технику беглого просмотра
{51}
для получения отзыва от коллег и улучшения созданного вами документа.
• Планируйте время на улучшение тест-кейсов (исправление ошибок, дора- ботку по факту изменения требований и т.д.).
• Начинайте проработку (и выполнение) тест-кейсов с простых позитивных проверок наиболее важной функциональности. Затем постепенно повы- шайте сложность проверок, помня не только о позитивных
{82}
, но и о негатив- ных
{82}
проверках.
307
«Functional decomposition», Wikipedia [
http://en.wikipedia.org/wiki/Functional_decomposition
]
Логика создания эффективных проверок
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 154/301
• Помните, что в основе тестирования лежит цель. Если вы не можете быстро и просто сформулировать цель созданного вами тест-кейса, вы создали пло- хой тест-кейс.
• Избегайте избыточных, дублирующих друг друга тест-кейсов. Минимизиро- вать их количество вам помогут техники классов эквивалентности
{94}
, гранич- ных условий
{95}
, доменного тестирования
{95}
• Если показательность
{140}
тест-кейса можно увеличить, при этом не сильно изменив его сложность и не отклонившись от исходной цели, сделайте это.
• Помните, что очень многие тест-кейсы требуют отдельной подготовки, кото- рую нужно описать в соответствующем поле тест-кейса.
• Несколько позитивных тест-кейсов
{82}
можно безбоязненно объединять, но объединение негативных тест-кейсов
{82}
почти всегда запрещено.
• Подумайте, как можно оптимизировать созданный вами тест-кейс (набор тест-кейсов и т.д.) так, чтобы снизить трудозатраты на его выполнение.
• Перед тем как отправлять финальную версию созданного вами документа, ещё раз перечитайте написанное (в доброй половине случаев найдёте опе- чатку или иную недоработку).
Задание 2.4.e: дополните этот список идеями, которые вы почерпнули из других книг, статей и т.д.
Пример реализации логики создания эффективных проверок
Ранее мы составили подробный чек-лист
{115}
для тестирования нашего «Кон- вертера файлов»
{60}
. Давайте посмотрим на него критически и подумаем: что можно сократить, чем мы в итоге пожертвуем и какой выигрыш получим.
Прежде чем мы начнём оптимизировать чек-лист, важно отметить, что реше- ние о том, что важно и что неважно, стоит принимать на основе ранжирования тре- бований по важности, а также согласовывать с заказчиком.
Что для пользователя САМОЕ важное? Ради чего создавалось приложение?
Чтобы конвертировать файлы. Принимая во внимание тот факт, что настройку при- ложения будет выполнять квалифицированный технический специалист, мы можем даже «отодвинуть на второй план» реакцию приложения на ошибки стадии запуска и завершения.
И на первое место выходит:
• Обработка файлов, разные форматы, кодировки и размеры:
Таблица 2.4.d — Форматы, кодировки и размеры файлов
Форматы входных файлов
TXT
HTML
MD
Кодировки
входных фай-
лов
WIN1251 100 КБ
50 МБ
10
МБ
CP866 10 МБ
100 КБ
50 МБ
KOI8R
50 МБ
10 МБ
100 КБ
Любая
0 байт
Любая
50 МБ + 1 Б
50 МБ + 1 Б
50 МБ + 1 Б
-
Любой недопустимый формат
Любая
Повреждения в допустимом формате
Высокая квалификация
Не склонен к экспериментам «Осторожный»
«Консервативный»
Склонен к экспериментам
«Отчаянный»
«Изощрённый»
Согласитесь, уже на этой стадии не составляет труда представить себе от- личия в логике работы с приложением, например, «консервативного» и «отчаян- ного» пользователей.
Но мы пойдём дальше и озаглавим для них сами сценарии, например, в си- туациях, когда такой пользователь позитивно и негативно относится к идее внедре- ния нашего приложения:
Наборы тест-кейсов
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 148/301
Таблица 2.4.b — Сценарии поведения на основе классификации пользователей
«Осторожный»
«Консерватив-
ный»
«Отчаянный»
«Изощрённый»
Позитивно
«А можно вот так?»
«Начнём с ин- струкции!»
«Гляньте, что я придумал!»
«Я всё оптимизи- рую!»
Негативно
«Я ничего не по- нимаю.»
«У вас вот здесь несоответ- ствие…»
«Всё равно поло- маю!»
«А я говорил!»
Проявив даже самую малость воображения, можно представить, что и как будет происходить в каждой из получившихся восьми ситуаций. Причём на созда- ние пары таких таблиц уходит всего несколько минут, а эффект от их использова- ния на порядки превосходит бездумное «кликанье по кнопкам в надежде найти баг».
Куда более полное и техничное объяснение того, что такое сценарное те- стирование, как его применять и выполнять должным образом, можно про- честь в статье Сэма Канера «An Introduction to Scenario Testing»
305
Подробная классификация наборов тест-кейсов
Представленный здесь материал сложно отнести к категории «для начи- нающих» (и вы можете сразу перейти к пункту «Принципы построения наборов тест-кейсов»
{150}
). Но если вам любопытно, взгляните на подроб- ную классификацию, которая представлена ниже.
Подробная классификация наборов тест-кейсов может быть выражена сле- дующей таблицей.
Таблица 2.4.c — Подробная классификация наборов тест-кейсов
По изолированности тест-кейсов друг от
друга
Изолированные
Обобщённые
По образованию тест-
кейсами строгой по-
следовательности
Свободные
Изолированные свободные
Обобщённые свобод- ные
Последовательные
Изолированные последовательные
Обобщённые последовательные
• Набор изолированных свободных тест-кейсов (рисунок 2.4.g): действия из раздела «приготовления» нужно повторить перед каждым тест-кейсом, а сами тест-кейсы можно выполнять в любом порядке.
• Набор обобщённых свободных тест-кейсов (рисунок 2.4.h): действия из раз- дела «приготовления» нужно выполнить один раз (а потом просто выполнять тест-кейсы), а сами тест-кейсы можно выполнять в любом порядке.
• Набор изолированных последовательных тест-кейсов (рисунок 2.4.i): дей- ствия из раздела «приготовления» нужно повторить перед каждым тест-кей- сом, а сами тест-кейсы нужно выполнять в строго определённом порядке.
• Набор обобщённых последовательных тест-кейсов (рисунок 2.4.j): действия из раздела «приготовления» нужно выполнить один раз (а потом просто вы- полнять тест-кейсы), а сами тест-кейсы нужно выполнять в строго опреде- лённом порядке.
305
«An Introduction to Scenario Testing», Cem Kaner [
http://kaner.com/pdfs/ScenarioIntroVer4.pdf
]
Наборы тест-кейсов
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 149/301
Главное преимущество изолированности: каждый тест-кейс выполняется в
«чистой среде», на него не влияют результаты работы предыдущих тест-кейсов.
Главное преимущество обобщённости: приготовления не нужно повторять
(экономия времени).
Главное преимущество последовательности: ощутимое сокращение шагов в каждом тест-кейсе, т.к. результат выполнения предыдущего тест-кейса является начальной ситуацией для следующего.
Главное преимущество свободы: возможность выполнять тест-кейсы в лю- бом порядке, а также то, что при провале некоего тест-кейса (приложение не при- шло в ожидаемое состояние) остальные тест-кейсы по-прежнему можно выполнять.
Рисунок 2.4.g — Набор изолированных свободных тест-кейсов
Рисунок 2.4.h — Набор обобщённых свободных тест-кейсов
Приготовления
Тест 1
Тест 2
Тест 3
Приготовления
Приготовления
Приготовления
Тест 1
Тест 2
Тест 3
Наборы тест-кейсов
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 150/301
Рисунок 2.4.i — Набор изолированных последовательных тест-кейсов
Рисунок 2.4.j — Набор обобщённых последовательных тест-кейсов
Принципы построения наборов тест-кейсов
Теперь — о самом главном: как формировать наборы тест-кейсов. Правиль- ный ответ звучит очень кратко: логично. И это не шутка. Единственная задача набо- ров — повысить эффективность тестирования за счёт ускорения и упрощения вы- полнения тест-кейсов, увеличения глубины исследования некоей области приложе- ния или функциональности, следования типичным пользовательским сценариям
{146}
или удобной последовательности выполнения тест-кейсов и т.д.
Набор тест-кейсов всегда создаётся с какой-то целью, на основе какой-то ло- гики, и по этим же принципам в набор включаются тесты, обладающие подходя- щими свойствами.
Если же говорить о наиболее типичных подходах к составлению наборов тест-кейсов, то можно обозначить следующее:
• На основе чек-листов. Посмотрите внимательно на примеры чек-листов
{116}
, которые мы разработали в соответствующем разделе
{115}
: каждый пункт чек- листа может превратиться в несколько тест-кейсов — и вот мы получаем го- товый набор.
Приготовления
Тест 1
Тест 2
Тест 3
Приготовления
Приготовления
Приготовления
Тест 1
Тест 2
Тест 3
Наборы тест-кейсов
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 151/301
• На основе разбиения приложения на модули и подмодули
{125}
. Для каждого модуля (или его отдельных подмодулей) можно составить свой набор тест- кейсов.
• По принципу проверки самых важных, менее важных и всех остальных функ- ций приложения (именно по этому принципу мы составляли примеры чек-ли- стов
{116}
).
• По принципу группировки тест-кейсов для проверки некоего уровня требова- ний или типа требований
{39}
, группы требований или отдельного требования.
• По принципу частоты обнаружения тест-кейсами дефектов в приложении
(например, мы видим, что некоторые тест-кейсы раз за разом завершаются неудачей, значит, мы можем объединить их в набор, условно названный
«проблемные места в приложении»).
• По архитектурному принципу (см. «многоуровневая архитектура»
150
самосто- ятельно): наборы для проверки пользовательского интерфейса и всего уровня представления, для проверки уровня бизнес-логики, для проверки уровня данных.
• По области внутренней работы приложения, например: «тест-кейсы, затра- гивающие работу с базой данных», «тест-кейсы, затрагивающие работу с файловой системой», «тест-кейсы, затрагивающие работу с сетью», и т.д.
• По видам тестирования (см. главу «Подробная классификация тестирова- ния»
{69}
).
Не нужно заучивать этот список. Это всего лишь примеры — грубо говоря,
«первое, что приходит в голову». Важен принцип: если вы видите, что выполнение некоторых тест-кейсов в виде набора принесёт вам пользу, создавайте такой набор.
Примечание: без хороших инструментальных средств управления тест-кей- сами работать с наборами тест-кейсов крайне тяжело, т.к. приходится самостоя- тельно следить за приготовлениями, «недостающими шагами», изолированностью или обобщённостью, свободностью или последовательностью и т.д.
Логика создания эффективных проверок
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 152/301
2.4.7.
Логика создания эффективных проверок
Теперь, когда мы рассмотрели принципы построения чек-листов
{115}
и оформ- ления тест-кейсов
{124}
, свойства качественных тест-кейсов
{136}
, а также принципы объ- единения тест-кейсов в наборы
{150}
, настало время перейти к самой сложной, «фи- лософской» части, в которой мы будем рассуждать уже не о том, что и как писать, а о том, как думать.
Ранее уже было сказано: если у тест-кейса не указаны входные данные, условия выполнения и ожидаемые результаты, и/или не ясна цель тест-кейса — это плохой тест-кейс. И здесь во главе угла стоит цель. Если мы чётко понимаем, что и зачем мы делаем, мы или быстро находим всю остальную недостающую ин- формацию, или столь же быстро формулируем правильные вопросы и адресуем их правильным людям.
Вся суть работы тестировщика в конечном итоге направлена на повышение качества (процессов, продуктов и т.д.). Но что такое качество? Да, существует сухое официальное определение
306
, но даже там сказано про «user/customer needs and expectations
» (потребности и ожидания пользователя/заказчика).
И здесь проявляется главная мысль: качество — это некая ценность для
конечного пользователя (заказчика). Человек в любом случае платит за исполь- зование продукта — деньгами, своим временем, какими-то усилиями (даже если вы не получаете эту «оплату», человек вполне обоснованно считает, что что-то уже на вас потратил, и он прав). Но получает ли он то, на что рассчитывал (предположим, что его ожидания — здравы и реалистичны)?
Если мы подходим к тестированию формально, мы рискуем получить про- дукт, который по документам (метрикам и т.д.) выглядит идеально, но в реальности никому не нужен.
Поскольку практически любой современный программный продукт представ- ляет собой непростую систему, среди широкого множества её свойств и функций объективно есть самые важные, менее важные и совсем незначительные по важ- ности для пользователей.
Если усилия тестировщиков будут сконцентрированы на первой и второй ка- тегории (самом важном и чуть менее важном), наши шансы создать приложение, удовлетворяющее заказчика, резко увеличиваются.
Есть простая логика:
• Тесты ищут ошибки.
• Но все ошибки найти невозможно.
• Значит, наша задача — найти максимум ВАЖНЫХ ошибок за имеющееся время.
Под важными ошибками здесь мы понимаем такие, которые приводят к нару- шению важных для пользователя функций или свойств продукта. Функции и свой- ства разделены не случайно — безопасность, производительность, удобство и т.д. не относятся к функциям, но играют ничуть не менее важную роль в формировании удовлетворённости заказчика и конечных пользователей.
Ситуация усугубляется следующими фактами:
• в силу множества экономических и технических причин мы не можем выпол- нить «все тесты, что придут нам в голову» (да ещё и многократно) — прихо- дится тщательно выбирать, что и как мы будем тестировать, принимая во внимание только что упомянутую мысль: качество — это некая ценность для конечного пользователя (заказчика);
306
Quality. The degree to which a component, system or process meets specified requirements and/or user/customer needs and expectations. [ISTQB Glossary]
Логика создания эффективных проверок
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 153/301
• никогда в реальной жизни (как бы мы ни старались) мы не получим «совер- шенного и идеального набора требований» — там всегда будет некоторое количество недоработок, и это тоже надо принимать во внимание.
Однако существует достаточно простой алгоритм, позволяющий нам созда- вать эффективные проверки даже в таких условиях. Приступая к продумыванию чек-листа, тест-кейса или набора тест-кейсов, задайте себе следующие вопросы и получите чёткие ответы:
• Что перед вами? Если вы не понимаете, что вам предстоит тестировать, вы не уйдёте дальше бездумных формальных проверок.
• Кому и зачем оно нужно (и насколько это важно)? Ответ на этот вопрос поз- волит вам быстро придумать несколько характерных сценариев использова- ния
{146}
того, что вы собираетесь тестировать.
• Как оно обычно используется? Это уже детализация сценариев и источник идей для позитивного тестирования
{82}
(их удобно оформить в виде чек-ли- ста).
• Как оно может сломаться, т.е. начать работать неверно? Это также детали- зация сценариев использования, но уже в контексте негативного тестирова- ния
{82}
(их тоже удобно оформить в виде чек-листа).
К этому алгоритму можно добавить ещё небольшой перечень универсальных рекомендаций, которые позволят вам проводить тестирование лучше:
• Начинайте как можно раньше — уже с момента появления первых требова- ний можно заниматься их тестированием и улучшением, можно писать чек- листы и тест-кейсы, можно уточнять план тестирования, готовить тестовое окружение и т.д.
• Если вам предстоит тестировать что-то большое и сложное, разбивайте его на модули и подмодули, функциональность подвергайте функциональной декомпозиции
307
— т.е. добейтесь такого уровня детализации, при котором вы можете без труда удержать в голове всю информацию об объекте тести- рования.
• Обязательно пишите чек-листы. Если вам кажется, что вы сможете запом- нить все идеи и потом легко их воспроизвести, вы ошибаетесь. Исключений не бывает.
• По мере создания чек-листов, тест-кейсов и т.д. прямо в текст вписывайте возникающие вопросы. Когда вопросов накопится достаточно, соберите их отдельно, уточните формулировки и обратитесь к тому, кто может дать от- веты.
• Если используемое вами инструментальное средство позволяет использо- вать косметическое оформление текста — используйте (так текст будет лучше читаться), но старайтесь следовать общепринятым традициям и не раскрашивать каждое второе слово в свой цвет, шрифт, размер и т.д.
• Используйте технику беглого просмотра
{51}
для получения отзыва от коллег и улучшения созданного вами документа.
• Планируйте время на улучшение тест-кейсов (исправление ошибок, дора- ботку по факту изменения требований и т.д.).
• Начинайте проработку (и выполнение) тест-кейсов с простых позитивных проверок наиболее важной функциональности. Затем постепенно повы- шайте сложность проверок, помня не только о позитивных
{82}
, но и о негатив- ных
{82}
проверках.
307
«Functional decomposition», Wikipedia [
http://en.wikipedia.org/wiki/Functional_decomposition
]
Логика создания эффективных проверок
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 154/301
• Помните, что в основе тестирования лежит цель. Если вы не можете быстро и просто сформулировать цель созданного вами тест-кейса, вы создали пло- хой тест-кейс.
• Избегайте избыточных, дублирующих друг друга тест-кейсов. Минимизиро- вать их количество вам помогут техники классов эквивалентности
{94}
, гранич- ных условий
{95}
, доменного тестирования
{95}
• Если показательность
{140}
тест-кейса можно увеличить, при этом не сильно изменив его сложность и не отклонившись от исходной цели, сделайте это.
• Помните, что очень многие тест-кейсы требуют отдельной подготовки, кото- рую нужно описать в соответствующем поле тест-кейса.
• Несколько позитивных тест-кейсов
{82}
можно безбоязненно объединять, но объединение негативных тест-кейсов
{82}
почти всегда запрещено.
• Подумайте, как можно оптимизировать созданный вами тест-кейс (набор тест-кейсов и т.д.) так, чтобы снизить трудозатраты на его выполнение.
• Перед тем как отправлять финальную версию созданного вами документа, ещё раз перечитайте написанное (в доброй половине случаев найдёте опе- чатку или иную недоработку).
Задание 2.4.e: дополните этот список идеями, которые вы почерпнули из других книг, статей и т.д.
Пример реализации логики создания эффективных проверок
Ранее мы составили подробный чек-лист
{115}
для тестирования нашего «Кон- вертера файлов»
{60}
. Давайте посмотрим на него критически и подумаем: что можно сократить, чем мы в итоге пожертвуем и какой выигрыш получим.
Прежде чем мы начнём оптимизировать чек-лист, важно отметить, что реше- ние о том, что важно и что неважно, стоит принимать на основе ранжирования тре- бований по важности, а также согласовывать с заказчиком.
Что для пользователя САМОЕ важное? Ради чего создавалось приложение?
Чтобы конвертировать файлы. Принимая во внимание тот факт, что настройку при- ложения будет выполнять квалифицированный технический специалист, мы можем даже «отодвинуть на второй план» реакцию приложения на ошибки стадии запуска и завершения.
И на первое место выходит:
• Обработка файлов, разные форматы, кодировки и размеры:
Таблица 2.4.d — Форматы, кодировки и размеры файлов
Форматы входных файлов
TXT
HTML
MD
Кодировки
входных фай-
лов
WIN1251 100 КБ
50 МБ
10
МБ
CP866 10 МБ
100 КБ
50 МБ
KOI8R
50 МБ
10 МБ
100 КБ
Любая
0 байт
Любая
50 МБ + 1 Б
50 МБ + 1 Б
50 МБ + 1 Б
-
Любой недопустимый формат
Любая
Повреждения в допустимом формате