

Go-fuzz: Randomized testing for Go - diggan
https://github.com/dvyukov/go-fuzz#go-fuzz-randomized-testing-for-go

======
rmcpherson
It's amazing that go-fuzz found 137 bugs in the standard library. The design
is based on American Fuzzy Lop
([http://lcamtuf.coredump.cx/afl/](http://lcamtuf.coredump.cx/afl/))

Dmitry Vyukov gave a great talk at Gophercon on go-fuzz and other dynamic
analysis tools for go. Slides: [http://go-
talks.appspot.com/github.com/dvyukov/go-fuzz/slide...](http://go-
talks.appspot.com/github.com/dvyukov/go-fuzz/slides/go-fuzz.slide#1)

------
Taek
I'm really glad to see this, it's one of the major remaining testing tools
that I've wanted for golang. The fact that it has so many entries in its
'trophy case' is encouraging.

The last thing I'm waiting for is mutation testing. There is this library:
[https://github.com/StefanSchroeder/Golang-Mutation-
testing](https://github.com/StefanSchroeder/Golang-Mutation-testing), but it
hasn't received a lot of attention yet.

Mutation testing alters your code to verify that your test suite covers all
potential simple programming mistakes. For example:

    
    
      if val < otherVal {
    

could be mutated to

    
    
      if val <= otherVal {
    

If the test suite doesn't fail after this change, it means that the test
coverage is missing a potential off-by-one error. Fuzzing is good for directly
finding problems using randomized processes, and mutation testing is good for
finding shortcomings in your test suite.

~~~
vessenes
Mr. Vyukov is a beast; you should just post an issue on github and politely
ask; I bet he'd enjoy implementing.

------
wtbob
Highly recommended: every time I use this library I find a bug.

Sadly, some people refuse to handle its results, which I simply cannot
comprehend.

~~~
Kototama
Really? That's surprising. Maybe they think the case where it fails is not
susceptible to occur during a normal execution of the program. This reasoning
could work if you don't define "a normal execution" :-)

