Optional extra products on add to cart form
There is for example Commerce add to cart extras:


  This module provides alternative ways of adding products to cart.
  
  The initial version provides a views field handler ("Commerce Product:
  Quantity input field") that relies on the Views Form API (a part of
  Views 3 since RC1) to output a quantity textfield that turns the view
  into an add to cart form. The default quantity can be configured, and
  only products with a quantity larger than 0 are added to the cart.


Also, you can find 2 approaches (VBO + Rules, and custom VBO action) at Add multiple products to cart with VBO.