Re:Fuzzing an API with DeepState
by withzombies on Tuesday January 22, 2019 @11:12AM
(#18969300)
A software QA engineer walks into a bar. He orders a beer. Orders 0 beers. Orders 99999999999 beers. Orders a lizard. Orders -1 beers.
First real customer walks in and asks where the bathroom is. The bar bursts into flames, killing everyone.
Using symbolic execution to simultaneously test all edge cases is a really powerful idea. DeepState is especially powerful since it'll generate test cases you can use to fix bugs and then use them in your traditional CI tests.
Re:Fuzzing an API with DeepState
by ovi256 on Thursday January 24, 2019 @03:54AM
(#18987049)
>it'll generate test cases you can use to fix bugs and then use them in your traditional CI tests
That's what I like about hypothesis, it will try to generate minimal testing cases and save them for later. If you're a Python dev and you like what DeepState does, consider hypothesis too.
Re:Fuzzing an API with DeepState
by pag on Tuesday January 22, 2019 @12:34PM
(#18970223)
DeepState provides a Google Test-compatible interface to writing C++ unit tests; however, underneath it all, it is really a C unit testing framework. That is the reason for some of the strange naming of functions like DeepState_Int: these are the underlying C interfaces. If you're using C++, you can choose to use Symbolic<int> or symbolic_int. However, if your codebase is pure C, then have no fear, DeepState can still help you!
Re:Fuzzing an API with DeepState
by jeremysalwen on Thursday January 24, 2019 @02:23AM
(#18986643)
I've been doing a similar thing in Rust with cargo-fuzz and the `arbitrary` crate. One thing that could have been made more clear is that a big advantage of something like DeepState is that the fuzzers it uses support instrumentation guided fuzzing, which is exponentially more powerful than the simple random fuzzing from regehr's original post.
First real customer walks in and asks where the bathroom is. The bar bursts into flames, killing everyone.
Using symbolic execution to simultaneously test all edge cases is a really powerful idea. DeepState is especially powerful since it'll generate test cases you can use to fix bugs and then use them in your traditional CI tests.
That's what I like about hypothesis, it will try to generate minimal testing cases and save them for later. If you're a Python dev and you like what DeepState does, consider hypothesis too.
https://hypothesis.readthedocs.io/en/latest/