STM1 PPTS 16 - 0 PDF
STM1 PPTS 16 - 0 PDF
What is Testing?
   A Test
        Passes:          Functionality OK.
        Fails:           Application functionality NOK.
        Bug/Defect/Fault: Deviation from expected functionality.
                             It’s not always obvious.
                                 Purpose of Testing
1. To Catch Bugs
    •   Statistics:
         • QA costs:           2% for consumer products
                               80% for critical software
    •   Quality  Productivity
                                    Purpose of Testing
Purpose of testing contd…
            Bug prevented  rework effort is saved              [bug reporting, debugging, correction, retesting]
            If it is not possible, Testing must reach its secondary goal of bud discovery.
            Good test design & tests  clear diagnosis  easy bug correction
    Phase 4: A state of mind regarding “What testing can do & cannot do. What makes
                   software testable”.
            Applying this knowledge reduces amount of testing.
            Testable software reduces effort
            Testable software has less bugs than the code hard to test
                      Review
                      Inspect &
                      Read the code
 Bug Prevention
                     Mix of various approaches, depending on factors
                            culture, development environment, application, project size, history, language
Inspection Methods
Design Style
Static Analysis
Pesticide paradox
            Complexity Barrier
Dichotomies
3. Designer vs Tester
    6. Buyer       vs   Builder
                                          Dichotomies
1. Testing Vs Debugging
           Their roles are confused to be the same. But, there are differences in goals, methods and
            psychology applied to these
  #                     Testing                                        Debugging
  1 Starts with known conditions. Uses predefined     Starts with possibly unknown initial conditions.
    procedure. Has predictable outcomes.              End cannot be predicted.
2 Planned, Designed and Scheduled. Procedures & Duration are not constrained.
  5 Should be predictable, dull, constrained, rigid   There are intuitive leaps, conjectures,
    & inhuman.                                        experimentation & freedom.
                                        Dichotomies
Dichotomies    contd…
# Testing Debugging
 8 A theory establishes what testing can do or   There are only Rudimentary Results (on how
   cannot do.                                    much can be done. Time, effort, how etc.
                                                 depends on human ability).
       Functional Testing: Treats a program as a black box. Outputs are verified for conformance to
        specifications from user’s point of view.
       Structural Testing: Looks at the implementation details: programming style, control method,
        source language, database & coding details.
        For a given model of programs, Structural tests may be done first and later the Functional,
         Or vice-versa. Choice depends on which seems to be the natural choice.
        Both are useful, have limitations and target different kind of bugs. Functional tests can
         detect all bugs in principle, but would take infinite amount of time. Structural tests are
         inherently finite, but cannot detect all bugs.
        The Art of Testing is how much allocation % for structural vs how much % for functional.
                                             Dichotomies
Dichotomies contd..
3. Designer vs Tester
         Completely separated in black box testing. Unit testing may be done by either.
         Artistry of testing is to balance knowledge of design and its biases against ignorance &
          inefficiencies.
         Tests are more efficient if the designer, programmer & tester are independent in all of unit,
          unit integration, component, component integration, system, formal system feature testing.
         The extent to which test designer & programmer are separated or linked depends on testing
          level and the context.
2. A module implies a size, an internal structure and an interface, Or, in other words.
        3. A module (well defined discrete component of a system) consists of internal complexity &
           interface complexity and has a size.
                                             Dichotomies
#                  Modularity                                          Efficiency
1 Smaller the component easier to understand.     Implies more number of components & hence more #
                                                  of interfaces increase complexity & reduce efficiency
                                                  (=> more bugs likely)
2 Small components/modules are repeatable         Higher efficiency at module level, when a bug occurs
  independently with less rework (to check if a   with small components.
  bug is fixed).
3 Microscopic test cases need individual setups   More # of test cases implies higher possibility of bugs
  with data, systems & the software. Hence can    in test cases. Implies more rework and hence less
  have bugs.                                      efficiency with microscopic test cases
4 Easier to design large modules & smaller        Less complex & efficient. (Design may not be enough
  interfaces at a higher level.                   to understand and implement. It may have to be
                                                  broken down to implementation level.)
So:
 Optimize the size & balance internal & interface complexity to increase efficiency
 Optimize the test design by setting the scopes of tests & group of tests (modules) to minimize cost
  of test design, debugging, execution & organizing – without compromising effectiveness.
                                             Dichotomies
Dichotomies contd..
 #                           Small                                          Big
  1 More efficiently done by informal, intuitive     A large # of programmers & large # of
     means and lack of formality –                   components.
          if it’s done by 1 or 2 persons for small
     & intelligent user population.
  2 Done for e.g., for oneself, for one’s office     Program size implies non-linear effects (on
     or for the institute.                           complexity, bugs, effort, rework quality).
  3 Complete test coverage is easily done.           Acceptance level could be: Test coverage of 100%
                                                     for unit tests and for overall tests ≥ 80%.
                                             Dichotomies
6. Buyer           Vs   Builder                            (customer    vs developer organization)
   Builder:
                   Designs for   & is accountable to the Buyer.
   Buyer:
                   Pays for the system.
                   Hopes to get profits from the services to the User.
   User:
                   Ultimate beneficiary of the system.
                   Interests are guarded by the Tester.
   Tester:
                   Dedicated to the destruction of the s/w (builder)
                   Tests s/w in the interests of User/Operator.
   Operator:
                   Lives with:     Mistakes of the Builder                Murky specs of Buyer
                                    Oversights of Tester                   Complaints of User
   A model for testing - with a project environment - with tests at various levels.
   (1) understand what a project is. (2) look at the roles of the Testing models.
1. PROJECT:
        An Archetypical System (product) allows tests without complications (even for a large project).
        Testing a one shot routine & very regularly used routine is different.
          1) Application: An online real-time system (with remote terminals) providing timely responses to
             user requests (for services).
          3) Schedule: project may take about 24 months from start to acceptance. 6 month maintenance
             period.
          4) Specifications: is good. documented. Undocumented ones are understood well in the team.
                               A Model for Testing
4) Acceptance test: Application is accepted after a formal acceptance test. At first it’s the
   customer’s & then the software design team’s responsibility.
6) Standards:
      Programming, test and interface standard (documented and followed).
      A centralized standards data base is developed & administrated
                                       A Model for Testing
1. PROJECT:     contd …
 A model project is
                 Environment                    Unexpected
Environment
                   Model
                                                    Expected
                  Program
 Program                          Tests   Outcome
                   Model
 Nature &
                 Bug Model
Psychology
                             A Model for Testing             contd..
   1) Overview:
          Testing process starts with a program embedded in an environment.
          Human nature of susceptibility to error leads to 3 models.
          Create tests out of these models & execute
          Results is expected  It’s okay
                    unexpected  Revise tests and program. Revise bug model and program.
   2) Environment:        includes
        All hardware & software (firmware, OS, linkage editor, loader, compiler, utilities,
         libraries) required to make the program run.
        Usually bugs do not result from the environment. (with established h/w & s/w)
        But arise from our understanding of the environment.
   3) Program:
        Complicated to understand in detail.
        Deal with a simplified overall view.
        Focus on control structure ignoring processing & focus on processing ignoring
         control structure.
        If bug’s not solved, modify the program model to include more facts, & if that fails,
         modify the program.
                                 A Model for Testing               contd..
                 Belief that the bugs respect code & data separation in HOL programming.
                 In real systems the distinction is blurred and hence such bugs exist.
                 Belief that the language syntax & semantics eliminate most bugs.
                 But, such features may not eliminate Subtle Bugs.
                 Belief that testers are better at test design than programmers at code design.
                               A Model for Testing              contd..
   5) Tests:
        Formal procedures.
        Input preparation, outcome prediction and observation, documentation of test,
         execution & observation of outcome are subject to errors.
        An unexpected test result may lead us to revise the test and test model.
2) Integration Testing:
                    A            B                                                D
                                                       A         B
                                                                              C
            Sequence of Testing:
               Unit/Component tests for A, B. Integration tests for A & B. Component testing
                for (A,B) component
                                    A Model for Testing          contd..
3) System Testing
        Used for the testing process until system behavior is correct or until the model is
         insufficient (for testing).
   • Mild
      • Aesthetic bug such as misspelled output or mal-aligned print-out.
   • Moderate
      • Outputs are misleading or redundant impacting performance.
   • Annoying
      • Systems behavior is dehumanizing for e.g. names are truncated/modified arbitrarily,
        bills for $0.0 are sent.
      • Till the bugs are fixed operators must use unnatural command sequences to get
        proper response.
   • Disturbing
       • Legitimate transactions refused.
       • For e.g. ATM machine may malfunction with ATM card / credit card.
   • Serious
      • Losing track of transactions & transaction events. Hence accountability is lost.
                               Consequences of Bugs
Consequences      contd …
   • Very serious
         System does another transaction instead of requested e.g. Credit another account,
                  convert withdrawals to deposits.
   • Extreme
      • Frequent & Arbitrary - not sporadic & unusual.
   • Intolerable
       • Long term unrecoverable corruption of the Data base.
                  (not easily discovered and may lead to system down.)
   • Catastrophic
      • System fails and shuts down.
   • Infectious
       • Corrupts other systems, even when it may not fail.
                                 Consequences of Bugs
Consequences        contd …
Assignment of severity
     • Assign flexible & relative rather than absolute values to the bug (types).
     • Number of bugs and their severity are factors in determining the quality quantitatively.
     • Organizations design & use quantitative, quality metrics based on the above.
• Nightmares
     • Define the nightmares – that could arise from bugs – for the context of the
       organization/application.
 1.   List all nightmares in terms of the symptoms & reactions of the user to their consequences.
 2.   Convert the consequences of into a cost. There could be rework cost. (but if the scope extends to
      the public, there could be the cost of lawsuits, lost business, nuclear reactor meltdowns.)
 3.   Order these from the costliest to the cheapest. Discard those with which you can live with.
 4.   Based on experience, measured data, intuition, and published statistics postulate the kind of
      bugs causing each symptom. This is called ‘bug design process’. A bug type can cause
      multiple symptoms.
 5.   Order the causative bugs by decreasing probability (judged by intuition, experience, statistics etc.).
      Calculate the importance of a bug type as:
