about summary refs log tree commit diff
path: root/docs/choosing_testcases.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/choosing_testcases.md')
-rw-r--r--docs/choosing_testcases.md19
1 files changed, 19 insertions, 0 deletions
diff --git a/docs/choosing_testcases.md b/docs/choosing_testcases.md
new file mode 100644
index 00000000..25002929
--- /dev/null
+++ b/docs/choosing_testcases.md
@@ -0,0 +1,19 @@
+# Choosing initial test cases
+
+To operate correctly, the fuzzer requires one or more starting file that
+contains a good example of the input data normally expected by the targeted
+application. There are two basic rules:
+
+  - Keep the files small. Under 1 kB is ideal, although not strictly necessary.
+    For a discussion of why size matters, see [perf_tips.md](perf_tips.md).
+
+  - Use multiple test cases only if they are functionally different from
+    each other. There is no point in using fifty different vacation photos
+    to fuzz an image library.
+
+You can find many good examples of starting files in the testcases/ subdirectory
+that comes with this tool.
+
+PS. If a large corpus of data is available for screening, you may want to use
+the afl-cmin utility to identify a subset of functionally distinct files that
+exercise different code paths in the target binary.
\ No newline at end of file