Design techniques

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:
  1. Gathering and understanding the  requirements of the users
  2. Deriving all important business scenarios
  3. Designing test scenarios for all the important business scenarios
  4. Assigning all the designed test scenarios to different test cases
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.

2 Types of Software Test Design Techniques

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.
  1. Static Test Design 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.

Classes of Static Test Design Techniques:

ManualWith Help of Tools
Walk throughAnalysis of coding standard using compiler
Informal reviewAnalysis of code metrics
Technical reviewAnalysis of code structure
Audit 
Inspection 
Management review 

Manual Static Test Design Techniques

These are of the following kinds and differ in the formality of the process.
  • Walk through:

    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.
  • Informal Review:

    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.
  • Technical Review:

    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.
  • Audit:

    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.
  • Inspection:

    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.
  • Management Review:

    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.
  • 2.Dynamic Test Design Techniques:

    • 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:
      1. Specification-based (black-box, also known as behavioral techniques)
      2. Structure-based (white-box or structural techniques
      3. Experience- based
    Dynamic Testing Techniques:
    Specification-basedStructure-basedExperience-based
    Boundary Value Analysis (BVA)Statement Coverage or Line CoverageExploratory Testing
    Equivalence Partitioning (EP)Condition Coverage or Predicate CoverageFault Attack
    Decision Table TestingDecision Coverage or Branch Coverage 
    State Transition DiagramsMultiple Condition Coverage 
    Use Case Testing  

    Specification-Based / Black Box Test Design Technique|:

    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:
    • Boundary Value Analysis:

      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
    • Decision Table Testing:

      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.
    • State Transition Testing:

      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.
    • Equivalence Class Partitioning:

      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.
    • Use Case Testing:

      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.

    Structure-based / White Box Test Design Technique

    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:
    • Condition Coverage:

      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.
    • Decision Coverage:

      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.
    • Statement Coverage:

      This method involves calculation of the percentage of executable statements which are being exercised by the test suite.
    • Multiple Condition Coverage:

      Every combination of ‘true’ or ‘false’ for the conditions related to a decision have to be tested in this technique.

    Experience-Based Test Design 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:
    • Exploratory Testing:

      This method, generally conducted by business analysts and experts, is followed to test the applications without any documentation.
    • Fault Attack:

      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

No comments:

Post a Comment