<commit_before>---
layout:     post
title:      "Mutation testing in Elixir"
subtitle:   "introducing exavier"
date:       2019-07-22 12:19:00
author:     "<NAME>"
header-img: "img/mutation-testing-elixir/cover.jpg"
header-img-author-name: "<NAME>"
header-img-author-url: "https://unsplash.com/@lurm"
---

I first heard about mutation testing when attending a Ruby meetup here in Lisbon. At the time [Tadas](https://twitter.com/tadassce) presentation focused on [`mutant`](https://github.com/mbj/mutant), **the** Ruby library for mutation testing by [mbj](https://twitter.com/_m_b_j_).

It sounded fun, but not very practical. I think that was because I didn't understand the full scope, goals and philosophy, so to speak, of mutation testing. This post will help explore mutation testing and why Elixir is a good candidate to give it a shot. I will then introduce a library I've been working on [`exavier`](https://github.com/dnlserano/exavier) which aims to provide a full-blown mutation testing framework for Elixir.

It's still very early days, it may be haunted by major design flaws, stupid ideas and this blog post also serves a bit as a call for help. If you're out there reading and you think mutation testing might be your thing and you want to help, hit me up [@dnlserrano](https://twitter.com/dnlserrano) or [open a PR](https://github.com/dnlserrano/exavier).

# What is mutation testing?
<commit_msg>Fix link for exavier lib in mutation testing post<commit_after>---
layout:     post
title:      "Mutation testing in Elixir"
subtitle:   "introducing exavier"
date:       2019-07-22 12:19:00
author:     "<NAME>"
header-img: "img/mutation-testing-elixir/cover.jpg"
header-img-author-name: "<NAME>"
header-img-author-url: "https://unsplash.com/@lurm"
---

I first heard about mutation testing when attending a Ruby meetup here in Lisbon. At the time [Tadas](https://twitter.com/tadassce) presentation focused on [`mutant`](https://github.com/mbj/mutant), **the** Ruby library for mutation testing by [mbj](https://twitter.com/_m_b_j_).

It sounded fun, but not very practical. I think that was because I didn't understand the full scope, goals and philosophy, so to speak, of mutation testing. This post will help explore mutation testing and why Elixir is a good candidate to give it a shot. I will then introduce a library I've been working on [`exavier`](https://github.com/dnlserrano/exavier) which aims to provide a full-blown mutation testing framework for Elixir.

It's still very early days, it may be haunted by major design flaws, stupid ideas and this blog post also serves a bit as a call for help. If you're out there reading and you think mutation testing might be your thing and you want to help, hit me up [@dnlserrano](https://twitter.com/dnlserrano) or [open a PR](https://github.com/dnlserrano/exavier).

# What is mutation testing?

{'fraction_non_alphanumeric': 0.10059378274537199, 'fraction_numerical': 0.009779951100244499, 'mean_word_length': 4.293900184842884, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 14, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5524508', 'n_tokens_mistral': 882, 'n_tokens_neox': 823, 'n_words': 366}