7. Design tests & QA inspection process with most effective against the most important bugs.
 8.   If a test is passed or when correction is done for a failed test, some nightmares disappear.
      As testing progresses, revise the probabilities & nightmares list as well as the test strategy.
 •    Designing a reasonable, finite # of tests with high probability of removing the nightmares.
 •    Test suites wear out.
        • As programmers improve programming style, QA improves.
        • Hence, know and update test suites as required.
                               Taxonomy of Bugs ..
we had seen the:
   Why Taxonomy ?
      To study the consequences, nightmares, probability, importance, impact and the methods of prevention
      and correction.
 Adopt known taxonomy to use it as a statistical framework on which your testing strategy is based.
3 types of bugs : Requirement & Specs, Feature, & feature interaction bugs
             Arise due to unpredictable interactions between feature groups or individual features. The earlier
              removed the better as these are costly if detected at the end.
             Examples: call forwarding & call waiting.      Federal, state & local tax laws.
             No magic remedy. Explicitly state & test important combinations
Remedies
               Short-term Support:
                  Specification languages formalize requirements & so automatic test generation is possible.
                   It’s cost-effective.
               Long-term support:
                  Even with a great specification language, problem is not eliminated, but is shifted to a higher
                   level. Simple ambiguities & contradictions may only be removed, leaving tougher bugs.
Testing Techniques
               Functional test techniques - transaction flow testing, syntax testing, domain testing, logic
                testing, and state testing - can eliminate requirements & specifications bugs.
                                  Taxonomy of Bugs .. and remedies
2.   Structural Bugs
                  Paths left out, unreachable code, spaghetti code, and pachinko code.
                  Improper nesting of loops, Incorrect loop-termination or look-back, ill-conceived switches.
                  Novice programmers.
                  Old code (assembly language & Cobol)
                  Using a look-alike operator, improper simplification, confusing Ex-OR with inclusive OR.
                  Deeply nested conditional statements & using many logical operations in 1 stmt.
Prevention
          Programming tools, Explicit declaration & type checking in source language, preprocessors.
          Data flow test methods help design of tests and debugging.
3. Data Bugs
Depend on the types of data or the representation of data. There are 4 sub categories.
 Due to data object specs., formats, # of objects & their initial values.
         Generalized components with reusability – when customized from a large parametric data to
          specific installation.
         Using control tables in lieu of code facilitates software to handle many transaction types with fewer
          data bugs. Control tables have a hidden programming language in the database.
         Caution - there’s no compiler for the hidden control language in data tables
                                  Taxonomy of Bugs .. and remedies
     II.   Dynamic Data           Vs   Static Data
Due to unclean / leftover garbage in a shared resource.      Software to produce object code creates a static data
                                                             table – bugs possible
                         Examples                                                   Examples
Generic & shared variable                                    Telecom system software: generic parameters, a
                                                             generic large program & site adapter program to set
                                                             parameter values, build data declarations etc.
Shared data structure                                        Postprocessor : to install software packages. Data is
                                                             initialized at run time – with configuration handled by
                                                             tables.
Prevention                                                   Prevention
Static or dynamic data can serve in any of the three forms. It is a matter of perspective.
What is information can be a data parameter or control data else where in a program.
Examples: name, hash code, function using these. A variable in different contexts.
Bugs
                Contents: are pure bit pattern & bugs are due to misinterpretation or corruption of it.
                Structure: Size, shape & alignment of data object in memory. A structure may have
                 substructures.
                Attributes: Semantics associated with the contents (e.g. integer, string, subroutine).
Bugs
                     Severity & subtlety increases from contents to attributes as they get less formal.
                     Structural bugs may be due to wrong declaration or when same contents are interpreted by
                      multiple structures differently (different mapping).
                     Good source lang. documentation & coding style (incl. data dictionary).
                     Data structures be globally administered. Local data migrates to global.
             Coding errors
                  typographical, misunderstanding of operators or statements or could be just arbitrary.
 Documentation Bugs
 Solution:
            8) Integration bugs
                                                              Application
            9) System bugs                                    software
                               Taxonomy of Bugs .. and remedies
5. Interface, Integration and Systems Bugs           contd..
1) External Interfaces
          Means to communicate with the world: drivers, sensors, input terminals, communication lines.
          Primary design criterion should be - robustness.
          Bugs: invalid timing, sequence assumptions related to external signals, misunderstanding external
           formats and no robust coding.
          Domain testing, syntax testing & state testing are suited to testing external interfaces.
2) Internal Interfaces
 S/w bugs originating from hardware architecture are due to misunderstanding of how h/w works.
              Expecting a device to respond too quickly, or to wait for too long for response, assuming a
               device is initialized, interrupt handling, I/O device address
 H/W simultaneity assumption, H/W race condition ignored, device data format error etc..
 Nowadays hardware has special test modes & test instructions to test the H/W function.
 Due to:
            The subroutines pass thru unit and integration tests without detection of these bugs. Depend on
            the Load, when the system is stressed. These are the most difficult to find and correct.
 Due to:
              Assumption that there are no interrupts, Or, Failure to block or unblock an interrupt.
              Assumption that code is re-entrant or not re-entrant.
              Bypassing data interlocks, Or, Failure to open an interlock.
              Assumption that a called routine is memory resident or not.
              Assumption that the registers and the memory are initialized, Or, that their content did not
               change.
              Local setting of global parameters & Global setting of local parameters.
 Remedies:
 Test Techniques
              All test techniques are useful in detecting these bugs, Stress tests in particular.
                               Taxonomy of Bugs .. and remedies
Interface, Integration and Systems Bugs contd …
 Due to:
                Ignored timing
                Assumption that events occur in a specified sequence.
                Starting a process before its prerequisites are met.
                Waiting for an impossible combination of prerequisites.
                Not recognizing when prerequisites are met.
                Specifying wrong priority, Program state or processing level.
                Missing, wrong, redundant, or superfluous process steps.
 Remedies:
                Good design.
                highly structured sequence control - useful
                Specialized internal sequence-control mechanisms such as an internal job control language
                 – useful.
                Storage of Sequence steps & prerequisites in a table and interpretive processing by control
                 processor or dispatcher - easier to test & to correct bugs.
 Test Techniques
 Due to:
                Wrong resource used (when several resources have similar structure or different kinds of
                 resources in the same pool).
                Resource already in use, or deadlock
                Resource not returned to the right pool, Failure to return a resource. Resource use forbidden
                 to the caller.
 Remedies:
                Design: keeping resource structure simple with fewest kinds of resources, fewest pools, and
                 no private resource mgmt.
                Designing a complicated resource structure to handle all kinds of transactions to save
                 memory is not right.
                Centralize management of all resource pools thru managers, subroutines, macros etc.
 Test Techniques
                Path testing, transaction flow testing, data-flow testing & stress testing.
                              Taxonomy of Bugs .. and remedies
Interface, Integration and Systems Bugs contd …
8) Integration Bugs:
Are detected late in the SDLC and cause several components and hence are very costly.
 Due to:
 Remedies:
 Test Techniques
                Those aimed at interfaces, domain testing, syntax testing, and data flow testing when applied
                 across components.
                                Taxonomy of Bugs .. and remedies
Interface, Integration and Systems Bugs contd …
9) System Bugs:
 Due to:
                Bugs not ascribed to a particular component, but result from the totality of interactions among
                 many components such as:
                    programs, data, hardware, & the O.S.
         Remedies:
                Thorough testing at all levels and the test techniques mentioned below
 Test Techniques
 Transaction-flow testing.
                All kinds of tests at all levels as well as integration tests - are useful.
                                    Taxonomy of Bugs .. and remedies
6.   Testing & Test Design Bugs
          Bugs in Testing (scripts or process) are not software bugs.
It’s difficult & takes time to identify if a bug is from the software or from the test script/procedure.
 Tests require code that uses complicated scenarios & databases, to be executed.
                Though an independent functional testing provides an un-biased point of view, this lack of bias
                 may lead to an incorrect interpretation of the specs.
 Test Criteria
                  Testing process is correct, but the criterion for judging software’s response to tests is incorrect
                   or impossible.
                  If a criterion is quantitative (throughput or processing time), the measurement test can perturb
                   the actual value.
                               Taxonomy of Bugs .. and remedies
Testing & Test Design Bugs    contd…
 Remedies:
1. Test Debugging:
Testing & Debugging tests, test scripts etc. Simpler when tests have localized affect.
                      Test execution bugs are eliminated by test execution automation tools &
                      not using manual testing.
           Good design inhibits bugs and is easy to test. The two factors are multiplicative and results in
           high productivity.
                                                                                               0.0
                                                                                                     5.0
                                                           ta ts m nc n
                                                        R tio , co en orr ts
                                                          eq n, m ts ec
                                                  fe Fea uire Doc plet Log t
                                                     at tu m u en ic
                                                        ur r e m e
                                               fu          e/ e a nts en ss
                                                              fu n C ta
                                                  nc             n d
                                                     tio fea ct io fu ha tion
                                         U              n                           n
                                            se            al tur n c ncti ge
                                                              ca e c or on s
                                                   st              m a te he
                                                      em               in l I gr rs
                                                           , S O g, T nt e at io
                                                               of t h hr rf a n
                                                                    tw er ou ce
                                                                        ar I n gh s
                                                   R
                                                     ec S O/ e A t eg pu
                                                               o
                                                        ov ft S rch ra t
                                             In              er wa ca ite tion
                                                co             y re ll a c
                                                   rre              an A n tu
                                                       ct               d rc d re
                                                           di              Ac hi Us
                                                              ag               c te e
                                                                   no P oun ctu
                                                Te             P si er ta re
                                                    st S art s, E form bili
                                                        De ys itio xc a t y
                                                            fin ge ns ep nce
                                                                it io n, , O tio
                                                                      n En ve ns
                                                                   T      a v r
                                                    Te T es nd iron lay
                                                         s es t Ex m s
                                                      Te t Do t E Des ec en
                                                          st cu xe ign uti t
                                                              ca m cu b on
                                                                  se en tio ug
                                                               O Co tatio n bu s
                                                                    th m n g
                                                                        e
                                                                 O r T ple bug s
                                                                     t h es te s
                                                                         er t i ne
                                                                            , U ng ss
                                                                                ns B
                                                                                  pe ug
                                                                                     ci s
                                                                                       fie
                                                                                           d
                       UNIT-II
