Что такое тестирование ортогональными массивами?

Тестирование ортогональными массивами (Orthogonal Array Testing, OAT) использует математические структуры — ортогональные массивы — для генерации тестовых наборов. Эти массивы гарантируют, что каждая пара значений параметров появляется одинаковое число раз во всех тест-кейсах, обеспечивая сбалансированное, равномерное покрытие.

Истоки: Метод Тагути

OAT произошёл из метода Тагути в инженерии качества производства. Доктор Генити Тагути разработал ортогональные массивы для эффективного тестирования влияния множества факторов на качество продукта. Тестирование ПО заимствовало эту технику для комбинаторного тест-дизайна.

Понимание ортогональных массивов

Ортогональный массив — это матрица, где:

  • Строки = тест-кейсы
  • Столбцы = параметры (факторы)
  • Значения = уровни каждого параметра

Ключевое свойство: для любых двух столбцов каждая возможная пара значений появляется одинаковое число раз.

Нотация: L_n(k^f)

  • L = латинский квадрат (тип массива)
  • n = число строк (тест-кейсов)
  • k = число значений параметра (уровней)
  • f = число параметров (факторов)

Пример: L4(2^3) — 4 тест-кейса, 3 параметра, 2 значения каждый

ТестP1P2P3
1000
2011
3101
4110

Проверьте любые два столбца: каждая пара (0,0), (0,1), (1,0), (1,1) появляется ровно один раз.

Распространённые ортогональные массивы

МассивТестовПараметровЗначенийИсчерпывающее
L4(2^3)4328
L8(2^7)872128
L9(3^4)94381
L16(2^15)1615232 768
L18(3^7)18732 187
L25(5^6)256515 625

OAT vs. Попарное тестирование

АспектOATПопарное
ПокрытиеКаждая пара появляется одинаковоКаждая пара появляется хотя бы раз
БалансИдеально сбалансированоМожет быть несбалансированным
ГибкостьФиксированные размеры массивовАдаптивно к любому числу параметров
Смешанные значенияСложнее при разных уровняхЛегко справляется
ОптимальностьМатематически оптимальноПочти оптимально (эвристика)

Выбор правильного массива

Шаг 1: Подсчитайте параметры и значения каждого. Шаг 2: Найдите наименьший стандартный массив, который подходит. Шаг 3: При разном числе значений используйте массивы смешанного уровня.

Продвинутые техники OAT

Реальный пример: Совместимость браузеров

Параметры: Браузер (3), ОС (3), Разрешение (3), Язык (3)

Используя L9(3^4):

ТестБраузерОСРазрешениеЯзык
1ChromeWindows1080pEN
2ChromemacOS1440pES
3ChromeLinux4KRU
4FirefoxWindows1440pRU
5FirefoxmacOS4KEN
6FirefoxLinux1080pES
7EdgeWindows4KES
8EdgemacOS1080pRU
9EdgeLinux1440pEN

9 тестов вместо 81. Каждая пара значений из любых двух параметров появляется ровно один раз.

Массивы смешанного уровня

Когда параметры имеют разное число значений, используйте ортогональные массивы смешанного уровня:

L18(2^1 x 3^7): 18 тестов для 1 бинарного параметра + 7 параметров с тремя уровнями.

Сила выше 2

Стандартный OAT обеспечивает силу 2 (все пары). Массивы более высокой силы покрывают тройки, четвёрки:

  • Сила 2: Каждая пара покрыта → ловит дефекты 2-way взаимодействий
  • Сила 3: Каждая тройка покрыта → ловит дефекты 3-way взаимодействий

Большая сила = больше тестов, но обнаруживает более редкие дефекты взаимодействий.

Упражнение: Примените OAT к тесту конфигурации

Сценарий: Нужно протестировать конфигурацию БД:

  • Движок БД: MySQL, PostgreSQL, SQLite (3)
  • Connection Pool: 5, 20, 100 (3)
  • Кэш: Включён, Выключен, Частичный (3)
  • Логирование: Debug, Info, Error (3)

Задания:

  1. Какой ортогональный массив подходит?
  2. Сколько тест-кейсов он генерирует vs. исчерпывающее?
  3. Заполните матрицу тестов используя L9(3^4)
  4. Убедитесь, что любые два столбца содержат все 9 пар ровно по одному разу
Подсказка

4 параметра x 3 значения = L9(3^4). Исчерпывающее = 3^4 = 81. Сопоставьте стандартный L9 с вашими конкретными значениями параметров.

Решение

Массив: L9(3^4) — 9 тестов вместо 81 (89% сокращение).

ТестДвижок БДPoolКэшЛогирование
1MySQL5ВключёнDebug
2MySQL20ВыключенInfo
3MySQL100ЧастичныйError
4PostgreSQL5ВыключенError
5PostgreSQL20ЧастичныйDebug
6PostgreSQL100ВключёнInfo
7SQLite5ЧастичныйInfo
8SQLite20ВключёнError
9SQLite100ВыключенDebug

Каждая пара из любых двух столбцов появляется ровно один раз.

Советы профессионала

  • Используйте OAT когда важен баланс. Если нужно статистически анализировать, какой фактор вызывает отказы, сбалансированный дизайн OAT незаменим.
  • Комбинируйте с BVA для выбора значений. OAT определяет комбинации параметров; BVA — конкретные значения для каждого уровня.
  • Переходите к попарному для нерегулярных наборов. При 12 параметрах с разным числом значений PICT практичнее, чем поиск подходящего ортогонального массива.
  • Знайте стандартные массивы. L4, L8, L9, L16, L18, L25, L27 покрывают большинство практических сценариев.
  • OAT снижает затраты при тестировании оборудования. Когда каждый тестовый прогон стоит реальных денег, математическая оптимальность OAT экономит бюджет.