本书以一次自评价测试开篇,从软件测试的心理学和经济学入手,探讨了代码检查、走查与评审、测试用例的设计、模块测试、系统测试、调试等主题,以及极限测试、因特网应用系统测试等高级主题,全面展现了作者的软件测试思想。本书是软件测试领域的佳作,其结构合理、内容简洁、语言流畅。本书适合作为软件测试做从业人员的参考手册,以及高等院校软件测试课程的教材或参考书。本书前言在本书1979年第1版出版的时侯,有一条著名的经验,即在一个典型的编程项目中,软件测试或系统测试大约占用50%的项目时间和超过50%的总成本。25年后的今天,同样的经验仍然成立。现在出现了新的开发系统、具有内置工具的语言以及习惯于快速开发大量软件的程序员。但是,在任何软件开发项目中,测试依然扮演着重要角色。在这些事实面前,读者可能会以为软件测试发展到现在不断完善,已经成为一门精确的学科。然而实际情况并非如此。事实上,与软件开发的任何其他方面相比,人们对软件测试仍然知之甚少。而且,软件测试并非热门课题,本书首次出版时是这样,遗憾的是,今天仍然如此。现在有很多关于软件测试的书籍和论文,这意味着,至少与本书首次出版时相比,人们对软件测试这个主题有了更多的了解。但是,测试依然是软件开发中的“黑色艺术”。这就有了更充足的理由来修订这本关于软件测试艺术的书,同时我们还有其他一些动机。在不同的时期,我们都听到一些教授和助教说:“我们的学生毕业后进入了计算机界,却丝毫不了解软件测试的基本知识,而且在课堂上向学生介绍如何测试或调试其程序时,我们也很少有建议可提供。”因此,本书再版的目的与1979年时一样:填充专业程序员和计算机科学学生的知识空缺。正如书名所蕴涵的,本书是对测试主题的实践探讨,而不是理论研究,连同了对新的语言和过程的探讨。尽管可以根据理论的脉络来讨论软件测试,但本书旨在成为实用且“脚踏实地”的手册。因此,很多与软件测试有关的主题,如程序正确性的数学证明都被有意地排除在外了。本书第1章介绍了一个供自我评价的测试,每位读者在继续阅读之前都须进行测试。它揭示出我们必须了解的有关软件测试的最为重要的实用信息,即一系列心理和经济学问题,这些问题在第2章中进行了详细讨论。第3章探讨的是不依赖计算机的代码走查或代码检查的重要概念。不同于大多数研究都将注意力集中在概念的过程和管理方面,第3章则是从技术上“如何发现错误”的角度来进行探讨。聪明的读者都会意识到,在软件测试人员的技巧中最为重要的部分是掌握如何编写有效测试用例的知识,这正是第4章的主题。本书第5章和第6章分别探讨了如何测试单个模块或子程序及测试更大的对象,而第7章则介绍了一些程序调试的实用建议,第8章讨论了极限编程和极限测试的概念,第9章介绍了如何将本书其他章节中详细讨论的软件测试的知识运用到Web编程,包括电子商务系统中去。本书面向三类主要的读者。尽管我们希望本书中的内容对于专业程序员而言不完全是新的知识,但它应增强专业人员对测试技术的了解。如果这些材料能使软件人员在某个程序中多发现一个错误,那么本书创造的价值将远远超过书价本身。第二类读者是项目经理,因为本书中包含了测试过程管理的最新的、实用的知识。第三类读者是计算机科学的学生,我们的目的在于向学生们展示程序测试的问题,并提供一系列有效的技术。我们建议将本书作为程序设计课程的补充教材,让学生在学习阶段的早期就接触到软件测试的内容。