3,583 papers
arXiv:2510.03641 76 4 окт. 2025 г. FREE

GHL (Generating High-Level test cases): двухшаговая генерация тест-кейсов без RAG

КЛЮЧЕВАЯ СУТЬ
Индустрия создаёт RAG (retrieval-augmented generation) для генерации тест-кейсов — база знаний под каждую предметную область, от бухгалтерии до автомобильных систем. Трудоёмко. GHL позволяет получить полный охват сценариев (recall 0.84) через 2 промпта, без создания базы знаний. Фишка: разделить задачу на выбор методов и применение. Шаг 1 — модель сама выбирает подходящие техники тестирования из стандарта ISO 29119-4 (boundary value analysis, state transition testing, таблицы решений...). Шаг 2 — для каждой техники отдельный запрос с изолированной генерацией тест-кейсов. Итог: 70-150 сценариев вместо 10-20 + экономия ~480 минут на 100 тест-кейсах.
Адаптировать под запрос

TL;DR

GHL — метод генерации тест-кейсов из требований к ПО через два промпта вместо одного. Сначала LLM извлекает подходящие техники тестирования (equivalence partitioning, boundary value analysis, state transition testing и др.) из стандарта ISO/IEC/IEEE 29119-4. Затем для каждой техники генерирует отдельный набор тест-кейсов. Весь процесс — только промпты, без создания RAG (retrieval-augmented generation).

Проблема: Когда просишь LLM "создай тест-кейсы" одним промптом (zero-shot), модель генерирует хаотично и пропускает 60-98% важных сценариев. Причина — нет структуры. LLM не понимает какие методы проверки применить, поэтому генерирует поверхностно. В индустрии используют RAG — добавляют базу знаний по каждой предметной области. Но создавать RAG для каждого типа ПО (от бухгалтерии до автомобильных систем) — трудоёмко.

Решение: Двухшаговый промпт. Шаг 1 — модель сама выбирает какие техники тестирования подходят для конкретных требований. Шаг 2 — генерирует тест-кейсы по каждой технике отдельно. Это даёт полноту охвата (recall 0.84 для Bluetooth, 0.37 для Mozilla) и экономит ~480 минут на 100 тест-кейсах (20 мин vs 500 мин вручную).


🔬

Схема метода

ШАГ 1: Извлечь test design techniques
Входы: requirements + test strategy + стандарт ISO/IEC/IEEE 29119-4
Выход: список техник (equivalence partitioning, boundary value, etc)

ШАГ 2: Для каждой техники генерировать тест-кейсы
Входы: requirements + конкретная техника из Шага 1
Выход: набор тест-кейсов для этой техники

Итого: объединение всех наборов = полный список тест-кейсов

Каждый шаг — отдельный запрос к LLM. Если на Шаге 1 получили 7 техник → на Шаге 2 будет 7 запросов.


🚀

Пример применения

⚠️ Важно: Метод оптимизирован для сложных технических требований с чёткой структурой. Не для субъективных задач или творческих текстов.

Задача: Ты продакт-менеджер в финтех-стартапе. Получил требования к фиче "Регулярные платежи" для мобильного банка. Нужно проверить полноту требований — какие сценарии могут сломаться в продакшене. Вместо RAG по банковским системам используешь GHL-подход.

Промпт (Шаг 1):

Вот требования к фиче "Регулярные платежи":

[вставить текст требований]

Из стандарта ISO/IEC/IEEE 29119-4 извлеки подходящие техники тестирования для этих требований. Если не можешь определить точно — предложи наиболее популярные техники из стандарта для такого типа функциональности.

Промпт (Шаг 2, повторить для каждой техники):

Вот требования к фиче "Регулярные платежи":

[вставить текст требований]

Создай максимально полный список тест-кейсов используя технику . Включи нормальные и аномальные сценарии.

Результат:

На Шаге 1 модель предложит 5-7 техник: Boundary Value Analysis (граничные значения), Equivalence Partitioning (классы эквивалентности), State Transition Testing (переходы состояний), Decision Table Testing (таблицы решений), Error Guessing (предположения об ошибках).

На Шаге 2 для каждой техники получишь 10-30 тест-кейсов. Например, для Boundary Value Analysis: "Проверить платёж на сумму 0.01₽", "Проверить платёж на лимит 100,000₽", "Проверить платёж на лимит+1₽". Для State Transition: "Создать → Активировать → Пауза → Возобновить → Отменить" и все комбинации переходов.

