  Appropriate test data is a crucial factor to reach success in dynamic
software testing, e.g., fuzzing. Most of the real-world applications, however,
accept complex structure inputs containing data surrounded by meta-data which
is processed in several stages comprising of the parsing and rendering
(execution). It makes the automatically generating efficient test data, to be
non-trivial and laborious activity. The success of deep learning to cope in
solving complex tasks especially in generative tasks has motivated us to
exploit it in the context of complex test data generation. To do so, a neural
language model (NLM) based on deep recurrent neural networks (RNNs) is used to
learn the structure of complex input. Our approach generates new test data
while distinguishes between data and meta-data that makes it possible to target
both the parsing and rendering parts of software under test (SUT). Such test
data can improve, input fuzzing. To assess the proposed approach, we developed
a modular file format fuzzer, IUST-DeepFuzz. Our conducted experiments on the
MuPDF, a lightweight and favorite portable document format (PDF) reader, reveal
that IUST-DeepFuzz reaches high coverage of SUT in comparison with the
state-of-the-art tools such as learn&fuzz, AFL, Augmented-AFL and random
fuzzing. We also observed that the simpler deep learning models, the higher
code coverage.
