Skip to main content

Component-Based Software: An Overview of Testing

  • Chapter
Component-Based Software Quality

Abstract

Component-based development makes heavy use of Object Oriented features which have motivated a major re-evaluation of software testing strategies. This chapter introduces the basic concepts of software testing focusing on the state-of-the-art and on the state-of-the-practice of this relevant area in the context of component-based software development.

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. Harrold, M.J.: Testing: A roadmap. In: 22th International Conference on Software Engineering (2000)

    Google Scholar 

  2. Chow, T.S.: Testing software design modelled by finite-state machines. IEEE Transactions on Software Engineering 4, 178–187 (1978)

    Google Scholar 

  3. Harel, D.: Statecharts: A visual formalism for complex systems. Science of Computer Programming 8, 231–274 (1987)

    Google Scholar 

  4. Freedman, R.S.: Testability of software components. IEEE Transactions on Software Engineering 17, 553–564 (1991)

    Google Scholar 

  5. Szyperski, C.: Component Software Beyond Object-Oriented Programming. Addison-Wesley, Reading (1998)

    Google Scholar 

  6. Matena, V., Stearns, B.: Applying Enterprise JavaBeans: Component-Based Development for the J2EE Platform, 2nd edn. Addison-Wesley, Reading (2001)

    Google Scholar 

  7. Microsoft: COM: Delivering on the promises of component technology. web page (2002), Available on-line at: http://www.microsoft.com/com/ (February 1, 2002)

    Google Scholar 

  8. Gimenes, I.M.S., Barroca, L., Huzita, E.H.M., Carnielo, A.: The process of component development by examples. In: VIII Regional Scholl of Informatics, Porto Alegre, RS, Brazil, pp. 1–32 (2000) (in Portuguese)

    Google Scholar 

  9. Werner, C.M., Braga, R.M.: Component-based development. Brazilian Symposium on Software Engineering 2000 (2000) (in Portuguese)

    Google Scholar 

  10. McDaniel, R., McGregor, J.D.: Testing polymorphic interactions between classes. Technical Report TR-94-103, Clemson University (1994)

    Google Scholar 

  11. Beizer, B.: Software Testing Techniques, 2nd edn. Van Nostrand Reinhold Company, New York (1990)

    Google Scholar 

  12. Zhu, H., Hall, P., May, J.: Software unit test coverage and adequacy. ACM Computing Surveys 29, 366–427 (1997)

    Google Scholar 

  13. Weyuker, E.J.: Testing component-based software: A cautionary tale. IEEE Software 15, 54–59 (1998)

    Google Scholar 

  14. Binder, R.V.: Testing Object-Oriented Systems: Models, Patterns, and Tools, vol. 1. Addison Wesley Longman, Inc., Amsterdam (1999)

    Google Scholar 

  15. Linnenkugel, U., Müllerburg, M.: Test data selection criteria for (software) integration testing. In: First International Conference on Systems Integration, Morristown, NJ, pp. 709–717 (1990)

    Google Scholar 

  16. Pressman, R.S.: Software Engineering - A Practitioner’s Approach., 5th edn. McGraw-Hill, New York (2000)

    Google Scholar 

  17. IEEE: IEEE standard glossary of software engineering terminology. Standard 610.12-1990 (R2002). IEEE Computer Society Press (2002)

    Google Scholar 

  18. Harrold, M.J., Rothermel, G.: Performing data flow testing on classes. In: Second ACM SIGSOFT Symposium on Foundations of Software Engineering, New York, pp. 154–163. ACM Press, New York (1994)

    Chapter  Google Scholar 

  19. Perry, D.E., Kaiser, G.E.: Adequate testing and object-oriented programming. Journal on Object-Oriented Programming 2, 13–19 (1990)

    Google Scholar 

  20. Arnold, T.R., Fuson, W.A. In: a perfect world. Communications of the ACM 37, 78–86 (1994)

    Google Scholar 

  21. Howden, W.E.: Software Engineering and Technology: Functional Program Testing and Analysis. McGrall-Hill Book Co., New York (1987)

    Google Scholar 

  22. Offutt, A.J., Irvine, A.: Testing object-oriented software using the category-partition method. In: 17th International Conference on Technology of Object-Oriented Languages and Systems, Santa Barbara, CA, pp. 293–304 (1995)

    Google Scholar 

  23. Thevenod-Fosse, P., Waeselynck, H.: STATEMATE applied to statistical software testing. In: International Symposium on Software Testing and Analysis, Cambridge, MA, pp. 99–109. ACM Press, New York (1993)

    Google Scholar 

  24. Whittaker, J.A., Thomason, M.: A markov chain model for statistical software testing. IEEE Transactions on Software Engineering 20, 812–824 (1994)

    Google Scholar 

  25. Whittaker, J.A.: Stochastic software testing. Annals of Software Engineering 4, 115–131 (1997)

    Google Scholar 

  26. Banks, D., Dashiell, W., Gallagher, L., Hagwood, C., Kacker, R., Rosenthal, L.: Software testing by statistical methods. Technical Report NISTIR 6129, NIST - National Institute of Standards and Technology (1998)

    Google Scholar 

  27. Hoffman, D., Strooper, P.: A case study in class testing. In: CASCON 1993, pp.472-482. IBM Toronto Laboratory (1993)

    Google Scholar 

  28. Turner, C.D., Robson, D.J.: The state-based testing of object-oriented programs. In: Conference on Software Maintenance, Montreal Quebec, Canada, pp. 302–310. IEEE Computer Society Press, Los Alamitos (1993)

    Google Scholar 

  29. Kung, D., Gao, J., Hsia, P., Toyoshima, Y., Chen, C.: On regression testing of object-oriented programs. The Journal of Systems and Software 32, 21–40 (1996)

    Google Scholar 

  30. McGregor, J.D., Korson, T.D.: Integrated object-oriented testing and development process. Communications of the ACM 37, 59–77 (1994)

    Google Scholar 

  31. Hoffman, D., Strooper, P.: Classbrench: A framework for automated class testing. Software Practice and Experience 27, 573–597 (1997)

    Google Scholar 

  32. Frankl, F.G.: The Use of Data Flow Information for the Selection and Evaluation of Software Test Data. PhD thesis, Universidade de New York, New York, NY (1987)

    Google Scholar 

  33. Ntafos, S.C.: A comparison of some structural testing strategies. IEEE Transactions on Software Engineering 14, 868–873 (1988)

    Google Scholar 

  34. Rapps, S., Weyuker, E.J.: Selecting software test data using data flow information. IEEE Transactions on Software Engineering 11, 367–375 (1985)

    Google Scholar 

  35. Ostrand, T.J., Weyuker, E.J.: Using data flow analysis for regression testing. In: Sixth Annual Pacific Northwest Software Quality Conference, Portland – Oregon (1988)

    Google Scholar 

  36. Hartmann, J., Robson, D.J.: Techniques for selective revalidation. IEEE Software 7, 31–36 (1990)

    Google Scholar 

  37. Veevers, A., Marshall, A.: A relationship between software coverage metrics and reliability. Software Testing, Verification and Reliability 4, 3–8 (1994)

    Google Scholar 

  38. Varadan, G.S.: Trends in reliability and test strategies. IEEE Software 12, 10 (1995)

    Google Scholar 

  39. Chaim, M.L.: Program Debugging Based on Structural Testing Information. Doctoral dissertation, Scholl of Computer Science and Electrical Engineering, UNI-CAMP, Campinas, SP, Brazil (2001) (in Portuguese)

    Google Scholar 

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

    Google Scholar 

  41. Herman, P.M.: A data flow analysis approach to program testing. Australian Computer Journal 8, 92–96 (1976)

    Google Scholar 

  42. Laski, J.W., Korel, B.: A data flow oriented program testing strategy. IEEE Transactions on Software Engineering 9, 347–354 (1983)

    Google Scholar 

  43. Rapps, S., Weyuker, E.J.: Data flow analysis techniques for program test data selection. In: 6th International Conference on Software Engineering, Tokio, Japan, pp. 272–278 (1982)

    Google Scholar 

  44. Ntafos, S.C.: On required element testing. IEEE Transactions on Software Engineering 10, 795–803 (1984)

    Google Scholar 

  45. Maldonado, J.C.: Potential-Uses Criteria: A Contribution to the Structural Testing of Software. Doctoral dissertation, DCA/FEE/UNICAMP, Campinas, SP, Brazil (1991) (in Portuguese)

    Google Scholar 

  46. Harrold, M.J., Soffa, M.L.: Interprocedural data flow testing. In: Third Testing, Analysis, and Verification Symposium, pp. 158-167 (1989)

    Google Scholar 

  47. Harrold, M.J., Soffa, M.L.: Selecting and using data for integration test. IEEE Software 8, 58–65 (1991)

    Google Scholar 

  48. Vilela, P.R.S.: Integration Potencial-Uses Criteria: Definition and Analysis. Doctoral dissertation, DCA/FEEC/UNICAMP, Campinas, SP, Brazil (1998) (in Portuguese)

    Google Scholar 

  49. DeMillo, R.A., Lipton, R.J., Sayward, F.G.: Hints on test data selection: Help for the practicing programmer. IEEE Computer 11, 34–43 (1978)

    Google Scholar 

  50. Budd, T.A.: Computer Program Testing. In: Mutation Analysis: Ideas, Example, Problems and Prospects. North-Holland Publishing Company, Amsterdam (1981)

    Google Scholar 

  51. Friedman, A.D.: Logical Design of Digital Systems. Computer Science Press, Rockville (1975)

    Google Scholar 

  52. Delamaro, M.E., Maldonado, J.C., Mathur, A.P.: Interface mutation: An approach for integration testing. IEEE Transactions on Software Engineering 27, 228–247 (2001)

    Google Scholar 

  53. Fabbri, S.C.P.F., Maldonado, J.C., Masiero, P.C., Delamaro, M.E.: Mutation analysis applied to validate specifications based on petrinets. In: FORTE 1995 - 8th IFIP Conference on Formal Descriptions Techniques for Distribute Systems and Communication Protocols, Montreal, Canada, pp. 329–337 (1995)

    Google Scholar 

  54. Simão, A.S., Maldonado, J.C.: Mutation based test sequence generation for Petri nets. In: III Workshop of Formal Methods, João Pessoa (2000)

    Google Scholar 

  55. Fabbri, S.C.P.F.: The Mutation Analysis in the Context of Reactive Systems: a Constribution on the Establishment of Validation and Testing Strategies. Doctoral dissertation, IFSC-USP, São Carlos, SP, Brazil (1996) (in Portuguese)

    Google Scholar 

  56. Sugeta, T.: Proteum-rs/st: A tool to support the validation of statecharts based on mutation analysis. Master’s thesis, ICMC-USP, São Carlos, SP, Brazil (1999) (in Portuguese)

    Google Scholar 

  57. Fabbri, S.C.P.F., Maldonado, J.C., Masiero, P.C., Delamaro, M.E.: Mutation analysis based on finite state machines. In: XI Brazilian Symposium on Computer Networks, Campinas, SP, Brazil, pp. 407–425 (1993) (in Portuguese)

    Google Scholar 

  58. Fabbri, S.C.P.F., Maldonado, J.C., Masiero, P.C., Delamaro, M.E.: Mutation analysis testing for finite state machines. In: 5th International Symposium on Software Reliability Engineering (ISSRE 1994), Monterey, CA, pp. 220–229 (1944)

    Google Scholar 

  59. Probert, R.L., Guo, F.: Mutation testing of protocols: Principles and preliminary experimental results. In: IFIP TC6 - Third International Workshop on Protocol Test Systems, North-Holland, pp. 57–76 (1991)

    Google Scholar 

  60. Souza, S.R.S., Maldonado, J.C., Fabbri, S.C.P.F., Lopes de Souza, W.: Mutation testing applied to estelle specifications. Software Quality Journal 8, 285–301 (1999)

    Google Scholar 

  61. Kim, S., Clark, J.A., Mcdermid, J.A.: The rigorous generation of Java mutation operators using HAZOP. In: 12th International Conference on Software & Systems Engineering and their Applications (ICSSEA 1999) (1999)

    Google Scholar 

  62. Ma, Y.S., Kwon, Y.R., Offutt, J.: Inter-class mutation operators for Java. In: 13th International Symposium on Software Reliability Engineering - ISSRE 2002, Annapolis, MD (2002)

    Google Scholar 

  63. Ghosh, S., Mathur, A.P.: Interface mutation. Software Testing, Verification and Reliability 11, 227–247 (2001); Eric Wong, W. (ed.) Special Issue: Mutation 2000 - A Symposium on Mutation Testing

    Google Scholar 

  64. Sridhanan, B., Mundkur, S., Mathur, A.P.: Non-intrusive testing, monitoring and control of distributed corba objects. In: TOOLS 33 - 33rd International Conference on Technology of Object-Oriented Languages, Mont-saint-Michel, France, pp. 195–206 (2000)

    Google Scholar 

  65. Delamaro, M.E., Pezzè, M., Vincenzi, A.M.R., Maldonado, J.C.: Mutant operators for testing concurrent Java programs. In: Brazilian Symposium on Software Engineering 2001, Rio de Janeiro, RJ, Brazil, pp. 272–285 (2001)

    Google Scholar 

  66. Gönenç, G.: A method for design of fault-detection experiments. IEEE Transactions on Computers 19, 551–558 (1970)

    Google Scholar 

  67. Sabnani, K.K., Dahbura, A.: Protocol test generation procedure. Computer Networks and ISDN Systems 15, 285–297 (1988)

    Google Scholar 

  68. Fujiwara, S., Bochmann, G.V., Khendek, F., Amalou, M., Ghedamsi, A.: Test selection based on finite state models. IEEE Transactions on Software Engineering 17 (1991)

    Google Scholar 

  69. Beydeda, S., Gruhn, V.: An integrated testing technique for component-based software. In: AICCSA ACS/IEEE International Conference on Computer Systems and Applications, Beirut, Libanon, pp. 328–334. IEEE Computer Society Press, Los Alamitos (2001)

    Chapter  Google Scholar 

  70. Harrold, M.J., Liang, D., Sinha, S.: An approach to analyzing and testing component-based systems. In: First International ICSE Workshop on Testing Distributed Component-Based Systems, Los Angeles, CA (1999)

    Google Scholar 

  71. Rosenblum, D.S.: Adequate testing of component-based software. Technical Report UCI-ICS-97-34, University of California, Irvine, CA (1997)

    Google Scholar 

  72. Ural, H., Yang, B.: A structural test selection criterion. Information Processing Letters 28, 157–163 (1988)

    Google Scholar 

  73. Martins, E., Toyota, C.M.: Construction of autotestable classes. In: VIII Symposion of Fault Tolerance Computation, Campinas, SP, pp. 196–209 (1999) (in Portuguese)

    Google Scholar 

  74. Rosa, A.C.A., Martins, E.: Using a reflexive architecture to validate object-oriented applications by fault injection. In: Workshop on Reflexive Programming in C++ and Java, Vancouver, Canada, pp. 76–80 (1998)

    Google Scholar 

  75. Orso, A., Harrold, M.J., Rosenblum, D., Rothermel, G., Do, H., Soffa, M.L.: Using component metacontent to support the regression testing of component-based software. In: IEEE International Conference on Software Maintenance (ICSM 2001), Florence, Italy, pp. 716–725. IEEE Computer Society Press, Los Alamitos (2001)

    Chapter  Google Scholar 

  76. Edwards, S.H.: Toward reflective metadata wrappers for formally specified software components. In: OOPSLA 2001 Workshop on Specification and Verification of Component-Based Systems. ACM Press, New York (2001)

    Google Scholar 

  77. Harrold, M.J., McGregor, J.D., Fitzpatrick, K.J.: Incremental testing of object-oriented class structures. In: 14th International Conference on Software Engineering, Los Alamitos, CA, pp. 68–80. IEEE Computer Society Press, Los Alamitos (1992)

    Google Scholar 

  78. Gao, J.: Tracking component-based software. Technical report, San Jose State University (San Jose, CA)

    Google Scholar 

  79. Voas, M, Gao, J.: Certifying off-the shelf-components. IEEE Computer 31, 53–59 (1998)

    Google Scholar 

  80. Binder, R.V.: Modal testing strategies for OO software. Computer 29, 97–99 (1996)

    Google Scholar 

  81. Binder, R.V.: The free approach to testing object-oriented software: An overview. Pgina WWW (1996), Available on-line at, http://www.rbsc.com/pages/FREE.html [01-20-2003]

  82. Kim, S., Clark, J.A., Mcdermid, J.A.: Class mutation: Mutation testing for object-oriented programs. In: FMES (2000)

    Google Scholar 

  83. Edwards, S.H.: A framework for practical, automated black-box testing of component-based software. Software Testing, Verification and Reliability 11, 97–111 (2001)

    Google Scholar 

  84. Wang, Y., King, G., Wickburg, H.: A method for built-in tests in component-based software maintenance. In: Third European Conference on Software Maintenance and Reengineering, Amsterdam, Netherlands, pp. 186–189. IEEE Computer Society Press, Los Alamitos (1999)

    Google Scholar 

  85. Soundarajan, N., Tyler, B.: Testing components. In: OOPSLA 2001 Workshop on Specification and Verification of Component-Based Systems, Tampa, Florida, pp. 4–9. ACM Press, New York (2001)

    Google Scholar 

  86. Rosa, A.C.A., Martins, E.: Using a reflexive architecture to validate object-oriented applications by fault injection. In: Workshop on Reflexive Programming in C++ and Java, Vancouver, Canada, pp. 76–80 (1998), Available on-line at http://www.dc.unicamp.br/~eliane

  87. Edwards, S.H.: Black-box testing using flowgraphs: An experimental assessment of effectiveness and automation potential. Software Testing, Verification and Reliability 10, 249–262 (2000)

    Google Scholar 

  88. Zhao, J.: Dependence analysis of java bytecode. In: 24th IEEE Annual International Computer Software and Applications Conference (COMPSAC 2000), Taipei, Taiwan, pp. 486–491. IEEE Computer Society Press, Los Alamitos (2000)

    Google Scholar 

  89. Zhao, J., Xiang, L., Nishimi, K., Harada, T.: Understanding java bytecode using kafer. In: 20th IASTED International Conference on Applied Informatics (AI 2002), Innsbruck, Austria. ACTA Press (2002)

    Google Scholar 

  90. Vincenzi, A.M.R., Delamato, M.E., Maldonado, J.C., Wong, W.E., Simão, A.S.: Jabá-aJavabytecode analyzer. In: XVI Brazilian Symposium on Software Engineering, Gramado, RS, Brazil, pp. 414-419 (2002)

    Google Scholar 

  91. McGregor, J.D.: Parallel architecture for component testing. Journal of Object-Oriented Programming 10, 10–14 (1997), Available on-line at http://www.cs.clemson.edu/~nmc/columns.html [01-06-2003]

  92. Bhor, A.: Component testing strategies. Technical Report UCI-ICS-02-06, Dept. of Information and Computer Science - University of California, Irvine - California (2001), Available on-line at http://www.ics.uci.edu/~abhor/ [01-06-2003]

  93. Bundell, G.A., Lee, G., Morris, J., Parker, K., Lam, P.: A software component verification tool. In: International Conference on Software Methods and Tools (SMT 2000), Wollongong, Australia (2000)

    Google Scholar 

  94. Corporation, P.: Using design by contract to automate java software and component testing. web page (2002), Avaliable on-line http://www.parasoft.com/ [01-20-2003]

  95. Beck, K., Gamma, E.: JUnit cookbook. web page (2002), Avaliable on-line: http://www.junit.org/ [01-20-2003]

  96. Edge, T.: Glass JAR toolkit. web page, Available on-line, at (2002), http://www.testersedge.com/gjtk/ [01-20-2003]

  97. Agrawal, H.: Dominators, super blocks, and program coverage. In: Proceedings of the 21st Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL 1994), Portland, OR, pp. 25–34 (1994)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2003 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Vincenzi, A.M.R., Maldonado, J.C., Delamaro, M.E., Spoto, E.S., Wong, W.E. (2003). Component-Based Software: An Overview of Testing. In: Cechich, A., Piattini, M., Vallecillo, A. (eds) Component-Based Software Quality. Lecture Notes in Computer Science, vol 2693. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-45064-1_6

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-45064-1_6

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-40503-0

  • Online ISBN: 978-3-540-45064-1

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics