Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прикладна теорія надійності.doc
Скачиваний:
18
Добавлен:
18.09.2019
Размер:
500.74 Кб
Скачать

6. Поняття тесту. Основні методи побудови тестів.

2. Тестовий контроль

Нагадаємо про основну відміну тестового контролю від функціонального: тестування здійснюється у спеціальному режимі, коли об’єкт не виконує своїх робочих функцій, і метою тестування є не виявлення (виправлення) помилок, а визначення технічного стану об’єкту. Результатом тестування є висновок типу: “Об’єкт працездатний/непрацездатний”, “в об’єкті несправний блок (модуль) №...”. Найбільш суттєвою є відмінність кінцевої мети контролю: при функціональному визначається правильність виконання об’єктом в даний момент своїх функцій, при тестовому – наявність чи відсутність несправностей.

Чому ця відміна є принциповою? Справа в тім, що визначення технічного стану об’єкту на основі перевірки правильності виконання ним своїх функцій для більшості цифрових пристроїв практично не може бути реалізовано. Для прикладу уявімо собі, що потрібно перевірити правильність виконання функції складання звичайним калькулятором. Для цього, строго кажучи, ми повинні складати по черзі всі можливі доданки, наприклад, довжиною 8 десяткових розрядів. Це означає, що нам потрібно виконати 1016 додавань тільки для того, щоб на 100% переконатися в правильності виконання калькулятором тільки функції складання.

Нескладний підрахунок показує, що якщо на кожне складання ми будемо витрачати 1 сек., то вся перевірка займе 3108 років (!). Зрозуміло, що цей приклад трохи штучний, адже перевірку можна проводити і в автоматичному режимі. Тоді при швидкості в 108 операцій/сек перевірка буде проведена лише за 3 сек. Але ж це тільки функція складання, а об’єкт перевірки – лише простий калькулятор.

А що робити, коли необхідно протестувати сучасний комп’ютер або комп’ютерну мережу? Основна “ідеологія” тестового підходу полягає в переході від перевірки функцій до перевірки технічного стану обладнання, тобто наявності чи відсутності несправностей.

Перед тим, як перейти до методів побудови тестів, з’ясуємо вплив наявності несправності на функції цифрового пристрою. Розглянемо спочатку прості приклади. На рис. 2.10 показана вентильна реалізація схеми “І” (а – справної схеми, б –схеми, в якій в колі змінної стався обрив). Як бачимо із таблиці 2.3, несправність змінює функцію, яку реалізує схема.

Рис. 2.10.

Таблиця 2.3.

0

0

0

0

0

0

0

1

0

0

0

1

0

0

0

0

1

1

0

1

1

0

0

0

0

1

0

1

0

0

1

0

1

0

0

1

1

1

1

1

Як виявити саме цю несправність, не перебираючи на входах всі вісім наборів перемінних? Очевидно, досить подати набір і, якщо , то цієї конкретної несправності (обриву по ) немає, а якщо , то є. Набір 011 – це тест, який виявляє задану несправність. Такий тест називають перевіряючим (або контролюючим).

Розглянемо тепер аналогічний приклад для схеми “АБО” (рис.2.11 та табл. 2.4).

Для цієї схеми і для заданої несправності (обрив в колі ) перевіряючим тестом буде набір (100). Для інших несправностей із фізичних та інтуїтивних міркувань неважко знайти відповідні тестові набори, а потім об’єднати їх в одну тестову послідовність (до речі, цю послідовність здебільшого називають тестом). У більшості випадків один тестовий набір виявляє більше, ніж одну несправність, тому довжина загальної тестової послідовності (тесту) практично завжди значно менше суми тестових наборів.

Рис. 2.11.

Таблиця 2.4.

0

0

0

0

0

0

0

1

1

1

0

1

0

1

1

0

1

1

1

1

1

0

0

1

0

1

0

1

1

1

1

1

0

1

1

1

1

1

1

1

У загальному випадку перевіряючим тестом для заданої несправності називається такий вхідний вплив, що вихідна реакція об’єкту на нього різна при наявності і відсутності .

Як бачимо, цьому визначенню цілком відповідає набір 011 для схеми рис. 2.10 та 100 для схеми рис. 2.11. Підкреслимо, що кожен тестовий набір будується для кожної заданої несправності.

У більшості випадків нас цікавить не тільки наявність чи відсутність несправностей, але й те, яка саме несправність має місце. У цих випадках застосовують діагностичні тести, ідея побудови яких також сама, але додатково накладається вимога: вихідні реакції об’єкту для різних несправностей повинні бути різними.

Із цього витікає, що передумовою для побудови тестової послідовності є необхідність попередньо задати (перелічити) конкретні несправності, які повинна виявляти тестова послідовність. Розглянемо цю особливість уважніше.

