In this article, I will introduce Test types and Maintenance Testing in software testing to give you an overview of software testing and knowledge. test basics, techniques used in testing, and support tools.
1. functional testing
Functional testing is a kind of black box test and its test case is based on the specification of the software application / component being tested. Functions are tested by inputting values and checking outputs, with little regard for the internal structure of the application.
Functional testing can be performed from two perspectives: on demand and on business process.
Requirement-based: Use the specification of the functional requirements as a basis for testing designs. The content of the requirements can be the initial test items or use it as a list of tested or non-tested items. Based on the requirement to prioritize the testing process. Priority should be given to high risk requirements. Based on business process:
Business processes that describe scenarios related to the daily operations of the usecase system are derived from object-oriented development but are now common in many development lifecycle. Taking business processes as a starting point, business processes derive from tasks performed by users. Use cases are a useful base for test cases from a business perspective. Functional testing consists of 5 steps: Identify the functions that the desired software will perform. Generate input data based on specification document of functions Determine outputs based on specification documents of the functions. Carry out test cases. Compare actual results and desired results. Types of functional testing:
Unit Testing (Unit Testing) Smoke Testing – quick check to see if the system will boot or not. Sanity Testing – quick check to see after modification the function works as expected want or not) Interface Testing (Integration Testing) Integration Testing (Integration Testing) System Testing (Systems Testing) Regression Testing (Regression Testing) Acceptance Testing (Acceptance testing)
2. Non-functional testing.
Non-functional testing is similar to functional testing in that it is performed at all test levels, non-functional testing considers external behaviors of the software. Non-functional tests include:
Performance testing Load test Stress testing Usability testing Maintainability testing Reliability testing (reliability testing) Compatibility testing (portability testing) Additional relevant features:
Reliability: reliability is more clearly determined from the sub-characteristics that have been carefully calculated (durability), fault tolerance (fault tolerance), recovery (recoverability) and compliance (compliance). Usability: is divided into easy-to-understand features, learnability, operability, attractiveness and compliance. Efficiency (efficiency): divided into behavior of time (performance), resource use (resource utilization) and compliance (compliance). Maintainability (maintainability): includes 5 sub-characteristics: analysis, ability to change, stability, ability to test and comply. Portability: includes 5 sub-characteristics: adaptability, installation, coexistence, replaceability and compliance.
3. Structural testing / software architecture (structural testing)
Structural testing can occur at any level of testing, which is mostly applied in component testing. Structural test methods can also be applied to levels such as system integration or acceptance testing. Structural testing techniques are best used after techniques based on specification-based specifications. Helps measure test thoroughly through evaluating coverage of type of structure. Coverage is the extent to which a structure has been implemented by a test suite, as a percentage of the items covered. If coverage is not 100%, tests will be designed to check for items that have been missed to increase coverage. The techniques used for structural testing are: white box techniques and control flow models.
4. verification testing and regression testing
After an error is detected and corrected, the software is tested again to confirm the original error has been corrected called a Confirmation testing. When performing validation tests, ensure that the tests are performed the same as when they were first used, using the same inputs, data and environment. Regression test: The purpose of regression testing is to verify that modification in software or environment does not cause undesirable side effects and that the system still meets the requirements. Regression tests are the repeated tests of a program that has been tested, after modification. Regression testing is performed whenever in the software or as a result of bug fixes, new functionality is changed. Regression testing is based on test case sets. When adding new functions, new test cases must be added, or if old functions are changed or removed, the test cases must also be changed or deleted. Regression testing can be performed at all levels of testing, including functional, non-functional and structural testing.
5. Maintenance testing.
Impact analysis and regression test: Usually maintenance test consists of 2 parts: test changes and regression test to show that the rest of the system is not affected by maintenance work. The main and important activity in maintenance testing is impact analysis. From the analysis it is decided which parts of the system may be undesirable. Risk analysis will help determine where focus regression testing is needed. Run for maintenance test: Maintenance test is performed on an existing system and is performed when there is a change, movement or withdrawal of software or system. Maintenance test for change: Improvements include planned incremental changes, remediation of emergency changes and environmental changes. Maintenance test for transformation: Including checking the operation of the new environment, the software has changed. Migration test (transformation test) is also necessary when data from another application will be moved into the system being maintained. Maintenance test for a system that has stopped working: includes testing for data transfer or storage, if long-term data storage is required. From the perspective of conversion, there are 2 types: planned conversion including: complete conversion (software adaptable to users’ wishes), adaptive conversion (software adaptable to change) changes of the environment such as new hardware, new system software), Switch adjustment as planned (error correction). Outbreak transformations cannot be planned: for errors like these one needs to analyze the risk of the operating system to identify the faulty function or program.
By the end of this article, you can get a basic understanding of the four main types of testing (functionality, non-functionality, structure, and related changes) and maintenance testing.