Skip to content
Vitest 3
Main Navigation Útmutató & APIKonfigurációBöngésző módHaladó API
3.2.0
2.1.9
1.6.1
0.34.6

magyar

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština

magyar

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština

Megjelenés

Sidebar Navigation

Bevezetés

Miért Vitest

Első lépések

Jellemzők

Vitest konfigurálása

API

Teszt API Referencia

Mock Függvények

Vi

expect

expectTypeOf

assert

assertType

Útmutató

Parancssori felület

Teszt szűrés

Tesztprojektek

Jelentéskészítők (Reporters)

Kódlefedettség

Snapshot

Mockolás

Párhuzamos végrehajtás

Típusok Tesztelése

Vitest UI

Forráskódba ágyazott tesztelés

Tesztkörnyezet

Teszt annotációk

Tesztkörnyezet

Matcherek kiterjesztése

IDE Integrációk

Hibakeresés

Gyakori hibák

Migrációs útmutató

Migrálás a Vitest 3.0-ra

Migrálás Jesstről

Teljesítmény

Teszt teljesítmény profilozása

Teljesítmény javítása

Böngésző üzemmód

Haladó API

Összehasonlítás más tesztfuttatókkal

Ezen az oldalon

Teszt teljesítmény profilozása ​

Amikor futtatja a Vitestet, az több időmetrikát is jelent a tesztjeiről:

bash
RUN  v2.1.1 /x/vitest/examples/profiling

✓ test/prime-number.test.ts (1) 4517ms
  ✓ generate prime number 4517ms

Test Files  1 passed (1)
     Tests  1 passed (1)
  Start at  09:32:53
  Duration  4.80s (transform 44ms, setup 0ms, collect 35ms, tests 4.52s, environment 0ms, prepare 81ms)
  # Time metrics ^^
  • Transform: Mennyi időt vett igénybe a fájlok átalakítása. Lásd a Fájl átalakítás részt.
  • Setup: A setupFiles fájlok futtatására fordított idő.
  • Collect: A tesztfájlokban lévő összes teszt összegyűjtésére fordított idő. Ez magában foglalja azt az időt is, ami az összes fájlfüggőség importálásához szükséges.
  • Tests: A tesztesetek tényleges futtatására fordított idő.
  • Environment: A teszt environment beállítására fordított idő, például JSDOM.
  • Prepare: A Vitest által a tesztfuttató előkészítéséhez szükséges idő.

Tesztfuttató ​

Abban az esetben, ha a teszt futási ideje magas, létrehozhat egy profilt a tesztfuttatóhoz. Lásd a NodeJS dokumentációját a következő opciókról:

  • --cpu-prof
  • --heap-prof
  • --prof

WARNING

A --prof opció nem működik a pool: 'threads' beállítással a node:worker_threads korlátozásai miatt.

Ezen opciók Vitest tesztfuttatójának átadásához, definiálja a poolOptions.<pool>.execArgv beállítást a Vitest konfigurációjában:

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    pool: 'forks',
    poolOptions: {
      forks: {
        execArgv: [
          '--cpu-prof',
          '--cpu-prof-dir=test-runner-profile',
          '--heap-prof',
          '--heap-prof-dir=test-runner-profile',
        ],

        // Egyetlen profil generálásához
        singleFork: true,
      },
    },
  },
});
ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    pool: 'threads',
    poolOptions: {
      threads: {
        execArgv: [
          '--cpu-prof',
          '--cpu-prof-dir=test-runner-profile',
          '--heap-prof',
          '--heap-prof-dir=test-runner-profile',
        ],

        // Egyetlen profil generálásához
        singleThread: true,
      },
    },
  },
});

