Trung BìnhTesting iconTesting

Code coverage là gì? Các loại coverage metrics?

Code coverage đo phần trăm code được chạy bởi tests — generated bởi Istanbul (Jest), V8 (Vitest V8 provider).

  • Metrics: Statement coverage (% statements executed — mỗi expression/assignment là statement); Branch coverage (% branches covered — mỗi if/else/ternary/&&/|| tạo 2 branches, phải test cả true và false case); Function coverage (% functions called ít nhất một lần); Line coverage (% lines executed — thường cao nhất, ít meaningful nhất).
  • Branch coverage là metric quan trọng nhất — 100% statement nhưng 70% branch nghĩa là nhiều edge cases chưa được test. 100% coverage không đảm bảo bug-free: test có thể chạy code nhưng không assert correctly; test với wrong inputs không catch bugs với right inputs.
  • Low coverage là red flag: dưới 60-70% thường là warning sign.
  • Coverage thresholds trong jest.config.js: coverageThreshold: { global: { branches: 80, functions: 80 } } — fail CI nếu không đạt.
  • Practical targets: 80-90% cho business logic; 70%+ overall; không chase 100% cho UI components và configuration files.
  • Excluded from coverage: vendor code, generated files, test utilities — dùng coveragePathIgnorePatterns.
  • Coverage reports: text (CI), html (visual inspection), lcov (SonarQube, Codecov).
  • Mutation testing (Stryker): modify code và check nếu tests fail — đo test quality, không chỉ coverage quantity.

Xem toàn bộ Testing cùng filter theo level & chủ đề con.

Mở danh sách Testing