окремих елементів перевіряється системи або тестового набору та інші характеристики.
. Модульність. Такі техніки використовують виділення в тестовій системі модулів, що мають певні області відповідальності. Модулі вкрай необхідні для організації повторного використання і підвищення зручності супроводу складних тестових наборів.
. Кваліфікатори
Найбільш простий спосіб внесення додаткової структури в тестовий набір заснований на визначенні декількох видів міток або кваліфікаторів і їх використанні в коді тестів або в якості декларативних описателей тестів.
декларативний кваліфікаторами зручно користуватися для класифікації тестів за кількома аспектами, наприклад, по перевіряється вимогам і ураженим елементам тестованої системи. Виділити групи тестів так, щоб вони об'єднували тести з обом цим ознаками відразу, найчастіше неможливо. Тому краще перетворити тестовий набір в свого роду базу даних про тестах, де додаткові кваліфікатори буду грати роль атрибутів тіста і дозволять виділяти підмножини тестів з практично довільним ознаками.
Крім зв'язків з вимогами та елементами тестованої системи у вигляді кваліфікаторів можна представляти класифікацію тестів за цілями, видами проведеного тестування, за складністю або за іншими ознаками.
кваліфікатора-мітки зазвичай більш зручні для виділення статичної інформації про тести, однак іноді такі мітки в коді тестів можуть використовуватися і для визначення ряду характеристик тесту в динаміці, під час його виконання. Наприклад, тест може бути націлений на досягнення певної ситуації або мети тестування, що можна вказати декларативним кваліфікатора, але в ході тестування така ситуація не завжди виникає через недетермінізма поведінки тестованої системи або помилок в ній. Щоб уміти визначати, виникала чи ні ця ситуація в ході тестування, досить забезпечити скидання в трасу з коду тесту певної мітки в той момент, коли це стає ясно.
. Конфігураційні параметри
Інший вид структуризації тестових наборів - визначення і використання деяких конфігураційних параметрів, що керують ходом тестування, набором підключаються компонентів і виконуваними перевірками.
У багатьох випадках достатньо статично встановлюваних конфігураційних параметрів, значення яких заносяться в конфігураційні файли або передаються запускає тестової набір програмою в якості аргументів.
Такі параметри можуть визначати глибину проведеного тестування, набір виконуваних тестів (наприклад, використовуючи деякий позначати їх кваліфікатор), обсяг проведення перевірок - деякі перевірки в тестах можна позначати як опціональні і виконувати, тільки якщо виставлено відповідне значення деякого параметра.
Більшої гнучкості управління тестовим набором можна домогтися, використовую динамічно встановлювані конфігураційні параметри, хоча вони дещо підвищують складність аналізу та супроводу тестового набору. Наведемо два приклади їх використання.
Такий параметр може своїм значенням визначати присутність або відсутність в системі певної функціональності, оголошеної в стандарті опціональною. Якщо включення цієї функціональності пов'язано з використанням певних конфігураційних параметрів самої тестованої системи або може бути виявлено за допомогою простої перевірки, спеціальний модуль тесту може на початку його роботи визначити потрібне значення відповідного параметра тіста і виставити його. При подальшому виконанні тестів значення такого параметра просто використовується, як якби він був статичним.
При цьому виникає додатковий модуль тестової системи, детектор конфігурації, що працює до запуску основних тестів і виявляє поточну конфігурацію тестованої системи.
Інше використання динамічних параметрів пов'язано з підвищенням зручності аналізу результатів тестування складної системи.
У таких системах часто бувають функції, ретельне тестування яких вимагає виконання досить складних сценаріїв, в яких важко розібратися, якщо виникає якась помилка. Прикладами такої функціональності є межпроцессное взаємодія в операційних системах і залежна від багатьох факторів обробка заголовків телекомунікаційних протоколів. Помилка, пов'язана з повною непрацездатністю такої функції, може зробити результати виконання складних тестів для неї зовсім незрозумілими - зазвичай буває ясно, що помилка є, але більш точна її локалізація вимагає значних зусиль.
Щоб уникнути подібних витрат можна випереджати виконання складних тестів різних аспектів такої функціональності простими тестами на працездатність функції в цілому. Складні тести повинні виконуватися тільки в тому випадку, якщо передували їм прості не знайшли помилок.