Software testing is any activity aimed at evaluating an attribute or capability of a program or system and determining that it meets its required results.
For better answers, any questions about Software Quality Assurance & Testing should be asked on SQA - https://sqa.stackexchange.com/. You can ask only programming related questions on Stack Overflow and that too can be asked on SQA
From Wikipedia:
Software testing is an investigation conducted to provide developers and stakeholders with information about the quality of the product or service under test. Software testing can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software implementation.
Test techniques include, but are not limited to, the process of executing a program or application with the intent of finding software bugs (errors or other defects).
Software testing can be stated as the process of validating and verifying that a software program/application/product:
- meets the requirements that guided its design and development;
- works as expected;
- can be implemented with the same characteristics.
There are white-box-tests and black-box-tests.
A white-box test verifies the structure of a software product whereas the block-box test validates the requirements.
Software testing, depending on the testing method employed, can be implemented at any time in the development process. However, most of the test effort occurs after the requirements have been defined and the coding process has been completed. As such, the methodology of the test is governed by the software development methodology adopted.
The following types of tests are commonly used to denote the level of detail the tests are focused on:
Agile and Test Driven Development
Agile development model places added emphasis on testing. Test driven development advocates writing a test for a feature before developing the actual feature. Additional information:
Shift-left testing
Shift-left testing is an approach to software testing and system testing in which testing is performed earlier in the lifecycle (i.e. moved left on the project timeline).