{'fraction_non_alphanumeric': 0.01675977653631285, 'fraction_numerical': 0.0, 'mean_word_length': 5.475903614457831, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Test-driven agent-based simulation development

Developing a useful agent-based model and simulation typically involves acquiring knowledge of the model's domain, developing the model itself, and then translating the model into software. This process can be complex and is an iterative one where changes in domain knowledge and model requirements or specifications can cause changes in the software that in turn may require additional modeling and domain knowledge. Test-driven development is a software development technique that can help ameliorate this complexity by evolving a loosely coupled flexible design, driven by the creation of many small, automated unit tests. When the focus shifts to writing small tests that exercise the simulations behavior, the larger problem of translating a conceptual model into working code is decomposed into a series of much smaller, more manageable and highly focused translations. This paper explores the application of this technique to agent-based simulation development with examples from Repast Simphony, ReLogo and Repast HPC.