Topics:
Flow graphs and Path testing: Basics concepts of path testing,
predicates, path predicates and achievable paths, path
sensitizing, path instrumentation, application of path testing.
                         Control Flow Graphs and Path Testing
                                          Introduction
Goal: Pick enough paths to assure that every source statement is executed at least once.
 Path testing concepts are used in and along with other testing techniques
Code Coverage: During unit testing: # stmts executed at least once / total # stmts
                         Control Flow Graphs and Path Testing
Path Testing contd..
Assumptions:
Observations
   • Assembly language, Cobol, Fortran, Basic & similar languages make path testing necessary.
                          Control Flow Graphs and Path Testing
                                         Control Flow Graph
                                                                                    NO: ELSE DO
Process Block             Do Process A                     Decisions          IF
                                                                             A=B?
YES: THEN DO
Junctions 1 2
                                                                   CASE-OF
                                                                                         CASE 1
                                                                                    1
                                                                                          CASE 2
                                              Case Statement                        2
                                                                                         CASE N
                Control Flow Graph Elements                                         N
                        Control Flow Graphs and Path Testing
Control Flow Graph Elements:
Process Block:
Junction:
   • A point in the program where control flow can merge (into a node of the graph)
   • Examples: target of GOTO, Jump, Continue
Decisions:
   • A program point at which the control flow can diverge (based on evaluation of a condition).
   • Examples: IF stmt.      Conditional branch and Jump instruction.
Case Statements:
Focuses on Inputs, Outputs, and the control   Focuses on the process steps inside
flow into and out of the block.
Inside details of a process block are not     Every part of the process block are drawn
shown
                            Control Flow Graphs and Path Testing
                      Creation of Control Flow Graph from a program
                                                                                                        NO
     INPUT X, Y                        INPUT X, Y        Z := X + Y        V := X - Y        Z >= 0 ?        JOE
     Z := X + Y
     V := X - Y
     IF Z >= 0 GOTO SAM                                                                                  Z := Z + V
                                       Z := Z - 1     LOOP        N := 0       Z := Z - V      SAM
JOE: Z := Z + V
SAM: Z := Z - V
     FOR N = 0 TO V                          NO
     Z := Z - 1                 N=V?                N := N+1
     NEXT N
     END                               YES                                                  One to One Flow Chart
                                                      END
                     Control Flow Graphs and Path Testing
                       Creation of Control Flow Graph from a program
                                                                                        NO
     INPUT X, Y                                                 P1           Z >= 0 ?        JOE
     Z := X + Y
     V := X - Y
     IF Z >= 0 GOTO SAM
                             P4             LOOP                     P3       SAM            P2
JOE: Z := Z + V
SAM: Z := Z - V
     FOR N = 0 TO V            NO
     Z := Z - 1     N=V?                     P5
     NEXT N
     END                 YES
                                             END
                                                                     Simplified Flow Graph
                         Control Flow Graphs and Path Testing
                       Creation of Control Flow Graph from a program
     INPUT X, Y
     Z := X + Y                         1         2         3          4        5
     V := X - Y
     IF Z >= 0 GOTO SAM
JOE: Z := Z + V
                                                                                6        7
SAM: Z := Z - V
     FOR N = 0 TO V
     Z := Z - 1
     NEXT N
     END
                                                                       Simplified Flow Graph
                        Control Flow Graphs and Path Testing
Linked List Notation of a Control Flow Graph
1 2 3 4 5
                                                                      6   7
   Node      Processing, label, Decision         Next-Node
Path segment is a succession of consecutive links that belongs to the same path. (3,4,5)
   Name of a path is the set of the names of the nodes along the path.    (1,2,3 4,5, 6)
                                       (1,2,3,4, 5,6,7, 5,6,7, 5,6)
• Integration issues:
                                            Case
  Begin 1
                                                        1
 Begin 2                            Begin
                                                        2
 Begin N
                                                        N
• Merge all exits to Single-exit point after setting one exit parameter to a value.
                     Exit 1                                          SET E = 1
                                                             1
                     Exit 2
                                                             2       SET E = 1
                     Exit N
                                                             N       SET E = 1
                          Control Flow Graphs and Path Testing
                                   Path Testing Concepts contd..
• Each pass through a routine from entry to exit, as one traces through it, is a potential path.
• The above includes the tracing of 1..n times tracing of an interactive block each separately.
 •   Note: A bug could make a mandatory path not executable or could create new paths not
     related to processing.
      Point 1 => point 2 and 3.          Point 2 & 3 are not the same
      Point 1 is impractical.            For a structured language, Point 3 => Point 2
                       Control Flow Graphs and Path Testing
                                    Path Testing Concepts
         For well structured software, branch testing & coverage include statement coverage
                          Control Flow Graphs and Path Testing
Picking enough (the fewest) paths for achieving C1+C2
                                                                                                            2
                                                                                       1                            NO
                                                         f                     P1                      Z >= 0 ?
                                                                                               a
                                                                                                                         b
                                               NO                                                       c
                                    YES
                              END                                 LOOP                                  SAM
                                     g    N=V?
                                                    e                              d
                                6                                  4                                        3
                                           5
acdeg No Y Y Y Y Y Y
                                                        acdefeg         No     Y       Y                 Y      Y   Y    Y   Y
                         Control Flow Graphs and Path Testing
Revised path selection Rules
2. Pick additional paths as small variations from previous paths. (pick those with no loops,
   shorter paths, simple and meaningful)
3. Pick additional paths but without an obvious functional meaning (only to achieve C1+C2
   coverage).
4. Be comfortable with the chosen paths. play hunches, use intuition to achieve C1+C2
2. Nested loops.
3. Concatenated Loops.
4. Horrible Loops
   7. Try n = nmax
   8. Try n = nmax + 1.
          What prevents V (& n) from having this value?
          What happens if it is forced?
                       Control Flow Graphs and Path Testing
                                Testing of path involving loops…
 1. Try nmin - 1
      Could the value of loop (control) variable V be < nmin?               1          2
      What prevents that ?
 2. Try nmin
 3. Try nmin + 1
 6. Try n = nmax
 7. Try n = nmax + 1.
        What prevents V (& n) from having this value?
        What happens if it is forced?
2. Example: 1 2
1 2 3 4
• Multiplying # of tests for each nested loop => very large # of tests
      1. Start at the inner-most loop. Set all outer-loops to Min iteration parameter values: Vmin.
      2. Test the Vmin, Vmin + 1, typical V, Vmax - 1, Vmax for the inner-most loop. Hold the outer-
         loops to Vmin. Expand tests are required for out-of-range & excluded values.
      3. If you have done with outer most loop, Go To step 5. Else, move out one loop and do
         step 2 with all other loops set to typical values.
      4. Do the five cases for all loops in the nest simultaneously.
1 2 3 4
• Expand tests for solving potential problems associated with initialization of variables and
  with excluded combinations and ranges.
1 2 3 4
   • Two loops are concatenated if it’s possible to reach one after exiting the other while still on
     the path from entrance to exit.
   • If their iteration values are inter-dependent & these are same path, treat these like a nested
     loop.
1 2 3 4 5 6
• Avoid these.
• Even after applying some techniques of paths, resulting test cases not definitive.
• Thinking required to check end points etc. is unique for each program.
• Jumps in & out of loops and intersecting loops etc, makes test case selection an ugly task.
  • etc. etc.
                         Control Flow Graphs and Path Testing
                                  Testing of path involving loops…
• Longer testing time for all loops if all the extreme cases are to be tested.
• Unreasonably long test execution times indicate bugs in the s/w or specs.
Case: Testing nested loops with combination of extreme values leads to long test times.
     • Show that it’s due to incorrect specs and fix the specs.
     • Prove that combined extreme cases cannot occur in the real world. Cut-off those tests.
• The test time problem is solved by rescaling the test limit values.
• Path testing (with mainly P1 & P2) catches ~65% of Unit Test Bugs ie., ~35% of all bugs.
• Limitations
• Unit-level path testing may not catch interface errors among routines.
• A lot of work
     •   Creating flow graph, selecting paths for coverage, finding input data values to force
         these paths, setting up loop cases & combinations.
 • Careful, systematic, test design will catch as many bugs as the act of testing.
   Test design process at all levels at least as effective at catching bugs as is running the test
   designed by that process.
Path
Predicate
Compound Predicate
   • Two or more predicates combined with AND, OR etc.
Path Predicate
   • Every path corresponds to a succession of True/False values for the predicates traversed
     on that path.
   • The symbolic substitution of operations along the path in order to express the predicate
     solely in terms of the input vector is called predicate interpretation.
   • Example:
           INPUT X, Y                                        INPUT X
           ON X GOTO A, B, C                                 IF X < 0 THEN Y:= 2
        A: Z := 7 @ GOTO H                                   ELSE Y := 1
        B: Z := -7 @ GOTO H                                  IF X + Y*Y > 0 THEN …
        C: Z := 0 @ GOTO H
         H: DO SOMETHING
         K: IF X + Z > 0 GOTO GOOD ELSE GOTO BETTER
   • Path predicates are the specific form of the predicates of the decisions along the selected
     path after interpretation.
                         Control Flow Graphs and Path Testing
                           Predicates, Predicate Expressions…
Process Dependency
 • An input variable is independent of the processing if its value does not change as a result of
   processing.