В наведених заздалегідь спрощених прикладах ми задалися найбільш примітивними несправностями типу обрив. Аналогічним чином можна було б задати короткі замикання на входах чи виходах схеми, або навіть в електрорадіоелементах, що не мають безпосередніх електричних зв’язків ні з входами, ні з виходами. Очевидно, що такі примітивні несправності не вичерпують всього різноманіття дефектів і порушень працездатності сучасних цифрових компонентів. Якщо перейти до компонентів реальної складності, наприклад, великих інтегральних схем (ВІС), де кількість еквівалентних вентилів може досягати десятків тисяч, враховуючи інші типи несправностей (зміна провідності, пробої діелектричних шарів, коливання затримок при проходженні сигналів, тощо), то кількість несправностей, яку необхідно задати при побудові тесту, стає занадто великою навіть для комп’ютерних програм. До того ж, реальні несправності можуть бути не тільки однократні, але й 2-кратні, 3-кратні і т.д. Все це обмежує сферу застосування методів, які вимагають переліку несправностей, відносно простими об’єктами.

Але в розглянутому підході, який називають алгоритмічним, є й принципова перевага перед іншими методами – це його “детермінованість” в тому розумінні, що всі задані несправності із 100-відсотковою достовірністю виявляються тестовою послідовністю. Про інші (такі, що не задані) несправності, зрозуміло, нічого сказати не можна.

Повертаючись до змісту алгоритмічного підходу зазначимо, що для інших логічних елементів, як і для схеми “І” та “АБО”, так само не виникає жодних проблем при пошуку тестового набору для будь-якої несправності типу обрив або коротке замикання. Враховуючи, що елементи ”І-НІ” та “АБО-НІ” є базовими в тому розумінні, що на них можна реалізувати будь-яку логічну функцію, задачу побудови тестів можна було б вважати розв’язаною. Але, на жаль, це не так. Справа в тім, що несправний вентиль у більшості випадків знаходиться всередині пристрою або компоненту (ІС), і до його входів та виходів немає доступу, тобто можливість безпосередньо подати на його входи тестові сигнали і спостерігати реакцію на ці сигнали відсутня.

Класичні методи побудови тестів базуються на процедурах активізації шляхів до доступних входів і виходів об’єкта. Ідею активізації можна пояснити так. На рис. 2.12 зображений фрагмент пристрою, в якому на вентиль подаються тестові сигнали.

Рис. 2.12.

До виходу немає безпосереднього доступу, значення сигналу на ньому можна спостерігати лише “крізь” елементи . Для цього потрібно забезпечити їх “прозорість” в тому розумінні, що будь-яка зміна сигналу повинна транспортуватись без перешкод до кінцевого виходу пристрою, доступного для спостереження. Це можна зробити, подавши на входи відповідні сигнали, значення яких визначаються із рівняння (для вентиля )

,

Це булава похідна по змінній функції , яку реалізує .

Для елемента “І”

і

Розв’язком цього рівняння буде

; ;... ; ;..., ,

тобто для “прозорості” елемента “І” на всі його входи (крім ) потрібно подати одиничні сигнали.

Для елемента “АБО”

; ;... ; ;..., .

Провівши аналогічні обчислення і подавши відповідні сигнали на , ми забезпечимо “прозорість” всього шляху до кінцевого виходу для інформації від елемента, що перевіряється. Це і є активізація шляху .

Наступним кроком є забезпечення подачі на входи необхідних тестових сигналів. І знову виникає проблема – до цих входів немає безпосереднього доступу. Але розв’язується вона досить просто, а саме, відповідним визначенням функцій, які формують сигнали для , і довизначенням їх для тих входів, які активізують шляхи до .

Найбільш популярним серед алгоритмічних методів до цього часу залишається -алгоритм Рота [ ], який базується на ідеї активізації всіх можливих шляхів від місця можливої несправності до всіх доступних для спостереження виходів пристрою. Цей алгоритм є складовою більшості програмних пакетів, призначених для побудови тестів.

У цьому посібнику немає можливості докладно зупинитися на деталях алгоритму, але ще раз зазначимо, що будь-який алгоритмічний метод принципово потребує переліку в тому, чи іншому вигляді несправностей, які потрібно виявляти. Ця вимога може бути виконана лише відносно так званих константних несправностей, тобто таких, які еквівалентні заміщенню булевих змінних константами 0 або 1, а на фізичному рівні – обривам або коротким замиканням. Оскільки несправності інших типів для сучасних інтегральних компонентів мають далеко не нульову ймовірність, то застосування алгоритмічних методів обмежується здебільшого пристроями на дискретній елементній базі, релейними схемами тощо. В той же час тести, побудовані за такими методами, можуть бути використані як “стартові”, які згодом, в процесі застосування доповнюються додатковими тестовими наборами, які виявляють ті несправності, які не були виявлені.

Треба також зауважити, що тести є програмним продуктом, і фірми, що поставляють його на ринок, із зрозумілих причин не розголошують методи побудови ефективних тестів. Враховуючи ці обставини, можна вважати, що задача побудови тестів в значній мірі залишається відкритою і в конкретних випадках (для апаратури конкретного класу) існує багато варіантів її розв’язання не основі інтуїтивних підходів або комп’ютерного моделювання несправностей і експериментального пошуку таких вхідних сигналів, які їх виявляють.