NModel is a model-based testing and analysis framework for model programs written in C#. It is explained and used in the book Model-based Software Testing and Analysis with C#. In constrast with conventional unit testing, where a test engineer must code each test case, model-based testing is recommended where so many test cases are needed that it would be infeasible to code them all by hand. It is especially indicated for testing behaviors with data- and history-dependence and nondeterminism, where many different variations (data values, interleavings etc.) should be tested for each scenario (or use case). Model-based testing has been applied to communication protocols, web applications, embedded control systems, and graphical user interfaces.