Три причины, по которым начинают искать альтернативу

Цена и фактическое использование

  • Корпоративный прайс рассчитан на корпоративную функцию тестирования.

  • Если ваша сократилась, стоимость одного полезного прогона незаметно растёт.

Нет выделенного QA

  • Low-code-платформы рассчитаны на то, что сценарии составляют тестировщики.

  • Тестировщиков нет — сценарии никто не составляет, и платформа простаивает.

Разрастание поддержки

  • Самовосстановление помогает, но не снимает работу по поддержанию осмысленности набора тестов.

  • Кто-то всё равно решает, что должно быть покрыто.

Только первая причина действительно про Mabl. Две другие — про то, подходит ли вообще платформа, рассчитанная на ручное составление тестов, команде, в которой составлять их больше некому.

По каким критериям сравнивать альтернативы Mabl

КритерийПлатформы с ручным созданием тестовTestSprite
Кто создаёт тестыКаждый сценарий человек собирает в редактореГенерируются из ваших исходников и уточняются на естественном языке
Кто их запускаетПо расписанию или вручнуюЗапуск инициирует само изменение, в том числе из кодового агента
Что возвращает упавший тестОтчёт, который читает человекПакет данных, с которым кодовый агент может работать напрямую
Совместимость с кодом, который пишет ИИПокрытие отстаёт от объёма кодаПроверка живёт в том же цикле, что и изменение
На кого рассчитаноНа функцию тестированияНа разработчиков и их агентов

Самая важная строка — третья. Если результат упавшего теста — это отчёт, который кто-то должен интерпретировать, то команда без тестировщиков купила отчёт, который никто не читает.

Вопросы, которые стоит задать любому кандидату

  • Кто напишет двухсотый тест? Первые десять во время пробного периода напишет кто-то замотивированный. Спрашивайте про остальные.

  • Что происходит, когда прогон не доходит до проверок? Если такой прогон отмечается как успешный, всё это — декорация. Стоит проверить это намеренно.

  • Может ли тот, кто чинит, начать прямо с вывода упавшего теста? Всё чаще чинит агент, а он не умеет интерпретировать скриншот.

Прежде чем что-то мигрировать

Миграция обходится дорого и часто не нужна. Запустите кандидата параллельно на несколько недель — на тех сценариях, которые для вас важнее всего. Если новое покрытие действительно что-то находит, решение примется само; если нет — вы потеряли несколько недель, а не квартал.

Как оценивать любой из вариантов

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

Вопрос, который экономит квартал

Прежде чем что-то оценивать, разберитесь, в чём ваша проблема: в платформе или в людях. Изнутри они выглядят одинаково, а решений требуют совершенно разных.

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

Если покрытие перестало расти при тех же людях, которые по-прежнему были на месте и по-прежнему старались, — это проблема инструмента, и с ней стоит что-то делать. На то, чтобы установить это различие, уходит полдня, а именно оно отделяет продуктивную оценку от дорогой.

С чего начать

Терминал

npm install -g @testsprite/testsprite-cli
testsprite setup

Ту же настройку можно выполнить в панели TestSprite, если вы предпочитаете ничего не ставить локально. Остальные возможности CLI описаны в репозитории CLI.

Важнее не механизм, а триггер. Если привязать запуск к событию деплоя, каждое изменение проверяется без чьего-либо отдельного решения: GitHub App делает это из панели управления, а GitHub Actions в виде шага — изнутри вашего пайплайна.

Что TestSprite делает иначе

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

Прогоны запускает само изменение, а не расписание или человек, — в том числе кодовый агент, работающий в редакторе. А падение возвращается пакетом, с которым тот, кто чинит, может работать напрямую; с каждым кварталом это важнее, потому что чинит всё чаще агент, а не человек, читающий отчёт.

В итоге вы получаете покрытие, которое поспевает за командой, выпускающей быстро и без выделенной QA-функции, и не платите за редактор, который никто не открывает.

Mabl — плохой инструмент?

Нет. Это зрелая платформа, построенная вокруг функции тестирования. Несоответствие, с которым сталкиваются, — организационное, а не техническое.

Можно ли перенести наши существующие тесты?

Относитесь к ним как к спецификации того, что важно, а не как к артефактам для переноса. Ценность — в самом перечне сценариев.

А что с прогонами, по которым у нас уже накоплена история?

Историю результатов редко удаётся перенести на другую платформу в сколько-нибудь полезном виде. Рассчитывайте на то, что старую систему какое-то время придётся держать доступной для чтения, а не на аккуратный экспорт.

Сколько должен длиться пробный период?

Достаточно долго, чтобы в него попал настоящий релиз. Пробный период, в котором не случилось ни одной регрессии, не проверил именно то, что вы покупаете.

Обязательно ли выбирать что-то одно?

Не сразу. Запустить два варианта параллельно на пересекающихся сценариях — самый дешёвый способ понять, кто что ловит.

Коротко

Определите, какая из трёх причин ваша.

Альтернативу Mabl обычно ищут из-за цены, из-за того, что QA-функции больше нет, или из-за поддержки. Сравнивайте по тому, кто напишет двухсотый тест и пригодно ли падение для того, кто будет его чинить, — и прежде чем что-то мигрировать, запустите кандидата параллельно.