Skip to content

Latest commit

 

History

History
92 lines (58 loc) · 8.76 KB

testplane-chunks.md

File metadata and controls

92 lines (58 loc) · 8.76 KB

@testplane/chunks

Обзор

Используйте плагин @testplane/chunks, чтобы распараллелить запуск тестов.

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

Плагин позволяет распараллелить запуск тестов на нескольких серверах. Тем самым ускорив общий прогон тестов. Однако сам плагин не занимается какой-либо оркестрацией, распараллеливанием запуска или слиянием получившихся отдельных отчетов в один итоговый отчет.

Что же тогда делает данный плагин?

Плагин @testplane/chunks разбивает всегда одним и тем же способом ваш набор тестов на заданное количество порций (chunks) и отдает Testplane на запуск только ту порцию, которую вы указали. Здесь ключевое — «всегда одним и тем же способом». То есть операция разбиения на порции (чанки) является идемпотентной.

Что дает идемпотентность?

Вы можете организовать в своем CI переиспользование результатов запусков тестов из отдельных чанков при общем перезапуске. Это позволит вам сэкономить время при перезапуске всех тестов, так как прогоняться будут только те чанки, в которых есть упавшие тесты.

Например, в вашем проекте есть 1 тысяча тестов. Вы разбили эти тесты на 10 чанков по 100 тестов в каждом. Это означает, что при запуске тестов в вашем пулл-реквесте, у вас будет 10 Testplane, запущенных одновременно на 10 серверах. Каждый Testplane выполнит по 100 тестов. В каких-то из этих запусков тесты могут упасть. Например, 2 из 10 чанков у вас упали. Вы решаете перезапустить прогон тестов, рассчитывая, что на этот раз тесты пройдут. Так вот, при перезапуске Testplane с указанием номера упавшего чанка, вы можете быть абсолютно уверены, что плагин @testplane/chunks сформирует для Testplane точно такую же порцию тестов как и в прошлый свой запуск.

Организуя перезапуск тестов в своем CI, помните, что для переиспользования запусков отдельных чанков, исходное количество тестов, их имена, или количество браузеров, в которых они запускаются, не должны меняться между запусками. Иначе чанки в новом запуске уже не будут такими же, как в прошлый раз. И хотя формально вы получите то же количество чанков, что и в прошлый раз, их содержимое при этом будет отличаться. А значит переиспользование прошлых результатов окажется некорректным.

Во сколько раз ускорятся мои тесты?

Нужно понимать, что ускорение возможно только за счет того, что тесты будут запускаться на большем количестве железа.

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

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

А как получить итоговый отчет?

Добавьте в свой проект плагин html-reporter.

Используйте команду merge-reports, которую html-reporter добавляет к CLI Testplane, чтобы слить все получившиеся в отдельных чанках отчеты в один итоговый отчет.

Установка

npm install -D @testplane/chunks

Настройка

Необходимо подключить плагин в разделе plugins конфига Testplane:

module.exports = {
    plugins: {
        '@testplane/chunks': {
            count: 7, // Разбить тесты на 7 порций (чанков)
            run: 1 // Запустить первую порцию
        },

        // другие плагины Testplane...
    },

    // другие настройки Testplane...
};

Можно не задавать параметр run — в конфиге плагина, так как при параллельных запусках Testplane для каждого запуска вы будете указывать свой номер порции (run). И этот номер нужно будет передавать либо через опцию командной строки, либо через переменную окружения (см. «Передачу параметров через CLI»).

Расшифровка параметров конфигурации

Параметр Тип По умолчанию Описание
enabled Boolean true Включить / отключить плагин.
count Number 1 Количество порций (чанков), на которые нужно разбить набор тестов.
run Number 1 Номер чанка, тесты из которого нужно запустить.

Передача параметров через CLI

Все параметры плагина, которые можно определить в конфиге, можно также передать в виде опций командной строки или через переменные окружения во время запуска Testplane. Используйте префикс --chunks- для опций командной строки и testplane_chunks_ — для переменных окружения. Например:

npx testplane --chunks-count 10 --chunks-run 1
testplane_chunks_count=10 testplane_chunks_run=1 npx testplane

Полезные ссылки