Software testing is a process carried out to check and confirm the delivery potential of the software. In this procedure, a set of pre-decided inputs are fed into the software and the output produced is measured against the expected results. This process helps to ensure that the software is working as desired and can be released into the market. Software released without sufficient testing can damage the company’s standing in two ways. First, it will generate poor customer reviews, and second, it will lead to more serious problems such as the leakage of the customer’s private data. This can severely impair the organization’s business prospects.
Software test design refers to the process of designing different tests that validate the eligibility of a software before its release in the market. The process of test designing assumes high priority, as a poorly designed test will lead to improper testing of an application. This, in turn, leads to failure in identifying defects and consequently, an application containing errors may be released. While a developer has to ensure that the software meets the specifications, a business owner has to ensure that it meets the business’ operational needs. To satisfy these individual goals and the main aim of the software development process, that is a high-quality output, one will have to plan, design, and conduct tests in different environments. To ensure that the testing strategy chalked out is an effective one, following the below-mentioned steps is essential:
Once done with all the above-mentioned steps, one will have to choose a test design technique as per the requirements of their business. Some of the most common design techniques are listed below.
There are various types of designing techniques, each of which is suitable for identifying a particular type of error. Hence, the challenge lies in selecting the right set of relevant test design techniques for the particular application. Software test design techniques can be broadly classified into two major categories: static and dynamic techniques.
Static testing refers to the testing of software manually or with the help of tools. Static testing is usually carried out during the early phase of software development life cycle. Static testing is useful for testing multiple aspects of a software, including source code, functional and requirement specifications, and design documents and models. Static testing can be further divided into two categories based upon whether it is performed manually or with the help of tools.
Manua With Help of Tools Walk through Analysis of coding standard using compiler Informal review Analysis of code metrics Technical review Analysis of code structure Audit Inspection Management review
These are of the following kinds and differ in the formality of the process.
Walk through is not a formal process of review and is carried out by authors. The authors guide the participants through the document and try and understand their thought processes, in order to gain feedback and arrive at a common understanding.
An informal review aims to improve the quality of the tested product through discussions and is usually not documented. The preliminary stage of the review may involve assessment by a two-member team whereas during later stages, the reviewing team size may increase and may require more meetings.
A technical review is carried out by a trained moderator or technical expert. It is less formal as compared to an inspection. It is usually carried out as a peer review without any participation from management.
An audit is an independent examination of all the documents related to the software, carried out by an external agent. Audits provide increased assurance to the various stakeholders of the project that the document is up to standards and devoid of any defects.
An inspection is the most formal type of review and is conducted by trained moderators. During an inspection, the documents and products are examined through a process of reviews and defects are identified. The defects identified are documented in a logging list or issue log and a formal follow-up is carried out.
The management review is a cross-functional review undertaken by an organization’s top management. It includes analyses of customer satisfaction, determination of the cost of poor quality, performance trends and achievement of objectives defined in the business plan.
The coding standards consist of a set of naming conventions, programming rules and layout specifications. Tools such as compilers are available that help in the analysis. A check of the coding standards during the early phase of the development cycle saves a lot of time and effort during subsequent stages.
Code metrics refer to the measurement of cyclomatic numbers, depth of nesting and number of lines of code. This information helps to keep a check on the code and prevents it from becoming excessively lengthy, unwieldy, difficult to understand and maintain.
An analysis of the code structure gives an idea about the effort required to write or understand the code and to test it using particular tools and techniques. The analysis includes:
The control flow structure refers to the sequence of execution of instructions.
Understanding the fate of each data item as it is accessed and modified by the code.
Analysis of the organization of the data
Dynamic testing involves execution of the test object (application) on a computer. The input data is fed into the test object (application) and the program is executed. In dynamic testing, various variable quantities such as memory usage, response time, CPU usage and overall performance of the software are analyzed against the expected output. Dynamic testing is carried out during the validation process. Dynamic test design techniques can be further classified into:
Dynamic Testing Techniques:Specification-basedStructure-basedExperience-basedBoundary Value Analysis (BVA)Statement Coverage or Line Coverage Exploratory Testing Equivalence Partitioning (EP)Condition Coverage or Predicate Coverage Fault Attack Decision Table Testing Decision Coverage or Branch Coverage State Transition Diagrams Multiple Condition Coverage Use Case Testing
Also known as specification-based test design technique, the black box test design technique uses the software’s external descriptions such as the technical specifications, design, customer requirements, etc. This implies that a tester who does not have any knowledge about the code or internal structure can also perform the test. Some of the well-known methods in this technique are:
The best method of the black box design technique, boundary value analysis comprises testing the input values at the boundaries. Generally, the input values are put to test at the initial stages to reduce the chances of causing errors
Identifying the test conditions as per the decision tables which are associated with different conditions is known as decision table testing. Each and every decision keeps up a correspondence to predicates, relations, or variables. Decision tables which have a ‘hyphen’ symbol are known to have little influence on the actions that are being performed.
Identifying the test conditions from a state table is state transition testing. This test case design method is best used for applications with implanted workflow within them.
The purpose of this type of test design method is to reduce the number of tests by dividing the different types of test. Once the tests have been divided, the system will behave in a similar way for the different tests with equivalence partition.
The method of deriving the test condition from use case is known as use case testing. The test cases designed as per this type of method execute the different business scenarios and user functionalities.
The exact opposite of the black box test design technique, white box test design technique necessitates knowledge of the internal structure of a program. Some of the methods implemented in this type of technique are:
Most of the outcomes of test cases designed as per the white box test design technique are derived by following the condition coverage method. By following this method, the test cases are designed in a manner that the condition outcomes (the evaluation of a condition as ‘true’ or ‘false’) are executed automatically.
In the decision coverage method, the test cases are designed in a manner that the decision outcomes are executed automatically. It ensures that each possible branch from a decision point is implemented at least once.
This method involves calculation of the percentage of executable statements which are being exercised by the test suite.
Every combination of ‘true’ or ‘false’ for the conditions related to a decision have to be tested in this technique.
As the name suggests, the experience-based technique neither involves internal, nor the external structure, but is based on experience. Some of the methods followed are:
This method, generally conducted by business analysts and experts, is followed to test the applications without any documentation.
One of the widely used method of the experience based test design technique, fault attack involves testers anticipating the errors, defect data availability, etc., as per their experience.
In conclusion, there are multiple testing techniques belonging to the static and dynamic test design categories. Different types of testing techniques have their own unique benefits.