O teste geralmente visa mostrar que o software funciona conforme o planejado, mas a depuração é o processo de remoção de erros de um aplicativo de software. No entanto, o teste costuma ser mais complicado do que simplesmente mostrar que um aplicativo de software funciona .
Para grandes projetos de software, o teste pode ser dividido em várias fases em que cada fase tem um objetivo distinto. Para projetos menores, o teste e a depuração às vezes são realizados simultaneamente.
Em geral, o teste destina-se a localizar defeitos em um aplicativo de software. O objetivo é provar que o software atinge a funcionalidade pretendida em um determinado nível, que geralmente é definido como inferior a 100 por cento da funcionalidade, uma vez que é incomumente difícil de conseguir. O teste pode ser executado manualmente, mas para grandes projetos, não é incomum automatizar o processo.
A depuração tem como objetivo localizar e remover bugs do software. Geralmente é manual e executado uma vez para cada bug porque um bug é diferente do outro. Na maioria dos casos, um bug é a diferença entre o que um aplicativo de software realmente faz e o que se destina a fazer.
Os bugs podem ser lógicos ou sintáticos. Os programas especializados que localizam esses bugs são chamados de depuradores, e a maioria dos ambientes de programação vem com um depurador integrado.