Enthusiasts of typed functional languages tend to say that the only errors you need to care about are compilation errors. That would indeed be the ideal situation, but even a compiler as advanced as F#'s cannot detect all errors; it is still necessary to test your code. For many years now, programmers have learned to automate these tests to avoid the time-consuming process of manual testing. There are many great tools for automated testing for all popular languages, and F# is no exception. In this chapter, we will overview several techniques from the widely used unit tests to the more advanced property-based testing.
In this chapter, we will cover the following topics: