Preface
This book is based on a series of lectures given at Maynooth University and Zhejiang University. It provides a textbook for a number of courses, describing the fundamentals of software testing. The material has been developed over the past ten years, and reflects boththeexperienceof20yearsinindustryfromoneoftheauthors,andtheauthors’ joint experience in lecturing.
There is no one standard textbook on software testing,and this book is the result of many years of extracting and interpreting test techniques from a wide and varied number of sources. These include testing classics such as The Art of Software Testing by Myers, Software Testing by Roper, Testing Object- Oriented Systems by Binder, and Introduction to Software Testing by Ammann and Offutt; standard software engineering textbooks such as Software Engineering by Pressman , and Software Engineering by Sommerville; software process books such as Software Testing in the Real World by Kit and extreme Programming explained by Beck; and ISO and IEEE standards related to software quality and testing.
Software testing is a challenging task–it is as important for businesses and government as it is for research institutions. It is still as much an art as a science: there are no accepted standards or norms for applying the various techniques, and interpretationis required. There is no well established research on the effectiveness of the different approaches. The techniques are easy to understand, but generally difficult to apply to real-world software. By providing extensive worked examples, this book aims to provide a solid basis for both understanding, and applying, various test techniques
In the second edition, many of the examples have been updated, and the sections on Integration Testing and System Testing have been expanded. The examples have been updated to work with the latest version of the tools used, and a companion website is provided www.softwaretestingbook.org.
The software tools used in this book are merely representative–they have not been selected as the best example of each, but rather as good examples of the range of capabilities that such tools exhibit. The key goal of the book is that the reader should understand the principles of software testing,and be able to apply them in practice. The book does not endorse or recommend any particular tool. Only a subset of the tool features are covered in this book: the reader should refer to the tool-specific documentation for more details.
前言
本书的内容基于爱尔兰国立大学梅努斯分校和浙江大学的一系列课程讲稿。该书覆盖了软件测试的基本原理,可以作为许多课程的参考教材。本书的内容历经十年发展,既反映了其一位作者二十年的工业界经验,也融合了多位作者在教学方面的共同经验。
在软件测试领域,目前还没有统一的标准教科书,而本书是通过对各种不同的软件测试技术进行多年的提炼、阐释而形成。这些测试技术的来源包括一些经典的测试书籍如Myers的《软件测试的艺术》、Roper的《软件测试》、Binder的《面向对象系统测试》、Ammann和Offutt的《软件测试基础》;标准的软件工程教材如Pressman的《软件工程:实践者的研究方法》、Sommerville的《软件工程》;软件过程类书籍如Kit的《现实世界中的软件测试》、Beck的《极限编程》以及软件质量及测试相关的ISO和IEEE标准。
软件测试是一项具有挑战性的任务,它对科研机构、企业及政府具有同等的重要性。软件测试既是门科学也是门艺术。针对如何应用不同的软件测试技术,目前还没有广泛认同的标准,因此对各种软件测试技术的阐释是必须的。针对各种不同技术的有效性,目前还没有成熟的研究成果。总的来说,各种测试技术容易理解,但如何将其应用到软件产品中是困难的。本书旨在通过广泛丰富的实例,为读者对理解和如何应用各种不同的软件测试技术提供一个坚实的基础。
第2版对第1版的内容进行了全面更新和修订,新增和扩充了集成测试和系统测试两章。示例已更新,以使用新版本的工具,并提供了一个配套网站(www.soft-wareetestingbook.org)。
本书中使用的软件工具仅仅是这些工具中的代表—我们选择这些工具并不是因为它们是最佳工具,而是这些工具能够较好地展示我们想要说明的功能。本书的主要目标是让读者了解软件测试的原理,并能在实践中应用。本书不支持或推荐任何特定的工具。书中只介绍了工具的一部分特性:读者应该参考特定工具的详细文档。