Efficiency testing
Efficiency testing tests the amount of code and testing resources required by a program to perform a particular function. Software Test Efficiency is the number of test cases executed divided by unit of time (generally per hour).
It is internal in the organization how much resources were consumed and how much of these resources were utilized.
Here are some formulas to calculate Software Test Efficiency (for different factors):
Test efficiency = (total number of defects found in unit+integration+system) / (total number of defects found in unit+integration+system+User acceptance testing)
Testing Efficiency = (No. of defects Resolved / Total No. of Defects Submitted)* 100
Test Effectiveness:
- How much the customer’s requirements are satisfied by the system.
- How well the customer specifications are achieved by the system.
- How much effort is put in developing the system.
Documentation Testing
Documentation Testing involves testing of the documented artifacts that are usually developed before or during the testing of Software.
Documentation for Software testing helps in estimating the testing effort required, test coverage, requirement tracking/tracing, etc. This section includes the description of some commonly used documented artifacts related to Software development and testing, such as:
- Test Plan
- Requirements
- Test Cases
- Traceability Matrix
Baseline testing
- It is one type of non-functional testing.
- It refers to the validation of documents and specifications on which test cases would be designed. The requirement specification validation is baseline testing.
- Generally a baseline is defined as a line that forms the base for any construction or for measurement, comparisons or calculations.
- Baseline testing also helps a great deal in solving most of the problems that are discovered. A majority of the issues are solved through baseline testing.
Endurance Testing
- Endurance testing is a non-functional type of software testing.
- It is also known as Soak testing.
- Endurance testing involves testing a system with a significant load extended over a significant period of time, to discover how the system behaves under sustained use. For example, in software testing, a system may behave exactly as expected when tested for 1 hour but when the same system is tested for 3 hours, problems such as memory leaks cause the system to fail or behave randomly.
- The goal is to discover how the system behaves under sustained use. That is, to ensure that the throughput and/or response times after some long period of sustained activity are as good or better than at the beginning of the test.
- It is basically used to check the memory leaks.
Internationalization Testing
Internationalization is a process of designing a software application so that it can be adapted to various languages and regions without any changes.
In Other Words, Internationalization testing is the process of verifying the application under test to work uniformly across multiple regions and cultures.
The main purpose of internationalization is to check if the code can handle all international support without breaking functionality that might cause data loss or data integrity issues. Globalization testing verifies if there is proper functionality of the product with any of the locale settings.
Internationalization Checklists:
- Testing to check if the product works across settings.
- Verifying the installation using various settings.
- Verify if the product works across language settings and currency settings.
Localization Testing
Localization is a process of adapting internationalized software for a specific region or language by adding local specific components and translating text. Localization testing is the software testing process for checking the localized version of a product for that particular culture or locale settings. The areas affected by localization testing are UI and content.
Configuration Testing
Configuration testing is the method of testing an application with multiple combinations of software and hardware to find out the optimal configurations that the system can work without any flaws or bugs.
Configuration testing is testing the performance of the system under development against various combinations of software and hardware to find out the best configurations under which the system can work with any flaws or issues while matching its functional requirements.
Usually, Configuration Testing is a time-consuming process; since usually sets of software and hardware forming the system have many variables which result in a large number of combinations, also installing and uninstalling software and hardware can be a very time consuming task. That’s why planning is usually an essential phase of the Configuration Testing process.
Inter System Testing
Many times, an application is hosted across locations; however, all data needs to be deployed over a central location. The process of testing the integration points for single applications hosted at different locations and then ensuring correct data flow across each location is known as inter system testing.
Mutation Testing
Mutation testing (or mutation analysis or program mutation) is used to design new software tests and evaluate the quality of existing software tests. Mutation testing involves modifying a program in small ways.Each mutated version is called a mutant and tests detect and reject mutants by causing the behavior of the original version to differ from the mutant. This is called killing the mutant. Test suites are measured by the percentage of mutants that they kill. New tests can be designed to kill additional mutants. Mutants are based on well-defined mutation operators that either mimic typical programming errors (such as using the wrong operator or variable name) or force the creation of valuable tests (such as dividing each expression by zero).
The purpose is to help the tester develop effective tests or locate weaknesses in the test data used for the program or in sections of the code that are seldom or never accessed during execution. Mutation testing is a form of white-box testing.
Progression Testing
Progression Testing is nothing but, test the application with Old Test Data. Progression tests used in the current release would roll into regression tests for future releases. The purpose of this task is to run the system with existing test cases that were retained from the system tests.
Progressive testing also known as incremental testing is used to test modules one after the other. When an application with a hierarchy such as parent-child module is being tested, the related modules would need to be tested first.
This progressive approach testing method has three approaches:
- Top-down Approach
- Bottom-up Approach
- Hybrid Approach