Файл: Обеспечения Базовый курс (3е издание) Версия книги 2 от 17. 04. 2023.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 07.11.2023
Просмотров: 851
Скачиваний: 31
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
Тестирование
программного
обеспечения
Базовый курс
(3-
е издание)
Версия книги 3.2.2 от 17.04.2023
Тестирование программного о беспечения. Базовый курс.
Тестирование программного обеспечения. Базовый курс.
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 2/301
Содержание
ПРЕДИСЛОВИЕ ОТ АВТОРА, ИЛИ ЗАЧЕМ НУЖНА ЭТА КНИГА ......................................................... 4
РАЗДЕЛ 1: ТЕСТИРОВАНИЕ И ТЕСТИРОВЩИКИ ................................................................................. 6
1.1.
ЧТО ТАКОЕ ТЕСТИРОВАНИЕ И ОТКУДА ОНО ПОЯВИЛОСЬ .................................................. 6
1.2.
КТО ТАКОЙ ТЕСТИРОВЩИК И ЧТО ОН ДЕЛАЕТ ....................................................................... 9
1.3.
ЧТО НУЖНО ЗНАТЬ И УМЕТЬ И ЧЕМУ МОЖНО НАУЧИТЬСЯ ............................................... 12
1.4.
МИФЫ И ЗАБЛУЖДЕНИЯ О ТЕСТИРОВАНИИ ......................................................................... 16
РАЗДЕЛ 2: ОСНОВНЫЕ ЗНАНИЯ И УМЕНИЯ ...................................................................................... 18
2.1.
ПРОЦЕССЫ ТЕСТИРОВАНИЯ И РАЗРАБОТКИ ПО ................................................................. 18
2.1.1.
Модели разработки ПО.................................................................................................... 18
2.1.2.
Жизненный цикл тестирования ................................................................................... 27
2.1.3.
Основные принципы тестирования ............................................................................ 29
2.2.
ТЕСТИРОВАНИЕ ДОКУМЕНТАЦИИ И ТРЕБОВАНИЙ .............................................................. 32
2.2.1.
Что такое «требование» ............................................................................................... 32
2.2.2.
Важность требований .................................................................................................... 33
2.2.3.
Источники и пути выявления требований ............................................................... 37
2.2.4.
Уровни и типы требований ........................................................................................... 39
2.2.5.
Свойства качественных требований ......................................................................... 44
2.2.6.
Техники тестирования требований ............................................................................ 51
2.2.7.
Пример анализа и тестирования требований .......................................................... 54
2.2.8.
Типичные ошибки при анализе и тестировании требований ............................... 63
2.3.
ВИДЫ И НАПРАВЛЕНИЯ ТЕСТИРОВАНИЯ .............................................................................. 67
2.3.1.
Упрощённая классификация тестирования .............................................................. 67
2.3.2.
Подробная классификация тестирования ................................................................. 69
2.3.2.1.
Схема классификации тестирования ..................................................................... 69
2.3.2.2.
Классификация по запуску кода на исполнение .................................................. 73
2.3.2.3.
Классификация по доступу к коду и архитектуре приложения ........................ 73
2.3.2.4.
Классификация по степени автоматизации .......................................................... 75
2.3.2.5.
Классификация по уровню детализации приложения (по уровню
тестирования) ............................................................................................................. 77
2.3.2.6.
Классификация по (убыванию) степени важности тестируемых функций
(по уровню функционального тестирования) ...................................................... 79
2.3.2.7.
Классификация по принципам работы с приложением ..................................... 82
2.3.2.8.
Классификация по природе приложения .............................................................. 83
2.3.2.9.
Классификация по фокусировке на уровне архитектуры приложения .......... 83
2.3.2.10.
Классификация по привлечению конечных пользователей ............................. 84
2.3.2.11.
Классификация по степени формализации .......................................................... 84
2.3.2.12.
Классификация по целям и задачам ...................................................................... 85
2.3.2.13.
Классификация по техникам и подходам .............................................................. 93
2.3.2.14.
Классификация по моменту выполнения (хронологии) ................................... 101
2.3.3.
Альтернативные и дополнительные классификации тестирования ............ 103
2.3.4.
Классификация по принадлежности к тестированию по методу
белого и чёрного ящиков .............................................................................................. 110
2.4.
ЧЕК-ЛИСТЫ, ТЕСТ-КЕЙСЫ, НАБОРЫ ТЕСТ-КЕЙСОВ .......................................................... 115
2.4.1.
Чек-лист ............................................................................................................................ 115
2.4.2.
Тест-кейс и его жизненный цикл ................................................................................. 120
2.4.3.
Атрибуты (поля) тест-кейса ..................................................................................... 124
2.4.4.
Инструментальные средства управления тестированием .............................. 130
2.4.5.
Свойства качественных тест-кейсов ..................................................................... 136
2.4.6.
Наборы тест-кейсов ..................................................................................................... 146
2.4.7.
Логика создания эффективных проверок ................................................................ 152
Тестирование программного обеспечения. Базовый курс.
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 3/301
2.4.8.
Типичные ошибки при разработке чек-листов, тест-кейсов и
наборов тест-кейсов .................................................................................................... 160
2.5.
ОТЧЁТЫ О ДЕФЕКТАХ ............................................................................................................... 167
2.5.1.
Ошибки, дефекты, сбои, отказы и т.д. .................................................................... 167
2.5.2.
Отчёт о дефекте и его жизненный цикл ................................................................. 170
2.5.3.
Атрибуты (поля) отчёта о дефекте ....................................................................... 174
2.5.4.
Инструментальные средства управления отчётами о дефектах .................. 184
2.5.5.
Свойства качественных отчётов о дефектах ..................................................... 193
2.5.6.
Логика создания эффективных отчётов о дефектах ......................................... 198
2.5.7.
Типичные ошибки при написании отчётов о дефектах ....................................... 202
2.6.
ОЦЕНКА ТРУДОЗАТРАТ, ПЛАНИРОВАНИЕ И ОТЧЁТНОСТЬ .............................................. 208
2.6.1.
Планирование и отчётность ...................................................................................... 208
2.6.2.
Тест-план и отчёт о результатах тестирования............................................... 211
2.6.3.
Оценка трудозатрат .................................................................................................... 228
2.7.
ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ РАЗЛИЧНЫХ ТЕХНИК ТЕСТИРОВАНИЯ .......................... 234
2.7.1.
Позитивные и негативные тест-кейсы .................................................................. 234
2.7.2.
Классы эквивалентности и граничные условия .................................................... 237
2.7.3.
Доменное тестирование и комбинации параметров ............................................ 242
2.7.4.
Попарное тестирование и поиск комбинаций ......................................................... 245
2.7.5.
Исследовательское тестирование ........................................................................... 249
2.7.6.
Поиск причин возникновения дефектов ................................................................... 253
РАЗДЕЛ 3: АВТОМАТИЗАЦИЯ ТЕСТИРОВАНИЯ .............................................................................. 257
3.1.
ВЫГОДЫ И РИСКИ АВТОМАТИЗАЦИИ ................................................................................... 257
3.1.1.
Преимущества и недостатки автоматизации ...................................................... 257
3.1.2.
Области применения автоматизации ...................................................................... 261
3.2.
ОСОБЕННОСТИ АВТОМАТИЗИРОВАННОГО ТЕСТИРОВАНИЯ .......................................... 264
3.2.1.
Необходимые знания и навыки .................................................................................... 264
3.2.2.
Особенности тест-кейсов в автоматизации ........................................................ 265
3.2.3.
Технологии автоматизации тестирования ........................................................... 269
3.3.
АВТОМАТИЗАЦИЯ ВНЕ ПРЯМЫХ ЗАДАЧ ТЕСТИРОВАНИЯ ............................................... 279
РАЗДЕЛ 4: ПРИЛОЖЕНИЯ .................................................................................................................... 280
4.1.
КАРЬЕРА ТЕСТИРОВЩИКА ...................................................................................................... 280
4.2.
КОММЕНТАРИИ К ЗАДАНИЯМ .................................................................................................. 281
4.3.
КОМАНДНЫЕ ФАЙЛЫ ДЛЯ WINDOWS И LINUX,
АВТОМАТИЗИРУЮЩИЕ ВЫПОЛНЕНИЕ ДЫМОВОГО ТЕСТИРОВАНИЯ .......................... 284
4.4.
ПРИМЕР ДАННЫХ ДЛЯ ПОПАРНОГО ТЕСТИРОВАНИЯ ...................................................... 293
4.5.
СПИСОК ОСНОВНЫХ ОПРЕДЕЛЕНИЙ .................................................................................... 296
РАЗДЕЛ 5: ЛИЦЕНЗИЯ И РАСПРОСТРАНЕНИЕ ................................................................................ 301
Предисловие от автора, или зачем нужна эта книга
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 4/301
Предисловие от автора, или зачем нужна эта книга
Выражаю огромную благодарность коллегам из
EPAM Software Testing Division
за ценные замечания
и рекомендации в процессе подготовки материала.
Особую благодарность выражаю тем тысячам
читателей, которые присылали вопросы, пожелания,
замечания — благодаря вашему вкладу книга стала лучше.
В основу этой книги положен пятнадцатилетний опыт проведения тренингов для тестировщиков. За это время накопилась огромная коллекция вопросов от слу- шателей, и стали отчётливо видны типичные для многих начинающих проблемы и сложности. Представляется разумным обобщить этот материал в виде книги, кото- рая поможет начинающим тестировщикам быстрее погрузиться в профессию и из- бежать многих досадных ошибок.
С момента выхода первого и второго изданий в книгу было внесено множе- ство правок, основанных на отзывах читателей и переосмыслении автором отдель- ных идей и формулировок. Благодаря вопросам читателей и дискуссиям на тренин- гах удалось уточнить и сгладить спорные моменты, прояснить определения и дать пояснения там, где это оказалось необходимым. Идеал недостижим, но хочется ве- рить, что в его направлении был сделан большой шаг.
Эта книга не ставит своей задачей полноценное раскрытие всей предметной области со всеми её нюансами, потому не воспринимайте её как учебник или спра- вочник — за десятилетия развития тестирование накопило такой объём данных, что для его формального представления не хватит и десятка книг. Также прочтения лишь этой одной книги вовсе не достаточно, чтобы стать «гуру тестирования».
Тогда зачем же нужна эта книга!?
Во-первых, эту книгу стоит прочитать, если вы твёрдо решили заниматься тестированием, — она будет полезна как «совсем начинающим», так и имеющим некоторый опыт в тестировании.
Во-вторых, эту книгу можно и нужно использовать как опорный материал во время тренингов. Здесь можно и нужно много чёркать, дописывать, отмечать непо- нятное, записывать вопросы и т.д.
В-третьих, эта книга — своего рода «карта», в которой есть ссылки на мно- жество внешних источников информации (которые могут оказаться полезными даже опытным тестировщикам), а также много примеров с пояснениями.
Прежде чем мы приступим к изучению основного материала, давайте опре- делимся с условными обозначениями:
Определения и иная важная для запоминания информация. Часто будет встречаться рядом со следующим знаком.
Дополнительные сведения или отсылка к соответствующим источникам.
Всё то, что полезно знать. При этом оригинальные (англоязычные) опре- деления будут приведены в сносках.
Предостережения и частые ошибки. Недостаточно показать, «как пра- вильно», часто большую пользу приносят примеры того, как поступать не стоит.
Задания для самостоятельной проработки. Настоятельно рекомендуется выполнять их (даже если вам кажется, что всё очень просто).
В приложении
{281}
есть комментарии ко многим заданиям, но не спешите туда заглядывать — сначала поработайте самостоятельно.
Предисловие от автора, или зачем нужна эта книга
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 5/301
В тексте вы встретите два вида сносок в виде чисел: если число не взято в фигурные скобки
12345
— это обычная сноска, которую нужно искать внизу страницы; если число взято в фигурные скобки
{12345}
— оно представляет собой номер стра- ницы, где представлены дополнительные сведения (в электронной версии книги та- кая сноска является ссылкой).
В дополнение к тексту данной книги рекомендуется пройти бесплатный он- лайн-курс
, содержащий серию видео-уроков, тестов и заданий для самоподготовки.
Напоследок: ничто в этой книге не является догмой, к любому термину вы можете найти альтернативное определение, к любой рекомендации — контраргу- менты. И это нормально. Со временем вы станете понимать контекст ситуации и применимость (полезность!) той или иной информации. Итак, приступим!
Раздел 1: тестирование и тестировщики
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 6/301
Раздел 1: тестирование и тестировщики
1.1.
Что такое тестирование и откуда оно появилось
В первую очередь дадим определение тестирования ПО, чтобы чётче пони- мать, о чём пойдёт речь.
Тестирование программного обеспечения — процесс анализа про- граммного средства и сопутствующей документации с целью выявления дефектов и повышения качества продукта.
В глоссарии ISTQB
1
нет термина «тестирование ПО», который широко ис- пользуется в русском языке. Там есть лишь термин «тестирование
(testing
2
)
».
На протяжении десятилетий развития разработки ПО к вопросам тестирова- ния и обеспечения качества подходили очень и очень по-разному. Можно выделить несколько основных «эпох тестирования».
В 50–60-х годах прошлого века процесс тестирования был предельно фор- мализован, отделён от процесса непосредственной разработки ПО и «математизи- рован». Фактически тестирование представляло собой скорее отладку программ
(debugging
3
)
. Существовала концепция т.н. «исчерпывающего тестирования
(exhaustive testing
4
)
» — проверки всех возможных путей выполнения кода со всеми возможными входными данными. Но очень скоро было выяснено, что исчерпываю- щее тестирование невозможно, т.к. количество возможных путей и входных данных очень велико, а также при таком подходе сложно найти проблемы в документации.
Задание 1.1.a: представьте, что ваша программа по трём введённым це- лым числам определяет, может ли существовать треугольник с такими длинами сторон. Допустим, что ваша программа выполняется в некоей изолированной идеальной среде, и вам всего-то осталось проверить кор- ректность её работы на трёх 8-байтовых знаковых целых числах. Вы ис- пользуете автоматизацию, и компьютер может провести 100 миллионов проверок в секунду. Сколько займёт проверка всех вариантов?
А задумались ли вы, как подготовить для этого теста проверочные данные
(на основе которых можно определить, верно ли сработала программа в каждом конкретном случае)?
В 70-х годах фактически родились две фундаментальные идеи тестирова- ния: тестирование сначала рассматривалось как процесс доказательства работо- способности программы в некоторых заданных условиях (positive testing
5
)
, а затем
— строго наоборот: как процесс доказательства неработоспособности программы в некоторых заданных условиях (negative testing
6
)
. Это внутреннее противоречие не только не исчезло со временем, но и в наши дни многими авторами совершенно справедливо отмечается как две взаимодополняющие цели тестирования.
1
International Software Testing Qualifications Board Glossary. [
http://www.istqb.org/downloads/glossary.html
]
2
Testing. The process consisting of all lifecycle activities, both static and dynamic, concerned with planning, preparation and evalu- ation of software products and related work products to determine that they satisfy specified requirements, to demonstrate that they are fit for purpose and to detect defects. [ISTQB Glossary]
3
Debugging. The process of finding, analyzing and removing the causes of failures in software. [ISTQB Glossary]
4
Complete testing, exhaustive testing. A test approach in which the test suite comprises all combinations of input values and preconditions. [ISTQB Glossary]
5
Positive Testing.
Testing aimed at showing software works. Also known as «test to pass». [
aptest.com
]
6
Negative testing.
Testing aimed at showing software does not work. Also known as «test to fail». [
aptest.com
]
Что такое тестирование и откуда оно появилось
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 7/301
Отметим, что «процесс доказательства неработоспособности про-
граммы» ценится чуть больше, т.к. не позволяет закрывать глаза на обнаруженные проблемы.
Внимание! Скорее всего, именно из этих рассуждений проистекает невер-
ное понимание того, что негативные тест-кейсы должны заканчиваться возникновением сбоев и отказов в приложении. Нет, это не так. Негатив- ные тест-кейсы пытаются вызвать сбои и отказы, но корректно работаю- щее приложение выдерживает это испытание и продолжает работать верно. Также отметим, что ожидаемым результатом негативных тест-кей- сов является именно корректное поведение приложения, а сами негатив- ные тест-кейсы считаются пройденными успешно, если им не удалось
«поломать» приложение. (См. подробности в главе «Чек-листы, тест- кейсы, наборы тест-кейсов»
{115}
).
Много «классики тестирования» можно почерпнуть из книги «Искусство те- стирования программ» Гленфорда Майерса (издания 1979, 2004, 2011 го- дов). Однако большинство критиков отмечает, что эта книга мало подхо- дит для начинающих и куда больше ориентирована на программистов, чем на тестировщиков. Что, впрочем, не умаляет её ценности. В ориги- нале книга называется «The art of software testing» (Glenford J. Myers).
Итак, ещё раз самое важное, что тестирование «приобрело» в 70-е годы:
• тестирование позволяет удостовериться, что программа соответствует тре- бованиям;
• тестирование позволяет определить условия, при которых программа ведёт себя некорректно.
В 80-х годах произошло ключевое изменение места тестирования в разра- ботке ПО: вместо одной из финальных стадий создания проекта тестирование стало применяться на протяжении всего цикла разработки (software lifecycle
7
)
(также см. описание итерационной инкрементальной модели разработки ПО в главе
«Модели разработки ПО»
{18}
), что позволило в очень многих случаях не только быстро обнаруживать и устранять проблемы, но даже предсказывать и предотвра- щать их появление.
В этот же период времени отмечено бурное развитие и формализация мето- дологий тестирования и появление первых элементарных попыток автоматизиро- вать тестирование.
В 90-х годах произошёл переход от тестирования как такового к более все- объемлющему процессу, который называется «обеспечение качества (quality assur- ance
8
)
», охватывает весь цикл разработки ПО и затрагивает процессы планирова- ния, проектирования, создания и выполнения тест-кейсов, поддержку имеющихся тест-кейсов и тестовых окружений. Тестирование вышло на качественно новый уро- вень, который естественным образом привёл к дальнейшему развитию методоло- гий, появлению достаточно мощных инструментов управления процессом тестиро- вания и инструментальных средств автоматизации тестирования, уже вполне похо- жих на своих нынешних потомков.
7
Software lifecycle. The period of time that begins when a software product is conceived and ends when the software is no longer available for use. The software lifecycle typically includes a concept phase, requirements phase, design phase, implementation phase, test phase, installation and checkout phase, operation and maintenance phase, and sometimes, retirement phase. Note these phases may overlap or be performed iteratively. [ISTQB Glossary]
8
Quality assurance. Part of quality management focused on providing confidence that quality requirements will be fulfilled. [ISTQB
Glossary]