I may have asked this question before, but what the heck:
All of the practical methods for system identification that I know of involve injecting a signal somewhere in the signal path then looking at the signal response to that signal at one, two or more points. Once you get a data set you can either put the whole thing into the frequency domain and get a transfer function, or you can keep everything in the time domain and get a difference (or differential) equation directly.
The method that I have used almost exclusively is a swept sine-wave using a HP control systems analyzer or hand-built software. For the systems that I've worked with this has worked very well. If you can afford to do the test the swept sine wave can give a very clean frequency response, in the face of nonlinearities it gives exactly the information needed for describing functions, and it's a very direct and intuitive way to get your frequency response.
But I know that other methods exist, mostly ones that involve stimulating the system with random data or a step (i.e. a bump test), and otherwise extracting a transfer function, or stimulating the system and directly designing a controller (Ziegler-Nichols).
So what, if any, methods do you use?
Thanks.