• A predicate is process dependent if its truth value can change as a result of processing.
 • A predicate is process independent if its truth value does not change as a result of
   processing.
 • If all the input variables (on which a predicate is based) are process independent, then
   predicate is process independent.
                          Control Flow Graphs and Path Testing
                           Predicates, Predicate Expressions…
Correlation
 • Two input variables are correlated if every combination of their values cannot be specified
   independently.
• Variables whose values can be specified independently without restriction are uncorrelated.
 • A pair of predicates whose outcomes depend on one or more variables in common are
   correlated predicates.
 • Every path through a routine is achievable only if all predicates in that routine are
   uncorrelated.
 • If a routine has a loop, then at least one decision’s predicate must be process dependent.
   Otherwise, there is an input value which the routine loops indefinitely.
                       Control Flow Graphs and Path Testing
                         Predicates, Predicate Expressions…
  • Select an entry/exit path. Write down un-interpreted predicates for the decisions along the
    path. If there are iterations, note also the value of loop-control variable for that pass.
    Converting these into predicates that contain only input variables, we get a set of boolean
    expressions called path predicate expression.
                  X1 + 3X2 + 17 >= 0
                  X3 = 17
                  X4 – X1 >= 14 X2
                       Control Flow Graphs and Path Testing
                        Predicates, Predicate Expressions…
 A:   X5>0                                       E:   X6<0
 B:   X1 + 3X2 + 17 >= 0                         F:   X1 + 3X2 + 17 >= 0
 C:   X3 = 17                                    G:   X3 = 17
 D:   X4 – X1 >= 14 X2                           H:   X4 – X1 >= 14 X2
AB C D + E B C D  (A+ E ) B C D
      (A + E ) B C D
                         Control Flow Graphs and Path Testing
                           Predicates, Predicate Expressions…
Predicate Coverage:
      •   Due to semantics of the evaluation of logic expressions in the languages, the entire
          expression may not be always evaluated.
• Realize that on our achieving C2, the program could still hide some control flow bugs.
• Predicate coverage:
      •   If all possible combinations of truth values corresponding to selected path have been
          explored under some test, we say predicate coverage has been achieved.
      •   If all possible combinations of all predicates under all interpretations are covered, we
          have the equivalent of total path testing.
                          Control Flow Graphs and Path Testing
Testing blindness
• coming to the right path – even thru a wrong decision (at a predicate). Due to the
           Correct                                Buggy
           X := 7                                  X := 7
           IF Y > 0 THEN …                        IF X + Y > 0 THEN …            (check for Y=1)
• Equality blinding:
     •   When the path selected by a prior predicate results in a value that works both for the
         correct & buggy predicate.
           Correct                               Buggy
            IF Y = 2 THEN …                      IF Y = 2 THEN ..
            IF X + Y > 3 THEN …                  IF X > 1 THEN …              (check for any X>1)
  • Self-blinding
     • When a buggy predicate is a multiple of the correct one and the result is
         indistinguishable along that path.
            Correct                            Buggy
            X := A                             X := A
            IF X - 1 > 0 THEN …                IF X + A -2 > 0 THEN …      (check for any X,A)
                       Control Flow Graphs and Path Testing
                                   Achievable Paths
1. Objective is to select & test just enough paths to achieve a satisfactory notion of
   test completeness such as C1 + C2.
2. Extract the program’s control flow graph & select a set of tentative covering paths.
4. Trace the path through, multiplying the individual compound predicates to achieve a
   boolean expression.               Example: (A + BC) ( D + E)
6. Each product term denotes a set of inequalities that, if solved, will yield an input
   vector that will drive the routine along the selected path.
7. A set of input values for that path is found when any of the inequality sets is solved.
Heuristic procedures:
Choose an easily sensitizable path set, & pick hard-to-sensitize paths to achieve more coverage.
    Identify all the variables that affect the decisions. For process dependent variables,
    express the nature of the process dependency as an equation, function, or whatever is
    convenient and clear. For correlated variables, express the logical, arithmetic, or
    functional relation defining the correlation.
1. Identify correlated predicates and document the nature of the correlation as for variables.
   If the same predicate appears at more than one decision, the decisions are obviously
   correlated.
2. Start path selection with uncorrelated & independent predicates. If coverage is achieved,
   but the path had dependent predicates, something is wrong.
                         Control Flow Graphs and Path Testing
Path Sensitization…        Heuristic procedures:     contd..
4. If the coverage is not achieved yet with independent uncorrelated predicates, extend the
  path set by using correlated predicates; preferably process independent (not needing
  interpretation)
5. If the coverage is not achieved, extend the path set by using dependent predicates
   (typically required to cover loops), preferably uncorrelated.
6. Last, use correlated and dependent predicates.
7. For each of the path selected above, list the corresponding input variables. If the variable
   is independent, list its value. For dependent variables, interpret the predicate ie., list the
   relation. For correlated variables, state the nature of the correlation to other variables.
   Determine the mechanism (relation) to express the forbidden combinations of variable
   values, if any.
8. Each selected path yields a set of inequalities, which must be simultaneously satisfied to
   force the path.
             Control Flow Graphs and Path Testing
                Examples for Path Sensitization
3. Dependent Predicates
4. Generic
                                  Control Flow Graphs and Path Testing
                                                                                         Examples for Path Sensitization..
1. Simple Independent Uncorrelated Predicates
                  3                   5
                                              _
                      A
     1                        4
                                              C    6               7              2
          a       A   b           c   C       d                e
              _                                                            f
              A                       C                                               4 predicates => 16 combinations
                                  h                    j               k              Set of possible paths = 8
                  8
                  B                       i
                          B                                _
               _                                           D
               B          l                        10
                                      9
                                                   D
                                              m                D
 abcdef          A     C                                              abcdef              A       C
 aghcimkf       A B C D                                               abcimjef            A        C D
 aglmjef       A B    D                                          abcimkf             A        C D
                                                                       aghcdef            A    B C
                                                                       aglmkf             A   B     D
A Simple case of solving inequalities.            (obtained by the procedure for finding a covering set of paths)
                                       Control Flow Graphs and Path Testing
                                                                                                 Examples for Path Sensitization …
3. Dependent Predicates
Usually most of the processing does not affect the control flow.
           Determine the value of loop control variable for a certain # of iterations, and then
           work backward to determine the value of input variables (input vector).
                          Control Flow Graphs and Path Testing
                                                                          Examples for Path Sensitization …
4. The General Case
No simple procedure to solve for values of input vector for a selected path.
2. Tackle the path with the fewest decisions first. Select paths with least # of loops.
 3. Start at the end of the path and list the predicates while tracing the path in reverse.
   Each predicate imposes restrictions on the subsequent (in reverse order) predicate.
 4. Continue tracing along the path. Pick the broadest range of values for variables affected
     and consistent with values that were so far determined.
5. Continue until the entrance & therefore have established a set of input conditions for the path.
Alternately:
2. Pick a path & adjust all input values. These restricted values are used for next decision.
3. Continue. Some decisions may be dependent on and/or correlated with earlier ones.
  4. The path is unachievable if the input values become contradictory, or, impossible.
       If the path is achieved, try a new path for additional coverage.
Output of a test:
Results observed. But, there may not be any expected output for a test.
Outcome:
           Any change or the lack of change at the output.
Expected Outcome:
           Any expected change or the lack of change at the output (predicted as part of
design).
Actual Outcome:
           Observed outcome
                     Control Flow Graphs and Path Testing
                            PATH INSTRUMENTATION
Coincidental Correctness:
X = 16 CASE SELECT Y := X - 14
                                                               Here
                                                  Y := 2
                                                               Y is 2
Y := X mod 14
1. General strategy:
2. A trace confirms the expected outcome is or isn’t obtained along the intended path.
2. Instrument the links so that the link is recorded when it is executed (during the test)
    3. The succession of letters from a routine’s entry to exit corresponds to the pathname.
                        Control Flow Graphs and Path Testing
Single Link Marker Instrumentation: An example
                                                  No
               Input                      B$ =             C=
       i                A = 7?        j                k                  l
               A,B,C                      “a” ?            0?
                             No                                 No
                                                                      m
                                                       n
                                                  No             No
                                          B$ =             C≤
                                  o                    p                  q
                                          “d” ?            0?
                                                                      r
                                                       s
i A = 7? j Process A Process B
No
                                                No
                     k        Process C    ?         n   Process D
Problem:
  Processing in the links may be chewed open by bugs. Possibly due to GOTO
  statements, control takes a different path, yet resulting in the intended path again.
                         Control Flow Graphs and Path Testing
Double Link Marker Instrumentation:
i A = 7? j Process A Process B l
m n
o Process C p ? q Process D r
Two link markers specify the path name and both the beginning & end of the link.
                        Control Flow Graphs and Path Testing
                                                              PATH INTRUMENTATION techniques…
3. Link Counters Technique:
• Increment a link counter each time a link is traversed. Path length could confirm
  the intended path.
• For avoiding the same problem as with markers, use double link counters.
  Expect an even count = double the length.
• Now, put a link counter on every link.          (earlier it was only between decisions)
  If there are no loops, the link counts are = 1.
• Sum the link counts over a series of tests, say, a covering set. Confirm the total link
  counts with the expected.
• Using double link counters avoids the same & earlier mentioned problem.
                        Control Flow Graphs and Path Testing
                                                                  PATH INTRUMENTATION techniques…
3. Link Counters Technique: contd..
• Does the input-link count of every decision equal to the sum of the link counts of the
  output links from that decision?
• Do the sum of the input-link counts for a junction equal the output-link count for that
  junction?
• Do the total counts match the values you predicted when you designed the covering
  test set?
This procedure and the checklist could solve the problem of Instrumentation.
                       Control Flow Graphs and Path Testing
                        PATH INTRUMENTATION techniques…
