Growing Functional Software, Guided by Tests

14. - 15. sep 2016
09:00 - 17:00
Mark Seemann
kr. 12.500 ex. moms

Learn how to develop and test applications with F# - the .NET language with superior productivity. You'll see comprehensive examples of how to develop a web-based application using outside-in test-driven development, and also how you can use property-based testing for more succinct and maintainable tests with better coverage.

On the first day, you'll learn how to apply outside-in test-driven development in the style from Growing Object-Oriented Software, Guided by Tests - with the twist that the result isn't going to be Object-Oriented, but Functional. You'll learn how to exercise the boundary of an application via automated tests, and how to include a relational database as part of test-driven integration testing.

On the second day, you'll learn 'unit testing on steroids' - property-based testing, which is a slightly different approach to automated software testing. Based on randomised test data, it occupies an interesting intersection between unit testing and fuzz testing.

Perhaps the most interesting feature of property-based testing is that since test data is unknown at design-time, it forces test programmers to focus on the observable behaviour of a system, rather than on implementation details. This should get the attention of fans of behaviour-driven development, although property-based testing offers a completely different perspective.

On this second day, you'll learn about property-based testing in general, as well as how to write property-based tests with FsCheck in F#.

What you will learn

  • How to design a complete application with Functional Programming
  • Using to drive tests written in F#
  • Testing an HTTP-based API through OWIN self-hosting
  • How to set up and tear down a relational database as part of acceptance testing
  • Property-based testing
  • How to interoperate with existing object-oriented .NET frameworks and libraries

The workshop will consist of an interchange of presentations and hands-on exercises.

Intended audience

Programmers interested in learning new techniques for design and unit testing of software should attend this workshop. Even if you don't work with F#, you may learn something interesting that you can use in your daily life.

Participants should be comfortable enough with managing NuGet packages to be able to add FsCheck to a code base. You must also be able to write simple F# library code, but you don't have to have extensive experience with F#: as long as you're comfortable with basic F# syntax, you will benefit from participating.