Software QA includes the entire software development program - monitoring and improving the process, making sure that any agreed-upon processes, standards and procedures are followed, and ensuring that problems are found and dealt with.
Testing involves operation of a system or application under controlled conditions and assessing the results . The controlled conditions should involve both normal and unusual conditions. Testing should purposefully attempt to make things go wrong to determine if things happen when they shouldn't or things don't happen when they should.
Unit testing is used to test particular code modules or functions. Usually it is done by a programmer and not by testers because a thorough knowledge of the internal program design and code are required for doing this.
Exploratory Testing is a creative, informal software test. The exploratory testing means testing of software without any specific plans and schedules. Testers have to understand the application first by exploring the application and based on this understand they should come up with the test scenarios.
Regression Testing - re-testing after fixes or modifications of the software or its environment and it is difficult to determine how much re-testing is needed, especially near the end of the development cycle
Mutation Testing is a method for determining if a set of test data or test cases is useful, by deliberately introducing various code changes and retesting with the original test data/cases to determine if the 'bugs' are detected.
It is a term often used interchangeably with ‘load’ and ‘performance’ testing and it is also described as system functional testing while under unusually heavy loads, heavy repetition of certain actions or inputs, input of large numerical values, large complex queries to a database system, etc.