Limitations
• Instrumentation probe (marker, counter) may disturb the timing relations & hide
  racing condition bugs.
  If the presence or absence of probes modifies things (for example in the data base)
  in a faulty way, then the probes hide the bug in the program.
                          Control Flow Graphs and Path Testing
                  PATH INTRUMENTATION              -    IMPLEMENTATION
   • Probes are written in the source code & tagged into categories.
   • Counters & traversal markers can be implemented.
   • Can selectively activate the desired probes.
   • Use macros or function calls for each category of probes.    This may have less bugs.
   • A general purpose routine may be written.
In general:
   • Plan instrumentation with probes in levels of increasing detail.
                            Control Flow Graphs and Path Testing
                   Implementation & Application of Path Testing
      To achieve C1 or C2 coverage:
       • Predicate interpretation may require us to treat a subroutine as an in-line-code.
       • Sensitization becomes more difficult.
       • Selected path may be unachievable as the called components’ processing may block it.
   • It assumes that effective testing can be done one level at a time without bothering what
     happens at lower levels.
   • predicate coverage problems & blinding.
                            Control Flow Graphs and Path Testing
                            Implementation & Application of Path Testing
    • Use the procedure similar to the idealistic bottom-up integration testing, using a
      mechanized test suite.
    • Use the procedure similar to the idealistic bottom-up integration testing, but without using
      stubs.
    • Newer and more effective strategies could emerge to provide coverage in maintenance
      phase.
                         Control Flow Graphs and Path Testing
                         Implementation & Application of Path Testing
• Path testing with C1 + C2 coverage is a powerful tool for rehosting old software.
   • A translator from the old to the new environment is created & tested. Rehosting
     process is to catch bugs in the translator software.
  • A complete C1 + C2 coverage path test suite is created for the old software. Tests
    are run in the old environment. The outcomes become the specifications for the
    rehosted software.
  • Another translator may be needed to adapt the tests & outcomes to the new
    environment.
• The cost of the process is high, but it avoids risks associated with rewriting the code.
Transaction-flow Graph
   TFG represents a behavioral (functional) model of the program (system) used for
 functional testing by an independent system tester.
Transaction
6. Request direction from user 12. Record transaction in log & cleanup (Closure)
cancel
help
                                                              Y
            Transmit                    Accept            More
  B                            C                                           Transmit        D
            Page to                      Input           Fields?           To CPU
            terminal                     Field
            CPU-                       Y             N                                N
                                              More                       User wants            Done
  D        Accept           Valid ?
                                             Pages ?                      Review?
           Confirm
                                               Transmit                               Set up
                                              Diagnostic           C                  Review
                                              to Terminal
                                          Definitions
Uses of Transaction-flow
  Loops are less as compared to CFG. Loops are used for user input error processing
                     Implementation of Transaction-Flow (in a system)
Input S A S B S C S S Output
                                                                               E
S : Scheduler             A, B, C, D, E : Processes
                                 Implementation of Transaction-Flow
System Control Structure (architecture of the implementation) :
              Input                                                                               Output
              Queue              EXECUTIVE                                                        Queue
    Front                                                                                                  Output
    End                          SCHEDULER - AND / OR      OPERATING SYSTEM                                Module
                                 DISPATCHER
            Process
            Queues        A Processor   B Processor   C Processor       D Processor   E Processor
Application Processes
 A Transaction is created by filling in a Transaction Control Block (TCB) by user inputs and by
     placing that token on input Q of Scheduler.
 Scheduler examines and places it on appropriate process Q such as A. When A finishes with
    the Token, it places the TCB back on the scheduler Q.
      3. Scheduler contains no code / data. Processing modules contain code for routing.
                          Implementation of Transaction-Flow
Transaction Processing System (simplified):
     •   There are many Tr. & Tr-flows in the system.
• Scheduler invokes processes A to E as well as disk & tape read & writes.
Cyclic structure like in this example is common in process control & communication systems.
• TFG has tokens, & DFG has data objects with history of operations applied on them.
2. Decision nodes of TFG have exception exits to the central recovery process.
Alternative 1
 2. Biosis                                      Parent
                               Parent
Daughter Tr.
                                    Daughter Tr.
 3.Mitosis            Parent
                                 Daughter Tr.
          Transaction Flows – splitting & merging decisions
Mergers of transactions
                                               Path 1
1. Junction Continue
Path 2
                              Daughter Tr.
 2. Absorption
                                              Predator
Predator
 3. Conjugation
                                          Parent         Daughter
                                       Parent
                 TFG – splitting, merging Transactions
NOTES:
   •   Petrinet model uses operations for all the above. But Petrinets are
       applied to H/W, N/W protocol testing – but not Software.
                     Simplified TFG model
6. Approximation to Reality
       •   Attempt to Structure
            Transaction - Flow Testing - Steps
• Represent Explicitly
1. Conducting Walkthroughs
       • Traceability to Requirements
                Transaction - Flow Testing - Steps
1. Inspections, Reviews & Walkthroughs …
          • Use patches & break points, mistune, and break the rules,
               Transaction - Flow Testing Techniques
4. Instrumentation
2. Need
• Trace
• A Running Log
2. Mistakes
2. Transaction Dispatcher
       • Uses tables & Finite State Machines
4. Self-Test Support
        • Privileged modes in Transaction control tables
                  Data - Flow Testing - Basics
Anomaly
Definition:
Example:
 Pick enough paths to assure that every data item has been
 initialized prior to its use, or that all objects have been used for
 something.
                Data - Flow Testing - Basics
Motivation
     • Abstract M I M D
     • Language & compiler take care of parallel
       computations
               Data - Flow Testing - Basics - Motivation
Program Control flow with Von Neumann’s paradigm
Given m, n, p, q, find e.
e = (m+n+p+q) * (m+n-p-q)
                                           a = n+m
a := m + n
b := p + q                                 b=p+q
c := a + b
d := a - b                                 c=a+b
e := c * d
                                           d=a-b
e=c*d
Assumptions
Convert to a CFG
Used - (u)
• In a calculation - (c)
ku : a bug
ud : normal. Redefinition.
uk : normal
    uu    :      normal
               Data - Flow Testing - Basics - Motivation
     Program Flow using Data Flow Machines paradigm
BEGIN
PAR DO                                    n      m                    p      q
     READ m, n, n, p, q
END PAR
PAR DO
     a := m+n                                 a := m+n                    b := p+q
     b := p+q
END PAR
PAR DO                                    c := a+b                    d := a-b
     c := a+b
     d := a-b
END PAR                                                  e := c * d
PAR DO
     e := c * d
END PAR
END
                   The interrelations among the data items remain same.
      Data - Flow Testing - Basics – Data Flow Anomalies
Actions on data objects
-d normal
-u anomaly
-k anomaly
k- normal
     d-          possibly anomalous
                   Data - Flow Testing - Basics
• K, D, U, A
• Processing Step
       • k, d, u
                  Data - Flow Testing - Basics
Data Flow Anomaly State graph
 • Object state
 • Unforgiving Data flow state graph
              Undefined
                          K
                                      k, u
                              d
                  u
                                    d, k
          U               D                      A     Anomalous
   u
              d
                          Defined                    d, k, u
       Used
                     Data - Flow Testing - Basics
Data Flow Anomaly State graph
d DK
                                     k
                                                 d
                 u                                            k
        U                    D           d
   u
             d
                                                          DD
                        u
                                                                  d
               Data - Flow Testing - Basics
 • Dynamic analysis
        Intermediate data values
                          Data - Flow Testing - Basics
• Based on CFG
2. Predicated nodes
3. Sequence of links
1. Join
2. Concatenate weights
    3. The converse
          Data - Flow Testing - Basics : Data Flow Model
 Example:                         an – 1
                          Z = b + ---------
START                             a - 1
INPUT a, b, n
Z := 0
IF a = 1 THEN Z := 1
GOTO DONE1
r := 1 c := 1
POWER:
    c := c * a
    r := r + 1
    IF r <= n THEN GO TO POWER
    Z := (c – 1) / (a – 1)
DONE1:
Z := b + Z
END
          Data - Flow Testing - Basics – Data Flow model
CFG for the Example
        Read a,b,n
        Z := 0                        Z := 1                            Z := b + Z
    1                2                                         5                      6
                             a = 1?
                P1
                         Y
                                                                   Z := (c-1)/(a-1)
                                                          P2
                                      3                        4       r<n?
                 r := 1 c:=1               r := r+1, c:= c*a
                                                                   Y
         Data - Flow Testing - Basics – Data Flow model
CFG annotated – Data Flow Model for Z
                               d or kd                cd or ckd
         d
    1             2                           5                   6
                      a = 1?
             P1
                  Y
d or kd
                                         P2
                               3              4       r<n?
                                                  Y
         Data - Flow Testing - Basics – Data Flow model
CFG annotated – Data Flow Model for c
    1             2                                    5               6
                           a = 1?
             P1
                  Y
-d c-
                                        ckd or kd P2
                                    3                  4        r<n?
                                                           Y
         Data - Flow Testing - Basics – Data Flow model
CFG annotated – Data Flow Model for r
    1             2                                    5               6
                           a = 1?
             P1
                  Y
-d p-
                                        ckd or kd P2
                                    3                  4        r<n?
                                                           Y
         Data - Flow Testing - Basics – Data Flow model
CFG annotated – Data Flow Model for b
          d                                             c
    1              2                         5              6
                       a = 1?
              P1
                   Y
                                        P2
                                3            4       r<n?
                                                 Y
         Data - Flow Testing - Basics – Data Flow model
CFG annotated – Data Flow Model for n
          d
    1              2                         5               6
                       a = 1?
              P1
                   Y
                                                 p-
                                        P2
                                3            4        r<n?
                                                 Y
         Data - Flow Testing - Basics – Data Flow model
CFG annotated – Data Flow Model for a
          d
    1              2                         5               6
                       a = 1?
              P1
                   p
                                                 c-
                                    c   P2
                                3            4        r<n?
                                                 Y
       Data - Flow Testing - Basics – Data Flow model
