Roo Code для QA: практический гайд по AI-тестированию Android-приложений | AiManual
AiManual Logo Ai / Manual.
14 Янв 2026 Гайд

Как заставить обязательные AI-запросы работать на вас: практический гайд по Roo Code для QA

Как использовать Roo Code для генерации Kaspresso-тестов. Настройка DeepSeek локально, промпты для QA, интеграция в Android Studio. Полное руководство.

Когда начальник требует AI, а вы хотите реальную пользу

Знакомо? Руководство прочитало очередную статью про "революцию в разработке" и теперь требует использовать AI-инструменты в каждом проекте. Но вместо ускорения получается головная боль: нейросеть генерирует код, который не компилируется, тесты падают на пустом месте, а времени на правки уходит больше, чем на написание с нуля.

Особенно обидно, когда речь идет о тестировании. QA-инженеры знают - хороший тест это не просто набор кликов. Это понимание бизнес-логики, предсказание edge-кейсов, умение работать с состоянием приложения. И вот вам спускают директиву: "Используйте AI для написания тестов". А как?

Главная проблема не в AI, а в том, как его кормят. Бросить нейросети голый промпт "напиши тест для экрана логина" - все равно что попросить новичка без контекста проекта написать production-код. Результат предсказуем.

Roo Code: не очередной AI-плагин, а система

Roo Code - это не просто генератор кода. Это инфраструктура, которая заставляет AI работать в вашем контексте. Представьте: вместо того чтобы каждый раз объяснять нейросети структуру вашего проекта, вы делаете это один раз. И дальше она "видит" ваши модули, зависимости, конфигурации.

Особенно круто это работает для Android-тестирования с Kaspresso. Почему именно Kaspresso? Потому что это уже готовый фреймворк с человекочитаемым синтаксисом. AI его понимает лучше, чем сырые Espresso-цепочки.

💡
Roo Code работает с локальными моделями через Ollama. Это значит: никаких лимитов токенов, никаких отправок кода на сторонние сервера, полная конфиденциальность. Для корпоративного использования - идеально.

Что нужно, чтобы начать

Забудьте про облачные сервисы с их ограничениями. Мы будем работать локально. Вот минимальный набор:

  • Android Studio (любая свежая версия)
  • Модульный Android-проект (да, это важно - монолиты Roo Code не любит)
  • Установленный Ollama
  • Модель DeepSeek Coder (6.7B параметров хватит с головой)
  • Плагин Roo Code для Android Studio

1 Ставим и настраиваем Ollama с DeepSeek

Ollama - это как Docker для LLM. Устанавливается одной командой, работает без танцев с бубном.

# Установка Ollama (Linux/Mac)
curl -fsSL https://ollama.ai/install.sh | sh

# Скачиваем DeepSeek Coder
ollama pull deepseek-coder:6.7b

# Проверяем, что работает
ollama run deepseek-coder:6.7b "print('hello')"

Почему DeepSeek, а не CodeLlama или StarCoder? DeepSeek Coder отлично понимает Kotlin и специфику Android-разработки. И главное - он бесплатный и локальный. Если ваш проект требует особой безопасности, как в случае "бетонной стены", этот вариант вас спасет.

2 Подготавливаем проект для Roo Code

Здесь большинство спотыкаются. Roo Code не волшебная палочка - он должен понимать структуру вашего проекта. Сделайте три вещи:

  1. Убедитесь, что у вас модульная структура (app, features, core модули)
  2. В корне проекта создайте файл roo-code-context.md
  3. Опишите в нем ключевые моменты архитектуры

Вот как выглядит минимальный контекстный файл:

# Контекст проекта для Roo Code

## Архитектура
- Много модулей: app, features/auth, features/home, core/network
- Используем Clean Architecture с UseCase
- Навигация через Navigation Component

## Тестирование
- UI тесты: Kaspresso
- Моковые данные: MockK
- Конвенции именования: "ScreenNameTest"
- Все тесты в папке androidTest соответствующего модуля

