Software tests are empirical and technical investigations whose mission is to provide users with information about the quality of the software product or service under test.
Testing techniques include the process of running a program or application with the intention of finding bugs and verifying that the software product is suitable for use. Additionally, these tests involve running a software component or a system component to evaluate one or more properties of interest. In general, these properties report the extent to which the component or system under test:
• Meets the requirements that guided its design and development
• Responds correctly to all types of entries
• Performs their duties within an acceptable time frame
• Can be installed and run in intended environments
• Achieves results generally desired by its stakeholders
There are various classifications of software tests that vary depending on the execution mode with or without application, the content that is verified, test level etc.
Depending on the execution mode, there are static tests (to verify) and dynamic (to validate). The first is the type of tests that are performed without running the application code. For example, they are reviews, tours or inspections. While the second involves the execution of code programmed with a specific set of test cases. Static tests are often implicit, such as proofreading, in addition when programming tools / text editors check source code structure or compilers (precompilers) check syntax and data flow as static program analysis. Dynamic tests take place when the program runs. But such tests can begin before the program is 100% complete to test particular sections of code and apply to discrete modules or functions.
Depending on the test levels, generally speaking, there are at least three test levels: unit test, integration test, and system test. However, developers can include a fourth level, called acceptance testing, to ensure that the software meets expectations.
Unit tests
Unit tests are intended to ensure the proper functioning of a specific section, as well as to increase the quality and efficiency of the overall software development process.
Integration testing
It is a type of software test whose mission is to verify the interfaces between components with a software design. The software components can be integrated iteratively or all together. The former is typically considered a best practice as it allows for faster troubleshooting of the interface.
System tests
System tests are used to confirm that the system meets your requirements. For example, such a test might involve testing a login interface, then creating and editing an entry, as well as submitting or printing results, followed by a summary of processing or deleting the entries, and then logging out.
Acceptance Tests
Acceptance testing includes four levels of testing, which are user acceptance testing, operational acceptance testing, regulatory and contractual acceptance testing, and alpha and beta testing. Operational acceptance is used to carry out the operational preparation (pre-launch) of a product, service or as part of a quality management system. On the other hand, the contractual acceptance tests are carried out based on the acceptance criteria of the contract. While regulatory acceptance tests are proceeded based on the relevant regulations for the software product. On the other hand, alpha tests are simulated or real operational tests performed by potential users / customers or a test team independent of the developers. Finally, beta tests are tests that come after alpha tests. These tests are released to a limited audience outside of the programming team known as beta testers. Whereupon, the software is distributed to groups of people for further testing to ensure that the product has few bugs or errors.