More than ever, mission-critical and business-critical applications depend on object-oriented (OO) software. Testing techniques tailored to the unique challenges of OO technology are necessary to achieve high reliability and quality. "Testing Object-Oriented Systems: Models, Patterns, and Tools" is an authoritative guide to designing and automating test suites for OO applications. This comprehensive book explains why testing must be model-based and provides in-depth coverage of techniques to develop testable models from state machines, combinational logic, and the Unified Modeling Language (UML). It introduces the test design pattern and presents 37 patterns that explain how to design responsibility-based test suites, how to tailor integration and regression testing for OO code, how to test reusable components and frameworks, and how to develop highly effective test suites from use cases. Effective testing must be automated and must leverage object technology. The author describes how to design and code specification-based assertions to offset testability losses due to inheritance and polymorphism. Fifteen micro-patterns present oracle strategies--practical solutions for one of the hardest problems in test design. Seventeen design patterns explain how to automate your test suites with a coherent OO test harness framework. The author provides thorough coverage of testing issues such as: The bug hazards of OO programming and differences from testing procedural code How to design responsibility-based tests for classes, clusters, and subsystems using class invariants, interface data flow models, hierarchic state machines, class associations, and scenario analysis How to support reuse by effective testing of abstract classes, generic classes, components, and frameworks How to choose an integration strategy that supports iterative and incremental development How to achieve comprehensive system testing with testable use cases How to choose a regression test approach How to develop expected test results and evaluate the post-test state of an object How to automate testing with assertions, OO test drivers, stubs, and test frameworks Real-world experience, world-class best practices, and the latest research in object-oriented testing are included. Practical examples illustrate test design and test automation for Ada 95, C++, Eiffel, Java, Objective-C, and Smalltalk. The UML is used throughout, but the test design patterns apply to systems developed with any OO language or methodology. 0201809389B04062001
Addressing various aspects of object-oriented software techniques with respect to their impact on testing, this text argues that the testing of object-oriented software is not restricted to a single phase of software development. The book concentrates heavily on the testing of classes and of components or sub-systems, and a major part is devoted to this subject. C++ is used throughout this book that is intended for software practitioners, managers, researchers, students, or anyone interested in object-oriented technology and its impacts throughout the software engineering life-cycle.
Object-oriented programming increases software reusability, extensibility, interoperability, and reliability. Software testing is necessary to realize these benefits. Software testing aims to uncover as many programming errors as possible at a minimum cost. A major challenge to the software engineering community remains how to reduce the cost and improve the quality of software testing. The requirements for testing object-oriented programs differ from those for testing conventional programs. Testing Object-Oriented Software illustrates these differences and discusses object-oriented software testing problems, focusing on the difficulties and challenges testers face. The book provides a general framework for class- and system-level testing and examines object-oriented design criteria and high testability metrics. It offers object-oriented testing techniques, ideas and methods for unit testing, and object-oriented program integration-testing strategy. Readers are shown how they can drastically reduce regression test costs, presented with steps for object-oriented testing, and introduced to object-oriented test tools and systems. In addition to software testing problems, the text covers various test methods developers can use during the design phase to generate programs with good testability. The book's intended audience includes object-oriented program testers, program developers, software project managers, and researchers working with object-oriented testing.
This volume presents the proceedings of the International Symposium on Object-Oriented Methodologies and Systems (ISOOMS '94), held in Palermo, Italy in September 1994 in conjunction with the AICA 1994 Italian Computer Conference. The 25 full papers included cover not only technical areas of object-orientation, such as databases, programming languages, and methodological aspects, but also application areas. The book is organized in chapters on object-oriented databases, object-oriented analysis, behavior modeling, object-oriented programming languages, object-oriented information systems, and object-oriented systems development.
Test-Driven Development (TDD) is now an established technique for delivering better software faster. TDD is based on a simple idea: Write tests for your code before you write the code itself. However, this "simple" idea takes skill and judgment to do well. Now there's a practical guide to TDD that takes you beyond the basic concepts. Drawing on a decade of experience building real-world systems, two TDD pioneers show how to let tests guide your development and “grow” software that is coherent, reliable, and maintainable. Steve Freeman and Nat Pryce describe the processes they use, the design principles they strive to achieve, and some of the tools that help them get the job done. Through an extended worked example, you’ll learn how TDD works at multiple levels, using tests to drive the features and the object-oriented structure of the code, and using Mock Objects to discover and then describe relationships between objects. Along the way, the book systematically addresses challenges that development teams encounter with TDD—from integrating TDD into your processes to testing your most difficult features. Coverage includes Implementing TDD effectively: getting started, and maintaining your momentum throughout the project Creating cleaner, more expressive, more sustainable code Using tests to stay relentlessly focused on sustaining quality Understanding how TDD, Mock Objects, and Object-Oriented Design come together in the context of a real software development project Using Mock Objects to guide object-oriented designs Succeeding where TDD is difficult: managing complex test data, and testing persistence and concurrency
The 7th ACIS International Conference on Software Engineering Research, Management and Applications (SERA 2009) was held on Hainan Island, China from December 2 – 4. SERA ’09 featured excellent theoretical and practical contributions in the areas of formal methods and tools, requirements engineering, software process models, communication systems and networks, software quality and evaluation, software engineering, networks and mobile computing, parallel/distributed computing, software testing, reuse and metrics, database retrieval, computer security, software architectures and modeling. Our conference officers selected the best 17 papers from those papers accepted for presentation at the conference in order to publish them in this volume. The papers were chosen based on review scores submitted by members or the program committee, and underwent further rigorous rounds of review.
An important new object-oriented testing approach that gives you greater reusability, improved software quality, and reduced development costs Integration testing, black box testing, regression testing, requirements testing . . . all of these can be highly effective approaches when applied to conventional top-down or structured software development. But object-oriented developers are discovering that the procedural approach to testing is not sufficient when applied to the kind of software they develop. As author Shel Siegel clearly demonstrates in this groundbreaking book, object-oriented software development requires a radically different testing approach, one that incorporates a new set of strategies, testing procedures customized for objects and components, and an integrated, specialized object-oriented testing infrastructure. Now, in Object Oriented Software Testing, he specifies the OO testing system, its objects, environment, tools, and procedures, and shows you how to use them to optimize your object-oriented development efforts. The hierarchical approach described in this book is the first testing scheme designed specifically to address the unique goals and concerns inherent to object-oriented development projects. In case after case it yields nothing less than remarkable results-greater reusability, higher software quality, and consistently lower development costs than those incurred during structured applications development. The first book to explore one of the most important developments in software engineering in recent years, Object Oriented Software Testing is an important addition to your software development library.
The continual evolution of object oriented technologies creates both opportunities and challenges. However, despite the growing popularity of object oriented technology, there are numerous issues that have contributed to its inability to firmly entrench itself and take over for the older, proven technologies. Object oriented technology's image problem has created a highly difficult decision making process for corporations considering widespread adoption of these technologies. Object Oriented Technologies: Opportunities and Challenges addresses concerns, opportunities and technology trends in the application of object oriented technologies. The chapters of this book were selected to represent a variety of perspectives concerning the present and future of this broad sub-field of software development.