## Особенности
- Экран логина: LoginFragment, ViewModel обрабатывает состояние
- Основной экран: BottomNavigation с 4 табами
- Сеть: Retrofit с interceptors для логирования

Этот файл - ваша страховка от глупых вопросов AI. Без него нейросеть будет гадать, как у вас организована навигация или где лежат моки.

Чем детальнее контекст - тем точнее код. Добавьте примеры существующих тестов, константы, которые используете, даже названия пакетов. AI учится на примерах, которые вы ему даете.

3 Устанавливаем и настраиваем Roo Code плагин

В Android Studio идем в Settings → Plugins → Marketplace, ищем "Roo Code". После установки нужно настроить подключение к Ollama:

// В настройках Roo Code:
{
  "modelProvider": "Ollama",
  "baseUrl": "http://localhost:11434",
  "model": "deepseek-coder:6.7b",
  "temperature": 0.2,  // Низкая температура для предсказуемого кода
  "maxTokens": 4000
}

Temperature 0.2 - это важно. Выше - и AI начнет "творить", генерируя странные конструкции. Нам нужен консервативный, предсказуемый код.

Промпты, которые реально работают

Теперь главное - как общаться с AI, чтобы получать рабочие тесты. Забудьте про "напиши тест для логина". Вот промпты, которые дают результат:

Плохой промпт Хороший промпт Почему
Напиши тест для логина Создай Kaspresso тест для LoginFragment. Учитывай: email и password поля, кнопка Login, состояния загрузки. Тест должен проверять успешный логин с моковыми данными и показ ошибки при невалидных данных Конкретика + бизнес-логика
Протестируй список Напиши тест для FeedFragment с RecyclerView. Тест должен: 1) Проверить отображение 10 моковых items 2) Скроллить до последнего элемента 3) Кликнуть на первый элемент и проверить навигацию на DetailScreen Пошаговые инструкции + ожидаемые действия

Но и это не все. Самый мощный прием - давать AI примеры. Откройте существующий тест в проекте, выделите его, и в промпте напишите:

На основе этого стиля тестирования создай тест для SettingsFragment.
Должны быть проверены:
- Переключение toggle "Уведомления"
- Выбор языка из списка
- Клик на "О приложении" с переходом

Используй такие же моки и структуру как в примере.

AI скопирует стиль, naming conventions, подход к мокам. Получится код, который выглядит так, будто его писали вы.

Реальный кейс: 20 минут вместо 4 часов

Вот что произошло на одном из проектов. Нужно было покрыть тестами новый модуль "Оплата" с 5 экранами:

  • Выбор способа оплаты
  • Ввод данных карты
  • Подтверждение
  • Успешная оплата
  • Ошибка

Вручную - минимум 4 часа работы. С Roo Code процесс выглядел так:

1 Подготовка контекста (5 минут)

Дописали в roo-code-context.md информацию о новом модуле:

## Модуль payment
- Экран PaymentMethodFragment: список способов (карта, PayPal, applePay)
- CardInputFragment: поля номера, срока, CVV
- PaymentViewModel обрабатывает валидацию
- После успеха - навигация на SuccessFragment
- При ошибке - showErrorDialog

2 Генерация первого теста (3 минуты)

Промпт:

Создай Kaspresso тест для PaymentMethodFragment.
Требования:
- Проверить отображение 3 способов оплаты
- Клик на "Карта" должен вести на CardInputFragment
- Использовать моковые данные из PaymentTestData
- Добавить проверку заголовка экрана
- Структура как в других тестах features/

Roo Code сгенерировал 95% готового теста. Осталось поправить импорты и запустить.

3 Масштабирование (10 минут)

Для следующих тестов использовали технику "цепочки". После генерации первого теста, выделили его и написали:

Теперь создай тест для CardInputFragment в том же стиле.
Добавь:
- Ввод валидного номера карты
- Проверку кнопки "Оплатить" (активна только при валидных данных)
- Мок успешного ответа от PaymentRepository
- Проверку навигации на SuccessFragment

