Rumah  >  Artikel  >  hujung hadapan web  >  Kebenaran tentang liputan ujian

Kebenaran tentang liputan ujian

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-09-28 16:23:01507semak imbas

The truth about test coverage

Kebenaran yang berkuasa.

Lihat kod berikut, ringkas dan mudah:

function sum(a, b) {
  return a + b;
}

Sekarang, mari tulis beberapa ujian untuknya:

test('sum', () => {
  expect(sum(1, 2)).toBe(3);
  expect(sum(2, 3)).toBe(5);
  expect(sum(3, 4)).toBe(7);
  expect(sum(4, 5)).toBe(9);
});

Kami mendapat perlindungan 100%, bukan? Ya, ya, kami tahu, sebenarnya kami boleh katakan kami mendapat liputan 400% kerana semua kod diuji sepenuhnya 4 kali, tetapi adakah kami?

Sebenarnya kami tidak. Kami sedang menguji fungsi dengan set input yang terhad, dan kami tidak mempertimbangkan kes tepi dan kami juga tidak menguji fungsi dengan input yang tidak sah.

Pertimbangkan perkara berikut:

sum(1, '2');
sum(1, null);
sum(1, undefined);

Apakah yang akan berlaku dalam senario sedemikian? Adakah fungsi itu akan menimbulkan ralat? Adakah ia akan mengembalikan nilai? Adakah ia akan memecahkan permohonan kami?

Berhati-hati dengan perangkap liputan ujian.

Liputan ujian ialah alat yang berkuasa, tetapi ia bukan penyelesaian muktamad. Ini ialah metrik yang boleh membantu anda memahami jumlah kod anda sedang diuji, tetapi ia tidak memberitahu anda sejauh mana ia diuji.

Liputan ujian boleh membantu anda dengan kuantiti, tetapi ia boleh melakukan sedikit dengan kualiti. Terpulang kepada anda untuk menulis ujian yang baik, untuk mempertimbangkan kes tepi, untuk menguji kod anda dengan input yang tidak sah dan untuk memastikan bahawa ujian anda bermakna dan berharga.

Kesimpulan

Ini adalah artikel yang cukup pendek, saya akui, saya harap ia berguna kepada anda sebagai peringatan tentang kepentingan menulis ujian yang baik. Ingat, liputan ujian adalah alat, bukan matlamat. Terpulang kepada anda untuk memanfaatkannya sepenuhnya.

Ciao,

Michael.

Atas ialah kandungan terperinci Kebenaran tentang liputan ujian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn