This came up while talking to another developer. He recalled some product that was in development like 15 years ago (but didn't remember the name or details, or whether it went to production) that would:
- For a given page/screen of an application, automatically identify all the interactive elements (text boxes, dropdowns, buttons, etc.)
- For each type of element, have some concept of providing random input (clicking a button; providing different kinds of text input such as long strings, special characters, etc.; single or multi-selection in a list; etc.)
- Randomly choose an interactive element on the page, apply random input, and repeat with another randomly selected element.
Questions:
- What would you call this testing technique? It's similar to fuzz testing or combinatorial testing but those don't seem to quite capture it.
- Are there any existing tools that can be used for this?
I'm not too concerned about targeting web vs. desktop applications--mostly just interested in knowing if something like this is out there. Open-source would be ideal for learning from the actual code regardless of whether we could directly use the tool on our own applications.
EDIT: Peter raised a good point that merits a clarification. By "providing random input", I really meant "randomly select from a well-defined list of 'interesting' inputs". For example, for a text field, a subset of this list might be:
- Empty string
- Extremely long string
- All numbers
- Mix of letters and numbers
- Special characters
- Entry that would match backing language's implementation of binary, octal, or hex notation (we once found a bug in our application where a "numeric" text field validated successfully with input like 0xaf38)
- Unicode characters
- Uppercase
- The word "Null"
- etc.
The idea of randomly choosing elements to apply such input to would be to catch odd interactions between input fields, but you could also have such a system that would just loop through each field and test it in isolation, as Cherree's comment touched on.