TGViewer
Good dev knows Good dev knows @gooddevknows · 2K subscribers
Post #127 5.95K
Mutation testing

Хороший разработчик пишет тесты. Важно сразу договориться — тестами нельзя проверить, что наше приложение работает правильно. Тесты могут просто показать, что наш код работает так как мы ожидаем в определенных условиях.

Мы можем тестировать компоненты отдельно с помощью unit тестов, мы можем тестировать как все работает вместе, с помощью интеграционных тестов. Но сколько тестов нужно? Чем сложнее приложение, тем больше сценариев, как оно может работать — тем больше тестов можно написать. Все сценарии покрыть невозможно. Но можно усилить свой quality assurance процесс дополнительно. Один из таких вариантов — применять mutation testing 🧟‍♂️.

Суть этого подхода проста. Специальная библиотека делает в вашем коде изменение (мутант) и запускаются тесты. Если ваши тесты упали, значит они убили мутанта ☠️. Если ваши тесты не упали, значит он выжил и нанес ущерб. Это что-то значит. Хотя бы следующее — либо изменение было сделано в мертвом коде, либо этот кусок кода не тестируется, либо ваши тесты плохо работают. Из этого уже можно сделать какие-то выводы и принять решения.

Какие изменения вносятся в код? Например, у вас в коде есть if(myValue == 50), мутант может выглядеть так if(myValue != 50). Мутант ведет себя как обычный баг.

Качество ваших тестов можно будет измерить ориентируясь на mutation score. mutation score = number of mutants killed / total number of mutants. Если mutation score низкий — нужно менять ваши тесты.

Что можно использовать:
* Stryker — для JavaScript, C#, Scala
* Pitest — для JVM языков
* Mull — для C или C++
* mutmut — для Python

⬛️ Еще раз — тесты это классно. Их нужно писать. Если хотите контролировать, что ваши тесты действительно что-то проверяют, добавьте mutation testing.

#хардскиллы
  • 👍 43
More from @gooddevknows
  1. Aug 27, 2026🛰 Я придбав Starlink! Ще поза-вчора вранці я не збирався купляти ніякий Starlink. Але, пр…
  2. Jul 1, 2026photo post
  3. Jul 1, 2026✨ Crash Course: Storytelling для інженерів ✨ 📅 9 — 13 липня 2026 1️⃣ Чому історії працюют…
  4. Jul 1, 2026Post #278
  5. Apr 1, 2026We have one ticket left for: https://fwdays.com/event/tech-lead-course-5 . Code LIFE_BY_PP…
  6. Mar 9, 2026Hi friends, For those who have missed it, I now regularly post in my 🇺🇦 channel: https:/…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →