I have once implemented a restaurant search and booking website in Ruby on Rails. Writing the tests for this was quite interesting, since it involved relative complex test data to make sure that the system would find the right restaurant and avoid overbooking.
I guess it could be simplified easy enough to fit in a workshop.
For the first step you have restaurants which fit into several categories:
- Place (city where restaurant is located)
- Cuisine (Asian, American, Chinese, French, Greek...)
- Extras (Casual, Brunch, Garden, Terrace...)
Options could either be selected or let free. You need test data with several restaurants having different combinations of attributes and test cases for searching restaurants and make sure the right ones are selected.
It gets more difficult if you add bookings. In this case each restaurant has a number of free places for a given date (actually this was sliced in two hour pieces, but I would let this out).
Again you need test data for restaurants with no bookings, partially booked and fully booked. People can search and make bookings and the system must make sure that depending on how many places somebody wants to book no overbooking happens.
Another real life example would be a simple shop system, where people can search for items (groups, articles...) and order items and the system must ensure that only items can be ordered that are in stock.
These were examples from websites, but I think you can apply similar test problems to gui applications, for example a booking system for hotel rooms (number of beds, balcony, smoker...)
It can be made more complex with further details, like sending an affirmation email after a booking or order was placed by a customer, an automated billing system with calculating prices and taxes or similar tasks.