Тестирование черного ящика. Б. Бейзер (2004) (1186170), страница 19
Текст из файла (страница 19)
Используя 3.4. Методика 81 поиск по узлу ЗЗЬ1 (где проверяется пометка графы ЗЗЬ), мы видим, что лю- бой сегмент, включающий вариант В1, не может быть скомбинирован с сег- ментами 04-08. 2Ь. И наоборот, если графа ЗЗЪ не помечена (вариаит В2), логика не позволяет выбрать в узле 34.3 исходящую ветвь, соответствующую значению ИСТИНА, и вариант РЗ пе может объединяться с любыми путями, которые включают ЗЗЬ(Л).
Это пути, содержащие в себе В2. Поэтому любые сегменты с В2 не комбинируются с 03. За. Если графа 33а помечена, тогда сегменты РЗ вЂ” 08 можно удалить. Графа ЗЗа помечается в узлах ЗЗаЗ, 33а5, 33а7 и ЗЗа9. Проводя заново поиск наших сегментов, мы видим, что это любые сегменты, содержащие А1. Поэтому А1 не комбинируется с РЗ-Р8. Таблица 3.2.
Определение графа состояний 02 03 04 05 0б 02 0В СЕГМЕНТ 01 ЗЪ. Наоборот, если графа ЗЗа (А2) не помечена, то можно не учитывать 02. 4а. Если вы женаты и заполняете форму раздельно (провсряется ЗЗс), то вы не можете заполнять форму совместно в 34.7. Следовательно, любые сегменты С1В1А1-С5В2А2, включающие ЗЗс(И), не могут комбинироваться с 07. Это все сегменты, содержащие С2, СЗ или С5. 4Ь. И наоборот, любой сегмент, содержащий С1 нли С2, не может комбинироваться с 08. Так как 33с(Л) ис означает заполнение раздельных дсклараиий и 34.7 (РАЗДЕЛЬНО) этому противоречит. С1В1А1 С2В1А1 СЗВ1А1 С4В1А1 С561Я1 С1В2А1 сгвгя1 СЗВ2А1 С4В2Я1 СВВ2А1 сгвгяг С2В1Я2 сзвгяг с4в1Аг сввгяг С1В2А2 С2В2А2 СЗВ2Я2 С4В2А2 С5В2А2 ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ ХХХХ 82 Глава 3 ~ Тестирование потока управления 5.
Если вы холосты (34.7(ХОЛОСТ)-Г)5), или вы глава хозяйства (34.7 (ГЛАВА)-Г)6), льготы вашего супруга не могут быть детализированы. Следовательно, сегменты с 33с1(И)-С2 не могут комбинироваться с сегментами Г>5 или Г>6. Это нам ничего не дает, но, между прочим, мы уже исключили 116 вариантов из 160 возможных. ба. Мы знаем, годами заполняя совместную налоговую декларацию, что если ваши льготы детализированы, то льготы вашего супруга должны детализироваться и наоборот.
Следовательно, любые варианты с ЗЗс1(Л)-СЗ и С5 не сочетаемы с 34(И)-Р1, и исключается более восьми случаев. 6Ъ. Двигаясь в обратном направлении, мы можем понять, что С2 не может комбинироваться с Р2-Г>8. 7. Если вы женаты, заполняете форму раздельно, и льготы вашего супруга не детализированы, и он не является иностранцем (С5), вы не можете быть холосты (Р5) или быть главой хозяйства (Г)6). Сейчас мы можем продолжить выбор путей. Рассматривая неотмеченные ячей- ки в таблице, видим, что для Г)5, Г)6, Г)7 и Г)8 вариантов нет. Они должны комби- нироваться соответственно с С4В2А2, С4В2А2, С4В2А2 и С5В2А2. 05048242.
З2. ЗЗа>. ЗЗа2(Л>. ЗЗа4(Л). ЗЗаб(Л>. ЗЗаВ(Л>. ЗЗа>0, ЗЗЬ(Л>, Ззс(Л). Ззс2(Л>. 34(Л), 34 2(Л). 34 3(П). 34 5(Л>. 34.7(>(ОЛОСТ). 34.8. 34.12 06С48242: 32. Зза1. Зза2(Л>. Зза4(Л>. Ззаб(Л>. ЗзаВ(Л>. Зза10.
ЗЗЬ(П). Ззс(Л>. Ззс2(Л).34(Л>, 34 2(Л). 34.3(Л), 34.5(Л). 34.7(ГЛЯВЯ). 34 9. 34.12 07С482Я2: 32. Зза1. Ззаз(л>. Зза4(Л). Ззаб(Л). ЗзаВ(Ш . Зза!0. ЗЗЬ(Л). Ззс(Л>. Ззс2(Л). 34(Л). 34.2(л>. 34.3(Л), 34 5(Л), 34.7(СОВНЕСТНО). 34.10. 34.12 ОВС58242: 32. Зза1. Зза2(Л). Зза4(Л). Ззаб(Л). Зза8(П), Зза10.
ЗЗЫЛ). Ззс(И>, Ззс1(Л). Ззс4(Л>. 34(Л>. 34.2(Л). 34.3(Л>. 34.5(Л), 34.7(РЯЗЙЕЛЬНО>. 34 11. 34.12 У нас есть три варианта для Р4. В данный момент я возьму вариант С1, приводящий к 04С1В2А2. 04С182Я2. 32. Зза!. Зза2(Л>, Зза4(Л>, ЗзабСЛ). ЗзаВ(Л). Зза!0.
ЗЗЫЛ). Ззс(Л>. Ззс2(и>. Ззсз. 34(Л). 34.2(Л>. 34.3(Л>. 34 5(И). 34.5. 34 12 В этом месте мы еще должны включить А1, В1, С2, СЗ, Р1, Г>2 и Г)З. Г>3 может сочетаться только с комбинацией В1А2, поэтому давайте скомбинируем В1А2 с СЗ, для того чтобы получить в итоге СЗВ1А2 с РЗ. ОЗСЗВ142 32. Зза1. Зза2(Л). Зза4(Л>, Ззаб(Л), Зза8(Л>, Зза10, ЗЗЫИ>. ЗЗЫ, Ззс(И>. Ззсыл). Ззс4(И). Ззсз, 34(П>. 34.2(Л>, 34.3(И), 34.4, 34 12 Сейчас мы должны включить А1, С2, Р! и Р2.
Р2 не комбинируется с С2, поэтому давайте скомбинируем ее с СЗВ2А1. 02СЗВ241 32, Зза1. Зза2(И). Ззаз. Зза4(И>, Зза5. Ззаб(И). Зза7. Зза8(И). Зза9, Зза 10. ЗЗЬ(Л>. Ззс(И>, Ззс1(Л>. Ззс4(и>. Ззсз, 34(л). 34.2(И), 34.4. 34.12 3.4. (Иетодика 83 В итоге закончим мы следуюшнм путем: 01018141 32, ЗЗа! 33а2(И).
33аЗ. ЗЗа4(И). ЗЗаб. ЗЗаб(И) 33а). ЗЗа8(И). ЗЗа9. ЗЗа 10. ЗЗЫИ), ЗЗЫ . 33с(0). 33с2(И). ЗЗсЗ 34(и). 34 1, 34.12 У нас не было вариантов для путей Е)5-4)8. Если бы у нас были варианты, как и в случае Р1 — Е)4, выбор комбинаций основывался бы на нескольких критериях, Нам необходимо было бы учитывать прошлую историю ошибок, насколько трудно было анализировать комбинацию (выберите сложную комбинацию, так как если у вас есть проблемы, то они могут быть и у программиста), как много исследований мы должны были сделать для прояснения проблемы (выберите комбинацию, требующую больших исследований).
Также пришлось бы опираться на интуицию и знание образа работы ответственного программиста. В качестве упражнения закончите выбор пути от узла 34.12 к узлу 40. У нас есть восемь тестов вплоть до узла 84.12. Узел 34.13 добавит только один тест. Узел 36 не добавит никаких тестов (почему?), Узел 38 добавит два теста. Оставшиеся предикаты не нуждаются в тестировании. Таким образом, похоже, что мы можем добиться покрытия связи за 11 тестов. Так как я этого не делал, я могу ошибаться. Однако когда мы будем активизировать эти тесты, возможно, придется вернуться назад и добавить другие тесты. на рассмотренный пример выбора пути (изложенный выше) я потратил семь часов. Может быть, я более опытен, чем вы, но мне пришлось его объяснять.
Предыдуший пример не труднее, чем кажется. Вам следует его выполнить примерно за то же самое время. 3.4.4. Активизация 3.4.4.1. Основы Активизация. Поиск входных значений, при которых (в случае отсутствия в реализации ошибок) в модели будет пройден выбранный путь. Большая часть тех процедур, которые описывались в предыдушем разделе, являлись активизацией логики в моделях.
Процедура активизации зависит от предикатов, встречаюшихся в рассматриваемом пути. Если предикаты в большинстве своем логические, как это было в предыдушем разделе, тогда активизация и выбор пути осушествляются одновременно. Если предикаты в большинстве своем численные (то есть алгебраические), то данные процедуры различаются, что описывается в подразделе «Алгебраическая активизация». Знание приложения важнее знания алгоритма активизации.
Знание того, что приложение будет делать в том или ином случае, сушественно для определения набора путей, обеспечивающих полное покрытие, и входных значений для их активизации. Я уверен, что если бы мы были экспертами в области налогообложения, нам было бы гораздо легче найти для предыдушего примера набор путей, обеспечиваюших покрытие.
Прежде чем вы потратите силы и время на активизацию, запустите простейшие тесты вашей модели и убедитесь, что она обеспечивает покрытие связей. После этого у вас останется совсем немного мудреных путей, требуюших для активизации применения формальных методов. 84 Глава 3 ° тестирование потока управления Если при активизации пути возникли непреодолимые трудности, то оии могут объясняться одной из следующих причин: путь непрохолим, модель содержит ошибки или спецификация содержит ошибки. Проверьте эти предположения, прежде чем потратить массу времени иа бесполезную работу. 3.4.4.2. Логическая активизация Ниже приведен обзор процедур, которые мы должны сделать для выбора (и активизации) пути.
1. Разбейте модель иа сегменты, начинающиеся и заканчивающиеся иа одиночном узле. В примере, приведенном в разделе ЗА.З «Выбор путей тестирования», такими сегментами были: 32 — 33а4, ЗЗа4 — ЗЗа6, 33а6-33а8, ЗЗа8- ЗЗЬ, ЗЗЪ-ЗЗс, ЗЗс-34, 34-34.12, 34.13-35, 35-37, 37-38, 39-39.3, 39.3-40. 2. Исследуйте сегменты и предикаты в иих иа предмет корреляции предикатов. Проводите проверку олиовременно двух сегментов. Составьте список сегментов, содержащих коррелироваииые преликаты.