If you want to know how to test whole application, it's not a unit test, since the unit when talking about .Net applications is a class or method. I guess your confusion arouse from the fact that the automated thing you create is a test unit (you do unit tests with tests units, but you can also do integration tests with test units...). You are probably talking about automated integration tests or acceptance tests (which should never be automatic).
Testing models such as V-Model define at least three test phases:
Unit Testing
Tests a single functionality or
feature of the system. It's based on
the technical specification of the
unit (class or method) that you are
building. It can be automated through
the use of tests units. Also, I think one should
use a CI Server (continuous integration)
here, since if your units don't correctly integrate,
there problem has most likely appeared in this phase.
Integration Testing
Once you certified that each of your
"units" (classes or methods) works
individually, you try now to check if
the whole system is working as one. So
you do an integration test, which
checks to see if those units work
correctly together in order to achieve
the purpose of the system. You should
try to automate Integration Tests as
well. You can use tools like
StoryTeller for that.
User Acceptance Testing
User Acceptance test must be
conducted by the user, so no
automation here. Of course, you can
create and load the data that the user
will validate, so portions of the
tests are automated, but not the
result. No robot should ever give you the final word that the system is
working, only the user.
Now, to answer your questions:
What are the standard mechanisms in performing unit testing and writing test cases?
You should use .Net Test Units for that purpose. In order to test user interaction (you can test a user interaction with a screen), you can use a external application (check the links below). Some robot might automate such tests to you.
Does the methodologies change based on the application nature such as Windows Forms, Web applications etc?
Indeed. For example, a batch application can be unit tested through the sole use of test units. Tests cases for batch systems can also be more lax, but will need more data input to check all the constraints.
What is the best approach to make sure we cover all the scenarios? Any popular books on this?
I'm not sure that there's a real way to make sure that you covered every scenario, but what you should do is define what you are testing against. Like I said before, you should unit test against the technical specification, so if your spec is well written, you should be able to clearly identify the test cases. If you feel the need to test against something that wasn't specified, then you should be improving your design techniques.
Popular tools for performing unit testing?
List of GUI testing tools
List of unit testing frameworks
Hope this helps.