Тестирование приложений. Обеспечения Базовый курс (3е издание) Версия книги 15 от 31. 03. 2022
Скачать 5.07 Mb.
|
2.3.3. Альтернативные и дополнительные классификации тестиро- вания Для полноты картины остаётся лишь показать альтернативные взгляды на классификацию тестирования. Одна из них (рисунки 2.3.i и 2.3.j) представляет не более чем иную комбинацию ранее рассмотренных видов и техник. Вторая (рисунки 2.3.k и 2.3.l) содержит много новых определений, но их подробное изучение выхо- дит за рамки данной книги, и потому будут даны лишь краткие пояснения (при необ- ходимости вы можете ознакомиться с первоисточниками, которые указаны для каж- дого определения в сноске). Ещё раз подчеркнём: здесь приведены лишь определения. Соответству- ющим видам и техникам тестирования в первоисточниках посвящены де- сятки и сотни страниц. Пожалуйста, не ожидайте от этого раздела подроб- ных пояснений, их не будет, т.к. это — «очень дополнительный» материал. Рисунок 2.3.i — Классификация тестирования согласно книге «Foundations of Soft- ware Testing: ISTQB Certification » (Erik Van Veenendaal, Isabel Evans) (русскоязыч- ный вариант) Тестирование Статическое Динамическое Неформальный просмотр Беглый просмотр Технический просмотр Формальная инспекция Статический анализ По потоку управления По потоку данных На основе опыта тестировщика Предугадывание ошибок Исследователь- ское тестирование На основе структур кода Выражений Переходов Условий Комбинаций условий На основе спецификаций На основе классов эквивалентности На основе граничных условий По вариантам использования По таблице принятия решений По диаграмме состояний Альтернативные и дополнительные классификации тестирования Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 101/298 Рисунок 2.3.j — Классификация тестирования согласно книге «Foundations of Soft- ware Testing: ISTQB Certification » (Erik Van Veenendaal, Isabel Evans) (англоязыч- ный вариант) В следующей классификации встречаются как уже рассмотренные пункты, так и ранее не рассмотренные (отмечены пунктирной линией). Краткие определе- ния не рассмотренных ранее видов тестирования представлены после рисунков 2.3.k и 2.3.l. Testing Techniques Static Dynamic Informal Review Walkthrough Technical Review Inspection Static Analysis Control Flow Data Flow Experience-based Error Guessing Exploratory Testing Structure-based Statement Decision Condition Multiple Condition Specification-based Equivalence Partitioning Boundary Value Analisys Use Case Testing Decision Tables State Transition Альтернативные и дополнительные классификации тестирования Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 102/298 Рисунок 2.3.k — Классификация тестирования согласно ISO/IEC/IEEE 29119-4 (русскоязычный вариант) Техники тестирования На основе опыта тестировщика На основе структур кода На основе дерева классификаций Проверка использования всех объявлений На основе синтаксиса Комбинаторные техники Всех комбинаций Попарное Предугадывание ошибок На основе условий На основе выражений На основе решений На основе спецификаций На основе классов эквивалентности На основе граничных условий На основе вариантов использования По таблице принятия решений По диаграмме состояний С выбором значений- представителей С выбором базового набора значений По графу причинно- следственных связей На основе сценариев На основе случайных данных На основе ветвей На основе комбинаций условий На основе отдельных условий, порождающих ветвление По потоку данных Проверка всех вычислений на основе всех объявлений См. в основной классификации «На основе опыта тестировщика, сценариев, чек-листов» и «На основе (моделей) поведения приложения» Проверка всех ветвлений на основе всех объявлений Проверка всех вычислений и ветвлений на основе всех объявлений Проверка использования всех объявлений и всех путей без переобъявлений (без циклов или с однократными повторениями циклов) Альтернативные и дополнительные классификации тестирования Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 103/298 Рисунок 2.3.l — Классификация тестирования согласно ISO/IEC/IEEE 29119-4 (ан- глоязычный вариант) Альтернативные и дополнительные классификации тестирования Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 104/298 • Тестирование на основе дерева классификаций (classification tree 267 method 268 ) — техника тестирования (по методу чёрного ящика), в которой тест-кейсы создаются на основе иерархически организованных наборов эк- вивалентных входных и выходных данных. • Тестирование на основе синтаксиса (syntax testing 269 ) — техника тестиро- вания (по методу чёрного ящика), в которой тест-кейсы создаются на основе определения наборов входных и выходных данных. • Комбинаторные техники или комбинаторное тестирование (combinatorial testing 270 ) — способ выбрать подходящий набор комбинаций тестовых данных для достижения установленного уровня тестового покрытия в случае, когда проверка всех возможных наборов значений тестовых данных невозможна за имеющееся время. Существуют следующие комбинаторные техники: o Тестирование всех комбинаций (all combinations testing 271 ) — тести- рование всех возможных комбинаций всех значений всех тестовых данных (например, всех параметров функции). o Попарное тестирование (рассмотрено ранее {92} ). o Тестирование с выбором значений-представителей (each choice testing 272 ) — тестирование, при котором по одному значению из каждого набора тестовых данных должно быть использовано хотя бы в одном тест-кейсе. o Тестирование с выбором базового набора значений (base choice testing 273 ) — тестирование, при котором выделяется набор значений (базовый набор), который используется для проведения тестирования в первую очередь, а далее тест-кейсы строятся на основе выбора всех базовых значений, кроме одного, которое заменяется значением, не входящим в базовый набор. Также см. классификацию тестирования на основе выбора входных данных {91} , которая расширяет и дополняет данный список. • Тестирование по графу причинно-следственных связей (cause-effect gra- phing 274 ) — техника тестирования (по методу чёрного ящика), в которой тест- кейсы разрабатываются на основе графа причинно-следственных связей (графического представления входных данных и воздействий со связанными с ними выходными данными и эффектами). 267 Classification tree. A tree showing equivalence partitions hierarchically ordered, which is used to design test cases in the classi- fication tree method. [ISTQB Glossary] 268 Classification tree method. A black box test design technique in which test cases, described by means of a classification tree, are designed to execute combinations of representatives of input and/or output domains. [ISTQB Glossary] 269 Syntax testing. A black box test design technique in which test cases are designed based upon the definition of the input domain and/or output domain. [ISTQB Glossary] 270 Combinatorial testing. A means to identify a suitable subset of test combinations to achieve a predetermined level of coverage when testing an object with multiple parameters and where those parameters themselves each have several values, which gives rise to more combinations than are feasible to test in the time allowed. [ISTQB Glossary] 271 All combinations testing. Testing of all possible combinations of all values for all parameters. [ «Guide to advanced software testing, 2nd edition », Anne Matte Hass]. 272 Each choice testing. One value from each block for each partition must be used in at least one test case. [ «Introduction to Software Testing. Chapter 4. Input Space Partition Testing », Paul Ammann & Jeff Offutt] 273 Base choice testing. A base choice block is chosen for each partition, and a base test is formed by using the base choice for each partition. Subsequent tests are chosen by holding all but one base choice constant and using each non-base choice in each other parameter. [ «Introduction to Software Testing. Chapter 4. Input Space Partition Testing», Paul Ammann & Jeff Offutt] 274 Cause-effect graphing. A black box test design technique in which test cases are designed from cause-effect graphs (a graphical representation of inputs and/or stimuli (causes) with their associated outputs (effects), which can be used to design test cases). [ISTQB Glossary] Альтернативные и дополнительные классификации тестирования Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 105/298 • Тестирование по потоку данных (data-flow testing 275 ) — семейство техник тестирования, основанных на выборе отдельных путей из потока управления с целью исследования событий, связанных с изменением состояния пере- менных. Эти техники позволяют обнаружить такие ситуации, как: переменная определена, но нигде не используется; переменная используется, но не определена; переменная определена несколько раз до того, как она исполь- зуется; переменная удалена до последнего случая использования. Здесь придётся немного погрузиться в теорию. Над переменной в общем слу- чае может выполняться несколько действий (покажем на примере перемен- ной x): • объявление (declaration): int x; • определение (definition, d-use): x = 99; • использование в вычислениях (computation use, c-use): z = x + 1; • использование в условиях (predicate use, p-use): if (x > 17) { … }; • удаление (kill, k-use): x = null; Теперь можно рассмотреть техники тестирования на основе потока данных. Они крайне подробно описаны в разделе 3.3 главы 5 книги Бориса Бейзера «Техники тестирования ПО» («Software Testing Techniques, Second Edition», Boris Beizer ), мы же приведём очень краткие пояснения: o Проверка использования всех объявлений (all-definitions testing 276 ) — тестовым набором проверяется, что для каждой переменной суще- ствует путь от её определения к её использованию в вычислениях или условиях. o Проверка всех вычислений на основе всех объявлений (all-c-uses testing 277 ) — тестовым набором проверяется, что для каждой перемен- ной существует путь от каждого её определения к её использованию в вычислениях. o Проверка всех ветвлений на основе всех объявлений (all-p-uses testing 278 ) — тестовым набором проверяется, что для каждой перемен- ной существует путь от каждого её определения к её использованию в условиях. o Проверка всех вычислений и ветвлений на основе всех объявле- ний (all-uses testing 279 ) — тестовым набором проверяется, что для каж- дой переменной существует хотя бы один путь от каждого её опреде- ления к каждому её использованию в вычислениях и в условиях. o Проверка использования всех объявлений и всех путей без пере- объявлений (без циклов или с однократными повторениями цик- лов) (all-du-paths testing 280 ) — тестовым набором для каждой перемен- ной проверяются все пути от каждого её определения к каждому её использованию в вычислениях и в условиях (самая мощная стратегия, которая в то же время требует наибольшего количества тест-кейсов). 275 Data flow testing. A white box test design technique in which test cases are designed to execute definition-use pairs of variables. [ISTQB Glossary] 276 All-definitions strategy. Test set requires that every definition of every variable is covered by at least one use of that variable (c- use or p-use). [ «Software Testing Techniques, Second Edition», Boris Beizer] 277 All-computation-uses strategy. For every variable and every definition of that variable, include at least one definition-free path from the definition to every computation use. [ «Software Testing Techniques, Second Edition», Boris Beizer] 278 All-predicate-uses strategy. For every variable and every definition of that variable, include at least one definition-free path from the definition to every predicate use. [ «Software Testing Techniques, Second Edition», Boris Beizer] 279 All-uses strategy. Test set includes at least one path segment from every definition to every use that can be reached by that definition. [ «Software Testing Techniques, Second Edition», Boris Beizer] 280 All-DU-path strategy. Test set includes every du path from every definition of every variable to every use of that definition. [«Software Testing Techniques, Second Edition», Boris Beizer] Альтернативные и дополнительные классификации тестирования Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 106/298 Для лучшего понимания и запоминания приведём оригинальную схему из книги Бориса Бейзера (там она фигурирует под именем «Figure 5.7. Relative Strength of Structural Test Strategies »), показывающую взаимосвязь стратегий тестирования на основе потока данных (рисунок 2.3.m). Рисунок 2.3.m — Взаимосвязь и относительная мощность стратегий тестирования на основе потока данных (по книге Бориса Бейзера «Техники тестирования ПО») All-Paths All-DU-Paths All-Uses All-C-Uses/Some-P-Uses All-P-Uses/Some-C-Uses All-C-Uses All-Defs All-P-Uses Branch Statement Классификация по принадлежности к тестированию по методу белого и чёрного ящиков Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 107/298 2.3.4. Классификация по принадлежности к тестированию по ме- тоду белого и чёрного ящиков Типичнейшим вопросом на собеседовании для начинающих тестировщиков является просьба перечислить техники тестирования по методу белого и чёрного ящиков. Ниже представлена таблица 2.3.d, в которой все вышерассмотренные виды тестирования соотнесены с соответствующим методом. Эту таблицу можно использовать также как справочник по видам тестирования (они представлены в той же последовательности, в какой описаны в данной главе). Важно! В источниках наподобие ISTQB-глоссария многие виды и техники тестирования жёстко соотнесены с методами белого или чёрного ящика. Но это не значит, что их невозможно применить в другом, не отмеченном методе. Так, например, тестирование на основе классов эквивалентности отнесено к методу чёрного ящика, но оно прекрасно подходит и для напи- сания модульных тест-кейсов, являющихся ярчайшими представителями тестирования по методу белого ящика. Воспринимайте данные из представленной ниже таблицы не как «этот вид тестирования может применяться только для…», а как «чаще всего этот вид тестирования применяется для…» Таблица 2.3.d — Виды и техники тестирования в контексте методов белого и чёр- ного ящиков Вид тестирования (русскоязычное название) Вид тестирования (англо- язычное название) Белый ящик Чёрный ящик Статическое тестирование {70} Static testing Да Нет Динамическое тестирова- ние {70} Dynamic testing Изредка Да Ручное тестирование {72} Manual testing Мало Да Автоматизированное тести- рование {73} Automated testing Да Да Модульное (компонентное) тестирование {74} Unit testing, Module testing, Component testing Да Нет Интеграционное тестирова- ние {74} Integration testing Да Да Системное тестирование {75} System testing Мало Да Дымовое тестирование {76} Smoke test, Intake test, Build verification test Мало Да Тестирование критического пути {77} Critical path test Мало Да Расширенное тестирова- ние {78} Extended test Мало Да Позитивное тестирование {79} Positive testing Да Да Негативное тестирование {79} Negative testing, Invalid testing Да Да Тестирование веб-приложе- ний {80} Web-applications testing Да Да Тестирование мобильных приложений {80} Mobile applications testing Да Да Тестирование настольных приложений {80} Desktop applications testing Да Да Классификация по принадлежности к тестированию по методу белого и чёрного ящиков Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 108/298 Тестирование уровня пред- ставления {80} Presentation tier testing Мало Да Тестирование уровня бизнес- логики {80} Business logic tier testing Да Да Тестирование уровня дан- ных {80} Data tier testing Да Мало Альфа-тестирование {81} Alpha testing Мало Да Бета-тестирование {81} Beta testing Почти никогда Да Гамма-тестирование {81} Gamma testing Почти никогда Да Тестирование на основе тест- кейсов {81} Scripted testing, Test case based testing Да Да Исследовательское тестиро- вание {82} Exploratory testing Нет Да Свободное (интуитивное) те- стирование {82} Ad hoc testing Нет Да Функциональное тестирова- ние {82} Functional testing Да Да Нефункциональное тестиро- вание {83} Non-functional testing Да Да Инсталляционное тестирова- ние {83} Installation testing Изредка Да Регрессионное тестирова- ние {84} Regression testing Да Да Повторное тестирование {84} Re-testing, Confirmation testing Да Да Приёмочное тестирование {84} Acceptance testing Крайне редко Да Операционное тестирова- ние {85} Operational testing Крайне редко Да Тестирование удобства ис- пользования {85} Usability testing Крайне редко Да Тестирование доступности {85} Accessibility testing Крайне редко Да Тестирование интерфейса {85} Interface testing Да Да Тестирование безопасно- сти {86} Security testing Да Да Тестирование интернациона- лизации {86} Internationalization testing Мало Да Тестирование локализации {86} Localization testing Мало Да Тестирование совместимо- сти {86} Compatibility testing Мало Да Конфигурационное тестиро- вание {86} Configuration testing Мало Да Кросс-браузерное тестирова- ние {87} Cross-browser testing Мало Да Тестирование данных и баз данных {87} Data quality testing and Data- base integrity testing Да Мало Тестирование использования ресурсов {87} Resource utilization testing Крайне редко Да Сравнительное тестирова- ние {88} Comparison testing Нет Да Классификация по принадлежности к тестированию по методу белого и чёрного ящиков Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 109/298 Демонстрационное тестиро- вание {88} Qualification testing Нет Да Исчерпывающее тестирова- ние {88} Exhaustive testing Крайне редко Нет Тестирование надёжности {88} Reliability testing Крайне редко Да Тестирование восстанавли- ваемости {88} Recoverability testing Крайне редко Да Тестирование отказоустойчи- вости {88} Failover testing Крайне редко Да Тестирование производи- тельности {88} Performance testing Крайне редко Да Нагрузочное тестирование {88} Load testing, Capacity testing Крайне редко Да Тестирование масштабируе- мости {89} Scalability testing Крайне редко Да Объёмное тестирование {89} Volume testing Крайне редко Да Стрессовое тестирование {89} Stress testing Крайне редко Да Конкурентное тестирова- ние {89} Concurrency testing Крайне редко Да Инвазивное тестирование {90} Intrusive testing Да Да Неинвазивное тестирова- ние {90} Nonintrusive testing Да Да Тестирование под управле- нием данными {90} Data-driven testing Да Да Тестирование под управле- нием ключевыми словами {90} Keyword-driven testing Да Да Тестирование предугадыва- нием ошибок {91} Error guessing Крайне редко Да Эвристическая оценка {91} Heuristic evaluation Нет Да Мутационное тестирова- ние {91} Mutation testing Да Да Тестирование добавлением ошибок {91} Error seeding Да Да Тестирование на основе классов эквивалентности {91} Equivalence partitioning Да Да Тестирование на основе гра- ничных условий {92} Boundary value analysis Да Да Доменное тестирование {92} Domain testing, Domain analy- sis Да Да Попарное тестирование {92} Pairwise testing Да Да Тестирование на основе ор- тогональных массивов {92} Orthogonal array testing Да Да Тестирование в процессе разработки {93} Development testing Да Да Тестирование по потоку управления {93} Control flow testing Да Нет Тестирование по потоку дан- ных {93} Data flow testing Да Нет Тестирование по диаграмме или таблице состояний {94} State transition testing Изредка Да Классификация по принадлежности к тестированию по методу белого и чёрного ящиков Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 110/298 Инспекция (аудит) кода {94} Code review, code inspection Да Нет Тестирование на основе вы- ражений {94} Statement testing Да Нет Тестирование на основе вет- вей {94} Branch testing Да Нет Тестирование на основе условий {95} Condition testing Да Нет Тестирование на основе ком- бинаций условий {95} Multiple condition testing Да Нет Тестирование на основе от- дельных условий, порождаю- щих ветвление {95} («решаю- щих условий») Modified condition decision coverage testing Да Нет Тестирование на основе ре- шений {95} Decision testing Да Нет Тестирование на основе пу- тей {95} Path testing Да Нет Тестирование по таблице принятия решений {96} Decision table testing Да Да Тестирование по моделям поведения приложения {96} Model-based testing Да Да Тестирование на основе ва- риантов использования {96} Use case testing Да Да Параллельное тестирова- ние {97} Parallel testing Да Да Тестирование на основе слу- чайных данных {97} Random testing Да Да A/B- тестирование {97} A/B testing, Split testing Нет Да Восходящее тестирование {98} Bottom-up testing Да Да Нисходящее тестирование {98} Top-down testing Да Да Гибридное тестирование {98} Hybrid testing Да Да Тестирование на основе де- рева классификаций {104} Classification tree method Да Да Тестирование на основе син- таксиса {104} Syntax testing Да Да Комбинаторные техники {104} (комбинаторное тестирова- ние) Combinatorial testing Да Да Тестирование всех комбина- ций {104} All combinations testing Да Нет Тестирование с выбором зна- чений-представителей {104} Each choice testing Да Нет Тестирование с выбором ба- зового набора значений {104} Base choice testing Да Нет Тестирование по графу при- чинно-следственных свя- зей {104} Cause-effect graphing Мало Да Проверка использования всех объявлений {105} All-definitions testing Да Нет Классификация по принадлежности к тестированию по методу белого и чёрного ящиков Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 111/298 Проверка всех вычислений на основе всех объявле- ний {105} All-c-uses testing Да Нет Проверка всех ветвлений на основе всех объявлений {105} All-p-uses testing Да Нет Проверка всех вычислений и ветвлений на основе всех объявлений {105} All-uses testing Да Нет Проверка использования всех объявлений и всех пу- тей без переобъявлений {105} (без циклов или с однократ- ными повторениями циклов) All-du-paths testing Да Нет |