Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΡ€Π·ΠΈΠ½ΡƒΠŸΠΎΠ·Π²ΠΎΠ½ΠΈΡ‚ΡŒ
Найти Π² Π”Π·Π΅Π½Π΅

🎯 Π”ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅: умная Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° для эффСктивной ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΊΠΎΠ΄Π°

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ сталкиваСтся с Π·Π°Π³Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΌΠΈ ошибками Π² ΠΊΠΎΠ΄Π΅ β€” особСнно ΠΊΠΎΠ³Π΄Π° приходится ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ систСму, ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ ΠΊΠ΅ΠΌ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ. НСдавно Π°Π²Ρ‚ΠΎΡ€ Π±Π»ΠΎΠ³Π° research!rsc Расс Кокс Π½Π°ΠΏΠΎΠΌΠ½ΠΈΠ» ΠΎ ΠΌΠΎΡ‰Π½ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ заслуТиваСт Π³ΠΎΡ€Π°Π·Π΄ΠΎ большСй популярности: Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ (Differential Coverage). ΠŸΠΎΡ‡Π΅ΠΌΡƒ эта Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π½Π΅ Ρ‚Π°ΠΊ извСстна, Π½ΠΎ способна сущСствСнно ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ процСсс ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ? Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрёмся! Π”ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ β€” это Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ анализируСтся Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π° ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΌΠΈ ΠΈ Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΌΠΈ тСстами. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π²Ρ‹ выявляСтС участки ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΡƒΠΏΠ°Π²ΡˆΠ΅ΠΌ тСстС. Π­Ρ‚ΠΎ позволяСт ΡΡ„ΠΎΠΊΡƒΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° самом ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠΌ мСстС вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ тысячи строк Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. НапримСр, Расс Кокс продСмонстрировал этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ошибки Π² Go-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ math/big. Он ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ тСста: --- FAIL: TestAddSub (0.00s)
int_test.go:2020: addSub(...) = -0x0, ..., want 0x0, ...
ОглавлСниС

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ сталкиваСтся с Π·Π°Π³Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΌΠΈ ошибками Π² ΠΊΠΎΠ΄Π΅ β€” особСнно ΠΊΠΎΠ³Π΄Π° приходится ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ систСму, ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ ΠΊΠ΅ΠΌ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ. НСдавно Π°Π²Ρ‚ΠΎΡ€ Π±Π»ΠΎΠ³Π° research!rsc Расс Кокс Π½Π°ΠΏΠΎΠΌΠ½ΠΈΠ» ΠΎ ΠΌΠΎΡ‰Π½ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ заслуТиваСт Π³ΠΎΡ€Π°Π·Π΄ΠΎ большСй популярности: Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ (Differential Coverage). ΠŸΠΎΡ‡Π΅ΠΌΡƒ эта Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π½Π΅ Ρ‚Π°ΠΊ извСстна, Π½ΠΎ способна сущСствСнно ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ процСсс ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ? Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрёмся!

πŸ”Ž Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ΠΎ Π²Π°ΠΆΠ½ΠΎ?

Π”ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ β€” это Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ анализируСтся Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π° ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΌΠΈ ΠΈ Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΌΠΈ тСстами. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π²Ρ‹ выявляСтС участки ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΡƒΠΏΠ°Π²ΡˆΠ΅ΠΌ тСстС. Π­Ρ‚ΠΎ позволяСт ΡΡ„ΠΎΠΊΡƒΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° самом ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠΌ мСстС вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ тысячи строк Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

НапримСр, Расс Кокс продСмонстрировал этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ошибки Π² Go-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ math/big. Он ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ тСста:

--- FAIL: TestAddSub (0.00s)
int_test.go:2020: addSub(...) = -0x0, ..., want 0x0, ...
FAIL

Π§Ρ‚ΠΎ ΠΆΠ΅ дальшС?

🧰 Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅?

Π‘Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π΄Π²Π° профиля покрытия ΠΊΠΎΠ΄Π°:

  • βœ… ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹Ρ… тСстов (c1.prof)
  • ❌ ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΡƒΠΏΠ°Π²ΡˆΠ΅Π³ΠΎ тСста (c2.prof)

# ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹Ρ… тСстов
$ go test -coverprofile=c1.prof -skip='TestAddSub$'

# ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ³ΠΎ тСста
$ go test -coverprofile=c2.prof -run='TestAddSub$'

Π—Π°Ρ‚Π΅ΠΌ эти ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ:

(head -1 c1.prof; diff c[12].prof | sed -n 's/^> //p') > c3.prof
go tool cover -html=c3.prof

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ (c3.prof), ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ участки ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΌ тСстС. Π­Ρ‚ΠΈ участки Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π·Π΅Π»Ρ‘Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ Π² ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π΅ покрытия. ИмСнно ΠΎΠ½ΠΈ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄ ΠΏΡ€ΠΈΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅.

