Kiểm tra thường nhằm mục đích cho thấy rằng phần mềm hoạt động như dự định, nhưng gỡ lỗi là quá trình loại bỏ lỗi khỏi ứng dụng phần mềm. Tuy nhiên, kiểm tra thường phức tạp hơn so với việc chỉ cho thấy một ứng dụng phần mềm hoạt động .
Đối với các dự án phần mềm lớn, kiểm thử có thể được chia thành nhiều giai đoạn, trong đó mỗi giai đoạn có một mục tiêu riêng biệt. Đối với các dự án nhỏ hơn, việc kiểm tra và gỡ lỗi đôi khi được thực hiện đồng thời.
Nhìn chung, kiểm tra có nghĩa là để xác định các lỗi trong một ứng dụng phần mềm. Nó nhằm mục đích chứng minh rằng phần mềm đạt được chức năng dự kiến của nó ở một mức độ nhất định, thường được đặt thấp hơn chức năng 100% vì điều đó là khó đạt được một cách bất thường. Việc kiểm tra có thể được thực hiện theo cách thủ công, nhưng đối với các dự án lớn, việc tự động hóa quy trình không phải là hiếm.
Gỡ lỗi có nghĩa là xác định vị trí và loại bỏ các lỗi khỏi phần mềm. Nó thường là thủ công và được thực hiện một lần cho mỗi lỗi vì một lỗi này khác với một lỗi khác. Trong hầu hết các trường hợp, một lỗi là sự khác biệt giữa những gì một ứng dụng phần mềm thực sự làm và những gì nó dự định làm.
Các lỗi có thể logic hoặc theo cú pháp. Các chương trình chuyên dụng xác định các lỗi này được gọi là trình gỡ lỗi và hầu hết các môi trường lập trình đều có trình gỡ lỗi tích hợp sẵn.