Purpose:
• Strongest DFT
• APU + c
• Stronger than P2
• ACU + p
     • Weaker than P2
      Data - Flow Testing – Data Flow Testing Strategies
• APU :
• ACU :
All Paths
All du Paths
                                      All Defs   AD
   All c uses (ACU)                                             All P-uses   APU
All Branches P2
                                                                 All Stmts P1
       Data - Flow Testing – Data Flow Testing Strategies
Testing, Maintenance & Debugging in the Data Flow context
Slicing:
            Stmt1    var v
            stmt2
            Stmt3    var v
            Stmt4    var v
            Stmt s   var v
       Data - Flow Testing – Data Flow Testing Strategies
Testing, Maintenance & Debugging in the Data Flow context
Dicing:
Debugging:
• Select a slice.
• Narrow it to a dice.
Dynamic Slicing:
ADUP ~ ½ APU*
       AP ~ AC
  Data - Flow Testing - – Data Flow Testing Strategies
Application of DFT
DFT vs P1, P2
• DFT is Effective
• Cost-effective development
• Commercial tools :
    • Efficient Testing
                          UNIT-IV
Topics:
Domain Testing: domains and paths, Nice and ugly domains,
domain testing, domains and interfaces testing, domain and
interface testing, domains and testability.
                      Domain Testing - Domains & Paths
Domain Testing Model
                                D1
                                     D2
 INPUT               CLASSIFY              DO CASE 1     OUTPUT
                                D3
 (x,y,z,…)                      Dn                          { Outcome }
                                           DO CASE 2
 (1, 2, 3, 4, 5,…)
DO CASE 3
                                          DO CASE n
                      Domain Testing
Domain Testing
Two Views
• Based on Specs
• Functional Testing
    • Structural Technique
          Domain Testing - Domains & Paths
Domain Testing Model
 • Variables
    • Simple combinations of two variables
    • Numbers from - to +
 • Loop-free Programs
            Domain Testing - Domains & Paths
Domain Testing Model
• Specified by predicates
• Interpretation
            MIN                                MAX
    D1
                                      D2                     D3
Closed
                  X >= MIN
                                  D2       X < MAX
     D1                                                      D3
            MIN                     MAX
     D1                        D2             D3
                        Open
           X > MIN                  X < MAX
Domain Testing - Domains & Paths - Domain Dimensionality
• Slicing Boundary
• Double-zero representation
• Contradictory domains
                                                undefined
Domain Testing - Domains & Paths – Bug Assumptions..
 • Over-specified domains
                                      X > 3 .AND. X < 2 .AND. Y > 3
• Boundary errors
Boundary closure
      Shifted
Domain Testing - Domains & Paths - Bug Assumptions
• Boundary errors….
Tilted
Missing
    Extra boundary
Domain Testing - Domains & Paths - Bug Assumptions       U3
                                                     X >= 3
  • Closure Reversal
• Faulty Logic
1. Coincidental Correctness
     DT cannot detect
     Example
                                                    F1(x) : +1
• Representative outcome D1
Partition testing
     Input Equivalence                  D2
                                      F2(x) : -1
                     Domain Testing - Domains & Paths
Domain Testing Model
                                                Function f1
                                      D1
   INPUT            CLASSIFY               DO CASE 1          OUTPUT
(x, y, z, …)                          D2                         { Outcome }
                                           DO CASE 2
(1, 2, 3, 4, 5,…)                                      f2
                                      D3
                                           DO CASE 3
                                                       f3
                                      Dn
                                                       f4
                                           DO CASE n
     Domain Testing - Domains & Paths - - Restrictions
3. Simple boundaries & Compound predicates
                   D1
      X                                      X >=0 .AND. X <= 16
            0               16
                    D1
      Y                                Y = 1 .AND. X >=0 .AND. X <= 16
            0               16
                                 X
     Domain Testing - Domains & Paths - - Restrictions
Compound predicates….
• Impact of .OR.
• Concave, Disconnected
• Example
ABC + DEF
a x + b y >= c
• Polynomials
6. Loop-free Software
   Definite loop
  Domain Testing - Domains & Paths – Nice & Ugly domains
Nice Domains
   Requirements
Before DT
• Analyze specs
Implemented Domains
Specified Domains
• Incomplete, Inconsistent
U1 U2
V1 D11 D12
      V2         D21          D22
    Domain Testing - Domains & Paths – Nice domains
Nice Domains
Advantages
• Ease of DT
Nice Domains
 Boundaries are
   2. Complete
                                 6. Convex
   3. Systematic
1. Linear Boundaries
n-dim Hyperplane:
n+1 Points
Non-Linear
 • Transform
     Domain Testing - Domains & Paths – Nice domains
2. Complete Boundaries
Incomplete…
• Reasons
 • Tests
     Domain Testing - Domains & Paths - Nice domains
3. Systematic Boundaries
 • Parallel lines
 • Identical Sectors in a Circle
 • DT
    • Test a domain            Tests for other Domains
      Domain Testing - Domains & Paths - Nice domains
4. Orthogonal Boundaries
 • Parallel to axes
                                           Vj
• DT
    • # Tests       O (n)
      Domain Testing - Domains & Paths - Nice domains
Orthogonal Boundaries
 • Tilted sets
   • transformation
   • Test cases: O(n)
    • Rectangular coordinates
    • Polar
       r ≥ aj .AND. r < aj+1 .AND.
        ≥ j .AND.  < j+1
     Domain Testing - Domains & Paths - Nice domains
Non-Orthogonal Boundaries
• Example
                                 D3   D1   D2    D4
     Domain Testing - Domains & Paths - Nice domains
6. Convex Domain
   • DT
      • n on-points & 1 off-pt
Concave
• In a single piece D2 D1 D3
                                                        D2
                                                   D1
• 2 complementary domains
   • Programmer / Designer
       • Convex part First
    Domain Testing - Domains & Paths – Ugly Domains
Generally,
1. Non-linear Boundaries
    • Transform
     Domain Testing - Domains & Paths – Ugly Domains
2. Ambiguities
• Missing boundary
• Overlapping of
• Domain Specs
• Closure Specs
D3
                                 D1            D2
     Domain Testing - Domains & Paths – Ugly Domains
3. Simplifying the Topology….
• Complexity !
 • Filling in Holes
     Domain Testing - Domains & Paths – Ugly Domains
3. Simplifying the Topology….
Correct:
Generally,
• Interior point
• Exterior point
• Epsilon neighborhood
• Extreme point
       • On point
     Domain Testing - Domains & Paths – Domain Testing
DT for Specific Domain Bugs
                                        Off Points
        Extreme
        point
Boundary point
  Epsilon neighborhood
                                         On Points
        Domain D1
Domain Testing - Domains & Paths – Domain Testing
1. 1-d Domains
2. 2-d Domains
4. Random Testing
    B       A                                     B                 A
                            Closure Bug
        x                                                      x
                                                      B                     A
                            Shift left Bug
                                                          x1        x
                                              B                         A
                            Shift Right Bug
                                                          x        x1
     Domain Testing - Domains & Paths – Domain Testing
     B         A                                      B                    A
                               Missing Boundary                    x
         x                                                    x
             Extra Boundary           B           A                    C
                                              x           x
                                          x                   x1
• Closure bug
• Tilted Boundary
• Extra Boundary
       • Missing Boundary
        Domain Testing - Domains & Paths – Domain Testing
                                      a
              A
          c                                        c’
                                                        c
                                  d
              B
          To avoid bugs
    Domain Testing - Domains & Paths – Domain Testing
4. Random Testing
            • Independent testing
     Domain Testing - Domains & Paths – Domain Testing
Procedure for solving for values
• Cost effective
• Domain
• Range
    Variable
                           Range for   Domain for               Range for
               Routine 1                            Routine 2
    Domain                 Routine1    Routine2                 Routine2
 • Span compatibility
                    Domain Testing
Interface Range/Domain Compatibility Testing
• Linearizing transformations
 • Polynomial
 • Rectangular to polar
 • Generic & rational => Taylor series
                      Domain Testing
Domains and Testability
• Co-ordinate transformations
                    Domain Testing
Domains and Testability
Path Expression:
Regular Expression:
                           c
            1          2            3         4
                 a             b         d
      abd            abcbd          a b c b c b d ….
       Path Products & expressions – Path Expression
Path Expression
   Simply: Derive using path products.
                                c
              1           2             3              4
                    a               b         d
Example:
{a b d , a b c b d, a b c b c b d , ….. }
               h           i
        e              f       j
a b c d
• Loops:
• Identity element
    a0 = 1           X0 = 1                 (path of length 0)
     Path Products & expressions – Path Product
Path Product
• Not Commutative:
XY ≠ YX in general
• Associative
         A ( BC ) = ( AB ) C = ABC    : Rule 1
      Path Products & expressions – Path Product
• Commutative
X + Y = Y + X : Rule 2
• Associative
• Distributive
       A ( B + C) = A B + A C                      : Rule   4
       (A+ B ) C = AC + B C
   Path Products & expressions – Path Products
• Absorption
    X + X = X                                     :   Rule 5
    X + any subset of X = X
    X = a + bc + abcd         X + a = X + bc + abcd    = X
   Path Products & expressions – Path Products
• Loop:
                                                       b
    An infinite set of parallel paths.
                                                 a     c
b* = b0 + b1 + b2 + b3 + ……
X* = X0 + X1 + X2 + X3 + ……
X+ = X1 + X2 + X3 + ……
• X X* = X* X = X+  a a* = a* a = a+
     n
   X = X0 + X1 + X2 + X3 + …… + Xn
       Path Products & expressions – Path products
More Rules…
   m        n
  X + X = Xn                 if n ≥ m          : Rule   6
        = Xm                 if n < m
   m    n
  X X           = Xm+n                         : Rule   7
  X X*                       = X*
   n                     n
                = X* X                         : Rule   8
  X X+                       = X+
   n                     n
                = X+ X                         : Rule   9
  X* X+         = X+ X* = X+                   : Rule   10
       Path Products & expressions – Path products
