Skip to main content

Exhaustive Testing of Exception Handlers with Enforcer

  • Conference paper
Formal Methods for Components and Objects (FMCO 2006)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 4709))

Included in the following conference series:

Abstract

Testing application behavior in the presence of I/O failures is extremely difficult. The resources used for testing usually work without failure. Failures typically cannot be initiated on the test suite level and are usually not tested sufficiently. Essentially, each interaction of the application with the environment can result in a failure. The Enforcer tool identifies such potential failures and automatically tests all relevant outcomes of such actions. It combines the structure of unit tests with coverage information and fault injection. By taking advantage of a unit test infrastructure, performance can be improved by orders of magnitude compared to previous approaches. This paper introduces the usage of the Enforcer tool.

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Artho, C., Biere, A.: Applying static analysis to large-scale, multithreaded Java programs. In: Proc. 13th Australian Software Engineering Conference (ASWEC 2001), Canberra, Australia, pp. 68–75. IEEE Computer Society Press, Los Alamitos (2001)

    Chapter  Google Scholar 

  2. Artho, C., Biere, A., Honiden, S.: Enforcer – efficient failure injection. In: Misra, J., Nipkow, T., Sekerinski, E. (eds.) FM 2006. LNCS, vol. 4085, Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  3. Artho, C., Biere, A., Honiden, S., Schuppan, V., Eugster, P., Baur, M., Zweimüller, B., Farkas, P.: Advanced unit testing – how to scale up a unit test framework. In: Proc. Workshop on Automation of Software Test (AST 2006), Shanghai, China (2006)

    Google Scholar 

  4. Artho, C., Schuppan, V., Biere, A., Eugster, P., Baur, M., Zweimüller, B.: JNuke: Efficient Dynamic Analysis for Java. In: Alur, R., Peled, D.A. (eds.) CAV 2004. LNCS, vol. 3114, pp. 462–465. Springer, Heidelberg (2004)

    Google Scholar 

  5. Ball, T., Podelski, A., Rajamani, S.: Boolean and Cartesian Abstractions for Model Checking C Programs. In: Margaria, T., Yi, W. (eds.) ETAPS 2001 and TACAS 2001. LNCS, vol. 2031, pp. 268–285. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  6. Bushnell, M., Agrawal, V.: Essentials of Electronic Testing for Digital, Memory and Mixed-Signal VLSI Circuits. Kluwer Academic Publishers, Dordrecht (2000)

    Google Scholar 

  7. Candea, G., Delgado, M., Chen, M., Fox, A.: Automatic failure-path inference: A generic introspection technique for Internet applications. In: Proc. 3rd IEEE Workshop on Internet Applications (WIAPP 2003), Washington, USA, p. 132. IEEE Computer Society Press, Los Alamitos (2003)

    Chapter  Google Scholar 

  8. Carreira, J., Madeira, H., Gabriel Silva, J.: Xception: A technique for the experimental evaluation of dependability in modern computers. Softw. Engineering 24(2), 125–136 (1998)

    Article  Google Scholar 

  9. Colby, C., Godefroid, P., Jagadeesan, L.: Automatically closing open reactive programs. In: Proc. SIGPLAN Conf. on Programming Language Design and Implementation (PLDI 1998), Montreal, Canada, pp. 345–357 (1998)

    Google Scholar 

  10. Cousot, P., Cousot, R.: Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In: Proc. 4th ACM Symposium on Principles of Programming Languages (POPL 1977), Los Angeles, USA, pp. 238–252. ACM Press, New York (1977)

    Chapter  Google Scholar 

  11. DBUnit (2007), http://www.dbunit.org/

  12. Engler, D., Musuvathi, M.: Static analysis versus software model checking for bug finding. In: Steffen, B., Levi, G. (eds.) VMCAI 2004. LNCS, vol. 2937, pp. 191–210. Springer, Heidelberg (2004)

    Google Scholar 

  13. Farchi, E., Nir, Y., Ur, S.: Concurrent bug patterns and how to test them. In: Proc. 20th IEEE Int’l Parallel & Distributed Processing Symposium (IPDPS 2003), Nice, France, p. 286. IEEE Computer Society Press, Los Alamitos (2003)

    Google Scholar 

  14. Fenton, N., Pfleeger, S.: Software metrics: a rigorous and practical approach, 2nd edn. PWS Publishing Co, Boston, USA (1997)

    Google Scholar 

  15. Forrester, J.E., Miller, B.P.: An empirical study of the robustness of windows NT applications using random testing. In: 4th USENIX Windows System Symposium, Seattle, USA, pp. 59–68 (2000)

    Google Scholar 

  16. Fu, C., Martin, R., Nagaraja, K., Nguyen, T., Ryder, B., Wonnacott, D.: Compiler-directed program-fault coverage for highly available Java internet services. In: Proc. 2003 Int’l Conf. on Dependable Systems and Networks (DSN 2003), San Francisco, USA, pp. 595–604 (2003)

    Google Scholar 

  17. Fu, C., Ryder, B., Milanova, A., Wonnacott, D.: Testing of Java web services for robustness. In: Proc. ACM/SIGSOFT Int’l Symposium on Software Testing and Analysis (ISSTA 2004), Boston, USA, pp. 23–34 (2004)

    Google Scholar 

  18. Godefroid, P., Klarlund, N., Sen, K.: DART: Directed automated random testing. In: Proc. ACM Int’l Conf. on Programming Language Design and Implementation (PLDI 2005), Chicago, USA, pp. 213–223 (2005)

    Google Scholar 

  19. Gosling, J., Joy, B., Steele, G., Bracha, G.: The Java Language Specification, 3rd edn. Addison Wesley, Reading (2005)

    Google Scholar 

  20. Groce, A., Visser, W.: Heuristics for model checking java programs. Int’l Journal on Software Tools for Technology Transfer (STTT) 6(4), 260–276 (2004)

    Article  Google Scholar 

  21. Hsueh, M., Tsai, T., Iyer, R.: Fault injection techniques and tools. IEEE Computer 30(4), 75–82 (1997)

    Google Scholar 

  22. Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.: An overview of AspectJ. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 327–355. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  23. Kim, M., Lee, I., Sammapun, U., Shin, J., Sokolsky, O.: Monitoring, checking, and steering of real-time systems. In: Proc. 2nd Int’l Workshop on Run-time Verification (RV 2002). ENTCS, vol. 70, Elsevier, Amsterdam (2002)

    Google Scholar 

  24. Li, X., Hoover, H., Rudnicki, P.: Towards automatic exception safety verification. In: Misra, J., Nipkow, T., Sekerinski, E. (eds.) FM 2006. LNCS, vol. 4085, pp. 396–411. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  25. Link, J., Fröhlich, P.: Unit Testing in Java: How Tests Drive the Code. Morgan Kaufmann, San Francisco (2003)

    MATH  Google Scholar 

  26. Meyer, B.: Eiffel: the language. Prentice-Hall, Upper Saddle River (1992)

    MATH  Google Scholar 

  27. Microsoft Corporation: Microsoft Visual C# .NET Language Reference. Microsoft Press, Redmond, USA (2002)

    Google Scholar 

  28. Myers, G.: Art of Software Testing. John Wiley & Sons, Chichester (1979)

    Google Scholar 

  29. Peled, D.: Software Reliability Methods. Springer, Heidelberg (2001)

    MATH  Google Scholar 

  30. Sen, K., Agha, G.: CUTE and jCUTE: Concolic unit testing and explicit path model-checking tools. In: Ball, T., Jones, R.B. (eds.) CAV 2006. LNCS, vol. 4144, pp. 419–423. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  31. Sinha, S., Harrold, M.: Criteria for testing exception-handling constructs in Java programs. In: Proc. IEEE Int’l Conf. on Software Maintenance (ICSM 1999), Washington, USA, p. 265. IEEE Computer Society Press, Los Alamitos (1999)

    Google Scholar 

  32. Stoller, S.: Testing concurrent Java programs using randomized scheduling. In: Proc. 2nd Int’l Workshop on Run-time Verification (RV 2002), Copenhagen, Denmark. ENTCS, vol. 70(4), pp. 143–158. Elsevier, Amsterdam (2002)

    Google Scholar 

  33. Stroustrup, B.: The C++ Programming Language, 3rd edn. Addison-Wesley Longman Publishing Co, Boston, USA (1997)

    Google Scholar 

  34. Sun Microsystems: Santa Clara, USA. Java 2 Platform (Standard edn.) (J2SE) 1.5 (2004), http://java.sun.com/j2se/1.5.0/

  35. Visser, W., Havelund, K., Brat, G., Park, S., Lerda, F.: Model checking programs. Automated Software Engineering Journal 10(2), 203–232 (2003)

    Article  Google Scholar 

  36. Weimer, W., Necula, G.: Finding and preventing run-time error handling mistakes. In: Proc. 19th ACM SIGPLAN Conf. on Object-Oriented Programming Systems, Languages & Applications (OOPSLA 2004), Vancouver, Canada, pp. 419–431. ACM Press, New York (2004)

    Chapter  Google Scholar 

  37. White, A.: SERP, an Open Source framework for manipulating Java bytecode, (2002), http://serp.sourceforge.net/

Download references

Author information

Authors and Affiliations

Authors

Editor information

Frank S. de Boer Marcello M. Bonsangue Susanne Graf Willem-Paul de Roever

Rights and permissions

Reprints and permissions

Copyright information

© 2007 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Artho, C., Biere, A., Honiden, S. (2007). Exhaustive Testing of Exception Handlers with Enforcer. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, WP. (eds) Formal Methods for Components and Objects. FMCO 2006. Lecture Notes in Computer Science, vol 4709. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-74792-5_2

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-74792-5_2

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-74791-8

  • Online ISBN: 978-3-540-74792-5

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics