Testing and has_many Questions

To unit test the models' functionality, I realized I need to call save. That said, I wondered if save in test causes the model to be stored in the database. If so, what should I do to avoid this problem? Should I just call Model.destroy_all at the end?

Second, to test controllers' functionality, is it possible to set the params and session hash? If not, how do you test controller functionality?

Also, many of my models uses has_many and belongs_to. What's the difference between the following methods: count, size, length.