Re: What is the different between test driver and test program ?/
Well, a "test program" is sort of a general term that could refer to just about anything in the abstract sense ("I have a certain program for testing I am going to institute...") to a more specific ansatz ("I am running this automated test program.")
A test driver is usually some sort of module (in concept) that "drives" a given test in some fashion. Consider that you have a bunch of test objects. This is just some function/method, module/class, component, subsystem, system, etc. that you need to test. (You can make a test object as big or small as you like.)
If you have a test object that is not being tested directly at the code level, a test frame is created for the object. This test frame will call/manipulate/exercise the test object. The frame is the test driver. The frame/test driver exercises the module in the same manner that an another element of the program would.
So, for example, say you have a Module A that is sent some information (say two input numbers) from a Module B. Module A performs a calculation on those numbers and then returns a result to the calling Module B. In this case, your test driver might be a simluation of Module B that sends the input and receives the output. That is all it is. It just drives the test object under consideration.