There are two cases of usage that we want to describe. In the first case of "Making a product customizable" we go through the process of creating everything from scratch. In the "Generating Customer Options with fixtures" we use fixtures to generate random Customer Options.
In order to add a Customer Option to a product you first have to create the Customer Option. There are two types of CustomerOptions:
The workflow is that you provide a code and a type and save the Customer Option. Then the appropriate fields will be shown. In case 1 you will have the option to add values for the customer to choose from (which then can be priced in the pricing tab). In case 2 you can set some validation options for the entered value.
After you have created all the Customer Options, you can arrange them in Customer Option Groups where every Customer Option gets ordered in a list with distinct positions. This Customer Option Group can now be assigned to the product.