AI уже понимал контекст, стиль, используемые моки. Каждый следующий тест генерировался быстрее.

💡
Не генерируйте все тесты сразу. Сделайте один, проверьте, доработайте. Потом используйте его как шаблон для остальных. Так вы избежите накопления однотипных ошибок.

Ошибки, которые вас подстерегают (и как их избежать)

Даже с отличными промптами AI иногда выдает странные вещи. Вот что я видел:

Ошибка 1: AI "забывает" про контекст Activity. Генерирует тесты, которые запускаются напрямую на Fragment, но у вас в проекте используется FragmentScenario. Решение - явно указать в промпте: "Используй FragmentScenario для запуска теста, как в других тестах модуля".

Ошибка 2: Слишком умные wait-условия. AI иногда добавляет кастомные ожидания типа device.waitFor(5000) вместо использования Kaspresso until. Решение - попросить переписать: "Используй стандартные conditions Kaspresso вместо Thread.sleep".

Ошибка 3: Моки не того типа. DeepSeek может перепутать MockK с Mockito или создать моки не тех классов. Решение - дать конкретный пример мока в контексте проекта.

Самая опасная ошибка - когда тест проходит, но проверяет не то. AI может сгенерировать проверку isDisplayed() вместо проверки конкретного текста или состояния. Здесь поможет только code review. Никогда не доверяйте AI на 100%.

Когда Roo Code не поможет

Бывают ситуации, где AI бесполезен. И это нужно признать:

  • Сложная бизнес-логика: Если для написания теста нужно глубокое понимание доменной области, AI не справится. Он не понимает, почему "статус заказа не может измениться с 'отменен' на 'в обработке'".
  • Тестирование производительности: Нагрузочные тесты, проверка memory leaks - здесь AI пока слаб.
  • Интеграционные тесты: Сложные сценарии с несколькими системами, моками внешних API.

Но для 80% рутинных UI-тестов - выбор способа оплаты, заполнение форм, навигация - Roo Code сокращает время в 3-4 раза. И это уже не "обязательная AI-активность", а реальный инструмент.

А что насчет качества?

Самый частый вопрос: "Тесты от AI ведь хуже, чем написанные вручную?". Отвечу так: плохой тест, написанный человеком, ничем не лучше плохого теста от AI. И наоборот.

Разница в процессе. Человек пишет тест, думая о покрытии edge-кейсов. AI пишет тест, основываясь на паттернах, которые видит в вашем коде. Дайте ему хорошие примеры - получите хорошие тесты.

Более того, AI иногда предлагает интересные подходы. Видел, как DeepSeek предлагал использовать DataBindingIdlingResource для тестов с Data Binding - подход, который я раньше не использовал. Учиться можно не только у людей.

Используйте Roo Code не как замену, а как усилитель. Вы думаете о тест-кейсах, бизнес-логике, edge-случаях. AI превращает это в код. Такое разделение труда работает.

Что дальше?

Roo Code - только начало. Скоро появятся инструменты, которые смогут:

  • Анализировать coverage сгенерированных тестов и предлагать дополнения
  • Генерировать тесты на основе анализа кода приложения (а не только по промптам)
  • Создавать тест-сьюты для регрессионного тестирования после каждого коммита

Но уже сейчас можно перестать воспринимать "обязательное использование AI" как обузу. Превратить его в конкурентное преимущество. Особенно если вспомнить, что скоро вопрос замены специалистов AI станет еще острее.

Начните с одного модуля. Настройте контекст. Сгенерируйте несколько тестов. Увидите - через неделю вы не только выполните требование руководства, но и получите реальную выгоду. А ваши тесты перестанут быть головной болью и станут тем, чем должны быть - страховкой от регрессий.

И помните: лучший AI-инструмент не тот, который пишет за вас код, а тот, который заставляет вас думать на уровень выше. Roo Code как раз из таких.