🎯 Π§Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅?

Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ‚ ряд ΡΠΈΠ»ΡŒΠ½Ρ‹Ρ… сторон:

  • 🎯 БыстроС выявлСниС ошибок:
    ВмСсто Π°Π½Π°Π»ΠΈΠ·Π° всСго ΠΊΠΎΠ΄Π° (Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ это Π±Ρ‹Π»ΠΎ Π±ΠΎΠ»Π΅Π΅ 15 000 строк), Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ сразу ΡƒΠΊΠ°Π·Π°Π»ΠΎ Π½Π° 10 ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… строк, срСди ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈ Π±Ρ‹Π»Π° ошибка.
  • πŸš€ Экономия Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ:
    ΠœΠ΅Ρ‚ΠΎΠ΄ Π΄Π΅ΡˆΡ‘Π²Ρ‹ΠΉ Π² ΠΏΠ»Π°Π½Π΅ рСсурсов ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ускоряСт процСсс Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Ρ‡Ρ‚ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ.
  • πŸ“Œ ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ точности Π°Π½Π°Π»ΠΈΠ·Π°:
    Код, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ покрывался ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΌΠΈ тСстами, автоматичСски ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΈΠ· Π°Π½Π°Π»ΠΈΠ·Π°, Ρ‡Ρ‚ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ количСство Π»ΠΎΠΆΠ½Ρ‹Ρ… срабатываний.

Однако, Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ эта Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π½Π΅ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ идСальна. Она прСкрасно Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с простыми ошибками, Π½ΠΎ Π½Π΅ спасаСт, Ссли ошибка проявляСтся Π² особых условиях Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ тСст Ρ‚ΠΎΠΆΠ΅ Π·Π°Π΄Π΅Π²Π°Π΅Ρ‚, Π½ΠΎ Π½Π΅ распознаёт ΠΊΠ°ΠΊ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹Π΅.

🚧 ВСхничСскиС Π½ΡŽΠ°Π½ΡΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Расс Кокс примСнял инструмСнтарий Go, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:

  • πŸ› οΈ Π£Ρ‚ΠΈΠ»ΠΈΡ‚Ρƒ go test для создания ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΉ покрытия.
  • βš™οΈ Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ diff Π² связкС с sed, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ различия Π² профилях.
  • πŸ“Š ВстроСнный Π² Go инструмСнт go tool cover для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ профиля.

НСсмотря Π½Π° простоту ΠΊΠΎΠΌΠ°Π½Π΄, ΠΈΡ… Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Ρ‘Ρ‚ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт Π² Ρ€ΡƒΠΊΠΈ программиста.

πŸ’‘ Π›ΠΈΡ‡Π½ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅ Π°Π²Ρ‚ΠΎΡ€Π° ΠΎ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ΅

На ΠΌΠΎΠΉ взгляд, Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ заслуТиваСт Π³ΠΎΡ€Π°Π·Π΄ΠΎ большСго распространСния срСди ΠΊΠΎΠΌΠ°Π½Π΄ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², особСнно Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΈ слоТных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…. Π― сталкивался с ситуациями, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ»Π»Π΅Π³ΠΈ часами искали ошибки Π² многостраничных Π»ΠΎΠ³Π°Ρ… ΠΈ ΠΊΠΎΠ΄Π΅. ΠŸΡ€ΠΎΡΡ‚Π°Ρ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ покрытия ΠΌΠΎΠ³Π»Π° Π±Ρ‹ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

Π­Ρ‚Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° прСкрасно интСгрируСтся Π² CI/CD-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ‹ ΠΈ способна автоматичСски ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ измСнСния ΠΊΠΎΠ΄Π°, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сниТая Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ QA-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ².

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, с появлСниСм всё Π±ΠΎΠ»Π΅Π΅ слоТных систСм ΠΈ микросСрвисов, Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ становится Π½Π΅ просто ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Π° практичСски ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

πŸŽ–οΈ Как Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ этот ΠΌΠ΅Ρ‚ΠΎΠ΄?

Для эффСктивного использования Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ покрытия Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ простых ΠΏΡ€Π°Π²ΠΈΠ»:

  • πŸ“Œ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π² CI/CD для автоматичСской Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ошибок послС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΊΠΎΠ΄Π°.
  • πŸ” РСгулярно сравнивайтС ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ покрытия Π΄ΠΎ ΠΈ послС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ΄Π΅.
  • 🚩 ΠŸΡ€ΠΈ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² сразу дСмонстрируйтС эту Ρ‚Π΅Ρ…Π½ΠΈΠΊΡƒ β€” ΠΎΠ½Π° проста ΠΈ эффСктивна!

πŸ”— ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ссылки ΠΈ источники:

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΈ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ Π² ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ процСсс, экономящий Π²Π°ΠΌ врСмя ΠΈ Π½Π΅Ρ€Π²Ρ‹! πŸš€βœ¨