Файл: Обеспечения Базовый курс (3е издание) Версия книги 2 от 17. 04. 2023.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 07.11.2023
Просмотров: 884
Скачиваний: 31
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
Типичные ошибки при анализе и тестировании требований
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 64/301
Отметка того факта, что с требованием всё в порядке. Если у вас не воз- никло вопросов и/или замечаний к требованию — не надо об этом писать. Любые пометки в документе подсознательно воспринимаются как признак проблемы, и та- кое «одобрение требований» только раздражает и затрудняет работу с документом
— сложнее становится заметить пометки, относящиеся к проблемам.
Описание одной и той же проблемы в нескольких местах. Помните, что ваши пометки, комментарии, замечания и вопросы тоже должны обладать свой- ствами хороших требований (настолько, насколько эти свойства к ним применимы).
Если вы много раз в разных местах пишете одно и то же об одном и том же, вы нарушаете как минимум свойство модифицируемости. Постарайтесь в таком слу- чае вынести ваш текст в конец документа, укажите в нём же (в начале) перечень пунктов требований, к которым он относится, а в самих требованиях в коммента- риях просто ссылайтесь на этот текст.
Написание вопросов и комментариев без указания места требования, к
которым они относятся. Если ваше инструментальное средство позволяет ука- зать часть требования, к которому вы пишете вопрос или комментарий, сделайте это (например, Word позволяет выделить для комментирования любую часть тек- ста — хоть один символ). Если это невозможно, цитируйте соответствующую часть текста. В противном случае вы порождаете неоднозначность или вовсе делаете вашу пометку бессмысленной, т.к. становится невозможно понять, о чём вообще идёт речь.
Задавание плохо сформулированных вопросов. Эта ошибка была по- дробно рассмотрена выше (см. раздел «Техники тестирования требований»
{51}
и таблицу 2.2.a
{52}
). Однако добавим, что есть ещё три вида плохих вопросов:
• Первый вид возникает из-за того, что автор вопроса не знает общепринятой терминологии или типичного поведения стандартных элементов интерфейса
(например, «что такое чек-бокс?», «как в списке можно выбрать несколько пунктов?», «как подсказка может всплывать?»).
• Второй вид плохих вопросов похож на первый из-за формулировок: вместо того, чтобы написать «что вы имеете в виду под {чем-то}?», автор вопроса пишет «что такое {что-то}?» То есть вместо вполне логичного уточнения по- лучается ситуация, очень похожая на рассмотренную в предыдущем пункте.
• Третий вид сложно привязать к причине возникновения, но его суть в том, что к некорректному и/или невыполнимому требованию задаётся вопрос наподо- бие «что будет, если мы это сделаем?». Ничего не будет, т.к. мы это точно не сделаем. И вопрос должен быть совершенно иным (каким именно — зави- сит от конкретной ситуации, но точно не таким).
И ещё раз напомним о точности формулировок: иногда одно-два слова могут на корню уничтожить отличную идею, превратив хороший вопрос в плохой. Срав- ните: «Что такое формат даты по умолчанию?» и «Каков формат даты по умолча- нию?». Первый вариант просто показывает некомпетентность автора вопроса, то- гда как второй — позволяет получить полезную информацию.
К этой же проблеме относится непонимание контекста. Часто можно увидеть вопросы в стиле «о каком приложении идёт речь?», «что такое система?» и им по- добные. Чаще всего автор таких вопросов просто вырвал требование из контекста, по которому было совершенно ясно, о чём идёт речь.
Типичные ошибки при анализе и тестировании требований
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 65/301
Написание очень длинных комментариев и/или вопросов. История знает случаи, когда одна страница исходных требований превращалась в 20–30 страниц текста анализа и вопросов. Это плохой подход. Все те же мысли можно выразить значительно более кратко, чем сэкономить как своё время, так и время автора ис- ходного документа. Тем более стоит учитывать, что на начальных стадиях работы с требованиями они весьма нестабильны, и может получиться так, что ваши 5–10 страниц комментариев относятся к требованию, которое просто удалят или изменят до неузнаваемости.
Критика текста или даже его автора. Помните, что ваша задача — сделать требования лучше, а не показать их недостатки (или недостатки автора). Потому комментарии вида «плохое требование», «неужели вы не понимаете, как глупо это звучит», «надо переформулировать» неуместны и недопустимы.
Категоричные заявления без обоснования. Как продолжение ошибки
«критика текста или даже его автора» можно отметить и просто категоричные заяв- ления наподобие «это невозможно», «мы не будем этого делать», «это не нужно».
Даже если вы понимаете, что требование бессмысленно или невыполнимо, эту мысль стоит сформулировать в корректной форме и дополнить вопросами, позво- ляющими автору документа самому принять окончательное решение. Например,
«это не нужно» можно переформулировать так: «Мы сомневаемся в том, что дан- ная функция будет востребована пользователями. Какова важность этого требова- ния? Уверены ли вы в его необходимости?»
Указание проблемы с требованиями без пояснения её сути. Помните, что автор исходного документа может не быть специалистом по тестированию или биз- нес-анализу. Потому просто пометка в стиле «неполнота», «двусмысленность» и т.д. могут ничего ему не сказать. Поясняйте свою мысль.
Сюда же можно отнести небольшую, но досадную недоработку, относящуюся к противоречивости: если вы обнаружили некие противоречия, сделайте соответ- ствующие пометки во всех противоречащих друг другу местах, а не только в одном из них. Например, вы обнаружили, что требование 20 противоречит требованию 30.
Тогда в требовании 20 отметьте, что оно противоречит требованию 30, и наоборот.
И поясните суть противоречия.
Плохое оформление вопросов и комментариев. Старайтесь сделать ваши вопросы и комментарии максимально простыми для восприятия. Помните не только о краткости формулировок, но и об оформлении текста (см., например, как на рисунке 2.2.j вопросы структурированы в виде списка — такая структура воспри- нимается намного лучше, чем сплошной текст). Перечитайте свой текст, исправьте опечатки, грамматические и пунктуационные ошибки и т.д.
Описание проблемы не в том месте, к которому она относится. Класси- ческим примером может быть неточность в сноске, приложении или рисунке, кото- рая почему-то описана не там, где она находится, а в тексте, ссылающемся на со- ответствующий элемент. Исключением может считаться противоречивость, при ко- торой описать проблему нужно в обоих местах.
Ошибочное восприятие требования как «требования к пользователю».
Ранее (см. «Корректность» в «Свойства качественных требований») мы говорили, что требования в стиле «пользователь должен быть в состоянии отправить сооб- щение» являются некорректными. И это так. Но бывают ситуации, когда проблема намного менее опасна и состоит только в формулировке. Например, фразы в стиле
«пользователь может нажать на любую из кнопок», «пользователю должно быть видно главное меню» на самом деле означают «все отображаемые кнопки должны
Типичные ошибки при анализе и тестировании требований
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 66/301 быть доступны для нажатия» и «главное меню должно отображаться». Да, эту недо- работку тоже стоит исправить, но не следует отмечать её как критическую про- блему.
Скрытое редактирование требований. Эту ошибку можно смело отнести к разряду крайне опасных. Её суть состоит в том, что тестировщик произвольно вно- сит правки в требования, никак не отмечая этот факт. Соответственно, автор доку- мента, скорее всего, не заметит такой правки, а потом будет очень удивлён, когда в продукте что-то будет реализовано совсем не так, как когда-то было описано в требованиях. Потому простая рекомендация: если вы что-то правите, обязательно отмечайте это (средствами вашего инструмента или просто явно в тексте). И ещё лучше отмечать правку как предложение по изменению, а не как свершившийся факт, т.к. автор исходного документа может иметь совершенно иной взгляд на си- туацию.
Анализ, не соответствующий уровню требований. При тестировании тре- бований следует постоянно помнить, к какому уровню они относятся, т.к. в против- ном случае появляются следующие типичные ошибки:
• Добавление в бизнес-требования мелких технических подробностей.
• Дублирование на уровне пользовательских требований части бизнес-требо- ваний (если вы хотите увеличить прослеживаемость набора требований, имеет смысл просто использовать ссылки).
• Недостаточная детализация требований уровня продукта (общие фразы, до- пустимые, например, на уровне бизнес-требований, здесь уже должны быть предельно детализированы, структурированы и дополнены подробной тех- нической информацией).
Виды и направления тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 67/301
2.3.
Виды и направления тестирования
2.3.1.
Упрощённая классификация тестирования
Тестирование можно классифицировать по очень большому количеству при- знаков, и практически в каждой серьёзной книге о тестировании автор показывает свой (безусловно имеющий право на существование) взгляд на этот вопрос.
Соответствующий материал достаточно объёмен и сложен, а глубокое пони- мание каждого пункта в классификации требует определённого опыта, потому мы разделим данную тему на две: сейчас мы рассмотрим самый простой, минималь- ный набор информации, необходимый начинающему тестировщику, а в следующей главе приведём подробную классификацию.
Используйте нижеприведённый список как очень краткую «шпаргалку для за- поминания». Итак, тестирование можно классифицировать:
Рисунок 2.3.a — Упрощённая классификация тестирования
• По запуску кода на исполнение: o
Статическое тестирование — без запуска. o
Динамическое тестирование — с запуском.
• По доступу к коду и архитектуре приложения: o
Метод белого ящика — доступ к коду есть. o
Метод чёрного ящика — доступа к коду нет. o
Метод серого ящика — к части кода доступ есть, к части — нет.
• По степени автоматизации: o
Ручное тестирование — тест-кейсы выполняет человек. o
Автоматизированное тестирование — тест-кейсы частично или полно- стью выполняет специальное инструментальное средство.
• По уровню детализации приложения (по уровню тестирования): o
Модульное (компонентное) тестирование — проверяются отдельные небольшие части приложения. o
Интеграционное тестирование — проверяется взаимодействие между несколькими частями приложения. o
Системное тестирование — приложение проверяется как единое це- лое.
• По (убыванию) степени важности тестируемых функций (по уровню функци- онального тестирования): o
Дымовое тестирование (обязательно изучите этимологию термина — хотя бы в Википедии
110
)
— проверка самой важной, самой ключевой функциональности, неработоспособность которой делает бессмыс- ленной саму идею использования приложения.
110
«Smoke test», Wikipedia [
http://en.wikipedia.org/wiki/Smoke_testing_(electrical)
]
Статическое
Динамическое
По запуску кода на исполнение
Метод белого ящика
По доступу к коду и архитектуре приложения
Метод чёрного ящика
Метод серого ящика
Модульное
Интеграционное
По уровню детализации приложения
Системное
Ручное
Автоматизированное
По степени автоматизации
По (убыванию) степени важности тестируемых
функций
«Дымовое»
(
«смоук»)
Критического пути
Расширенное
Упрощённая классификация тестирования
Позитивное
Негативное
По принципам работы с приложением
Упрощённая классификация тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 68/301 o
Тестирование критического пути — проверка функциональности, ис- пользуемой типичными пользователями в типичной повседневной де- ятельности. o
Расширенное тестирование — проверка всей (остальной) функцио- нальности, заявленной в требованиях.
• По принципам работы с приложением: o
Позитивное тестирование — все действия с приложением выполня- ются строго по инструкции без никаких недопустимых действий, некор- ректных данных и т.д. Можно образно сказать, что приложение иссле- дуется в «тепличных условиях». o
Негативное тестирование — в работе с приложением выполняются
(некорректные) операции и используются данные, потенциально при- водящие к ошибкам (классика жанра — деление на ноль).
Внимание! Очень частая ошибка! Негативные тесты НЕ пред- полагают возникновения в приложении ошибки. Напротив — они предполагают, что верно работающее приложение даже в критической ситуации поведёт себя правильным образом (в примере с делением на ноль, например, отобразит сообще- ние «Делить на ноль запрещено»).
Часто возникает вопрос о том, чем различаются «тип тестирования», «вид тестирования», «способ тестирования», «подход к тестированию» и т.д. и т.п. Если вас интересует строгий формальный ответ, посмотрите в направлении таких вещей как «таксономия
111
» и «таксон
112
», т.к. сам вопрос выходит за рамки тестирования как такового и относится уже к области науки.
Но исторически так сложилось, что как минимум «тип тестирования» (testing type) и «вид тестирования» (testing kind) давно стали синонимами.
111
«Таксономия», Wikipedia [
https://ru.wikipedia.org/wiki/
Таксономия
]
112
«Таксон», Wikipedia [
https://ru.wikipedia.org/wiki/
Таксон
]
Подробная классификация тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 69/301
2.3.2.
Подробная классификация тестирования
2.3.2.1.
Схема классификации тестирования
Теперь мы рассмотрим классификацию тестирования максимально по- дробно. Настоятельно рекомендуется прочесть не только текст этой главы, но и все дополнительные источники, на которые будут приведены ссылки.
На рисунках 2.3.b и 2.3.c приведена схема, на которой все способы класси- фикации показаны одновременно. Многие авторы, создававшие подобные класси- фикации
113
, использовали интеллект-карты, однако такая техника не позволяет в полной мере отразить тот факт, что способы классификации пересекаются (т.е. не- которые виды тестирования можно отнести к разным способам классификации). На рисунках 2.3.b и 2.3.c самые яркие случаи таких пересечений отмечены цветом (см. полноразмерный электронный вид рисунка
116
) и границей блоков в виде набора то- чек. Если вы видите на схеме подобный блок — ищите одноимённый где-то в дру- гом виде классификации.
Настоятельно рекомендуется в дополнение к материалу этой главы про- честь:
• прекрасную статью «Классификация видов тестирования»
113
;
• также классическую книгу Ли Коупленда «Практическое руководство по разработке тестов» (Lee Copeland, «A Practitioner's Guide to Software
Test Design
»);
• очень интересную заметку «Types of Software Testing: List of 100 Differ- ent Testing Types
»
114
Зачем вообще нужна классификация тестирования? Она позволяет упорядо- чить знания и значительно ускоряет процессы планирования тестирования и раз- работки тест-кейсов, а также позволяет оптимизировать трудозатраты за счёт того, что тестировщику не приходится изобретать очередной велосипед.
При этом ничто не мешает создавать собственные классификации — как во- обще придуманные с нуля, так и представляющие собой комбинации и модифика- ции представленных ниже классификаций.
Если вас интересует некая «эталонная классификация», то… её не суще- ствует. Можно сказать, что в материалах
115
ISTQB приведён наиболее обобщённый и общепринятый взгляд на этот вопрос, но и там нет единой схемы, которая объединяла бы все варианты классификации.
Так что, если вас просят рассказать о классификации тестирования, стоит уточнить, согласно какому автору или источнику спрашивающий ожидает услышать ваш ответ.
Сейчас вы приступите к изучению одного из самых сложных разделов этой книги. Если вы уже имеете достаточный опыт в тестировании, можете отталки- ваться от схемы, чтобы систематизировать и расширить свои знания. Если вы только начинаете заниматься тестированием, рекомендуется сначала прочитать текст, следующий за схемой.
113
«Классификация видов тестирования» [
http://habrahabr.ru/company/npo-comp/blog/223833/
]
114
«Types of Software Testing: List of 100 Different Testing Types» [
http://www.guru99.com/types-of-software-testing.html
]
115
International Software Testing Qualifications Board, Downloads. [
http://www.istqb.org/downloads.html
]
Подробная классификация тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 70/301
По поводу схем, которые вы сейчас увидите на рисунках 2.3.b и 2.3.c, ча- сто поступают вопросы, почему функциональное и нефункциональное те- стирование не связано с соответствующими подвидами. Тому есть две причины:
1) Несмотря на то что те или иные виды тестирования принято причислять к функциональному или нефункциональному тестированию, в них всё равно присутствуют обе составляющие (как функциональная, так и не- функциональная), пусть и в разных пропорциях. Более того: часто прове- рить нефункциональную составляющую невозможно, пока не будет реа- лизована соответствующая функциональная составляющая.
2) Схема превратилась бы в непроглядную паутину линий.
Потому было решено оставить рисунки 2.3.b и 2.3.c в том виде, в каком они представлены на следующих двух страницах. Полноразмерный вари- ант этих рисунков можно скачать здесь
116
Итак, тестирование можно классифицировать…
116
Полноразмерный вариант рисунков 2.3.b [
http://svyatoslav.biz/wp-pics/software_testing_classification_ru.png
] и 2.3.c
[
http://svyatoslav.biz/wp-pics/software_testing_classification_en.png
]
Подробная классификация тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 71/301
Рисунок 2.3.b — Подробная классификация тестирования (русскоязычный вариант)
Подробная классификация тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 72/301
Рисунок 2.3.c — Подробная классификация тестирования (англоязычный вариант)
Static testing
Dynamic testing
1 ... 5 6 7 8 9 10 11 12 ... 38