Файл: Обеспечения Базовый курс (3е издание) Версия книги 2 от 17. 04. 2023.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 07.11.2023
Просмотров: 852
Скачиваний: 31
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
Вкратце можно выразить суть моделей разработки ПО таблицей 2.1.a.
Таблица 2.1.a — Сравнение моделей разработки ПО
Модель
Преимущества
Недостатки
Тестирование
Водопадная
• У каждой стадии есть чёткий прове- ряемый результат.
• В каждый момент времени команда выполняет один вид работы.
• Хорошо работает для небольших за- дач.
• Полная неспособ- ность адаптировать проект к измене- ниям в требова- ниях.
• Крайне позднее со- здание работаю- щего продукта.
• С середины про- екта.
V- образная
• У каждой стадии есть чёткий прове- ряемый результат.
• Внимание тестиро- ванию уделяется с первой же стадии.
• Хорошо работает для проектов со стабильными тре- бованиями.
• Недостаточная гиб- кость и адаптируе- мость.
• Отсутствует раннее прототипирование.
• Сложность устра- нения проблем, пропущенных на ранних стадиях развития проекта.
• На переходах между стадиями.
38
«The Agile System Development Life Cycle» [
http://www.ambysoft.com/essays/agileLifecycle.html
]
«Бэклог» проекта
«Бэклог» спринта
Спринт (до 4-х недель)
Результат
Итерация
(
сутки)
Модели разработки ПО
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 26/301
Итерационная инкре- ментальная
• Достаточно раннее прототипирование.
• Простота управле- ния итерациями.
• Декомпозиция про- екта на управляе- мые итерации.
• Недостаточная гиб- кость внутри итера- ций.
• Сложность устра- нения проблем, пропущенных на ранних стадиях развития проекта.
• В определённые моменты итераций.
• Повторное тестиро- вание (после дора- ботки) уже прове- ренного ранее.
Спиральная
• Глубокий анализ рисков.
• Подходит для круп- ных проектов.
• Достаточно раннее прототипирование.
• Высокие накладные расходы.
• Сложность приме- нения для неболь- ших проектов.
• Высокая зависи- мость успеха от ка- чества анализа рисков.
Гибкая
• Максимальное во- влечение заказ- чика.
• Много работы с требованиями.
• Тесная интеграция тестирования и разработки.
• Минимизация доку- ментации.
• Сложность реали- зации для больших проектов.
• Сложность постро- ения стабильных процессов.
• В определённые моменты итераций и в любой необхо-
димый момент.
Ещё два кратких и информативных сравнения моделей жизненного цикла
ПО можно найти в статьях «Project Lifecycle Models: How They Differ and
When to Use Them
»
39
и «Блок-схема выбора оптимальной методологии разработки ПО»
40
А общий обзор всех моделей в контексте тестирования
ПО представлен в статье «What are the Software Development Models?»
41
Задание 2.1.a: представьте, что на собеседовании вас попросили назвать основные модели разработки ПО, перечислить их преимущества и недо- статки с точки зрения тестирования. Не ждите собеседования, ответьте на этот вопрос сейчас, а ответ запишите.
39
«Project Lifecycle Models: How They Differ and When to Use Them» [
http://www.business-esolutions.com/islm.htm
]
40
«Блок-схема выбора оптимальной методологии разработки ПО» [
http://megamozg.ru/post/23022/
]
41
«What are the Software Development Models?» [
http://istqbexamcertification.com/what-are-the-software-development-models/
]
Жизненный цикл тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 27/301
2.1.2.
Жизненный цикл тестирования
Следуя общей логике итеративности, превалирующей во всех современных моделях разработки ПО, жизненный цикл тестирования также выражается замкну- той последовательностью действий (рисунок 2.1.g).
Важно понимать, что длина такой итерации (и, соответственно, степень по- дробности каждой стадии) может варьироваться в широчайшем диапазоне — от единиц часов до десятков месяцев. Как правило, если речь идёт о длительном про- межутке времени, он разбивается на множество относительно коротких итераций, но сам при этом «тяготеет» к той или иной стадии в каждый момент времени (напри- мер, в начале проекта больше планирования, в конце — больше отчётности).
Также ещё раз подчеркнём, что приведённая схема — не догма, и вы легко можете найти альтернативы (например, здесь
42
и здесь
43
), но общая суть и ключе- вые принципы остаются неизменными. Их и рассмотрим.
Рисунок 2.1.g — Жизненный цикл тестирования
Стадия 1 (общее планирование и анализ требований) объективно необхо- дима как минимум для того, чтобы иметь ответ на такие вопросы, как: что нам пред- стоит тестировать; как много будет работы; какие есть сложности; всё ли необхо- димое у нас есть и т.п. Как правило, получить ответы на эти вопросы невозможно без анализа требований, т.к. именно требования являются первичным источником ответов.
Стадия 2 (уточнение критериев приёмки) позволяет сформулировать или уточнить метрики и признаки возможности или необходимости начала тестирова- ния (entry criteria
44
)
, приостановки (suspension criteria
45
) и возобновления (resumption
42
«Software Testing Life Cycle» [
http://softwaretestingfundamentals.com/software-testing-life-cycle/
]
43
«Software Testing Life Cycle» [
http://www.softwaretestingmentor.com/software-testing-life-cycle/
]
44
Entry criteria. The set of generic and specific conditions for permitting a process to go forward with a defined task, e.g. test phase.
The purpose of entry criteria is to prevent a task from starting which would entail more (wasted) effort compared to the effort needed to remove the failed entry criteria. [ISTQB Glossary]
45
Suspension criteria. The criteria used to (temporarily) stop all or a portion of the testing activities on the test items. [ISTQB
Glossary]
Общее планирование и анализ требований
Уточнение критериев приёмки
Уточнение стратегии тестирования
Разработка тест-кейсов
Выполнение тест- кейсов
Фиксация найденных дефектов
Анализ результатов тестирования
Отчётность
1 2
3 4
5 6
7 8
Тестирование
Жизненный цикл тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 28/301 criteria
46
) тестирования, завершения или прекращения тестирования (exit criteria
47
).
Стадия 3 (уточнение стратегии тестирования) представляет собой ещё одно обращение к планированию, но уже на локальном уровне: рассматриваются и уточ- няются те части стратегии тестирования (test strategy
48
)
, которые актуальны для те- кущей итерации.
Стадия 4 (разработка тест-кейсов) посвящена разработке, пересмотру, уточ- нению, доработке, переработке и прочим действиям с тест-кейсами, наборами тест- кейсов, тестовыми сценариями и иными артефактами, которые будут использо- ваться при непосредственном выполнении тестирования.
Стадия 5 (выполнение тест-кейсов) и стадия 6 (фиксация найденных дефек- тов) тесно связаны между собой и фактически выполняются параллельно: дефекты фиксируются сразу по факту их обнаружения в процессе выполнения тест-кейсов.
Однако зачастую после выполнения всех тест-кейсов и написания всех отчётов о найденных дефектах проводится явно выделенная стадия уточнения, на которой все отчёты о дефектах рассматриваются повторно с целью формирования единого понимания проблемы и уточнения таких характеристик дефекта, как важность и срочность.
Стадия 7 (анализ результатов тестирования) и стадия 8 (отчётность) также тесно связаны между собой и выполняются практически параллельно. Формулиру- емые на стадии анализа результатов выводы напрямую зависят от плана тестиро- вания, критериев приёмки и уточнённой стратегии, полученных на стадиях 1, 2 и 3.
Полученные выводы оформляются на стадии 8 и служат основой для стадий 1, 2 и
3 следующей итерации тестирования. Таким образом, цикл замыкается.
В жизненном цикле тестирования пять из восьми стадий так или иначе свя- заны с управлением проектами, рассмотрение которого не входит в наши планы, а потому обо всём, что касается планирования и отчётности, мы кратко поговорим в главе «Оценка трудозатрат, планирование и отчётность»
{208}
. А сейчас мы перехо- дим к ключевым навыкам и основным видам деятельности тестировщиков и начнём с работы с документацией.
46
Resumption criteria. The criteria used to restart all or a portion of the testing activities that were suspended previously. [ISTQB
Glossary]
47
Exit criteria. The set of generic and specific conditions, agreed upon with the stakeholders for permitting a process to be officially completed. The purpose of exit criteria is to prevent a task from being considered completed when there are still outstanding parts of the task which have not been finished. Exit criteria are used to report against and to plan when to stop testing. [ISTQB
Glossary]
48
Test strategy. A high-level description of the test levels to be performed and the testing within those levels for an organization or program (one or more projects). [ISTQB Glossary]
Основные принципы тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 29/301
2.1.3.
Основные принципы тестирования
Представленные в данной главе принципы тем или иным образом отражены во всём остальном материале книги, но поскольку нередко на собеседованиях от начинающих тестировщиков требуют именно «перечислить и объяснить принципы тестирования
49
», здесь мы кратко рассмотрим их все вместе.
Тестирование показывает наличие дефектов, а не их отсутствие
Очень сложно обнаружить нечто, относительно чего мы не знаем — ни «где оно», ни «как оно выглядит», ни даже «существует ли оно вообще». Это отчасти напоминает попытки «вспомнить, не забыл ли я что-то».
В силу того факта, что не существует физической возможности проверить поведение сложного программного продукта во всех возможных ситуациях и усло- виях, тестирование не может гарантировать, что в той или иной ситуации, при сте- чении тех или иных обстоятельств дефект не возникнет.
Что тестирование может — так это использовать колоссальный набор техник, подходов, инструментов и решений для того, чтобы проверить наиболее вероят- ные, востребованные ситуации и обнаружить дефекты при их возникновении.
Такие дефекты будут устранены, что ощутимо повысит качество продукта, но по-прежнему не гарантирует от возникновения проблем в оставшихся, не проверен- ных ситуациях и условиях.
Исчерпывающее тестирование невозможно
Исчерпывающее тестирование
{91}
в теории призвано проверить приложение
«со всеми возможными комбинациями всех возможных входных данных во всех возможных условиях выполнения». Но как только что было подчёркнуто в предыду- щем принципе — это невозможно физически.
Как будет показано в главе 2.7.2
{237}
(«Классы эквивалентности и граничные условия») даже для одного простого поля для ввода имени пользователя может существовать порядка 2.4 32
позитивных проверок и бесконечное количество нега- тивных проверок.
Потому в силу законов физики нет ни малейшего шанса протестировать про- граммный продукт полностью, «исчерпывающе».
Однако, из этого не следует, что тестирование как таковое не является эф- фективным. Вдумчивый анализ требований, учёт рисков, расстановка приоритетов, анализ предметной области, моделирование, работа с конечными пользователями, применение специальных техник тестирования — эти и многие другие подходы поз- воляют выявить те области или условия эксплуатации продукта, которые требуют особенно тщательной проверки.
И поскольку здесь объём работы несоизмеримо меньше — такое тестирова- ние уже не просто возможно, но и выполняется на каждодневной основе.
Тестирование тем эффективнее, чем раньше оно выполняется
Этот принцип призывает не откладывать тестирование «на потом» и «на по- следний момент». Конечно, чрезмерно раннее тестирование может оказаться не- эффективным и даже привести к необходимости повторно выполнять большой
49
В настоящий момент сложно определить, кто и когда впервые сформулировал эти принципы. Множество источников про- сто один-в-один копируют друг у друга их описание, потому для простоты приведём ссылку на такой первоисточник:
«7 Principles of Software Testing» [
https://www.interviewbit.com/blog/principles-of-software-testing/
]
Основные принципы тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 30/301 объём работы, но начатое вовремя (без промедления) тестирование даёт наиболь- ший эффект.
Визуально эта идея представлена на рисунке 2.2.a
{33}
в одной из следующих глав: раннее тестирование помогает устранить или сократить дорогостоящие изме- нения.
У данного принципа есть прекрасная аналогия из обычной повседневной жизни. Представьте, что вы собираетесь в поездку и продумываете список вещей, которые необходимо взять с собой.
На стадии обдумывания добавить, изменить, удалить любой пункт в этом списке не стоит ничего. На стадии поездки по магазинам для закупки необходимого недоработки в списке уже могут привести к необходимости повторной поездки в магазин. На стадии отправки на место назначения недоработки в списке вещей явно приведут к ощутимой потере нервов, времени и денег. А если фатальный не- достаток списка вещей выяснится только по прибытии, может так оказаться, что вся поездка потеряла смысл.
Кластеризация дефектов
Дефекты не возникают «просто так». И уже тем более «просто так» не появ- ляется много дефектов в какой-то «проблемной» области приложения (не зря она и называется «проблемной»).
Возможно, здесь используется какая-то новая или сложная технология. Мо- жет быть, здесь приложению приходится работать в неблагоприятных условиях или взаимодействовать с внешними ненадёжными компонентами. Или так получилось, что соответствующая часть требований не была проработана должным образом.
Или вовсе (увы, бывает и такое) за реализацию данной части приложения отвечали недостаточно ответственные или недостаточно компетентные люди.
В любом случае «группировка» дефектов по какому-то явному признаку яв- ляется хорошим поводом к продолжению исследования данной области программ- ного продукта: скорее всего, именно здесь будет обнаружено ещё больше дефек- тов.
Да, обнаружение подобных тенденций к кластеризации (и особенно поиск глобальной первопричины) часто требует от тестировщиков определённых знаний и опыта, но если такой «кластер» выявлен — это позволяет ощутимо минимизиро- вать усилия и при этом существенно повысить качество приложения.
Парадокс пестицида
Название данного принципа происходит от общеизвестного явления в сель- ском хозяйстве: если долго распылять один и тот же пестицид на посевы, у насеко- мых вскоре вырабатывается иммунитет, что делает пестицид неэффективным.
То же самое верно и для тестирования программного обеспечения, где пара- докс пестицида проявляется в повторении одних и тех же (или просто однотипных) проверок снова и снова: со временем эти проверки перестанут обнаруживать новые дефекты.
Чтобы преодолеть парадокс пестицида, необходимо регулярно пересматри- вать и обновлять тест-кейсы, разнообразить подходы к тестированию, применять различные техники тестирования, смотреть на ситуацию «свежим взглядом» (воз- можно, с привлечением тех участников команды, которые ранее не работали с дан- ной областью программного продукта).
Таблица 2.1.a — Сравнение моделей разработки ПО
Модель
Преимущества
Недостатки
Тестирование
Водопадная
• У каждой стадии есть чёткий прове- ряемый результат.
• В каждый момент времени команда выполняет один вид работы.
• Хорошо работает для небольших за- дач.
• Полная неспособ- ность адаптировать проект к измене- ниям в требова- ниях.
• Крайне позднее со- здание работаю- щего продукта.
• С середины про- екта.
V- образная
• У каждой стадии есть чёткий прове- ряемый результат.
• Внимание тестиро- ванию уделяется с первой же стадии.
• Хорошо работает для проектов со стабильными тре- бованиями.
• Недостаточная гиб- кость и адаптируе- мость.
• Отсутствует раннее прототипирование.
• Сложность устра- нения проблем, пропущенных на ранних стадиях развития проекта.
• На переходах между стадиями.
38
«The Agile System Development Life Cycle» [
http://www.ambysoft.com/essays/agileLifecycle.html
]
«Бэклог» проекта
«Бэклог» спринта
Спринт (до 4-х недель)
Результат
Итерация
(
сутки)
Модели разработки ПО
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 26/301
Итерационная инкре- ментальная
• Достаточно раннее прототипирование.
• Простота управле- ния итерациями.
• Декомпозиция про- екта на управляе- мые итерации.
• Недостаточная гиб- кость внутри итера- ций.
• Сложность устра- нения проблем, пропущенных на ранних стадиях развития проекта.
• В определённые моменты итераций.
• Повторное тестиро- вание (после дора- ботки) уже прове- ренного ранее.
Спиральная
• Глубокий анализ рисков.
• Подходит для круп- ных проектов.
• Достаточно раннее прототипирование.
• Высокие накладные расходы.
• Сложность приме- нения для неболь- ших проектов.
• Высокая зависи- мость успеха от ка- чества анализа рисков.
Гибкая
• Максимальное во- влечение заказ- чика.
• Много работы с требованиями.
• Тесная интеграция тестирования и разработки.
• Минимизация доку- ментации.
• Сложность реали- зации для больших проектов.
• Сложность постро- ения стабильных процессов.
• В определённые моменты итераций и в любой необхо-
димый момент.
Ещё два кратких и информативных сравнения моделей жизненного цикла
ПО можно найти в статьях «Project Lifecycle Models: How They Differ and
When to Use Them
»
39
и «Блок-схема выбора оптимальной методологии разработки ПО»
40
А общий обзор всех моделей в контексте тестирования
ПО представлен в статье «What are the Software Development Models?»
41
Задание 2.1.a: представьте, что на собеседовании вас попросили назвать основные модели разработки ПО, перечислить их преимущества и недо- статки с точки зрения тестирования. Не ждите собеседования, ответьте на этот вопрос сейчас, а ответ запишите.
39
«Project Lifecycle Models: How They Differ and When to Use Them» [
http://www.business-esolutions.com/islm.htm
]
40
«Блок-схема выбора оптимальной методологии разработки ПО» [
http://megamozg.ru/post/23022/
]
41
«What are the Software Development Models?» [
http://istqbexamcertification.com/what-are-the-software-development-models/
]
Жизненный цикл тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 27/301
2.1.2.
Жизненный цикл тестирования
Следуя общей логике итеративности, превалирующей во всех современных моделях разработки ПО, жизненный цикл тестирования также выражается замкну- той последовательностью действий (рисунок 2.1.g).
Важно понимать, что длина такой итерации (и, соответственно, степень по- дробности каждой стадии) может варьироваться в широчайшем диапазоне — от единиц часов до десятков месяцев. Как правило, если речь идёт о длительном про- межутке времени, он разбивается на множество относительно коротких итераций, но сам при этом «тяготеет» к той или иной стадии в каждый момент времени (напри- мер, в начале проекта больше планирования, в конце — больше отчётности).
Также ещё раз подчеркнём, что приведённая схема — не догма, и вы легко можете найти альтернативы (например, здесь
42
и здесь
43
), но общая суть и ключе- вые принципы остаются неизменными. Их и рассмотрим.
Рисунок 2.1.g — Жизненный цикл тестирования
Стадия 1 (общее планирование и анализ требований) объективно необхо- дима как минимум для того, чтобы иметь ответ на такие вопросы, как: что нам пред- стоит тестировать; как много будет работы; какие есть сложности; всё ли необхо- димое у нас есть и т.п. Как правило, получить ответы на эти вопросы невозможно без анализа требований, т.к. именно требования являются первичным источником ответов.
Стадия 2 (уточнение критериев приёмки) позволяет сформулировать или уточнить метрики и признаки возможности или необходимости начала тестирова- ния (entry criteria
44
)
, приостановки (suspension criteria
45
) и возобновления (resumption
42
«Software Testing Life Cycle» [
http://softwaretestingfundamentals.com/software-testing-life-cycle/
]
43
«Software Testing Life Cycle» [
http://www.softwaretestingmentor.com/software-testing-life-cycle/
]
44
Entry criteria. The set of generic and specific conditions for permitting a process to go forward with a defined task, e.g. test phase.
The purpose of entry criteria is to prevent a task from starting which would entail more (wasted) effort compared to the effort needed to remove the failed entry criteria. [ISTQB Glossary]
45
Suspension criteria. The criteria used to (temporarily) stop all or a portion of the testing activities on the test items. [ISTQB
Glossary]
Общее планирование и анализ требований
Уточнение критериев приёмки
Уточнение стратегии тестирования
Разработка тест-кейсов
Выполнение тест- кейсов
Фиксация найденных дефектов
Анализ результатов тестирования
Отчётность
1 2
3 4
5 6
7 8
Тестирование
Жизненный цикл тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 28/301 criteria
46
) тестирования, завершения или прекращения тестирования (exit criteria
47
).
Стадия 3 (уточнение стратегии тестирования) представляет собой ещё одно обращение к планированию, но уже на локальном уровне: рассматриваются и уточ- няются те части стратегии тестирования (test strategy
48
)
, которые актуальны для те- кущей итерации.
Стадия 4 (разработка тест-кейсов) посвящена разработке, пересмотру, уточ- нению, доработке, переработке и прочим действиям с тест-кейсами, наборами тест- кейсов, тестовыми сценариями и иными артефактами, которые будут использо- ваться при непосредственном выполнении тестирования.
Стадия 5 (выполнение тест-кейсов) и стадия 6 (фиксация найденных дефек- тов) тесно связаны между собой и фактически выполняются параллельно: дефекты фиксируются сразу по факту их обнаружения в процессе выполнения тест-кейсов.
Однако зачастую после выполнения всех тест-кейсов и написания всех отчётов о найденных дефектах проводится явно выделенная стадия уточнения, на которой все отчёты о дефектах рассматриваются повторно с целью формирования единого понимания проблемы и уточнения таких характеристик дефекта, как важность и срочность.
Стадия 7 (анализ результатов тестирования) и стадия 8 (отчётность) также тесно связаны между собой и выполняются практически параллельно. Формулиру- емые на стадии анализа результатов выводы напрямую зависят от плана тестиро- вания, критериев приёмки и уточнённой стратегии, полученных на стадиях 1, 2 и 3.
Полученные выводы оформляются на стадии 8 и служат основой для стадий 1, 2 и
3 следующей итерации тестирования. Таким образом, цикл замыкается.
В жизненном цикле тестирования пять из восьми стадий так или иначе свя- заны с управлением проектами, рассмотрение которого не входит в наши планы, а потому обо всём, что касается планирования и отчётности, мы кратко поговорим в главе «Оценка трудозатрат, планирование и отчётность»
{208}
. А сейчас мы перехо- дим к ключевым навыкам и основным видам деятельности тестировщиков и начнём с работы с документацией.
46
Resumption criteria. The criteria used to restart all or a portion of the testing activities that were suspended previously. [ISTQB
Glossary]
47
Exit criteria. The set of generic and specific conditions, agreed upon with the stakeholders for permitting a process to be officially completed. The purpose of exit criteria is to prevent a task from being considered completed when there are still outstanding parts of the task which have not been finished. Exit criteria are used to report against and to plan when to stop testing. [ISTQB
Glossary]
48
Test strategy. A high-level description of the test levels to be performed and the testing within those levels for an organization or program (one or more projects). [ISTQB Glossary]
Основные принципы тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 29/301
2.1.3.
Основные принципы тестирования
Представленные в данной главе принципы тем или иным образом отражены во всём остальном материале книги, но поскольку нередко на собеседованиях от начинающих тестировщиков требуют именно «перечислить и объяснить принципы тестирования
49
», здесь мы кратко рассмотрим их все вместе.
Тестирование показывает наличие дефектов, а не их отсутствие
Очень сложно обнаружить нечто, относительно чего мы не знаем — ни «где оно», ни «как оно выглядит», ни даже «существует ли оно вообще». Это отчасти напоминает попытки «вспомнить, не забыл ли я что-то».
В силу того факта, что не существует физической возможности проверить поведение сложного программного продукта во всех возможных ситуациях и усло- виях, тестирование не может гарантировать, что в той или иной ситуации, при сте- чении тех или иных обстоятельств дефект не возникнет.
Что тестирование может — так это использовать колоссальный набор техник, подходов, инструментов и решений для того, чтобы проверить наиболее вероят- ные, востребованные ситуации и обнаружить дефекты при их возникновении.
Такие дефекты будут устранены, что ощутимо повысит качество продукта, но по-прежнему не гарантирует от возникновения проблем в оставшихся, не проверен- ных ситуациях и условиях.
Исчерпывающее тестирование невозможно
Исчерпывающее тестирование
{91}
в теории призвано проверить приложение
«со всеми возможными комбинациями всех возможных входных данных во всех возможных условиях выполнения». Но как только что было подчёркнуто в предыду- щем принципе — это невозможно физически.
Как будет показано в главе 2.7.2
{237}
(«Классы эквивалентности и граничные условия») даже для одного простого поля для ввода имени пользователя может существовать порядка 2.4 32
позитивных проверок и бесконечное количество нега- тивных проверок.
Потому в силу законов физики нет ни малейшего шанса протестировать про- граммный продукт полностью, «исчерпывающе».
Однако, из этого не следует, что тестирование как таковое не является эф- фективным. Вдумчивый анализ требований, учёт рисков, расстановка приоритетов, анализ предметной области, моделирование, работа с конечными пользователями, применение специальных техник тестирования — эти и многие другие подходы поз- воляют выявить те области или условия эксплуатации продукта, которые требуют особенно тщательной проверки.
И поскольку здесь объём работы несоизмеримо меньше — такое тестирова- ние уже не просто возможно, но и выполняется на каждодневной основе.
Тестирование тем эффективнее, чем раньше оно выполняется
Этот принцип призывает не откладывать тестирование «на потом» и «на по- следний момент». Конечно, чрезмерно раннее тестирование может оказаться не- эффективным и даже привести к необходимости повторно выполнять большой
49
В настоящий момент сложно определить, кто и когда впервые сформулировал эти принципы. Множество источников про- сто один-в-один копируют друг у друга их описание, потому для простоты приведём ссылку на такой первоисточник:
«7 Principles of Software Testing» [
https://www.interviewbit.com/blog/principles-of-software-testing/
]
Основные принципы тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 30/301 объём работы, но начатое вовремя (без промедления) тестирование даёт наиболь- ший эффект.
Визуально эта идея представлена на рисунке 2.2.a
{33}
в одной из следующих глав: раннее тестирование помогает устранить или сократить дорогостоящие изме- нения.
У данного принципа есть прекрасная аналогия из обычной повседневной жизни. Представьте, что вы собираетесь в поездку и продумываете список вещей, которые необходимо взять с собой.
На стадии обдумывания добавить, изменить, удалить любой пункт в этом списке не стоит ничего. На стадии поездки по магазинам для закупки необходимого недоработки в списке уже могут привести к необходимости повторной поездки в магазин. На стадии отправки на место назначения недоработки в списке вещей явно приведут к ощутимой потере нервов, времени и денег. А если фатальный не- достаток списка вещей выяснится только по прибытии, может так оказаться, что вся поездка потеряла смысл.
Кластеризация дефектов
Дефекты не возникают «просто так». И уже тем более «просто так» не появ- ляется много дефектов в какой-то «проблемной» области приложения (не зря она и называется «проблемной»).
Возможно, здесь используется какая-то новая или сложная технология. Мо- жет быть, здесь приложению приходится работать в неблагоприятных условиях или взаимодействовать с внешними ненадёжными компонентами. Или так получилось, что соответствующая часть требований не была проработана должным образом.
Или вовсе (увы, бывает и такое) за реализацию данной части приложения отвечали недостаточно ответственные или недостаточно компетентные люди.
В любом случае «группировка» дефектов по какому-то явному признаку яв- ляется хорошим поводом к продолжению исследования данной области программ- ного продукта: скорее всего, именно здесь будет обнаружено ещё больше дефек- тов.
Да, обнаружение подобных тенденций к кластеризации (и особенно поиск глобальной первопричины) часто требует от тестировщиков определённых знаний и опыта, но если такой «кластер» выявлен — это позволяет ощутимо минимизиро- вать усилия и при этом существенно повысить качество приложения.
Парадокс пестицида
Название данного принципа происходит от общеизвестного явления в сель- ском хозяйстве: если долго распылять один и тот же пестицид на посевы, у насеко- мых вскоре вырабатывается иммунитет, что делает пестицид неэффективным.
То же самое верно и для тестирования программного обеспечения, где пара- докс пестицида проявляется в повторении одних и тех же (или просто однотипных) проверок снова и снова: со временем эти проверки перестанут обнаруживать новые дефекты.
Чтобы преодолеть парадокс пестицида, необходимо регулярно пересматри- вать и обновлять тест-кейсы, разнообразить подходы к тестированию, применять различные техники тестирования, смотреть на ситуацию «свежим взглядом» (воз- можно, с привлечением тех участников команды, которые ранее не работали с дан- ной областью программного продукта).