Is there some particular context in which you see these defined? In general, you should give to QA exactly what you intend to deliver as a product. For example, the debug flag to the compiler should be off. Also, paths, classpaths, and libraries should be the same as will be used by the customer. On the other hand, a dev build can be a bit looser. You can (and probably should) keep debugging and assertions enabled. The paths can be set up to take advantage of the development environment, rather than putting together a full installation package.