Condividi tramite


Determinare la configurazione ottimale del gruppo di test

Microsoft Playwright Testing Preview consente di velocizzare l'esecuzione dei test playwright aumentando il parallelismo su scala cloud. Diversi fattori influiscono sul tempo di completamento per il gruppo di test. Determinare la configurazione ottimale per ridurre il tempo di completamento del gruppo di test è specifico dell'applicazione e richiede la sperimentazione. Questo articolo illustra i diversi livelli per configurare il parallelismo per i test, i fattori che influenzano la durata dei test e come determinare la configurazione ottimale per ridurre al minimo il tempo di completamento dei test.

In Playwright è possibile eseguire test in parallelo usando i processi di lavoro. Usando Microsoft Playwright Testing, è possibile aumentare ulteriormente il parallelismo usando browser ospitati nel cloud. In generale, l'aggiunta di più parallelismo riduce il tempo necessario per completare il gruppo di test. Tuttavia, l'aggiunta di più processi di lavoro non comporta sempre tempi di completamento più brevi del gruppo di test. Ad esempio, le risorse di calcolo del computer client, la latenza di rete o la complessità dei test possono influire anche sulla durata del test.

Il grafico seguente offre un esempio di esecuzione di un gruppo di test. Eseguendo il gruppo di test con Microsoft Playwright Testing anziché localmente, è possibile aumentare significativamente il parallelismo e ridurre il tempo di completamento del test. Si noti che, quando si esegue con il servizio, il tempo di completamento raggiunge un limite minimo, dopo il quale l'aggiunta di più ruoli di lavoro ha solo un effetto minimo. Il grafico mostra anche come l'uso di più risorse di calcolo nel computer client influisce positivamente sul tempo di completamento dei test per i test in esecuzione con il servizio.

Line chart that shows the relation between the number of parallel workers and the test suite completion time for different run environments.

Processi di lavoro

In Playwright tutti i test vengono eseguiti nei processi di lavoro. Questi processi sono processi del sistema operativo, in esecuzione in modo indipendente, in parallelo, orchestrati dal test runner Playwright. Tutti i ruoli di lavoro hanno ambienti identici e ogni processo avvia il proprio browser.

In genere, l'aumento del numero di ruoli di lavoro paralleli può ridurre il tempo necessario per completare il gruppo di test completo. Per altre informazioni su Playwright Test parallelism , vedere la documentazione di Playwright.

Come illustrato in precedenza nel grafico, il tempo di completamento del gruppo di test non continua a diminuire man mano che si aggiungono altri processi di lavoro. Esistono altri fattori che influenzano la durata del gruppo di test.

Eseguire test in locale

Per impostazione predefinita, @playwright/test limita il numero di ruoli di lavoro a 1/2 del numero di core CPU nel computer. È possibile eseguire l'override del numero di ruoli di lavoro per l'esecuzione del test.

Quando si eseguono test in locale, il numero di processi di lavoro è limitato al numero di core CPU nel computer. Oltre un certo punto, l'aggiunta di più ruoli di lavoro comporta una contesa delle risorse, che rallenta ogni ruolo di lavoro e introduce flakiness di test.

Per eseguire l'override del numero di ruoli di lavoro usando il flag della --workers riga di comando:

npx playwright test --workers=10

Per specificare il numero di ruoli di lavoro in playwright.config.ts utilizzando l'impostazione workers :

export default defineConfig({
  ...
  workers: 10,
  ...
});

Eseguire test con il servizio

Quando si usa Microsoft Playwright Testing, è possibile aumentare il numero di ruoli di lavoro su scala cloud a numeri maggiori. Quando si usa il servizio, i processi di lavoro continuano a essere eseguiti in locale, ma le istanze del browser a elevato utilizzo di risorse vengono ora eseguite in remoto nel cloud.

Poiché i processi di lavoro continuano a essere eseguiti nel computer client (workstation per sviluppatori o computer agente CI), il computer client potrebbe comunque diventare un collo di bottiglia per l'esecuzione scalabile man mano che si aggiungono altri ruoli di lavoro. Informazioni su come determinare la configurazione ottimale.

È possibile specificare il numero di ruoli di lavoro nella riga di comando con il --workers flag :

npx playwright test --config=playwright.service.config.ts --workers=30

In alternativa, è possibile specificare il numero di ruoli di lavoro in playwright.service.config.ts usando l'impostazione workers :

export default defineConfig({
  ...
  workers: 30,
  ...
});

Fattori che influenzano il tempo di completamento

Oltre al numero di processi di lavoro paralleli, esistono diversi fattori che influenzano il tempo di completamento del gruppo di test.

