Testing a complete application environment in a situation that mimics real-world use, such as interacting with a database, using network communications, or interacting with other hardware, applications, or systems if appropriate.
Testing each module of the application and make sure each of them is working fine.
Testing each module of the application and making sure that none of them is having any bug.