Файл: Обеспечения Базовый курс (3е издание) Версия книги 2 от 17. 04. 2023.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 07.11.2023
Просмотров: 893
Скачиваний: 31
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
Coverage, Test coverage. The degree, expressed as a percentage, to which a specified coverage item has been exercised by a test suite. [ISTQB Glossary]
Подробная классификация тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 77/301
Задание 2.3.a: сформируйте аналогичную таблицу с преимуществами и недостатками ручного тестирования. Подсказка: здесь недостаточно про- сто поменять заголовки колонок с преимуществами и недостатками авто- матизации.
2.3.2.5.
Классификация по уровню детализации приложения (по уровню
тестирования)
Внимание! Возможна путаница, вызванная тем, что единого общеприня- того набора классификаций не существует, и две из них имеют очень схо- жие названия:
• «По уровню детализации приложения» = «по уровню тестирования».
• «По (убыванию) степени важности тестируемых функций» = «по уровню функционального тестирования».
• Модульное (компонентное) тестирование (unit testing, module testing, com- ponent testing
129
) направлено на проверку отдельных небольших частей при- ложения, которые (как правило) можно исследовать изолированно от других подобных частей. При выполнении данного тестирования могут проверяться отдельные функции или методы классов, сами классы, взаимодействие клас- сов, небольшие библиотеки, отдельные части приложения. Часто данный вид тестирования реализуется с использованием специальных технологий и инструментальных средств автоматизации тестирования
{76}
, значительно упрощающих и ускоряющих разработку соответствующих тест-кейсов.
Из-за особенностей перевода на русский язык теряются нюансы степени детализации: «юнит-тестирование», как правило, направ- лено на тестирование атомарных участков кода, «модульное» — на тестирование классов и небольших библиотек, «компонентное» — на тестирование библиотек и структурных частей приложения. Но эта классификация не стандартизирована, и у различных авторов можно встретить совершенно разные взаимоисключающие трак- товки.
• Интеграционное тестирование (integration testing
130
, component integration testing
131
, pairwise integration testing
132
, system integration testing
133
, incremental testing
134
, interface testing
135
, thread testing
136
) направлено на проверку взаимо- действия между несколькими частями приложения (каждая из которых, в свою очередь, проверена отдельно на стадии модульного тестирования). К сожалению, даже если мы работаем с очень качественными отдельными
129
Module testing, Unit testing, Component testing. The testing of individual software components. [ISTQB Glossary]
130
Integration testing. Testing performed to expose defects in the interfaces and in the interactions between integrated components or systems. [ISTQB Glossary]
131
Component integration testing. Testing performed to expose defects in the interfaces and interaction between integrated com- ponents. [ISTQB Glossary]
132
Pairwise integration testing. A form of integration testing that targets pairs of components that work together, as shown in a call graph. [ISTQB Glossary]
133
System integration testing. Testing the integration of systems and packages; testing interfaces to external organizations (e.g.
Electronic Data Interchange, Internet). [ISTQB Glossary]
134
Incremental testing. Testing where components or systems are integrated and tested one or some at a time, until all the compo- nents or systems are integrated and tested. [ISTQB Glossary]
135
Interface testing. An integration test type that is concerned with testing the interfaces between components or systems. [ISTQB
Glossary]
136
Thread testing. An approach to component integration testing where the progressive integration of components follows the im- plementation of subsets of the requirements, as opposed to the integration of components by levels of a hierarchy. [ISTQB
Glossary]
Подробная классификация тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 78/301 компонентами, «на стыке» их взаимодействия часто возникают проблемы.
Именно эти проблемы и выявляет интеграционное тестирование. (См. также техники восходящего, нисходящего и гибридного тестирования в хронологи- ческой классификации по иерархии компонентов
{101}
.)
• Системное тестирование (system testing
137
) направлено на проверку всего приложения как единого целого, собранного из частей, проверенных на двух предыдущих стадиях. Здесь не только выявляются дефекты «на стыках» компонентов, но и появляется возможность полноценно взаимодействовать с приложением с точки зрения конечного пользователя, применяя множество других видов тестирования, перечисленных в данной главе.
С классификацией по уровню детализации приложения связан интересный печальный факт: если предыдущая стадия обнаружила проблемы, то на следую- щей стадии эти проблемы точно нанесут удар по качеству; если же предыдущая стадия не обнаружила проблем, это ещё никоим образом не защищает нас от про- блем на следующей стадии.
Для лучшего запоминания степень детализации в модульном, интеграцион- ном и системном тестировании показана схематично на рисунке 2.3.d.
Рисунок 2.3.d — Схематичное представление классификации тестирования по уровню детализации приложения
Если обратиться к словарю ISTQB и прочитать определение уровня тестиро- вания (test level
138
), то можно увидеть, что аналогичное разбиение на модульное, интеграционное и системное тестирование, к которым добавлено ещё и приёмоч- ное тестирование
{87}
, используется в контексте разделения областей ответственно- сти на проекте. Но такая классификация больше относится к вопросам управления проектом, чем к тестированию в чистом виде, а потому выходит за рамки рассмат- риваемых нами вопросов.
Самый полный вариант классификации тестирования по уровню тестиро- вания можно посмотреть в статье «What are Software Testing Levels?
139
».
Для улучшения запоминания отразим эту идею на рисунке 2.3.e, но отме- тим, что это скорее общий теоретический взгляд.
137
System testing. The process of testing an integrated system to verify that it meets specified requirements. [ISTQB Glossary]
138
Test level. A group of test activities that are organized and managed together. A test level is linked to the responsibilities in a project. Examples of test levels are component test, integration test, system test and acceptance test. [ISTQB Glossary]
139
«What are Software Testing Levels?» [
http://istqbexamcertification.com/what-are-software-testing-levels/
]
Модульное тестирование
Интеграционное тестирование
Системное тестирование
Подробная классификация тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 79/301
Рисунок 2.3.e — Самый полный вариант классификации тестирования по уровню тестирования
2.3.2.6.
Классификация по (убыванию) степени важности тестируемых
функций (по уровню функционального тестирования)
В некоторых источниках эту разновидность классификации также называют
«по глубине тестирования».
Внимание! Возможна путаница, вызванная тем, что единого общеприня- того набора классификаций не существует, и две из них имеют очень схо- жие названия:
• «По уровню детализации приложения» = «по уровню тестирования».
• «По (убыванию) степени важности тестируемых функций» = «по уровню функционального тестирования».
• Дымовое тестирование (smoke test
140
, intake test
141
, build verification test
142
) направлено на проверку самой главной, самой важной, самой ключевой функциональности, неработоспособность которой делает бессмысленной
140
Smoke test, Confidence test, Sanity test. A subset of all defined/planned test cases that cover the main functionality of a component or system, to ascertaining that the most crucial functions of a program work, but not bothering with finer details.
[ISTQB Glossary]
141
Intake test. A special instance of a smoke test to decide if the component or system is ready for detailed and further testing. An intake test is typically carried out at the start of the test execution phase. [ISTQB Glossary]
142
Build verification test. A set of automated tests which validates the integrity of each new build and verifies its key/core function- ality, stability and testability. It is an industry practice when a high frequency of build releases occurs (e.g., agile projects) and it is run on every new build before the build is released for further testing. [ISTQB Glossary]
Модульное тестирование
Интеграционное тестирование
Компонентное тестирование
Компонентное интеграционное тестирование
Системное интеграционное тестирование
Системное тестирование
Приёмочное тестирование
Альфа-тестирование
Бета-тестирование
У
ро ве нь т
ест ир о
ва ни я
Гамма-тестирование
Подробная классификация тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 80/301 саму идею использования приложения (или иного объекта, подвергаемого дымовому тестированию).
Внимание! Очень распространённая проблема! Из-за особенности перевода на русский язык под термином «приёмочное тестирова- ние» часто может пониматься как «smoke test»
{79}
, так и «acceptance test
»
{87}
, которые изначально не имеют между собою ничего общего.
Возможно, в том числе поэтому многие тестировщики почти не ис- пользуют русский перевод «дымовое тестирование», а так и гово- рят — «смоук-тест».
Дымовое тестирование проводится после выхода нового билда, чтобы опре- делить общий уровень качества приложения и принять решение о (не)целе- сообразности выполнения тестирования критического пути и расширенного тестирования. Поскольку тест-кейсов на уровне дымового тестирования от- носительно немного, а сами они достаточно просты, но при этом очень часто повторяются, они являются хорошими кандидатами на автоматизацию. В связи с высокой важностью тест-кейсов на данном уровне пороговое значе- ние метрики их прохождения часто выставляется равным 100 % или близким к 100 %.
Очень часто можно услышать вопрос о том, чем «smoke test» отличается от
«sanity test». В глоссарии ISTQB сказано просто: «sanity test: See smoke test».
Но некоторые авторы утверждают
143
, что разница
144
есть и может быть выра- жена следующей схемой (рисунок 2.3.f):
Рисунок 2.3.f — Трактовка разницы между smoke test и sanity test
• Тестирование критического пути (critical path
145
test) направлено на иссле- дование функциональности, используемой типичными пользователями в ти- пичной повседневной деятельности. Как видно из определения в сноске к ан- глоязычной версии термина, сама идея позаимствована из управления про- ектами и трансформирована в контексте тестирования в следующую: суще- ствует большинство пользователей, которые чаще всего используют некое
143
«Smoke Vs Sanity Testing — Introduction and Differences» [
http://www.guru99.com/smoke-sanity-testing.html
]
144
«Smoke testing and sanity testing — Quick and simple differences» [
http://www.softwaretestinghelp.com/smoke-testing-and-san- ity-testing-difference/
]
145
Critical path. Longest sequence of activities in a project plan which must be completed on time for the project to complete on due date. An activity on the critical path cannot be started until its predecessor activity is complete; if it is delayed for a day, the entire project will be delayed for a day unless the activity following the delayed activity is completed a day earlier. [
https://ever- hour.com/blog/how-to-calculate-critical-path/
]
Билд 1
Smoke Test
Билд 2
Билд 3
Билд 30
Билд 31
Билд 32
Тест пройден?
Sanity Test
Дальнейшее тестирование
Начальные, относительно нестабильные билды
Близкие к релизу, относительно стабильные билды
Подробная классификация тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 81/301 подмножество функций приложения (см. рисунок 2.3.g). Именно эти функции и нужно проверить, как только мы убедились, что приложение «в принципе работает» (дымовой тест прошёл успешно). Если по каким-то причинам при- ложение не выполняет эти функции или выполняет их некорректно, очень многие пользователи не смогут достичь множества своих целей. Пороговое значение метрики успешного прохождения «теста критического пути» уже не- много ниже, чем в дымовом тестировании, но всё равно достаточно высоко
(как правило, порядка 70–80–90 % — в зависимости от сути проекта).
Рисунок 2.3.g — Суть тестирования критического пути
• Расширенное тестирование (extended test
146
) направлено на исследование всей заявленной в требованиях функциональности — даже той, которая низко проранжирована по степени важности. При этом здесь также учитыва- ется, какая функциональность является более важной, а какая — менее важ- ной. Но при наличии достаточного количества времени и иных ресурсов тест- кейсы этого уровня могут затронуть даже самые низкоприоритетные требо- вания.
Ещё одним направлением исследования в рамках данного тестирования яв- ляются нетипичные, маловероятные, экзотические случаи и сценарии ис- пользования функций и свойств приложения, затронутых на предыдущих уровнях. Пороговое значение метрики успешного прохождения расширен- ного тестирования существенно ниже, чем в тестировании критического пути
(
иногда можно увидеть даже значения в диапазоне 30–50 %, т.к. подавляю- щее большинство найденных здесь дефектов не представляет угрозы для успешного использования приложения большинством пользователей).
К сожалению, часто можно встретить мнение, что дымовое тести- рование, тестирование критического пути и расширенное тестиро- вание напрямую связаны с позитивным
{82}
тестированием и негатив- ным
{82}
тестированием, и негативное появляется только на уровне тестирования критического пути. Это не так. Как позитивные, так и негативные тесты могут (а иногда и обязаны) встречаться на всех перечисленных уровнях. Например, деление на ноль в калькуля- торе явно должно относиться к дымовому тестированию, хотя это яркий пример негативного тест-кейса.
146
Extended test. The idea is to develop a comprehensive application system test suite by modeling essential capabilities as ex- tended use cases. [By
«Extended Use Case Test Design Pattern», Rob Kuijt]
Пользователи
Функции приложения
Время использования
Тестирование критического пути
Подробная классификация тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 82/301
Для лучшего запоминания отразим эту классификацию графически:
Рисунок 2.3.h — Классификация тестирования по (убыванию) степени важности тестируемых функций (по уровню функционального тестирования)
2.3.2.7.
Классификация по принципам работы с приложением
• Позитивное тестирование (positive testing
147
) направлено на исследование приложения в ситуации, когда все действия выполняются строго по инструк- ции без каких бы то ни было ошибок, отклонений, ввода неверных данных и т.д. Если позитивные тест-кейсы завершаются ошибками, это тревожный признак — приложение работает неверно даже в идеальных условиях (и можно предположить, что в неидеальных условиях оно работает ещё хуже).
Для ускорения тестирования несколько позитивных тест-кейсов можно объ- единять (например, перед отправкой заполнить все поля формы верными значениями) — иногда это может усложнить диагностику ошибки, но суще- ственная экономия времени компенсирует этот риск.
• Негативное тестирование (negative testing
148
, invalid testing
149
)
— направлено на исследование работы приложения в ситуациях, когда с ним выполняются
(некорректные) операции и/или используются данные, потенциально приво- дящие к ошибкам (классика жанра — деление на ноль). Поскольку в реаль- ной жизни таких ситуаций значительно больше (пользователи допускают ошибки, злоумышленники осознанно «ломают» приложение, в среде работы приложения возникают проблемы и т.д.), негативных тест-кейсов оказыва- ется значительно больше, чем позитивных (иногда — в разы или даже на порядки). В отличие от позитивных негативные тест-кейсы не стоит объеди- нять, т.к. подобное решение может привести к неверной трактовке поведения приложения и пропуску (необнаружению) дефектов.
147
Positive testing is testing process where the system validated against the valid input data. In this testing tester always check for only valid set of values and check if application behaves as expected with its expected inputs. The main intention of this testing is to check whether software application not showing error when not supposed to & showing error when supposed to. Such testing is to be carried out keeping positive point of view & only execute the positive scenario. Positive Testing always tries to prove that a given product and project always meets the requirements and specifications. [
http://www.softwaretest- ingclass.com/positive-and-negative-testing-in-software-testing/
]
148
Negative testing.
Tests aimed at showing that a component or system does not work. Negative testing is related to the testers’ attitude rather than a specific test approach or test design technique, e.g. testing with invalid input values or exceptions. [ISTQB
Glossary]
149
Invalid testing. Testing using input values that should be rejected by the component or system. [ISTQB Glossary]
Дымовое тестирование
Расширенное тестирование
Тестирование критического пути
У
р
о
в
ен
ь
ф
ун
кц
и
о
н
Подробная классификация тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 77/301
Задание 2.3.a: сформируйте аналогичную таблицу с преимуществами и недостатками ручного тестирования. Подсказка: здесь недостаточно про- сто поменять заголовки колонок с преимуществами и недостатками авто- матизации.
2.3.2.5.
Классификация по уровню детализации приложения (по уровню
тестирования)
Внимание! Возможна путаница, вызванная тем, что единого общеприня- того набора классификаций не существует, и две из них имеют очень схо- жие названия:
• «По уровню детализации приложения» = «по уровню тестирования».
• «По (убыванию) степени важности тестируемых функций» = «по уровню функционального тестирования».
• Модульное (компонентное) тестирование (unit testing, module testing, com- ponent testing
129
) направлено на проверку отдельных небольших частей при- ложения, которые (как правило) можно исследовать изолированно от других подобных частей. При выполнении данного тестирования могут проверяться отдельные функции или методы классов, сами классы, взаимодействие клас- сов, небольшие библиотеки, отдельные части приложения. Часто данный вид тестирования реализуется с использованием специальных технологий и инструментальных средств автоматизации тестирования
{76}
, значительно упрощающих и ускоряющих разработку соответствующих тест-кейсов.
Из-за особенностей перевода на русский язык теряются нюансы степени детализации: «юнит-тестирование», как правило, направ- лено на тестирование атомарных участков кода, «модульное» — на тестирование классов и небольших библиотек, «компонентное» — на тестирование библиотек и структурных частей приложения. Но эта классификация не стандартизирована, и у различных авторов можно встретить совершенно разные взаимоисключающие трак- товки.
• Интеграционное тестирование (integration testing
130
, component integration testing
131
, pairwise integration testing
132
, system integration testing
133
, incremental testing
134
, interface testing
135
, thread testing
136
) направлено на проверку взаимо- действия между несколькими частями приложения (каждая из которых, в свою очередь, проверена отдельно на стадии модульного тестирования). К сожалению, даже если мы работаем с очень качественными отдельными
129
Module testing, Unit testing, Component testing. The testing of individual software components. [ISTQB Glossary]
130
Integration testing. Testing performed to expose defects in the interfaces and in the interactions between integrated components or systems. [ISTQB Glossary]
131
Component integration testing. Testing performed to expose defects in the interfaces and interaction between integrated com- ponents. [ISTQB Glossary]
132
Pairwise integration testing. A form of integration testing that targets pairs of components that work together, as shown in a call graph. [ISTQB Glossary]
133
System integration testing. Testing the integration of systems and packages; testing interfaces to external organizations (e.g.
Electronic Data Interchange, Internet). [ISTQB Glossary]
134
Incremental testing. Testing where components or systems are integrated and tested one or some at a time, until all the compo- nents or systems are integrated and tested. [ISTQB Glossary]
135
Interface testing. An integration test type that is concerned with testing the interfaces between components or systems. [ISTQB
Glossary]
136
Thread testing. An approach to component integration testing where the progressive integration of components follows the im- plementation of subsets of the requirements, as opposed to the integration of components by levels of a hierarchy. [ISTQB
Glossary]
Подробная классификация тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 78/301 компонентами, «на стыке» их взаимодействия часто возникают проблемы.
Именно эти проблемы и выявляет интеграционное тестирование. (См. также техники восходящего, нисходящего и гибридного тестирования в хронологи- ческой классификации по иерархии компонентов
{101}
.)
• Системное тестирование (system testing
137
) направлено на проверку всего приложения как единого целого, собранного из частей, проверенных на двух предыдущих стадиях. Здесь не только выявляются дефекты «на стыках» компонентов, но и появляется возможность полноценно взаимодействовать с приложением с точки зрения конечного пользователя, применяя множество других видов тестирования, перечисленных в данной главе.
С классификацией по уровню детализации приложения связан интересный печальный факт: если предыдущая стадия обнаружила проблемы, то на следую- щей стадии эти проблемы точно нанесут удар по качеству; если же предыдущая стадия не обнаружила проблем, это ещё никоим образом не защищает нас от про- блем на следующей стадии.
Для лучшего запоминания степень детализации в модульном, интеграцион- ном и системном тестировании показана схематично на рисунке 2.3.d.
Рисунок 2.3.d — Схематичное представление классификации тестирования по уровню детализации приложения
Если обратиться к словарю ISTQB и прочитать определение уровня тестиро- вания (test level
138
), то можно увидеть, что аналогичное разбиение на модульное, интеграционное и системное тестирование, к которым добавлено ещё и приёмоч- ное тестирование
{87}
, используется в контексте разделения областей ответственно- сти на проекте. Но такая классификация больше относится к вопросам управления проектом, чем к тестированию в чистом виде, а потому выходит за рамки рассмат- риваемых нами вопросов.
Самый полный вариант классификации тестирования по уровню тестиро- вания можно посмотреть в статье «What are Software Testing Levels?
139
».
Для улучшения запоминания отразим эту идею на рисунке 2.3.e, но отме- тим, что это скорее общий теоретический взгляд.
137
System testing. The process of testing an integrated system to verify that it meets specified requirements. [ISTQB Glossary]
138
Test level. A group of test activities that are organized and managed together. A test level is linked to the responsibilities in a project. Examples of test levels are component test, integration test, system test and acceptance test. [ISTQB Glossary]
139
«What are Software Testing Levels?» [
http://istqbexamcertification.com/what-are-software-testing-levels/
]
Модульное тестирование
Интеграционное тестирование
Системное тестирование
Подробная классификация тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 79/301
Рисунок 2.3.e — Самый полный вариант классификации тестирования по уровню тестирования
2.3.2.6.
Классификация по (убыванию) степени важности тестируемых
функций (по уровню функционального тестирования)
В некоторых источниках эту разновидность классификации также называют
«по глубине тестирования».
Внимание! Возможна путаница, вызванная тем, что единого общеприня- того набора классификаций не существует, и две из них имеют очень схо- жие названия:
• «По уровню детализации приложения» = «по уровню тестирования».
• «По (убыванию) степени важности тестируемых функций» = «по уровню функционального тестирования».
• Дымовое тестирование (smoke test
140
, intake test
141
, build verification test
142
) направлено на проверку самой главной, самой важной, самой ключевой функциональности, неработоспособность которой делает бессмысленной
140
Smoke test, Confidence test, Sanity test. A subset of all defined/planned test cases that cover the main functionality of a component or system, to ascertaining that the most crucial functions of a program work, but not bothering with finer details.
[ISTQB Glossary]
141
Intake test. A special instance of a smoke test to decide if the component or system is ready for detailed and further testing. An intake test is typically carried out at the start of the test execution phase. [ISTQB Glossary]
142
Build verification test. A set of automated tests which validates the integrity of each new build and verifies its key/core function- ality, stability and testability. It is an industry practice when a high frequency of build releases occurs (e.g., agile projects) and it is run on every new build before the build is released for further testing. [ISTQB Glossary]
Модульное тестирование
Интеграционное тестирование
Компонентное тестирование
Компонентное интеграционное тестирование
Системное интеграционное тестирование
Системное тестирование
Приёмочное тестирование
Альфа-тестирование
Бета-тестирование
У
ро ве нь т
ест ир о
ва ни я
Гамма-тестирование
Подробная классификация тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 80/301 саму идею использования приложения (или иного объекта, подвергаемого дымовому тестированию).
Внимание! Очень распространённая проблема! Из-за особенности перевода на русский язык под термином «приёмочное тестирова- ние» часто может пониматься как «smoke test»
{79}
, так и «acceptance test
»
{87}
, которые изначально не имеют между собою ничего общего.
Возможно, в том числе поэтому многие тестировщики почти не ис- пользуют русский перевод «дымовое тестирование», а так и гово- рят — «смоук-тест».
Дымовое тестирование проводится после выхода нового билда, чтобы опре- делить общий уровень качества приложения и принять решение о (не)целе- сообразности выполнения тестирования критического пути и расширенного тестирования. Поскольку тест-кейсов на уровне дымового тестирования от- носительно немного, а сами они достаточно просты, но при этом очень часто повторяются, они являются хорошими кандидатами на автоматизацию. В связи с высокой важностью тест-кейсов на данном уровне пороговое значе- ние метрики их прохождения часто выставляется равным 100 % или близким к 100 %.
Очень часто можно услышать вопрос о том, чем «smoke test» отличается от
«sanity test». В глоссарии ISTQB сказано просто: «sanity test: See smoke test».
Но некоторые авторы утверждают
143
, что разница
144
есть и может быть выра- жена следующей схемой (рисунок 2.3.f):
Рисунок 2.3.f — Трактовка разницы между smoke test и sanity test
• Тестирование критического пути (critical path
145
test) направлено на иссле- дование функциональности, используемой типичными пользователями в ти- пичной повседневной деятельности. Как видно из определения в сноске к ан- глоязычной версии термина, сама идея позаимствована из управления про- ектами и трансформирована в контексте тестирования в следующую: суще- ствует большинство пользователей, которые чаще всего используют некое
143
«Smoke Vs Sanity Testing — Introduction and Differences» [
http://www.guru99.com/smoke-sanity-testing.html
]
144
«Smoke testing and sanity testing — Quick and simple differences» [
http://www.softwaretestinghelp.com/smoke-testing-and-san- ity-testing-difference/
]
145
Critical path. Longest sequence of activities in a project plan which must be completed on time for the project to complete on due date. An activity on the critical path cannot be started until its predecessor activity is complete; if it is delayed for a day, the entire project will be delayed for a day unless the activity following the delayed activity is completed a day earlier. [
https://ever- hour.com/blog/how-to-calculate-critical-path/
]
Билд 1
Smoke Test
Билд 2
Билд 3
Билд 30
Билд 31
Билд 32
Тест пройден?
Sanity Test
Дальнейшее тестирование
Начальные, относительно нестабильные билды
Близкие к релизу, относительно стабильные билды
Подробная классификация тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 81/301 подмножество функций приложения (см. рисунок 2.3.g). Именно эти функции и нужно проверить, как только мы убедились, что приложение «в принципе работает» (дымовой тест прошёл успешно). Если по каким-то причинам при- ложение не выполняет эти функции или выполняет их некорректно, очень многие пользователи не смогут достичь множества своих целей. Пороговое значение метрики успешного прохождения «теста критического пути» уже не- много ниже, чем в дымовом тестировании, но всё равно достаточно высоко
(как правило, порядка 70–80–90 % — в зависимости от сути проекта).
Рисунок 2.3.g — Суть тестирования критического пути
• Расширенное тестирование (extended test
146
) направлено на исследование всей заявленной в требованиях функциональности — даже той, которая низко проранжирована по степени важности. При этом здесь также учитыва- ется, какая функциональность является более важной, а какая — менее важ- ной. Но при наличии достаточного количества времени и иных ресурсов тест- кейсы этого уровня могут затронуть даже самые низкоприоритетные требо- вания.
Ещё одним направлением исследования в рамках данного тестирования яв- ляются нетипичные, маловероятные, экзотические случаи и сценарии ис- пользования функций и свойств приложения, затронутых на предыдущих уровнях. Пороговое значение метрики успешного прохождения расширен- ного тестирования существенно ниже, чем в тестировании критического пути
(
иногда можно увидеть даже значения в диапазоне 30–50 %, т.к. подавляю- щее большинство найденных здесь дефектов не представляет угрозы для успешного использования приложения большинством пользователей).
К сожалению, часто можно встретить мнение, что дымовое тести- рование, тестирование критического пути и расширенное тестиро- вание напрямую связаны с позитивным
{82}
тестированием и негатив- ным
{82}
тестированием, и негативное появляется только на уровне тестирования критического пути. Это не так. Как позитивные, так и негативные тесты могут (а иногда и обязаны) встречаться на всех перечисленных уровнях. Например, деление на ноль в калькуля- торе явно должно относиться к дымовому тестированию, хотя это яркий пример негативного тест-кейса.
146
Extended test. The idea is to develop a comprehensive application system test suite by modeling essential capabilities as ex- tended use cases. [By
«Extended Use Case Test Design Pattern», Rob Kuijt]
Пользователи
Функции приложения
Время использования
Тестирование критического пути
Подробная классификация тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 82/301
Для лучшего запоминания отразим эту классификацию графически:
Рисунок 2.3.h — Классификация тестирования по (убыванию) степени важности тестируемых функций (по уровню функционального тестирования)
2.3.2.7.
Классификация по принципам работы с приложением
• Позитивное тестирование (positive testing
147
) направлено на исследование приложения в ситуации, когда все действия выполняются строго по инструк- ции без каких бы то ни было ошибок, отклонений, ввода неверных данных и т.д. Если позитивные тест-кейсы завершаются ошибками, это тревожный признак — приложение работает неверно даже в идеальных условиях (и можно предположить, что в неидеальных условиях оно работает ещё хуже).
Для ускорения тестирования несколько позитивных тест-кейсов можно объ- единять (например, перед отправкой заполнить все поля формы верными значениями) — иногда это может усложнить диагностику ошибки, но суще- ственная экономия времени компенсирует этот риск.
• Негативное тестирование (negative testing
148
, invalid testing
149
)
— направлено на исследование работы приложения в ситуациях, когда с ним выполняются
(некорректные) операции и/или используются данные, потенциально приво- дящие к ошибкам (классика жанра — деление на ноль). Поскольку в реаль- ной жизни таких ситуаций значительно больше (пользователи допускают ошибки, злоумышленники осознанно «ломают» приложение, в среде работы приложения возникают проблемы и т.д.), негативных тест-кейсов оказыва- ется значительно больше, чем позитивных (иногда — в разы или даже на порядки). В отличие от позитивных негативные тест-кейсы не стоит объеди- нять, т.к. подобное решение может привести к неверной трактовке поведения приложения и пропуску (необнаружению) дефектов.
147
Positive testing is testing process where the system validated against the valid input data. In this testing tester always check for only valid set of values and check if application behaves as expected with its expected inputs. The main intention of this testing is to check whether software application not showing error when not supposed to & showing error when supposed to. Such testing is to be carried out keeping positive point of view & only execute the positive scenario. Positive Testing always tries to prove that a given product and project always meets the requirements and specifications. [
http://www.softwaretest- ingclass.com/positive-and-negative-testing-in-software-testing/
]
148
Negative testing.
Tests aimed at showing that a component or system does not work. Negative testing is related to the testers’ attitude rather than a specific test approach or test design technique, e.g. testing with invalid input values or exceptions. [ISTQB
Glossary]
149
Invalid testing. Testing using input values that should be rejected by the component or system. [ISTQB Glossary]
Дымовое тестирование
Расширенное тестирование
Тестирование критического пути
У
р
о
в
ен
ь
ф
ун
кц
и
о
н
1 ... 7 8 9 10 11 12 13 14 ... 38