Skip to main content
Log in

Specification‐based testing using cause‐effect graphs

  • Published:
Annals of Software Engineering

Abstract

In this paper we discuss the advantages and limitations of a specification‐based software testing technique we call CEG‐BOR. There are two phases in this approach. First, informal software specifications are converted into cause‐effect graphs (CEG). Then, the Boolean OperatoR (BOR) strategy is applied to design and select test cases. The conversion of an informal specification into a CEG helps detect ambiguities and inconsistencies in the specification and sets the stage for design of test cases. The number of test cases needed to satisfy the BOR strategy grows linearly with the number of Boolean operators in CEG, and BOR testing guarantees detection of certain classes of Boolean operator faults. But, what makes the approach especially attractive is that the BOR based test suites appear to be very effective in detecting other fault types. We have empirically evaluated this broader aspect of the CEG‐BOR strategy on a simplified safety‐related real‐time control system, a set of N‐version programs, and on elements of a commercial data‐base system. In all cases, CEG‐BOR testing required fewer test cases than those generated for the applications without the use of CEG‐BOR. Furthermore, in all cases CEG‐BOR testing detected all faults that the original, and independently generated, application test‐suites did. In two instances CEG‐BOR testing uncovered additional faults. Our results indicate that the CEG‐BOR strategy is practical, scalable, and effective across diverse applications. We believe that it is a cost‐effective methodology for the development of systematic specification‐based software test‐suites.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  • Basili, V.R. and R.W. Selby (1987), “Comparing the Effectiveness of Software Testing Strategies,” IEEE Transactions on Software Engineering SE-13,12, 1278–1296.

    Article  Google Scholar 

  • Beizer, B. (1990), Software Testing Techniques, Second Edition, Van Nostrand Reinhold, New York, NY.

    Google Scholar 

  • Bender, R.A. (1991), Requirements Based Testing CASE Tool, SoftTest, Bender and Associates, Larkspur, CA.

    Google Scholar 

  • Boehm, B. (1989), Tutorial: Software Risk Management, IEEE Computer Society Press, Washington, DC.

    Google Scholar 

  • Elmendorf, W.R. (1973), “Cause-Effect Graphs in Functional Testing,” TR-00.2487, IBM Systems Development Division, Poughkeepsie, NY.

    Google Scholar 

  • Foreman, L. and S.H. Zweben (1993), “A Study of the Effectiveness of Control and Data Flow Testing Strategies,” Journal of Systems and Software 21,3, 215–228.

    Article  Google Scholar 

  • Frankl, P. and E.J. Weyuker (1988), “An Applicable Family of Data Flow Testing Criteria,” IEEE Transactions on Software Engineering 14,10, 1483–1498.

    Article  MathSciNet  Google Scholar 

  • Hamlet, R. (1995), “Software Testing,” In Advances in Computers, M.V. Zelkovitz, Ed., Academic Press, San Diego, CA, pp. 1402–1411.

    Google Scholar 

  • Howden, W.E. (1987), Functional Program Testing and Analysis, McGraw-Hill, New York, NY.

    Google Scholar 

  • IEEE-ANSI (1989), IEEE Guide for the User of IEEE Standard Dictionary of Measures to Produce Reliable Software, IEEE Std 982.2-1988, IEEE Standards Board and ANSI, New York, NY.

    Google Scholar 

  • Institute for Risk Research (1993), Generic Problem Competition: A Component of the International Symposium on Design and Review of Software Controlled Safety-Related Systems, Software Specification for the Generic Problem Competition, Ottawa, Ontario, Canada.

    Google Scholar 

  • Konz, S. (1995), Work Design — Industrial Ergonomics, Fourth Edition, Publishing Horizons, Inc., Scotsdale, AZ.

    Google Scholar 

  • Laski, J. (1989), “Testing in the Program Development Cycle,” Software Engineering Journal 4,2, 95–106.

    Article  Google Scholar 

  • Lyu, M. (1994), Handbook of Software Reliability Engineering, IEEE Computer Society Press and McGraw-Hill, New York, NY.

    Google Scholar 

  • Musa, J.D., A. Iannino and K. Okumoto (1987), Software Reliability: Measurement, Prediction, Application, McGraw-Hill, New York, NY.

    Google Scholar 

  • Myers, G.J. (1979), The Art of Software Testing, Wiley, New York, NY.

    Google Scholar 

  • Nagle, P.M. and J.A. Skrivan (1982), “Software Reliability: Repetitive Run Experimentation and Modeling,” Bsc-40336, Boeing Inc., Seattle, WA.

    Google Scholar 

  • Nursimulu, K. and R.L. Probert (1995), “Cause-Effect Graphing Analysis and Validation of Requirements,” In Proceedings of CASCON'95, IBM Canada Ltd. and National Research Council, Toronto, Ontario, Canada, p. 293.

    Google Scholar 

  • Paradkar, A.M. (1996), “Specification Based Testing Using Cause-Effect Graphs,” PhD Dissertation, Department of Computer Science, North Carolina State University, Raleigh, NC.

    Google Scholar 

  • Paradkar, A.M., I. Shields and J. Waters (1993), “The NCSU Solution to the Generic Problem Exercise: Boiler Control and Monitoring System,” Software Documentation for NCSU Solution to the Generic Problem Exercise, Department of Computer Science, North Carolina State University, Raleigh, NC.

    Google Scholar 

  • Paradkar, A.M. and K.C. Tai (1995), “Test Generation for Boolean Expressions,” In Proceedings of International Symposium on Software Reliability Engineering'95, IEEE Computer Society Press, Los Alamitos, CA, pp. 106–115.

    Chapter  Google Scholar 

  • Paradkar, A.M., K.C. Tai and M.A. Vouk (1996), “Automatic Test Generation for Predicates,” IEEE Transactions on Reliability 45,4, 515–530.

    Article  Google Scholar 

  • Tai, K.C. (1996), “Theory of Fault-Based Predicate Testing for Computer Programs,” IEEE Transactions on Software Engineering 22,8, 552–562.

    Article  Google Scholar 

  • Tai, K.C., M.A. Vouk, A. Paradkar and P. Lu (1994), “Evaluation of a Predicate-Based Software Testing Strategy,” IBM Systems Journal 33,3, 445–457.

    Article  Google Scholar 

  • Vouk, M.A. and R.E. Coyle (1989), “BGG: A Testing Coverage Tool,” In Proceedings of 7th Annual Pacific Northwest Software Quality Conference, Lawrence and Craig, Inc., Portland, OR, pp. 212–233.

    Google Scholar 

  • Vouk, M.A., M.L. Helsabeck, D.F. McAllister and K.C. Tai (1986a), “On Testing of Functionally Equivalent Components of Fault-Tolerant Software,” In Proceedings of Computer Software and Applications Conference (COMPSAC'86), IEEE Computer Society Press, Los Alamitos, CA, pp. 414–419.

    Google Scholar 

  • Vouk, M.A., D.F. McAllister and K.C. Tai (1986b), “An Experimental Evaluation of the Effectiveness of Random Testing of Fault-Tolerant Software,” In Proceedings of Workshop on Software Testing, IEEE Computer Society Press, Los Alamitos, CA, pp. 74–81.

    Google Scholar 

  • Vouk, M.A. and A.M. Paradkar (1993), “Design and Review of Software Controlled Safety-Related Systems: The NCSU Experience with the Generic Problem Exercise,” In Proceedings of the 1993 International Invitational Workshop on Design and Review of Software Controlled Safety-Related Systems, Institute for Risk Research, Ottawa, Ontario, Canada, pp. 209–222.

    Google Scholar 

  • Weyuker, E.J. (1988), “An Empirical Study of the Complexity of Data Flow Testing,” In Proceedings of the Second Workshop on Software Testing, Verification, and Analysis, IEEE Computer Society Press, Los Alamitos, CA, pp. 188–195.

    Chapter  Google Scholar 

  • Weyuker, E.J., T. Goradia and A. Singh (1994), “Automatically Generating Test Data from a Boolean Specification,” IEEE Transactions on Software Engineering 20,5, 353–363.

    Article  MATH  Google Scholar 

  • White, L. (1995), “Software Testing and Verification,” In Encyclopedia of Microcomputers, Volume 16, A. Kent and J. Williams, Eds., Marcel Dekker Inc., New York, NY, pp. 185–241.

    Google Scholar 

  • Yokoi, S. and M. Ohba (1992), “TCG: CEG-Based Tool and Its Experiments,” In Proceedings of the 13th Software Reliability Symposium, IEEE Computer Society Press, Los Alamitos, CA, pp. 41–49.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Paradkar, A., Tai, K. & Vouk, M. Specification‐based testing using cause‐effect graphs. Annals of Software Engineering 4, 133–157 (1997). https://doi.org/10.1023/A:1018979130614

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/A:1018979130614

Keywords

Navigation