Identity Elements ..
 1 : Path of Zero Length
1+1 = 1 : Rule 11
1X = X1 = X : Rule 12
                        1* = 1+
   n            n
  1      =   1      =             = 1          : Rule   13
  1 + 1 = 1*
   +
                    = 1                        : Rule   14
     Path Products & expressions – Path products
Identity Elements ..
X + 0 = 0+X = X : Rule 15
X0 = 0X = 0 : Rule 16
    0*    =   1 + 0 + 02 + 03 + . . .   = 1   : Rule   17
Path Products & expressions – Reduction Procedure
                                           5
                   4
         d                 e
                                       f
                                               g
     1         a               2                   3
                                   b
                       c
    Path Products & expressions – Reduction Procedure
Steps in the Algorithm’s loop:
8. IF there’s just one node between entry & exit nodes, path
  expression for the flow graph is the link’s path expression.
  ELSE, return to step 4.
 Path Products & expressions – Reduction Procedure
• is not unique
• Fundamental step.
• Removes nodes one by one till there’s one entry & one exit node.
• Replace the node by path products of all in-links with all out-links
  and interconnecting its immediate neighbors.
Path Products & expressions – Reduction Procedure Example
Processing of Loop Terms:
          a           c               a             b*c
      1       2                   1       2
                  d                           b*d
Path Products & expressions – Reduction Procedure Example
Processing of Loop Terms:
       a           b           c           f
  1        2           3           4           5
                   d
                           e
                                                               bd
                                                           a        bc       f
                                                       1       2         4       5
       a               (bd)* bc                f
   1           2                       4           5
                               e
Path Products & expressions – Reduction Procedure Example
Processing of Loop Terms:
       a          (bd)* bc           f
  1         2                   4        5
                                                              a (bd)* bc           f
                                                          1                    4        5
e (bd)* bc
           a (bd)* bc           ( e (bd)* bc ) * f
   1                        4                         5
                                                     a (bd)* bc ( e (bd)* bc )* f
Path Products & expressions – Reduction Procedure Example
Example:
                a           b               c                   d                   e
            1           3           4               5                   6                   2
                    f           g               h                   i
                            j               k                   l
                        7           8               9                   10
                                                a                   b                   c                d       e
                                        1                   3                   4                   5        6       2
                                                        f                   g                   h       il
                                                                    j                   k
                                                            7                   8                   9
                                                                            im
Path Products & expressions – Reduction Procedure Example
     a           b            c           d            e
1            3           4          5          6               2
         f           g                   ilh
                 j            kh
             7           8
                     im
                                                           a                b           c        d         e
                                                   1               3                4        5         6       2
                                                                                g                ilh
                                                                       jf
                                                                                        kh
                                                                                    8
                                                                                imf
     a           b           c+gkh         d           e
 1           3           4           5         6               2
                     gif                 ilh
                              imf
Path Products & expressions – Reduction Procedure Example
     bgif
     a            b(c+gkh)         d            e
 1          3                5          6               2
                                 ilh
                      imf
                                                                (bgif)*b(c+gkh)
                                                    a                                   d       e
                                            1               3                     5         6       2
                                                                                      ilh
                                                                        imf
                                 ilhd
     a          (bgif)*b(c+gkh)d                        e
 1          3                           6                          2
                      imf
Path Products & expressions – Reduction Procedure Example
       a       (bgif)*b(c+gkh)d          (ilhd)*e
   1       3                        6                2
(ilhd)*imf
                             a(bgif)*b(c+gkh)d                 (ilhd)*e
                      1                                   6               2
                                                    (ilhd)*imf(bgif)*b(c+gkh)d
Path Products & expressions – Reduction Procedure Example
Identities
= ( A* B* )* : I2
= ( A* B )* A* : I3
= ( B* A )* B* : I4
= ( A* B + A )* : I5
= ( B* A + B )* : I6
(A+B+C+...)* = ( A* + B* + C* + . . . )* : I7
= ( A* B* C* . . . )* : I8
    A       B                           A, B
                       Process
    A       B                           A      B
                   IF THEN .. ELSE ..
    A                                    B
                   WHILE .. DO ..
Path Products & expressions – Structured Flow Graphs
Structured flow graph transformations
     A        B                          A, B
                    REPEAT .. UNTIL ..
Properties:
  • No cross-term transformation.
  • No GOTOs.
  • No entry into or exit from the middle of a loop.
Path Products & expressions – Structured Flow Graphs
Some examples:
                                 f
         d
     b
                        a    b       c       d        e
 a       c                               g        i
                             e               h
                                              j
Path Products & expressions – UNstructured Flow Graphs
 Some examples – unstructured flow graphs/code:
    X
              Jumping into loops
                                                          X
                                   Jumping out of loops
9.30
 9
    Constructing a Decision Table
• PART 1. FRAME THE PROBLEM.
   – Identify the conditions (decision criteria). These
     are the factors that will influence the decision.
      • E.g., We want to know the total cost of a student’s
        tuition. What factors are important?
   – Identify the range of values for each condition or
     criteria.
      • E.g. What are they for each factor identified above?
   – Identify all possible actions that can occur.
      • E.g. What types of calculations would be necessary?
       Constructing a Decision Table
• PART 2. CREATE THE TABLE.
   – Create a table with 4 quadrants.
      • Put the conditions in the upper left quadrant. One row
        per condition.
      • Put the actions in the lower left quadrant. One row per
        action.
   – List all possible rules.
      • Alternate values for first condition. Repeat for all
        values of second condition. Keep repeating this process
        for all conditions.
      • Put the rules in the upper right quadrant.
   – Enter actions for each rule
      • In the lower right quadrant, determine what, if any,
        appropriate actions should be taken for each rule.
   – Reduce table as necessary.
                                  Example
• Calculate the total cost of your tuition this quarter.
  – What do you need to know?
     •   Level. (Undergrad or graduate)
     •   School. (CTI, Law, etc.)
     •   Status. (Full or part time)
     •   Number of hours
  – Actions?
• Actions?
  – Consider CTI only (to make the problem smaller):
     • U/G
        – Part Time (1 to 11 hrs.): $335.00/per hour
        – Full Time (12 to 18 hrs.): $17,820.00
        – * Credit hours over 18 are charged at the part-time rate
     • Graduate:
        – Part time (1 to 7 hrs.): $520.00/per hour
        – Full time (>= 8 hrs.): $520.00/per hour
1 0 0
Rules to consider
2. Identify the predicates on which the cases are based. Name them with
   suitable letters, such as A, B, C.
3. Rewrite the specification in English that uses only the logical connectives
AND, OR, and NOT, however stilted it may seem.
• State graphs are not dependent on time or temporal behavior or the program.
  (Temporal behavior is represented by some time sequence diagrams etc..) The
  system changes state only when an event (with an input sequence occurs or an
  epsilon symbol representing no event appears at the input of a transition).
• State graphs (FSM) are implemented as state tables which are represented in
  software with definite data structures and associated operations.
                                  State table
Very big state graphs are difficult to follow as the diagrams get complicated and
links get entwined. It is more convenient to represent the state graph as a table
called state table or state transition table.
                Each row represents the transitions from the originating state. There
is one column for each input symbol (erroneous input or normal input). The entry
in the table represents the new state to which the system transits to on this
transition and the output it prints on the target printer device or on the output side.
                       A Property of a state graph
• State graphs are not dependent on time or temporal behavior or the program.
  (Temporal behavior is represented by some time sequence diagrams etc..) The
  system changes state only when an event (with an input sequence occurs or an
  epsilon symbol representing no event appears at the input of a transition).
• State graphs (FSM) are implemented as state tables which are represented in
  software with definite data structures and associated operations.
                Software implementation of state table
   As it is not possible to test every path thru a state graph, use the notion of
   coverage. We assume that the graph is strongly connected.
1. It is not useful or practical to plan an entire grand tour of the states for testing
   initially as it does not work out due to possibility of bugs.
2. During the maintenance phase only few transitions and states need to be tested
   which are affected.
3 For very long test input symbol sequences it is difficult to test the system.
                    Uses/Advantages of state testing
•   State testing can find bugs which are not possible to be found with other types
    of testing. Normally most of systems can be modeled as state graphs.
•   It can find if the specifications are complete and ambiguous. This is seen clearly
    if the state table is filled with multiple entries in some cells or some cells are
    empty. IT can also tell if some default transitions or transitions on erroneous
    inputs are missing.
•   State testing can identify the system’s seemingly impossible states and checks if
    there are transitions from these states to other states are defined in the
    specifications or not. That is, the error recovery processes are defined for such
    impossible states.
                    Uses/Advantages of state testing
•   State testing can simplify the design of the program / system by identifying some
    equivalent states and then merging these states. Also, state testing using FSM
    can allow design/test design in a hierarchical manner if the state tables are so
    designed.
•   The state testing can identify if the system reaches a dead state / unreachable
    states and allow one to correct the program specifications and make the system
    complete, robust and consistent.
•   The bugs in the functional behavior can be caught earlier and will be less
    expensive if state testing is done earlier than the structural (white box) testing.
                       DisAdvantages of state testing
• Temporal behavior is not tested.
• There could be encoding errors in inputs,              outputs, states, input-state
  combinations, identifying the number of states and merger of equivalent states. All
  these errors are not always easy to detect and correct.
• State transition testing does not guarantee the complete testing of the program.
  How much of testing with how many combinations of input symbol sequences
  constitutes sufficient number of tests is not clear/known. It is not practical to test
  thru every path in the state graph.
• Functional behavior is tested and structural bugs are not tested for. There could be
  difficulty if those bugs are found and mixed up with behavioral bugs.
• We assume that the state graph is strongly connected that is every node is
  connected to every other node thru a path.
             Application areas for state testing using FSM
                                   model
          Any program that processes input as a sequence of events/symbols and
  produces output such as detection of specified input symbol combinations,
  sequential format verification, parsing, etc. (compilers & translators).
         – Communication Protocols: processing depends on current state of the
