Skip to content
Vitest 3
Main Navigation Kılavuz & APIYapılandırmaTarayıcı ModuGelişmiş API
3.2.0
2.1.9
1.6.1
0.34.6

Türkçe

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

Türkçe

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

Görünüm

Sidebar Navigation

Giriş

Neden Vitest

Başlarken

Özellikler

Vitest'i Yapılandırma

API

Test API Referansları

Mock Fonksiyonlar

Vi

expect

expectTypeOf

assert

assertType

Kılavuz

Komut Satırı Arayüzü

Test Filtreleme

Test Projeleri

Raporlayıcılar

Kapsam

Anlık Görüntüler

Mocking

Paralellik

Tür Testleri

Vitest UI

Kaynak İçi Test

Test Ortamı

Test Açıklamaları

Test Ortamı

Eşleştiricileri Genişletme

IDE Entegrasyonları

Hata Ayıklama

Sık Karşılaşılan Hatalar

Geçiş Kılavuzu

Vitest 3.0'a Geçiş

Jest'ten Geçiş

Performans

Test Performansını Profillendirme

Performansı İyileştirme

Tarayıcı Modu

Gelişmiş API

Diğer Test Çalıştırıcılarla Karşılaştırmalar

Bu sayfada

Test Performansını Profillendirme ​

Vitest'i çalıştırdığınızda, testlerinizin çeşitli zaman metriklerini raporlar:

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: Dosyaların dönüştürülmesi için harcanan süre. Bkz. Dosya Dönüştürme.
  • Setup: setupFiles dosyalarının çalıştırılması için harcanan süre.
  • Collect: Test dosyalarındaki tüm testlerin toplanması için harcanan süre. Buna, tüm dosya bağımlılıklarını içe aktarmak için geçen süre de dahildir.
  • Tests: Test senaryolarını fiilen çalıştırmak için harcanan süre.
  • Environment: Test environment (örneğin JSDOM) kurulumu için harcanan süre.
  • Prepare: Vitest'in test çalıştırıcısını hazırlamak için kullandığı süre.

Test Çalıştırıcısı ​

Test yürütme süreniz yüksek olduğunda, test çalıştırıcısı için bir profil oluşturabilirsiniz. Aşağıdaki seçenekler için NodeJS belgelerine bakın:

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

WARNING

--prof seçeneği, node:worker_threads sınırlamaları nedeniyle pool: 'threads' ile çalışmaz.

Bu seçenekleri Vitest'in test çalıştırıcısına iletmek için, Vitest yapılandırmanızda poolOptions.<pool>.execArgv öğesini tanımlayın:

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',
        ],

        // Tek bir profil oluşturmak için
        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',
        ],

        // Tek bir profil oluşturmak için
        singleThread: true,
      },
    },
  },
});

Testler çalıştırıldıktan sonra test-runner-profile/*.cpuprofile ve test-runner-profile/*.heapprofile dosyaları oluşturulmuş olacaktır. Bu dosyaları nasıl analiz edeceğinize ilişkin talimatlar için Profillendirme kayıtlarını inceleme bölümüne bakın.

Örnek için Profillendirme | Örnekler bölümüne bakın.

Ana İş Parçacığı ​

Ana iş parçacığını profillendirmek, Vitest'in Vite kullanımını ve globalSetup dosyalarını hata ayıklamada kullanışlıdır. Vite eklentileriniz de burada çalışır.

TIP

Vite'a özgü profillendirme hakkında daha fazla ipucu için Performans | Vite bölümüne bakın.

Vite eklenti performansınızı profillendirmek için vite-plugin-inspect kullanmanızı öneririz.

Bunu yapmak için, Vitest'i çalıştıran Node sürecine argümanlar iletmeniz gerekir.

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

Testler çalıştıktan sonra main-profile/*.cpuprofile dosyası oluşturulmuş olacaktır. Bu dosyaları nasıl analiz edeceğinize ilişkin talimatlar için Profillendirme kayıtlarını inceleme bölümüne bakın.

Dosya Dönüştürme ​

Test dönüştürme ve toplama süreleriniz yüksekse, hangi dosyaların vite-node tarafından dönüştürüldüğünü ve yürütüldüğünü görmek için DEBUG=vite-node:* ortam değişkenini kullanabilirsiniz.

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
...

Bu profilleme stratejisi, barrel dosyalarının neden olduğu gereksiz dönüşümleri tanımlamak için iyi bir yoldur. Bu günlükler, testiniz çalıştırıldığında yüklenmemesi gereken dosyaları içeriyorsa, gereksiz dosyaları içe aktaran barrel dosyalarınız bulunabilir.

Barrel dosyalarının yol açtığı yavaşlığı analiz etmek için Vitest UI kullanabilirsiniz. Aşağıdaki örnek, barrel dosyası olmadan dosyaları içe aktarmanın dönüştürülen dosya miktarını yaklaşık %85 oranında nasıl azalttığını göstermektedir.

├── src
│   └── utils
│       ├── currency.ts
│       ├── formatters.ts  <-- Test edilecek dosya
│       ├── 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, barrel dosyası sorunlarını gösteriyor

Dosya dönüşümlerini incelemek için, dönüştürülen dosyaları dosya sistemine yazmak üzere VITE_NODE_DEBUG_DUMP ortam değişkenini kullanabilirsiniz:

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

Kod Kapsamı ​

Projenizde kod kapsamı oluşturma yavaşsa, performans günlüğünü etkinleştirmek için DEBUG=vitest:coverage ortam değişkenini kullanabilirsiniz.

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

Bu profilleme yaklaşımı, kapsam sağlayıcıları tarafından yanlışlıkla seçilen büyük dosyaları tespit etmek için oldukça etkilidir. Örneğin, yapılandırmanız yanlışlıkla büyük, küçültülmüş Javascript dosyalarını kod kapsamına dahil ediyorsa, bunlar günlüklerde görünecektir. Bu durumlarda coverage.include ve coverage.exclude seçeneklerinizi ayarlamak isteyebilirsiniz.

Profillendirme Kayıtlarını İnceleme ​

*.cpuprofile ve *.heapprofile dosyalarının içeriklerini çeşitli araçlarla inceleyebilirsiniz. Örnekler için aşağıdaki listeye bakın.

  • Speedscope
  • Visual Studio Code'da JavaScript Performansını Profillendirme
  • Performans paneliyle Node.js performansını profillendirme | developer.chrome.com
  • Bellek paneline genel bakış | developer.chrome.com
Pager
Önceki sayfaGeçiş Kılavuzu
Sonraki sayfaPerformansı İyileştirme

MIT Lisansı altında yayınlanmıştır.

Copyright (c) 2021-Present Vitest Team

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

MIT Lisansı altında yayınlanmıştır.

Copyright (c) 2021-Present Vitest Team