Jan Stępień will be giving a talk at :clojureD 2017. He will be speaking about mutation testing.
PurelyFunctional.tv: How did you get into Clojure?
Jan Stępień: I discovered Clojure at some point during my undergraduate studies. Most of the curriculum at my university was based on mainstream languages like C, C++, C# and Java. As a second year student I wanted to try something different, and started learning Ruby.
I stumbled upon Clojure not long afterwards. It felt really different and its syntax seemed—to say the least—somewhat foreign. Luckily, Ruby had introduced me to concepts like everything is an expression and higher order functions, such as folding, mapping and filtering. It helped me overcome the learning curve.
I used Clojure a lot in the remainder of my studies. I still remember updating some of my assignment projects from 1.1.0 to 1.2.0, back when protocols were introduced. Since then Clojure has been one of the primary tools in my repertoire.
PF.tv: What is your talk about?
JS: When writing test suites for our projects we typically want them to comprehensively validate the correctness of our implementation. What distinguishes a good test suite is the ability to detect a wide range of faults and regressions sneaking into our implementation.
Is it possible to determine whether a given test suite is good at what it's doing? Yes, by injecting synthetic bugs into our programmes and running our tests. A good test suite will catch those faults by turning red. An Imperfect one will remain green. If our tests stay green despite injected bugs we know that there's something we should improve upon.
This is exactly what mutation testing is about. In the course of my talk we'll see how we can make it work in Clojure.
PF.tv: Who is your talk for?
JS: My talk is dedicated to a wide audience. Everybody interested in improving the quality of their test suites will certainly find something valuable to take away. I'll do my best to make my presentation approachable even for Clojure beginners.
PF.tv: What do you hope people will take away from the talk?
JS: My main goal is to show that mutation testing is a viable technique for evaluating and improving the quality of our test suites. Another thing to take away is going to be a short introduction to a Clojure mutation testing library I've been working on.
PF.tv: What concepts do you recommend people be familiar with to maximize their experience with the talk?
JS: I'm not going to assume any prior experience with mutation testing. Understanding code coverage metrics and their shortcomings could be valuable. Familiarity with how Clojure namespaces and redefining vars work might be useful in understanding technical details, but it's not a must.
PF.tv: What resources are available for people who want to study up before the talk?
JS: An excellent and thorough survey of mutation testing was published by Jia and Harman in 2010. I recommend looking at Mutant and PIT, mutation testing tools for Ruby and Java respectively.
PF.tv: Where can people follow you online?
JS: Take a look at my professional and private web presence. Should you accidentally find yourself in Munich, Germany, be sure to join our next Clojure meetup. It's way more fun compared to what's going on online.
PF.tv: Are there any projects you'd like people to be aware of? How can people help out?
JS: I encourage you to take a look at ClojureBridge. Maybe there's a workshop in your area coming up soon? ClojureBridge could surely benefit from your help.
PF.tv: Where do you see the state of Clojure in 10 years?
JS: In 10 years Clojure will be 20 years old. Given the pace of its development, I don't think we'll see a lot of changes to the language itself. The ecosystem surrounding it is a different story. I don't dare to make any predictions; a decade feels like an eternity. I'm crossing my fingers for further growth of the community, and even more importantly preservation of its welcoming character and mature attitude. Broader adoption in the industry would be welcome too. All those goals are things we have to work on together.
PF.tv: If Clojure were an animal, what animal would it be?
JS: Clearly, a wisent.