Итого: 70-150 тест-кейсов вместо 10-20 которые придумал бы сам. Многие покроют неочевидные баги: что если пользователь меняет карту во время исполнения платежа? Что если дата платежа попадает на выходной? Что если баланс = сумме платежа - 0.01₽?


🧠

Почему это работает

Слабость LLM: В zero-shot промпте ("создай тест-кейсы") модель не понимает какую структуру использовать. Она генерирует хаотично, фокусируясь на очевидных сценариях ("проверить успешный платёж"). Пропускает методичную проверку граничных значений, комбинаций состояний, таблиц решений.

Сильная сторона LLM: Модель отлично следует методологиям если их явно назвать. Знает что такое Boundary Value Analysis, Equivalence Partitioning, State Transition Testing — это стандартизированные техники из ISO/IEC/IEEE 29119-4. Если указать конкретную технику в промпте — модель методично применит её принципы.

Как метод использует силу: Шаг 1 заставляет модель самой выбрать методологии для конкретных требований. Это активирует знания стандарта. Шаг 2 применяет каждую методологию изолированно — модель фокусируется на одном подходе, не путает разные техники. Итог: полнота (recall 0.84 для Bluetooth) вместо хаоса (recall 0.02 в zero-shot для Mozilla).

Рычаги управления:

  • Количество техник на Шаге 1 → если получил 10 техник, можешь выбрать 3-5 самых важных для экономии токенов
  • Формулировка Шага 2 → убери "normal and abnormal cases" чтобы фокус был только на одном типе сценариев
  • Стандарт/фреймворк → замени ISO 29119-4 на свой набор методов (например, для анализа бизнес-идей: SWOT, Porter's Forces, Jobs-to-be-Done)
  • Итерации → если тест-кейсов мало, попроси модель "добавь ещё 10 граничных сценариев" для конкретной техники

📋

Шаблон промпта

Шаг 1: Извлечение методов

Вот {документ/требования}:

[вставить текст]

Из {стандарт/фреймворк/методология} извлеки подходящие методы/техники для этого документа. Если не можешь определить точно — предложи наиболее популярные методы из {стандарт}.

Шаг 2: Применение каждого метода (повторить для всех)

Вот {документ/требования}:

[вставить текст]

Создай максимально полный {результат} используя метод/технику {название метода из Шага 1}. Включи {специфичные требования}.

Что подставлять:

  • {документ/требования} — текст для анализа (спецификация, бизнес-план, договор, etc)
  • {стандарт/фреймворк} — источник методов. Для тестирования: ISO/IEC/IEEE 29119-4. Для бизнеса: "популярные бизнес-фреймворки анализа". Для текстов: "критерии качества текста".
  • {название метода} — конкретный метод из списка Шага 1
  • {результат} — что генерировать (тест-кейсы, риски, идеи, критика)
  • {специфичные требования} — нормальные/аномальные случаи, критичность, формат вывода

🚀 Быстрый старт — вставь в чат:

Вот шаблон GHL для двухшагового анализа. Адаптируй под мою задачу: [твоя задача]. 
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит: какой документ анализируем, какие методы/фреймворки использовать, что генерировать на выходе — потому что GHL требует эти параметры для работы двухшагового процесса. Она возьмёт паттерн "сначала выбери методы → потом примени каждый" и адаптирует под задачу.


⚠️

Ограничения

⚠️ Специфичность domain: Нужно знать какие стандарты/фреймворки существуют для твоей области. Для software testing — ISO 29119-4. Для финансов? Для маркетинга? Для юридических текстов? LLM предложит общие методы, но не гарантирует полноту без явного указания фреймворка.

⚠️ Низкая precision: Метод генерирует много лишнего (precision 0.17-0.60). На 100 тест-кейсов только 17-60 совпадут с "правильными". Но это нормально если планируешь автоматизацию проверки — лишние отфильтруются. Для ручной работы придётся чистить.

⚠️ Не для субъективных задач: Метод заточен под структурированные задачи с чёткими критериями (тестирование, проверка compliance, анализ рисков). Не подходит для креатива, стиля, эмоционального тона — там нет стандартизированных техник.

⚠️ Затраты токенов: Если на Шаге 1 получил 10 техник → 10 отдельных запросов на Шаге 2. Для длинных требований (100+ страниц спецификации Bluetooth) это может быть дорого.


🔍

Как исследовали

Команда из Tokyo City University и компании VeriServe (специализируется на тестировании ПО) взяла публичные датасеты с готовыми парами "требования → тест-кейсы". Bluetooth: 4 спецификации протоколов (AVRCP, BAP, HFP, VDP) — от 42 до 277 страниц, 83-119 готовых тест-кейсов. Mozilla: 4 фичи Firefox (Bookmarks, Password Manager, etc) — 5-11 страниц, 11-22 тест-кейса.

Прогнали через 3 метода: (1) zero-shot — "создай тест-кейсы" одним промптом, (2) GHL — двухшаговый с извлечением техник, (3) GHL-F — GHL + генерация комбинаций функций. Использовали GPT-4o Small, temperature=0, фиксированный seed для воспроизводимости.

Оценка: Сгенерированные тест-кейсы сравнивали с truth test cases через semantic similarity. Векторизовали тексты через text-embedding-3-small, считали cosine similarity. Порог 0.7 для совпадения (based on prior research). Например, truth: "Verify that password manager picks up the new password" vs generated: "Verify that password manager correctly updates saved passwords" → similarity 0.81 → match.

Результаты удивили: Для Bluetooth recall был высокий даже в zero-shot (0.65) — потому что спецификации Bluetooth используют строгую нотацию тест-кейсов типа AVRCP/CT/CON/BV-01-C. LLM просто копирует эту нотацию! А для Mozilla (естественный язык требований) zero-shot показал 0.02 recall — почти ничего не покрыл.

Логика: Двухшаговый подход повысил recall для Bluetooth с 0.65 до 0.84 (GHL-F), для Mozilla с 0.02 до 0.37. Почему? На Шаге 1 модель извлекла 7-14 разных техник тестирования для каждого requirement документа. Например, для Bluetooth VDP: boundary value analysis, decision table, state transition, performance testing, risk-based testing — 9 техник. Каждая техника дала свой набор тест-кейсов на Шаге 2, итого полнота выросла.

Инсайт: Precision упал (с 0.83 до 0.60 для Bluetooth), но это ожидаемо — больше техник = больше тест-кейсов = больше дублей и лишнего. Но для автоматизации тестирования это норма — лишнее отфильтруется при выполнении.

Время: Zero-shot — 2 минуты, GHL — 20 минут, GHL-F — 20 минут. Почему GHL дольше? Шаг 2 запускается для каждой техники отдельно — если 10 техник, то 10 запросов. Но даже 20 минут в 25 раз быстрее чем 500 минут вручную (5 мин на кейс × 100 кейсов).


📄

Оригинал из исследования

GHL — Step 1: Extract test design techniques

The attached file shows requirements of the system.
Can you extract as much as possible candidate test design techniques in ISO/IEC/IEEE 29119-4:2021 for the requirements? If you can't extract the test design techniques, extract as much as possible popular test design techniques in the ISO/IEC/IEEE 29119-4:2021 in general.

GHL — Step 2: For each test design technique

The attached file shows requirements of the system.
Extract test cases as much as possible, according with the  technique including normal cases and abnormal cases in the test strategy.

Контекст: Исследователи тестировали на requirement documents в виде PDF файлов (Bluetooth спецификации 42-277 страниц, Mozilla фичи 5-11 страниц). На Шаге 1 модель получала requirements + test strategy документ. На Шаге 2 плейсхолдер <test design> заменялся на конкретную технику из списка Шага 1 (например, "Boundary Value Analysis").


💡

Адаптации и экстраполяции

📌

💡 Адаптация для проверки юридических договоров

Вместо тест-кейсов — риски и несоответствия.

Шаг 1:

Вот договор аренды коммерческого помещения:

[текст договора]

Из типичных рисков и методов проверки договоров (финансовые риски, обязательства сторон, штрафы, форс-мажор, юрисдикция) извлеки подходящие категории проверки для этого договора.

Шаг 2 (для каждой категории):

Вот договор аренды:

[текст договора]

Проверь максимально полно все моменты связанные с {Финансовые риски}. Включи явные и скрытые риски, упущения, противоречия.

Результат: вместо общего "проверь договор" → методичная проверка по категориям (финансы, обязательства, штрафы, etc), каждая даст 5-10 пунктов.


📌

💡 Адаптация для анализа бизнес-идеи

Шаг 1:

Вот бизнес-идея: [описание]

Из популярных бизнес-фреймворков анализа (SWOT, Porter's 5 Forces, Jobs-to-be-Done, Blue Ocean Strategy, Lean Canvas, Business Model Canvas) извлеки наиболее подходящие для оценки этой идеи.

Шаг 2:

Вот бизнес-идея: [описание]

Проанализируй максимально полно используя фреймворк {SWOT}. Включи сильные/слабые стороны, возможности, угрозы — конкретно для этой идеи.

📌

🔧 Техника: Убрать "normal and abnormal cases" → фокус на одном типе

В оригинале Шаг 2:

Extract test cases as much as possible, according with the  technique including normal cases and abnormal cases in the test strategy.

Изменённая версия для фокуса только на граничных/аномальных сценариях:

Extract ONLY edge cases and abnormal scenarios according with the  technique. Focus on what might break in production.

Эффект: Меньше очевидных кейсов ("проверить успешный вход"), больше неочевидных ("что если пароль = максимальная длина + 1 символ").


📌

🔧 Техника: Добавить приоритизацию

После Шага 2 для всех техник:

Вот все сгенерированные тест-кейсы:

[список из 100 кейсов]

Отсортируй по приоритету: критичные (могут сломать продакшен), важные (серьёзные баги), низкие (косметика). Оставь топ-30 критичных.

Эффект: Решает проблему низкой precision — LLM сам отфильтрует лишнее.


🔗

Ресурсы

Generating High-Level Test Cases from Requirements using LLM: An Industry Study — Satoshi Masuda (Tokyo City University), Satoshi Kouzawa, Kyousuke Sezai, Hidetoshi Suhara, Yasuaki Hiruta, Kunihiro Kudou (VeriServe Corporation). ISO/IEC/IEEE 29119 Part 4 — международный стандарт техник тестирования ПО.


📋 Дайджест исследования

Ключевая суть

Индустрия создаёт RAG (retrieval-augmented generation) для генерации тест-кейсов — база знаний под каждую предметную область, от бухгалтерии до автомобильных систем. Трудоёмко. GHL позволяет получить полный охват сценариев (recall 0.84) через 2 промпта, без создания базы знаний. Фишка: разделить задачу на выбор методов и применение. Шаг 1 — модель сама выбирает подходящие техники тестирования из стандарта ISO 29119-4 (boundary value analysis, state transition testing, таблицы решений...). Шаг 2 — для каждой техники отдельный запрос с изолированной генерацией тест-кейсов. Итог: 70-150 сценариев вместо 10-20 + экономия ~480 минут на 100 тест-кейсах.

Принцип работы

Не смешивай выбор методологии и её применение в одном промпте — раздели на этапы. Первый промпт: дай требования + укажи источник методов (стандарт, фреймворк). Модель извлекает список подходящих техник. Второй промпт (для каждой техники отдельно): дай требования + конкретная техника из первого шага. Модель методично применяет только эту технику. Изоляция — ключ к полноте. Если на Шаге 1 получил 7 техник → делаешь 7 отдельных запросов на Шаге 2. Каждый запрос фокусируется на одном подходе, не путает разные методологии. Потом объединяешь все наборы в финальный список.

Почему работает

LLM знает десятки техник тестирования из стандартов — boundary value analysis, equivalence partitioning, state transition testing, таблицы решений. Но в zero-shot промпте ('создай тест-кейсы') модель не понимает какую структуру использовать. Генерирует хаотично, фокусируясь на очевидном ('проверить успешный платёж'). Пропускает 60-98% сценариев — граничные значения, комбинации состояний, аномальные случаи. Двухшаговый подход активирует знания стандарта. На Шаге 1 модель вынуждена вспомнить какие методологии существуют. На Шаге 2 — применяет каждую изолированно, без путаницы. Результат: recall вырастает с 0.02 (zero-shot для Mozilla) до 0.84 (GHL для Bluetooth). Модель покрывает 84% важных сценариев вместо 2%.

Когда применять

Тестирование ПО → особенно для сложных технических требований с чёткой структурой (API, протоколы связи, финтех-фичи). Когда нужна методичная проверка всех граничных случаев, переходов состояний, таблиц решений — не только очевидных сценариев. Также подходит для проверки compliance (соответствие регуляциям), анализа рисков (применить разные фреймворки к бизнес-плану), аудита документов (проверить по чек-листам из стандартов). НЕ подходит: для креатива, субъективных оценок (стиль текста, эмоциональный тон). Там нет стандартизированных методологий — метод требует чёткие фреймворки.

Мини-рецепт

1. Шаг 1 — Извлечь методы: Вот требования: [вставить текст]. Из стандарта ISO/IEC/IEEE 29119-4 извлеки подходящие техники тестирования для этих требований. Если не можешь определить точно — предложи наиболее популярные техники из стандарта.

2. Шаг 2 — Применить каждую технику: для каждой техники из списка Шага 1 делаешь отдельный запрос: Вот требования: [текст]. Создай максимально полный список тест-кейсов используя технику . Включи нормальные и аномальные сценарии.

3. Объединить: собери все наборы тест-кейсов в один список. Убери дубли если есть.

Адаптация под другие задачи: замени ISO 29119-4 на свой фреймворк. Для бизнес-анализа: 'популярные бизнес-фреймворки (SWOT, Porter's Forces, Jobs-to-be-Done)'. Для юридических текстов: 'критерии проверки договоров'. Для рисков: 'методы анализа рисков (FMEA, FTA, Bow-Tie)'.

Примеры

[ПЛОХО] : Создай тест-кейсы для фичи 'Регулярные платежи' в мобильном банке Результат: 10-20 очевидных сценариев ('Создать платёж', 'Отменить платёж', 'Проверить уведомление'). Пропущены граничные случаи (баланс = сумма платежа − 0.01₽), переходы состояний (что если карта меняется во время исполнения), аномальные сценарии (дата платежа на выходной). ---
[ХОРОШО] : Двухшаговый подход: Вот требования к фиче 'Регулярные платежи': [текст]. Из стандарта ISO/IEC/IEEE 29119-4 извлеки подходящие техники тестирования. Получил: Boundary Value Analysis, Equivalence Partitioning, State Transition Testing, Decision Table Testing, Error Guessing. Для каждой техники отдельный запрос: Вот требования: [текст]. Создай максимально полный список тест-кейсов используя технику . Включи нормальные и аномальные сценарии. Результат: 70-150 тест-кейсов. Включая: 'Баланс = лимит − 0.01₽', 'Переход Активен → Пауза → Возобновить → Отменить', 'Дата платежа 29 февраля в невисокосный год', 'Смена карты во время исполнения платежа'. Многие покроют баги которые не придумал бы сам.
Источник: Generating High-Level Test Cases from Requirements using LLM: An Industry Study
ArXiv ID: 2510.03641 | Сгенерировано: 2026-01-12 00:13

Концепты не выделены.

📖 Простыми словами

GHL (Generating High-Level test cases): двухшаговая генерация тест-кейсов без RAG

arXiv: 2510.03641

Суть проблемы в том, что когда ты просишь нейронку «напиши тесты для этой фичи», она ведет себя как ленивый стажер: проверяет только очевидные сценарии типа «кнопка нажалась — ура». Модели не хватает системности, она просто не понимает, под каким углом смотреть на код, и в итоге пропускает критические баги. Метод GHL исправляет это через принудительное разделение логики. Вместо того чтобы вываливать всё в один запрос, процесс разбивают на два этапа: сначала заставляют модель выбрать правильную научную методику тестирования, а уже потом по этой методике штамповать кейсы.

Это как если бы ты пришел к врачу и вместо «просто посмотри, что со мной» сначала попросил его составить список нужных анализов по медицинскому справочнику ISO/IEC/IEEE 29119-4, а только потом шел в лабораторию. Формально работы больше, но зато ты не лечишь колено, когда проблема в спине. Без такой «шпаргалки» нейронка просто гадает на кофейной гуще, а с ней — работает как профессиональный тестировщик с десятилетним стажем, который знает, что такое граничные значения и таблицы решений.

Вся магия метода GHL держится на двух промптах. Первый вытаскивает из требований конкретные техники: например, эквивалентное разделение или тестирование переходов состояний. Второй промпт берет эти техники и превращает их в детальные сценарии. Никакого сложного кода или RAG с базами данных не нужно — это чистая инженерия промптов. В итоге модель перестает нести отсебятину и начинает методично долбить по слабым местам программы, выдавая высокоуровневые тест-кейсы, которые реально находят ошибки.

Исследование проводили на суровых промышленных требованиях, но принцип универсален. Эту схему можно натянуть на любую сложную задачу, где нужно не просто «сделать красиво», а соблюсти жесткий стандарт. Будь то юридический аудит договоров или проверка безопасности архитектуры — если заставить LLM сначала выбрать методологию анализа, а потом применять её по пунктам, качество результата взлетает. Модель перестает быть «творческим художником» и превращается в дотошного аудитора.

Короче, хватит ждать от нейронки магии в один клик — она слишком тупа, чтобы самой догадаться до сложных методик. Хочешь нормальные тесты — используй двухэтапную генерацию и привязывай её к стандартам. Это превращает хаотичный поток сознания в структурированный процесс, который не стыдно показать заказчику. Кто продолжит юзать простые промпты, будет и дальше ловить баги на проде, пока остальные автоматизируют рутину с умом.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с