Fattore Effetti sulla durata del test
Risorse di calcolo del computer client I processi di lavoro continuano a essere eseguiti nel computer client (workstation per sviluppatori o computer agente CI) e devono comunicare con i browser remoti. L'aumento del numero di ruoli di lavoro paralleli potrebbe comportare conflitti di risorse nel computer client e rallentare i test.
Complessità del codice di test Man mano che aumenta la complessità del codice di test, il tempo necessario per completare i test potrebbe aumentare.
Latenza tra il computer client e i browser remoti I ruoli di lavoro vengono eseguiti nel computer client e comunicano con i browser remoti. A seconda dell'area di Azure in cui sono ospitati i browser, la latenza di rete potrebbe aumentare. Informazioni su come ottimizzare la latenza a livello di area in Microsoft Playwright Testing.
Impostazioni di configurazione playwright Le impostazioni playwright, ad esempio timeout del servizio, tentativi o traccia, possono influire negativamente sul tempo di completamento del test. Sperimentare la configurazione ottimale per queste impostazioni durante l'esecuzione dei test nel cloud.
Capacità di gestione del carico dell'applicazione di destinazione L'esecuzione di test con Microsoft Playwright Testing consente di eseguire con parallelismo più elevato, con un carico più elevato sull'applicazione di destinazione. Verificare che l'applicazione possa gestire il carico generato eseguendo i test Playwright.

Altre informazioni sul flusso di lavoro per determinare la configurazione ottimale per ridurre al minimo la durata del gruppo di test.

Flusso di lavoro per determinare la configurazione ottimale

La configurazione ottimale per ridurre al minimo il tempo di completamento del gruppo di test è specifico per l'applicazione e l'ambiente. Per determinare la configurazione ottimale, sperimentare diversi livelli di parallelizzazione, configurazione hardware del computer client o configurazione del gruppo di test.

L'approccio seguente consente di trovare la configurazione ottimale per l'esecuzione dei test con Microsoft Playwright Testing:

1. Determinare l'obiettivo del tempo di completamento del test

Determinare qual è il tempo di completamento di un gruppo di test accettabile e il costo associato per ogni esecuzione di test.

A seconda dello scenario, i requisiti per il completamento dei test potrebbero essere diversi. Quando si eseguono test end-to-end con ogni modifica del codice, come parte di un flusso di lavoro di integrazione continua (CI), è essenziale ridurre al minimo il tempo di completamento dei test. Quando si pianificano i test end-to-end in un'esecuzione batch (notturna), potrebbero essere previsti requisiti meno impegnativi.

2. Verificare che i test vengano eseguiti correttamente nel computer client

Prima di eseguire il gruppo di test Playwright con Microsoft Playwright Testing, assicurarsi che i test vengano eseguiti correttamente nel computer client. Se si eseguono i test come parte di un flusso di lavoro ci, verificare che i test vengano eseguiti correttamente nel computer dell'agente ci. Assicurarsi di eseguire i test con almeno due ruoli di lavoro paralleli per verificare che i test siano configurati correttamente per l'esecuzione parallela. Altre informazioni sul parallelismo in Playwright.

3. Eseguire con browser ospitati nel cloud in Microsoft Playwright Testing

Una volta eseguiti correttamente i test, aggiungere la configurazione del servizio per eseguire i test nei browser ospitati nel cloud con il servizio . Verificare che i test continuino a essere eseguiti correttamente dal computer client (workstation per sviluppatori o computer agente ci).

Introduzione all'avvio rapido: eseguire test Playwright su larga scala con Microsoft Playwright Testing.

4. Verificare i browser remoti dell'area di Azure

Microsoft Playwright Testing può usare browser remoti nell'area di Azure più vicina al computer client oppure usare l'area fissa in cui è stata creata l'area di lavoro.

Informazioni su come ottimizzare la latenza a livello di area per l'area di lavoro.

5. Sperimentare il numero di ruoli di lavoro paralleli

Sperimentare il numero di ruoli di lavoro paralleli per eseguire i test. Misurare il tempo di completamento del test e confrontarlo con l'obiettivo di destinazione impostato in precedenza.

Si noti che a questo punto il tempo di completamento del test non si riduce più man mano che si aggiungono altri ruoli di lavoro. Passare al passaggio successivo per ottimizzare ulteriormente la configurazione.

Nota

Mentre il servizio è in anteprima, il numero di ruoli di lavoro paralleli per area di lavoro è limitato a 50. È possibile richiedere un aumento di questo limite per l'area di lavoro.

6. Ridimensionare il client

Man mano che si aumenta il parallelismo, il computer client potrebbe riscontrare conflitti di risorse di calcolo. Aumentare le risorse di calcolo nel computer client, ad esempio selezionando strumenti di esecuzione più grandi ospitati da GitHub.

In alternativa, se sono presenti limitazioni hardware, è possibile partizionare i test client.

Rieseguire i test e sperimentare il numero di ruoli di lavoro paralleli.

7. Aggiornare le impostazioni di configurazione dei test playwright

Configurare le impostazioni di configurazione del test playwright, ad esempio timeout di test, impostazioni di traccia o tentativi.