The one I am most familiar with is JUnit for testing Java code. Functional tests Functional tests are written from a user's perspective. These tests confirm that the system does what users are expecting it to. Many times the development of a system is likened to the building of a house. While this analogy isn't quite correct, we can extend it for the purposes of understanding the difference between unit and functional tests.
Unit testing is analogous to a building inspector visiting a house's construction site.
He is focused on the various internal systems of the house, the foundation, framing, electrical, plumbing, and so on. Functional tests in this scenario are analogous to the homeowner visiting this same construction site. He assumes that the internal systems will behave appropriately, that the building inspector is performing his task. The homeowner is focused on what it will be like to live in this house. He is concerned with how the house looks, are the various rooms a comfortable size, does the house fit the family's needs, are the windows in a good spot to catch the morning sun.