• protocol stack, OS, network environment and the message received
         – concurrent systems,
         – system failures and the corresponding recovery systems,
         – distributed data bases,
         – device drivers – processing depends on the state of the device &
        Application areas for state testing using FSM
                              model
                                 b
                     3                       4                   2
                                                         c
                             a                       f
                                     e                       g
                                                 5
                         1
                                                         h
                  MATRIX REPRESENTATION:OVER VIEW
• A graph matrix is a square array with one row and one column for every node in the
  graph. Each row-column combination represents a relation between the node
  corresponding to the row i and the node corresponding to the column j.
• The relation could be just the link name if there is a direct link between the two
  nodes. The matrix is a square matrix of size n (where n is the # of nodes). Self loops
  are shown as diagonal entries.
         node        1    2    3    4    5
            1    [    0    0    a    0    0 ]
            2    [    0    0    0    0    0 ]
            3    [    0    d    0    b    0 ]
            4    [    0    c    0    0    f ]
            5    [    0    g    e    0    h ]
                            CONNECTION MATRIX
The relation in a connection matrix is defined as follows:
     A [ i, j ] = 1 if there is a direct link from i to j.
                 0 otherwise
It is the relation matrix with a non zero entry replaced by 1.
        Corresponding connection Matrix is
                node       1 2 3 4 5
                   1 [ 0 0 1 0 0 ]
                   2 [ 0 0 0 0 0 ]
                   3 [ 0 1 0 1 0 ]
                   4 [ 0 1 0 0 1 ]
                   5 [ 0 1 1 0 1 ]
Maths / Algebra over the relation connection:
  1x1 = 1          0x0=0 1x0=0            0x1=0
  A [ i,j] x A [j,k] represents existence of a (directed) path from i
 to k
 Is 1 plus the number of binary decisions that are present in a given program /
 graph. The use of the cyclomatic complexity is in estimation of efforts needed
 for design & testing of a given software program.
calculated as follows
Prepare the relation matrix and from that prepare the connection matrix. For each
row (represents branches ie., decisions) obtain the sum of the entries (each entry is
1 or 0). Number of binary decisions at this node / row r is equal to the sum - 1 as
number of binary decisions at a node = number of outgoing branches - 1.
Sum the number of binary decisions of each row and add 1 to get the cycl.
Complexity.
                                   EXAMPLE:
 First row : total = 1 then minus 1 => 0
 2nd row           0             nil     0
 3rd row            2              1 1
 4th row            2              1 1
 5th row            3              1 2
                                     -----
example:                        Total 4
              cyclomatic complexity = 4+1 = 5
                A [ i, j ] =  a ik a kk a kj
                           K=1 to n
                            RELATIONSHIPS
Redefinitions of graphs:
A graph consists of a set of abstract objects called nodes and a (binary) relation R
   between (among pairs of) the nodes. If a R b, it means that node a has the
   relation to node b – which denoted by a link from a to b.
                           PROPERTIES OF RELATIONSHIPS
1. A relation R is transitive if a R b and b R c imply a R c. Examples of transitive relations are is
   connected to , >= etc.
2. Examples for an Intransitive relation are is acquainted with, is a neighbor of, not equal to etc..
3. A relation R is reflexive if for every a, a R a. It is equivalent to a self loop at every node a in the graph.
5. A relation is a Symmetric relation if for every a and b , a R b implies b R a. It means that if there is a
   link from a to b then there is a link between b to a. Then it is as good as an undirected graph (unless
   the link weights are different for the different directions).
6. Examples of symmetric relation are : is a relative of, is a friend of, equals , not equals etc..
7. A relation R is Anti-symmetric relation if for every a and b, if a R b and b R a imply that a = b. That is
   there is no symmetry between any two different elements.
8. An equivalence relation is a relation that satisfies the reflexive, transitive and symmetric properties.
   Example : is equal to.
                               POWERS OF GRAPH MATRIX
A (connection or relation) graph matrix product represents existence of a path or its path
   expression respectively between two nodes with a common intermediate node.
   C=AxB           C [ i, j ] or c i i =   aik bkj
                   K=1 to n
 a i k b k j implies set (sum) of all paths between I and j thru all intermediate nodes k in
   the graph.
A2 represents the set of all path segments of length two (links) ie., each non-zero element
  A [i , j] is the path expression for the set of 2 link long path segments from node i to j.
An-1 represents the set of all path segments of length n-1 (links) ie., each non-zero element
  A [i , j] is the path expression for the set of n-1 link long path segments from node i to j.
Graph matrix product is not necessarily commutative, but is associative and distributive.
  The non-zero elements along principal diagonal represent self-loops on those nodes
                  PARTITIONING ALGORITHM – GROUPING LOOPS AND
                              OBTAINING LOOP-FREE GRAPH
We will consider a graph (over a transitive relation). The graph may have loops. We would like to
  partition the graph by grouping the nodes in such a way that every node is contained with in one
  group of another. Such a graph is partially ordered.
The main use is to embed the loops into subroutines to have a resulting loop-free flow in the
   program/graph. This enables a better design and analysis and testing design.
Here we use the connection matrix. To do grouping of loops we just need to calculate intersection of the
   transitive closure of graph matrix with itself.
   Ie., find ( A + I) n # ( A + I) nT            Remember this
If n = 5 then calculate A and its square, then its square and multiply with A. Then obtain its transpose and
    then do intersection. Here, the intersection means binary AND directly element a [ i, j I by element a
    [i,j].
Once we calculate the intersection as above, the rows or columns which are identical will form a group.
  Replace them by one row/column. Now redraw the graph with reduced number of nodes. Each group
  is a merger of the loop-forming node set. The result will be a loop-free directed graph which is
  partially ordered.
                         Example: PARTITIONING ALGORITHM
1 2 3
                                100                             100
      Now find (A+I)3 Transpose = 1 1 1        Intersection result = 0 1 1
                                11 1                            011
        As you see columns 2,3 and rows 2,3 are identical. Merge the two nodes.
        You have now the following with node 2,3 engulfing & enclosing the loop.
                                        1            2,3
                             NODE REDUCTION ALGORITHM
•   The advantage of this node reduction algorithm using graph matrices is that we do not need to
    redraw the graph after reduction of a node. Calculations are done methodically and can be
    automated. It is actually matrix equivalent of the node reduction algorithm in the chapter ‘paths,
    path expressions & regular expr..’.
•    Steps are :
    1. select a node for removal Other than start or end node. Replace the node by equivalent links
        that bypass that node and add those links to the links they parallel.
    2. Combine the parallel terms and simplify as much as you can.
    3. Observe loop terms and adjust the outlinks of every node that had a self-loop to account for the
        effect of the loop.
    4. the result is a matrix whose size has been reduced by 1. Continue until the two nodes entry and
        exit exist.
                                           THE ALGORITHM:
Step 1 : Before step1, Always first eliminate the self nodes ie., removal of a non-zero diagonal entry d.
   Multiply each path expr. in the row r with d* where d is a non-zero diagonal element in row/column r.
   That is, multiply each outgoing link from node r with d* . Now replace d with 0.
Step 2: Select the last column c. Take one non-zero element A [ r, c] in column c. Pre-Multiply each entry A
   [ c, j] in the (last) row c with A[r, c]. Add the result to the element in the intersection of c and j , ie., to A
   [ r, j]. Repeat this for every non-zero element in the last column.              Now, remove the last row &
   column.
Step3: actually amounts to multiplying each incoming link into a node with each outgoing link from that
   node and then replacing those two links by a direct path bypassing this last node. In the above A [ r, c ]
   is an incoming link into node c and A [c, j] is an outgoing link from node c. Multiply and add the result
   to path expr. from node r to node j ie., A [r, j].
               Application Of Node Reduction Algorithm
1.   space grows as O(n2). For a linked list it is only k * n where k is avg degree of a node which is 3
     to 4.
2.   Weights are complicated for the links and have several components. So would require an
     additional array for link weights.
3.   Variable length weights – as the weights can be expressions or numbers or others, we need a 2-
     d string array representation for link weight array. Most of the entries are null as graph matrix
     is sparse usually.
4.   Processing time – As each array element is processed whether null or not, the processing time
     for the null elements could be significant as there are many of them usually in a graph matrix.
                EXAMPLE
            b
3                4                   2
                             c
        a                f
            e                    g
                     5
    1
                             h
                     EXAMPLE-CONTINUE…
Linked list representation
          linked List entry                            its content
         (one node in the listed list)
        ------------------------------------------------------------------------------
          node 1,3; a
                    2                                    node 2, exit
                    3                                    node 3, 2 ; d
                                                              3, 4 ; b
                    4                                    node 4, 2 ; c
                                                             4, 5 ; f
                    5                                    node 5, 2 ; g
                                                              5 ,3 ; e
                                                              5 ,5 ; h
Corresponding relation Matrix is
          node       1 2 3 4 5
            1 [ 0 0 a 0 0          ]
            2 [ 0 0 0 0 0          ]
            3 [ 0 d 0 b 0          ]
            4 [ 0 c 0 0 f          ]
            5 [ 0 g e 0 h          ]
                     EXAMPLE-CONTINUE…
Linked list representation
          linked List entry                            its content
         (one node in the listed list)
        ------------------------------------------------------------------------------
          node 1,3; a
                    2                                    node 2, exit
                   3                                     node 3, 2 ; d
                                                                3, 4 ; b
                   4                                     node 4, 2 ; c
                                                               4, 5 ; f
                   5                                     node 5, 2 ; g
                                                                5 ,3 ; e
                                                                5 ,5 ; h
Corresponding relation Matrix is
          node       1 2 3 4 5
            1 [ 0 0 a 0 0          ]
            2 [ 0 0 0 0 0          ]
            3 [ 0 d 0 b 0          ]
            4 [ 0 c 0 0 f          ]
            5 [ 0 g e 0 h          ]