Software Testing Methods.

In software testing, a basic distinction is made between test procedures and test types. The most common testing methods are explained below. Test procedures indicate how testing is performed. Depending on the goal of the software test, different test types are used.

Test Procedure

In the case of test techniques, a basic distinction must be made between static test techniques and dynamic test techniques.

Static Test Techniques

Static testing techniques are mainly used to test artifacts, such as requirements or source code, without running them on a computer.

The test objects are usually documents or source code.

In principle, however, every software development result can be tested using static test techniques, such as requirement specifications, design specifications, source code, test concepts, test specifications, test cases, test scripts, user manuals, or Web pages.

Reviews or tool-based static analysis are among the most common static test techniques.

Advantages Of Static Test Techniques

Early error detection already in the specification. Error states are detected directly. Reduces the number of complex and expensive dynamic test techniques. Checks programming conventions, standards, design. Even non-executed software components (e.g. variable definitions) are subject to testing. Checks attributes such as maintainability. Checks documents (e.g. requirement specifications, etc.) Exchange of knowledge between team members (Review)Forcing team members to clearly present facts (Review)Team as a whole bears responsibility for quality.

Disadvantages Of Static Test Techniques

Rather unsuitable for complex interactions between different system partsSome error states only occur during execution. A divisor can, for example, assume the value “0” during execution and thus cause a runtime error. This cannot be determined by simply looking at the program text.

Dynamic Test Techniques

Dynamic test techniques are used to locate failure effects by executing the test object (program) on a computer. The most common dynamic test techniques are listed below:

Black-Box Techniques

Here, the externally visible behavior of the test object is considered, without knowledge of the software structure or the source code (black box) and the test cases are designed on the basis of the specification. For this reason, black box methods are also referred to as specification-oriented test design methods.

White-Box Techniques

Among the dynamic test techniques, the so-called white-box techniques are among the most commonly used methods. The test cases are developed with knowledge of the source code and the software structure (white box or glass box). The white box methods are therefore also referred to as structure-based or structural test design methods.

Experience-Based Techniques

Experience-based test design procedures are less about the systematic derivation of test cases than about the effective use of the knowledge and experience of developers, testers and users.

Advantages Of Dynamic Test Techniques

Test object is actually executed, which is closer to determining softwareThe interaction of system parts is testedIncludes also the execution of important non-functional tests (performance test, load test, etc.)

Disadvantages Of Dynamic Test Techniques

Assuming executable test object and a corresponding test environmentOnly program parts that get to execution are testedThe scope and number of linked subsystems make dynamic test techniques very time-consuming. The underlying error states must be localized in a separate work step (debugging).

In addition to the test techniques mentioned above, tests can also be differentiated according to their goal. This differentiation results in different test types. To this end, it must be differentiated whether the focus of the test is on functional or non-functional characteristics.

Functional Test

Functional tests are aimed at checking the pure functionality of the test object. The underlying question could therefore be: “Does the system do what is expected of it? Functional tests include other types of tests in addition to checking that the required functions are fulfilled:

Safety Tests

These check whether the system and the associated data are adequately protected against unauthorized access and external threats, such as viruses.

Interoperability Tests

These assess the ability of the software product to interact with one or more specified components or systems.

Non-Functional Tests

Non-functional test types are aimed at testing other general quality features of software other than pure functionality. These are defined along the quality characteristics in DIN-ISO 9126:

Efficiency

Is checked by performance tests (regarding response times and processing speed) and load tests (regarding system load, e.g. in the form of users accessing in parallel, number of transactions or processing volume).

Reliability

Reliability tests check whether the test object can maintain a certain level of performance under certain conditions over a certain period of time. This includes robustness tests, as well as tests that check how quickly the system is ready for use again in the event of a failure (“recovery” tests). Stress tests also fall into this category: they observe system behavior in the event of overload.

Utilizability

Usability tests typically check how well and how easy a system is to use for the users.

Modifiability/Maintainability


Typically tested through reviews and tool-based static analysis (maintainability tests).

Transferability

Is checked by portability tests. The focus is on how easily the software can be transferred to another environment. A widely used example of portability testing is the testing of applications on mobile devices. The transferability to different hardware (e.g. mobile devices) also plays a role, as does the transferability to different software environments (e.g. Windows or Apple iOS).

Structural And Change-Related Tests

According to ISTQB, in addition to functional and non-functional tests, there are two further test types: structural and change-related tests.

Structural tests can be applied at all test levels. Structural tests are always based on software models. A major advantage of structural tests is that it is often easy to make the test intensity measurable during their application – as so-called test coverage.

Testing after changes is referred to as change-related testing. In concrete terms, there are two types of test that can be distinguished: The error night test, which refers to the test that validates the successful elimination of an error, and the regression test, which checks whether a change has resulted in additional, unwanted changes or side effects.

Instructions for professional software test management

Although software can be found in many mission-critical areas, many organizations struggle with flawed software architecture, which can result in budget overruns or project delays. Test management can help. However, its implementation in companies is still comparatively difficult because IT departments are often unclear about how to set it up effectively.

The article presents a test management model using an exemplary test process and systematically goes through the individual process steps, starting with the order, through design and data management to implementation and test end. Installing a test management system is no trivial matter, and testing software involves numerous stumbling blocks.

In principle, three target groups of a test management can be distinguished. On the one hand, the commissioning company wants to ensure that a company-critical software runs smoothly and without failure by means of a test management. In addition, the development department has to deliver functional software. After all, companies that develop software have an interest in it because they have the opportunity to use synergies in test management with an independent test area.