Short Course Topic: Advances in Component-Based Software Testing - Issues, Challenges, Solutions and Techniques By Jerry Zeyu Gao, Ph.D. San Jose State University Schedule: January 16-18, 2006, Cost: $1000/per person Location: San Jose State University Contact: Jerry Gao at jerrygao@email.sjsu.edu URL: http://www.engr.sjsu.edu/gaojerry Motivation: Widespread development and reuse of software components has been regarded by many as one of the next biggest phenomena for software. Reusing high-quality software components in software development has the potential of drastically improving the quality and development productivity of component-based software. However, widespread reuse of a software component with poor quality may literally lead to disasters. Component-based software engineering involves many unique characteristics, some of which have caused new issues, challenges, and needs in testing and quality assurance of components and component-based software. Improper reuse of software components of good quality may also be disastrous. Testing and quality assurance is therefore critical for both software components and component-based software systems. Although a number of recent books address the overall process of component-based software engineering and specific methods for requirements engineering, design, and evaluation of software components and component-based software. However, only a few of published papers focuses on testing and quality control of reusable software components and component-based software systems. The primary goal of this tutorial is to discuss the issues, challenges and needs in testing of components and component-based software. Moreover, this tutorial reports the recent advances and research efforts in developing new solutions to solve those problems and meet the needs. Instructional Objectives: This tutorial course provides an in-depth insight look at the technical issues and managerial aspects of testing software components and component-based programs from the perspectives of component-based software engineering. You will learn the state-of-the-art practice, issues and challenges, new solutions and research efforts in component testing, component-based program validation, and test automation..
At the end of the tutorial, the participants will know: What are the major differences between conventional software modules and modern software components? What are the new issues and challenges in testing software components for component-based software engineering projects? What are the major differences between conventional software and component-based software? Why is component-based software testing important? What are the new issues and challenges in testing component-based software? What is component testability? How to increase component testability by developing built-in and testable software components? What are the applicable unit testing methods for components in component-based software engineering? How to conduct integration and regression testing for component-based software? What are the issues and solutions in component integration, regression testing of component-based software? How to conduct performance testing and measure the performance of component-based software and its components? What are the current advances and research efforts in component-based software testing? Audience: The targeted audience includes technical managers, software testing engineers, quality assurance people, and development engineers who are working on component-based software projects. In addition, the tutorial is designed to help software engineering researchers and graduate students to learn the basic issues and challenges as well as new solutions in testing of third-party components and component-based programs. The tutorial will be very useful for professionals who are interested in understanding the general concepts and methods in component testing and component-based software validation. Prior Knowledge: This tutorial assumes that participants have the general understanding about the basic concepts of software engineering and software testing methods, and have some working experience in software development and validation. Referenced Book and Materials: Jerry Zeyu Gao, H.-S. Jacob Tsao, and Ye Wu, Testing and Quality Assurance for Component-Based Software, Artech House Publishers, 2003. Recently published papers on testing and quality assurance for component-based software from 1990 to 2005. Major Topics: (3 day) Part I: Introduction to Component-Based Software Testing (Day One)
1. Introduction to testing of modern software components in CBSE Introduction to modern software components. The evolution of software components What is a software component? Properties of software components in CBSE Traditional software modules vs. software components in CBSE Engineering process of software components Basic elements of software components in component-based software engineering Component testing vs. module testing Component testing in component-based software engineering Vendor-oriented component testing process User-oriented component testing process Issues and challenges in component testing for CBSE Issues and challenges in vendor-oriented component validation Issues and challenges in user-oriented component validation Component testing myths and other needs 2. Introduction to validation of component-based software Introduction to component-based software Properties of component-based software Traditional programs vs. component-based software Component-based software infrastructure component model Engineering process for component-based software Introduction to component-based software testing Issues and challenges in testing and maintenance for component-based software Testing models for component-based software Testing and maintenance methodologies Enterprise-based test process for component-based software 3. Revisit of software validation methods for components Different types of software components Issues and challenges in black box validation methods for modern software components (COTS) Applicable black box testing techniques Equivalence partition Boundary value analysis Decision table testing Syntax-based testing Issues and challenges in white-box testing of modern components (COTS) Applicable white box testing techniques Basis-path testing Branch-based testing Dataflow testing State-based testing
4. Testing coverage criteria for software components Introduction to testing coverage White-box testing coverage criteria for components Black-box testing coverage criteria for components Challenges and needs Part II: Component Testability and Test Automation (Day Two) 1. Introduction to component testability in component-based software Basic concepts of software testability Understand component testability Component understandability Component observability Component traceability Component controllability Component test support capability Issues, needs and challenges in component-based software development 2. Design for Component Testability Approaches to increase component testability Current research efforts and solutions in building testable components Comparison of these approaches A systematic approach to construct testable components Proposed component architecture model for testable components Consistent component test interfaces A component test framework General test bed for testable components Application examples 3. A Component Testability Model An overview of the model (objectives, notations, and semantics) Modeling component understandability, controllability, observability, traceability, and test support capability Applications and usefulness 4. Component testability verification An overview of different approaches A process-oriented component testability verification method inspection check lists and verification guidelines for component specification and design documents Case study and application examples 5. Component testability measurement
Component testability measurement in a component process Model-based component testability metrics Case study and application examples Required supporting tool 6. Test automation and tools for software components Basics of software test automation Software test automation process Classification of test tools for software components Component-oriented test tools (ADLscope, Junit, Java CTT) Component test automation in CBSE (challenges, issues, and needs) Part III: Validation of Component-Based Systems (Day Three) 1. Integration testing for component-based software Introduction to integration for component-based programs Traditional integration testing methods Test model for integration testing of component-based software UML-based integration testing method Architecture-based integration method Component-based integration strategy Design for component integration 2. Regression testing for modern software components Introduction to software regression testing Regression testing process and activities Regression testing for modern software components Change and impact analysis for components Test case selection and test suite refreshment Metadata-based regression validation method Model-based regression validation method Regression testing for perfective and adaptive activities Other issues and challenges 3. Regression testing for component-based systems Introduction to component-based software regression testing Major issues and challenges Re-integration strategies Change and impact analysis for component-based systems System test case selection and test suite refreshment Other issues and challenges 4. Performance testing and evaluation of component-based software Basics of performance testing and evaluation (focuses, objectives, )
Performance testing process Performance metrics (reliability, availability, scalability, throughput, utilization,..) Component-based performance evaluation models Necessary supporting tools 5. Testing frameworks and environments for component-based software Built-in test components and wrappers Reusable component test connectors Reusable component test wrappers A plug-in-and-play testing environment for components A framework and supporting environment for tracking and monitoring components Plug-in-and-measure component performance measurement Testing tool collaboration for component-based software Testing Object-Oriented Software Author: David C. Kung, Pei Hsia, Jerry Gao ISBN: 0-8186-8520-4 Publisher: Wiley-IEEE Computer Society Press Publication Date:October 1998 280 pages Books Testing and Quality Assurance for Component-Based Software Author: Jerry Zeyu Gao, H.-S. Jacob Tsao, Ye Wu ISBN: 1580534805 Publisher: Artech House, Incorporated Publication Date: 2003 466 pages About The Instructor: Jerry Z. Gao Ph.D. is associate professor of Computer Engineering Department at San Jose State University in California. Dr. Gao has co-authored two technical books on software testing, and written many technical papers on software engineering and object-oriented technology. His current research interests include component-based software engineering, software testing methodology and test automation, information technology and Internet computing, mobile computing and wireless commerce. Dr. Gao has over 10 years research experience and 8 years software development and management experience in software engineering. Before he joined San Jose State University, he worked for Fujitsu Network Communications System, Inc. as a manager of an R&D group in the software-engineering department. At Fujitsu, he was instrumental in developing an enterprise software production environment over the Internet. His team is the driving force to establish an enterprise-oriented software-engineering environment over the Internet in Fujitsu. Now, he has two technical books, and over 55 technical papers in IEEE/ACM journals and magazines as well as international conferences. He co-authored the book on Object-Oriented Software Testing published by IEEE Computer Society Press 1998. Recently, he has published a new book, titled as "Testing and Quality Assurance for Component- Based Software", by Artech House Publishers in September 2003. His third book, Engineering Wireless-Based Software Application Systems, will be published in March, 2006.
In the past years, he has been invited to offer a number of tutorials in software testing and information technology. In 2003, he has been invited to offer a technical tutorial, titled as Testing Component-Based Software Issues, Challenges, Needs, and Solutions in Automated Software Engineering 2003 18 th IEEE International Conference. In 2004, he and his co-author (Dr. Ye Wu) are invited to offer a technical tutorial, titled as Testing Component-Based Software in 3 rd International Conference on COTS-Based Software Systems (ICCBSS 2004). Since 2002 he has worked and delivered on a number of successful R&D and consultant projects in software test automation and component-based system testing for large software and telecommunication companies. In addition, Dr. Gao also has served as committee members for a number of international conferences in software engineering, information technology, and e-commerce. Recently, he has successfully organized and delivered the First International Workshop on Testing and Quality Assurance for Component-Based System (TQACBS 2005). Now he is organizing TQACBS 2006 in Chicago, and the first International Workshop on Evaluation and Evolution of Component Composition in San Francisco in 2006.