Test Design
   HOME

TheInfoList



OR:

In
software engineering Software engineering is a branch of both computer science and engineering focused on designing, developing, testing, and maintaining Application software, software applications. It involves applying engineering design process, engineering principl ...
, test design is the activity of deriving and specifying
test case In software engineering, a test case is a specification of the inputs, execution conditions, testing procedure, and expected results that define a single test to be executed to achieve a particular software testing objective, such as to exercise ...
s from test conditions to test software.


Definition

A test condition is a statement about the test object. Test conditions can be stated for any part of a component or system that could be verified: functions, transactions, features, quality attributes or structural elements. The fundamental challenge of test design is that there are infinitely many different tests that you could run, but there is not enough time to run them all. A subset of tests must be selected; small enough to run, but well-chosen enough that the tests find bug and expose other quality-related information. Test design is one of the most important prerequisites of software quality. Good test design supports: # defining and improving quality related processes and procedures (
quality assurance Quality assurance (QA) is the term used in both manufacturing and service industries to describe the systematic efforts taken to assure that the product(s) delivered to customer(s) meet with the contractual and other agreed upon performance, design ...
); # evaluating the quality of the product with regards to customer expectations and needs (
quality control Quality control (QC) is a process by which entities review the quality of all factors involved in production. ISO 9000 defines quality control as "a part of quality management focused on fulfilling quality requirements". This approach plac ...
); # finding defects in the product (software testing). The essential prerequisites of test design are: # Appropriate specification (test bases). # Risk and complexity analysis. # Historical data of your previous developments (if exists). The test bases, such as requirements or user stories, determine what should be tested (test objects and test conditions). The test bases involves some test design techniques to be used or not to be used. Risk analysis is inevitable to decide the thoroughness of testing. The more risk the usage of the function/object has, the more thorough the testing that is needed. The same can be said for complexity. Risk and complexity analysis determines the test design techniques to be applied for a given specification. Historical data of your previous developments help setting the best set of test design techniques to reach a cost optimum and high quality together. In lack of historical data some assumptions can be made, which should be refined for subsequent projects. Based on these prerequisites an optimal test design strategy can be implemented. The result of the test design is a set of test cases based on the specification. These test cases can be designed prior to the implementation starts, and should be implementation-independent. Test first way of test design is very important as efficiently supports defect prevention. Based on the application and the present test coverage further test cases can be created (but it is not test design). In practice, more test design techniques should be applied together for complex specifications. Altogether, test design does not depend on the extraordinary (near magical) skill of the person creating the test but is based on well understood principles. ISO/IEC/IEEE 29119-4:2015, Part 4 details the standard definitions of test design techniques. Th
site of test designers
offers the LEA (Learn-Exercise-Apply) methodology to support effective learning, exercising and applying the techniques.{{Cite book , last1=István , first1=Forgács , title=Paradigm Shift in Software Testing , last2=Kovács , first2=Attila , publisher=MeasureIT , year=2021 , isbn=978-615-01-2781-1 , language=English


Automatic test design

Entire test suites or test cases exposing real bugs can be automatically generated by software using
model checking In computer science, model checking or property checking is a method for checking whether a finite-state model of a system meets a given specification (also known as correctness). This is typically associated with hardware or software syst ...
or
symbolic execution In computer science, symbolic execution (also symbolic evaluation or symbex) is a means of analyzing a program to determine what inputs cause each part of a program to execute. An interpreter follows the program, assuming symbolic values for i ...
. Model checking can ensure all the
path A path is a route for physical travel – see Trail. Path or PATH may also refer to: Physical paths of different types * Bicycle path * Bridle path, used by people on horseback * Course (navigation), the intended path of a vehicle * Desir ...
s of a simple program are exercised, while symbolic execution can detect bugs and generate a test case that will expose the bug when the software is run using this test case. However, as good as automatic test design can be, it is not appropriate for all circumstances. If the complexity becomes too high, then human test design must come into play as it is far more flexible and it can concentrate on generating higher level test suites.


References

Software testing