Построение безусловных тестов
В этом отношении более простыми являются безусловные тесты, в которых очередность проверок задана жестко. Причем различают безусловные тесты с безусловной остановкой и безусловные тесты с условной остановкой. В первых из них количество элементарных проверок теста не зависит от действительного состояния объекта, а во втором – зависит, т.е. как только действительное состояние объекта определено, дальнейшее тестирование прекращается. Но в этом случае анализ результатов тестирования должен производиться после каждого шага, т.е. после каждой очередной проверки, тогда как в первом случае можно производить анализ результатов тестирования после окончания всего теста.
Очевидно, что обе разновидности безусловного теста могут быть построены тем же методом. Отличие от построения условного теста будет только в том, что независимо от того, к какой ветви дерева состояний принадлежит действительное состояние объекта нельзя повторно использовать одни и те же проверки.
Рассмотрим на том же примере синтез безусловных тестов и оценим стоимость тестирования.
При синтезе безусловного теста с безусловной остановкой критерием оптимального теста является его минимальная длина (минимальное количество элементарных проверок) при минимальной стоимости самих проверок. Учитывать при этом вероятности отдельных состояний объекта нет смысла.
Чтобы тест получился минимальной длины необходимо в качестве первой выбрать такую проверку, где количество нулей и единиц примерно одинаково, т.е. данная проверка должна разделять все возможные состояния на две примерно равных по численности группы (а не по их суммарной вероятности, как было при синтезе условных алгоритмов). При этом, если этому критерию отвечают несколько проверок, то из них необходимо выбрать самую дешевую. Очевидно, что вторая проверка должна выбираться так, чтобы делить каждую группу тоже примерно на две части тоже с учетом ее стоимости и т.д.
Следуя этому критерию, в качестве первой должна быть взята проверка, содержащая 5 или 6 единиц (т.к. всего состояний 11). Таких проверок 5: p6, p7, p9, p11 и p12. Очевидно должна быть выбрана самая дешевая из них, т.е. p6. Она разделит все множество состояний на две группы: 1:(S1, S4, S5, S8, S10) и 0: (S2, S3, S6, S7, S9,S11).
Следующая проверка должна разделять каждую из этих групп тоже на примерно равные части. Для наглядности перепишем таблицу состояний, сгруппировав все состояния в указанные две группы и вычеркнув проверку p6. Получим табл. 3.3. Поскольку первая группа содержит 5 состояний, а вторая 6, то, очевидно наилучшими будут проверки содержащие по три единицы в каждой группе или в первой группе две единицы, а во второй три.
Таблица 3.4
Таблица состояний после первого шага.
Si | S1 | S4 | S5 | S8 | S10 | S2 | S3 | S6 | S7 | S9 | S11 | Сj |
p1 | ||||||||||||
p2 | ||||||||||||
p3 | ||||||||||||
p4 | ||||||||||||
p5 | ||||||||||||
p7 | ||||||||||||
p8 | ||||||||||||
p9 | ||||||||||||
p10 | ||||||||||||
p11 | ||||||||||||
p12 | ||||||||||||
p61 |
Из табл. 3.3 видно, что таких проверок 4: p7, p9, p11 и p12. Очевидно надо выбрать проверку p7 как самую дешевую. По ее результатам разделим каждую группу на две подгруппы и, в соответствии с этим перепишем таблицу состояний (см. Табл. 3.4).
Таблица 3.4.
Таблица состояний после второго шага.
Si | S1 | S8 | S10 | S4 | S5 | S2 | S6 | S7 | S3 | S9 | S11 | Cj | |||||||||
p1 | |||||||||||||||||||||
p2 | |||||||||||||||||||||
p3 | |||||||||||||||||||||
p4 | |||||||||||||||||||||
p5 | |||||||||||||||||||||
p8 | |||||||||||||||||||||
p9 | |||||||||||||||||||||
p10 | |||||||||||||||||||||
p11 | |||||||||||||||||||||
p12 | |||||||||||||||||||||
p7 | |||||||||||||||||||||
p6 | |||||||||||||||||||||
Теперь все состояния оказались разделенными на 4 подгруппы, три из которых содержат по 3 состояния, а четвертая – два. Очевидно, что третья проверка должна каждую из этих подгрупп делить на две части. Этому условию отвечают проверки: p1, p2, p11. Выбираем самую дешевую – p1 и, в соответствии с ее результатами переписываем таблицу состояний (см. табл. 3.5).
После третьего шага у нас остается только три подгруппы из двух состояний, все остальные подгруппы содержат лишь по одному состоянию. Следовательно четвертая проверка должна в этих трех подгруппах содержать только по 1 единице. Таких проверок нет. Следовательно построить тест, содержащий только 4 проверки не удается, хотя в принципе это было бы возможно, если бы такая проверка нашлась. Поэтому возьмем такую проверку, которая содержит по одной единице хотя бы в двух
Таблица 3.5
Таблица состояний после третьего шага.
Si | p2 | p3 | p4 | p5 | p8 | p9 | p10 | p11 | p12 | p6 | p7 | p1 |
S1 | ||||||||||||
S10 | ||||||||||||
S8 | ||||||||||||
S5 | ||||||||||||
S4 | ||||||||||||
S2 | ||||||||||||
S6 | ||||||||||||
S7 | ||||||||||||
S3 | ||||||||||||
S9 | ||||||||||||
S11 | ||||||||||||
Cj |
\подгруппах. Это проверки: p2, p4, p5, p9, p10 и p12. Выбираем самую дешевую – p2. Она разделяет (S1,S10) и (S2,S6). Неразделенной остается лишь подгруппа (S3,S9). Ее разделяют проверки p4, p10, p11, p12. Выбираем в качестве последней проверки самую дешевую из них – p4. Итак, тест построен, он содержит пять проверок: p6, p7, p1, p2 и p4.
Опознавателями диагностируемых состояний являются результаты этих проверок. Они сведены в таблицу 3.6.
Как видим стоимость тестирования с помощью безусловного теста получилась гораздо выше, чем средняя стоимость тестирования с помощью условного теста (без учёта стоимости разработки теста).
Таблица 3.6.
Опознаватели диагностируемых состояний.
Si | p6 | p7 | p1 | p2 | p4 | |
S1 | ||||||
S2 | ||||||
S3 | ||||||
S4 | ||||||
S5 | ||||||
S6 | ||||||
S7 | ||||||
S8 | ||||||
S9 | ||||||
S10 | ||||||
S11 | ||||||
Cj | ||||||
åCj | ||||||
Поскольку тест в нашем случае на одну проверку длиннее, чем минимально необходимо (для получения 11 различных двоичных комбинаций минимально необходимо 4 двоичных разряда), то имеет смысл проверить, не окажется ли дешевле тест, получаемый с помощью самых дешёвых проверок, даже если он окажется ещё длиннее. Поэтому попробуем составить тест из самых дешёвых проверок p1, p2, p3, p4 , …
Проведем для этого аналогичные разбиения исходной таблицы состояний, ограничившись первыми восемью проверками. После первого шага таблица будет иметь вид (см. табл. 3.7).
Таблица 3.7
Разбиение таблицы состояний после первого шага (проверка p1).
Si | p2 | p3 | p4 | p5 | p6 | p7 | p8 | p1 |
S1 | ||||||||
S2 | ||||||||
S3 | ||||||||
S5 | ||||||||
S6 | ||||||||
S9 | ||||||||
S10 | ||||||||
S4 | ||||||||
S7 | ||||||||
S8 | ||||||||
S11 |
Таблица 3.8
Разбиение таблицы состояний после второго шага (проверка p2).
Si | p3 | p4 | p5 | p6 | p7 | p8 | p1 | p2 |
S1 | ||||||||
S2 | ||||||||
S3 | ||||||||
S5 | ||||||||
S9 | ||||||||
S6 | ||||||||
S10 | ||||||||
S7 | ||||||||
S8 | ||||||||
S4 | ||||||||
S11 |
Таблица 3.9
Разбиение таблицы состояний после третьего шага (проверка p3)
Si | p4 | p4 | p6 | p7 | p8 | p1 | p2 | p3 |
S1 | ||||||||
S3 | ||||||||
S9 | ||||||||
S2 | ||||||||
S5 | ||||||||
S6 | ||||||||
S10 | ||||||||
S7 | ||||||||
S8 | ||||||||
S4 | ||||||||
S11 |
Таблица 3.10.
Разбиение таблицы состояний после четвертого шага
(проверка p4).
Si | p5 | p6 | p7 | p8 | p1 | p2 | p3 | p4 |
S1 | ||||||||
S9 | ||||||||
S3 | ||||||||
S2 | ||||||||
S5 | ||||||||
S6 | ||||||||
S10 | ||||||||
S7 | ||||||||
S8 | ||||||||
S4 | ||||||||
S11 |
Таблица 3.11
Разбиение таблицы состояний после пятого шага (проверка p5)
Si | p6 | p7 | p8 | p1 | p2 | p3 | p4 | p5 |
S1 | ||||||||
S9 | ||||||||
S3 | ||||||||
S2 | ||||||||
S5 | ||||||||
S6 | ||||||||
S10 | ||||||||
S7 | ||||||||
S8 | ||||||||
S4 | ||||||||
S11 |
Таким образом, и в этом случае мы получили тест длинной в 5 проверок, но поскольку это самые дешевые проверки, то и стоимость тестирования будет ниже, чем в предыдущем случае:
С=Сp1+ Сp2+ Сp3+ Сp4+ Сp5=22+25+27+31+35=140
Очевидно, что из любого безусловного теста с безусловной остановкой может быть получен безусловный тест с условной остановкой. Но чтобы подсчитать его эффективность надо учитывать вероятности отдельных состояний, которые не принимались в расчет при построении безусловных тестов с безусловной остановкой. Поэтому полученные из них тесты с условной остановкой не будут самыми эффективными. Тем не менее выигрыш в стоимости тестирования мы и в этом случае должны получить.
Действительно для первого из построенных тестов средняя стоимость тестирования составит
Cср=(Cp6+Cp7+Cp1)×(p8+p5+p4+p7+p11)+(Cp6+Cp7+Cp1+Cp2)×(p1+p10+p2+p6)+(Cp6+Cp7+Cp1+Cp2+Cp4)×(p3+p9);
Cср=(38+43+22)×(0.0238+0.0406+0.0045+0.0031+0.0012)+(38+43+
+22+25)×(0.7713+0.0857+0.0061+0.0018)+(38+43+22+25+31)×
(0.058+0.0026)=103×0.0732+128×0.8649+159×0.0606=7.54+110.7+
+7.76=126
А для второго теста
Cср=(Cp1+Cp2+Cp3)×(p7+p8)+(Cp1+Cp2+Cp3+Cp4)×(p3+p4+p11)+(Cp1+Cp2+Cp3+Cp4+Cp5)×(p1+p9+p2+p5+p6+p10)=(22+25+27)×(0.0045+0.0031)+(22+25+27+31)×(0.0580+0.0406+0.0012)+(22+25+27+31+35)×(0.7713+0.0026+0.0857+0.0238+0.0061+0.0018)=74×0.0071+105×0.0998+140×0.8913=0.525+10.48+124.78=135.8
Отсюда видно, что хотя стоимость тестирования для первого теста с безусловной остановкой выше, чем для второго (соответственно 159 и 140), но у построенных из них тестов с условной остановкой соотношение средних стоимостей тестирования будет обратной (126 и 135.8), хотя ни тот, ни другой не будут наиболее эффективными, т.к. при их построении не учитывались вероятности диагностируемых состояний объекта.
При построении всех указанных тестов мы фактически отошли от метода ветвей и границ, поскольку ни в одном из них не рассчитывались нижние границы стоимости каждого рассматриваемого варианта с перебором всех возможных комбинаций на каждом шаге теста, которые весьма громоздки и даже для простого примера требуют использования ЭВМ. Вместо этого на каждом шаге построения теста использовались некоторые функции предпочтения при выборе очередной проверки. Так при построении условного теста для этого использовались критерии минимизации длины тестовых последовательностей для идентификации наиболее вероятных состояний объекта и предпочтительность использования проверок с минимальной стоимостью. При построении безусловных тестов это был критерий минимизации общей длины теста, при предпочтительности проверок с минимальной стоимостью. Методы построения тестов, которые на каждом шаге вместо перебора всех возможных вариантов используют определенные функции предпочтения, называют инженерно-логическими методами построения тестов.
Дата добавления: 2017-03-29; просмотров: 538;