A tesztek futása után létrejönnie kell a test-runner-profile/*.cpuprofile és test-runner-profile/*.heapprofile fájloknak. Lásd a Profilozási rekordok vizsgálata részt a fájlok elemzésére vonatkozó utasításokért.

Lásd a Profiling | Examples példát.

Fő szál ​

A fő szál profilozása hasznos a Vitest Vite-használatának és a globalSetup fájlok hibakereséséhez. Itt futnak a Vite bővítményei is.

TIP

Lásd a Performance | Vite oldalt további tippekért a Vite specifikus profilozásról.

Javasoljuk a vite-plugin-inspect használatát a Vite bővítmény teljesítményének profilozásához.

Ehhez argumentumokat kell átadnia a Node folyamatnak, amely a Vitestet futtatja.

bash
$ node --cpu-prof --cpu-prof-dir=main-profile ./node_modules/vitest/vitest.mjs --run
#      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                  ^^^^^
#               NodeJS argumentumok                                        Vitest argumentumok

A tesztek futása után létrejönnie kell egy main-profile/*.cpuprofile fájlnak. Lásd a Profilozási rekordok vizsgálata részt a fájlok elemzésére vonatkozó utasításokért.

Fájl átalakítás ​

Abban az esetben, ha a teszt átalakítási és gyűjtési ideje magas, használhatja a DEBUG=vite-node:* környezeti változót, hogy lássa, mely fájlokat alakítja át és hajtja végre a vite-node.

bash
$ DEBUG=vite-node:* vitest --run

 RUN  v2.1.1 /x/vitest/examples/profiling

  vite-node:server:request /x/vitest/examples/profiling/global-setup.ts +0ms
  vite-node:client:execute /x/vitest/examples/profiling/global-setup.ts +0ms
  vite-node:server:request /x/vitest/examples/profiling/test/prime-number.test.ts +45ms
  vite-node:client:execute /x/vitest/examples/profiling/test/prime-number.test.ts +26ms
  vite-node:server:request /src/prime-number.ts +9ms
  vite-node:client:execute /x/vitest/examples/profiling/src/prime-number.ts +9ms
  vite-node:server:request /src/unnecessary-file.ts +6ms
  vite-node:client:execute /x/vitest/examples/profiling/src/unnecessary-file.ts +4ms
...

Ez a profilozási stratégia jó módja annak, hogy azonosítsa a barrel fájlok által okozott felesleges átalakításokat. Ha ezek a naplók olyan fájlokat tartalmaznak, amelyeket nem szabadna betölteni a teszt futtatásakor, akkor valószínűleg olyan barrel fájljai vannak, amelyek feleslegesen importálnak fájlokat.

A Vitest UI segítségével is hibakeresést végezhet a barrel fájlok okozta lassúság esetén. Az alábbi példa bemutatja, hogyan csökkenti a fájlok importálása barrel fájl használata nélkül az átalakított fájlok számát ~85%-kal.

├── src
│   └── utils
│       ├── currency.ts
│       ├── formatters.ts  <-- Tesztelendő fájl
│       ├── index.ts
│       ├── location.ts
│       ├── math.ts
│       ├── time.ts
│       └── users.ts
├── test
│   └── formatters.test.ts
└── vitest.config.ts
ts
import { expect, test } from 'vitest';
import { formatter } from '../src/utils'; 
import { formatter } from '../src/utils/formatters'; 

test('formatter works', () => {
  expect(formatter).not.toThrow();
});
Vitest UI, amely bemutatja a barrel fájl problémáit

Ahhoz, hogy lássa, hogyan alakulnak át a fájlok, használhatja a VITE_NODE_DEBUG_DUMP környezeti változót, hogy az átalakított fájlokat a fájlrendszerbe írja:

bash
$ VITE_NODE_DEBUG_DUMP=true vitest --run

[vite-node] [debug] dump modules to /x/examples/profiling/.vite-node/dump

 RUN  v2.1.1 /x/vitest/examples/profiling
...

$ ls .vite-node/dump/
_x_examples_profiling_global-setup_ts-1292904907.js
_x_examples_profiling_test_prime-number_test_ts-1413378098.js
_src_prime-number_ts-525172412.js

Kódlefedettség ​

Ha a kódlefedettség generálása lassú a projektjében, használhatja a DEBUG=vitest:coverage környezeti változót a teljesítménynaplózás engedélyezéséhez.

bash
$ DEBUG=vitest:coverage vitest --run --coverage

 RUN  v3.1.1 /x/vitest-example

  vitest:coverage Reading coverage results 2/2
  vitest:coverage Converting 1/2
  vitest:coverage 4 ms /x/src/multiply.ts
  vitest:coverage Converting 2/2
  vitest:coverage 552 ms /x/src/add.ts
  vitest:coverage Uncovered files 1/2
  vitest:coverage File "/x/src/large-file.ts" is taking longer than 3s
  vitest:coverage 3027 ms /x/src/large-file.ts
  vitest:coverage Uncovered files 2/2
  vitest:coverage 4 ms /x/src/untested-file.ts
  vitest:coverage Generate coverage total time 3521 ms

Ez a profilozási megközelítés kiválóan alkalmas a nagy fájlok észlelésére, amelyek véletlenül bekerülnek a lefedettségi szolgáltatók hatókörébe. Például, ha a konfigurációja véletlenül nagy, minifikált Javascript fájlokat is tartalmaz a kódlefedettségben, akkor azoknak meg kell jelenniük a naplókban. Ezekben az esetekben érdemes lehet módosítani a coverage.include és coverage.exclude opciókat.

Profilozási rekordok vizsgálata ​

A *.cpuprofile és *.heapprofile fájlok tartalmát különböző eszközökkel vizsgálhatja. Lásd az alábbi listát példákért.

  • Speedscope
  • Performance Profiling JavaScript in Visual Studio Code
  • Profile Node.js performance with the Performance panel | developer.chrome.com
  • Memory panel overview | developer.chrome.com
Pager
Előző oldalMigrációs útmutató
Következő oldalTeljesítmény javítása

A MIT licenc alapján kiadva.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/guide/profiling-test-performance

A MIT licenc alapján kiadva.

Copyright (c) 2021-Present Vitest Team