GOLANG_GOOGLE Telegram 2887
👣 Дифференциальное покрытие для быстрой отладки

«Дифференциальное покрытие» — это приём, который помогает быстро находить проблемные участки в коде, сравнивая покрытие не‐упавших и упавших тестов.

📌 Зачем это нужно
- В больших кодовых базах вручную отслеживать, где именно тест упал — долго и сложно.
- Сравнивая два профиля покрытия (успешного и провального), можно автоматически выделить только те участки, которые запустились при падении теста и не запускались ранее.

🚀 Как применить на Go-проекте

1. Собираем профиль «успешного» запуска (пропускаем проблемный тест):

go test -coverprofile=c1.prof -skip='TestAddSub$'


Выделяем строки, уникальные для упавшего теста:


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



head -1 сохраняет шапку профиля

diff… | sed отбирает только новые строки

Открываем результат в браузере:

```bash
go tool cover -html=c3.prof


🔍 Интерпретация отчёта
Зелёным подсвечены участки, которые запустились только в упавшем тесте.

Красным — код, который обычно выполняется, но не был затронут падением теста (может натолкнуть на дополнительные вопросы).

Именно зелёные строки стоят изучить в первую очередь — там, скорее всего, спрятана ошибка.

Пример из math/big
В примере теста TestAddSub падение происходило из-за пропущенного za.neg = false в ветке else.

Из более чем 15 000 строк кода дифференциальное покрытие сузило поиск до 10 строк — двух из них было достаточно, чтобы диагностировать баг.

⚠️ Ограничения
Если баг зависит от специфичных данных или тест не чувствителен к ошибке, покрытие может не указать на проблемный код.

Тем не менее, в большинстве случаев «дифф-покрытие» даёт мгновенный фокус на действительно важных местах.

Используйте дифференциальное покрытие при отладке любых модулей Go (и не только!) — это дешёвый и высокоэффективный способ быстро найти виновника падения теста.

🔜 Читать статью

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM



tgoop.com/Golang_google/2887
Create:
Last Update:

👣 Дифференциальное покрытие для быстрой отладки

«Дифференциальное покрытие» — это приём, который помогает быстро находить проблемные участки в коде, сравнивая покрытие не‐упавших и упавших тестов.

📌 Зачем это нужно
- В больших кодовых базах вручную отслеживать, где именно тест упал — долго и сложно.
- Сравнивая два профиля покрытия (успешного и провального), можно автоматически выделить только те участки, которые запустились при падении теста и не запускались ранее.

🚀 Как применить на Go-проекте

1. Собираем профиль «успешного» запуска (пропускаем проблемный тест):


go test -coverprofile=c1.prof -skip='TestAddSub$'


Выделяем строки, уникальные для упавшего теста:


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



head -1 сохраняет шапку профиля

diff… | sed отбирает только новые строки

Открываем результат в браузере:

```bash
go tool cover -html=c3.prof


🔍 Интерпретация отчёта
Зелёным подсвечены участки, которые запустились только в упавшем тесте.

Красным — код, который обычно выполняется, но не был затронут падением теста (может натолкнуть на дополнительные вопросы).

Именно зелёные строки стоят изучить в первую очередь — там, скорее всего, спрятана ошибка.

Пример из math/big
В примере теста TestAddSub падение происходило из-за пропущенного za.neg = false в ветке else.

Из более чем 15 000 строк кода дифференциальное покрытие сузило поиск до 10 строк — двух из них было достаточно, чтобы диагностировать баг.

⚠️ Ограничения
Если баг зависит от специфичных данных или тест не чувствителен к ошибке, покрытие может не указать на проблемный код.

Тем не менее, в большинстве случаев «дифф-покрытие» даёт мгновенный фокус на действительно важных местах.

Используйте дифференциальное покрытие при отладке любых модулей Go (и не только!) — это дешёвый и высокоэффективный способ быстро найти виновника падения теста.

🔜 Читать статью

@golang_google

BY Golang




Share with your friend now:
tgoop.com/Golang_google/2887

View MORE
Open in Telegram


Telegram News

Date: |

There have been several contributions to the group with members posting voice notes of screaming, yelling, groaning, and wailing in different rhythms and pitches. Calling out the “degenerate” community or the crypto obsessives that engage in high-risk trading, Co-founder of NFT renting protocol Rentable World emiliano.eth shared this group on his Twitter. He wrote: “hey degen, are you stressed? Just let it out all out. Voice only tg channel for screaming”. How to create a business channel on Telegram? (Tutorial) But a Telegram statement also said: "Any requests related to political censorship or limiting human rights such as the rights to free speech or assembly are not and will not be considered." Concise How to Create a Private or Public Channel on Telegram?
from us


Telegram Golang
FROM American