内 容 简 介本书是作者多年从事软件测试研究和教学经验的总结。全书共16章,分为3部分:第1部分(第1~6章)是软件测试基础,涉及软件测试的一些基本概念和基础知识,如软件与软件危机、软件缺陷与缺陷管理、软件测试基本概念、生命周期软件测试方法、软件测试过程和基于软件配置项的测试种类;第2部分(第7~12章)是本书的重点,讲述软件测试方法,包括软件静态测试、动态测试、软件测试自动化、软件可靠性测试、软件本地化测试以及面向对象软件测试;第3部分(第13~16章)是典型应用的软件测试,重点介绍C/S应用软件测试、B/S架构的Web应用软件测试(包括信息系统的测试)、游戏软件测试以及嵌入式软件测试。另外,本书几乎在各个章节对支撑该章节软件测试方法和技术应用的测试工具进行了详细介绍,特别是对开源软件测试工具进行了较全面的介绍,这些工具对于很好地支持高校软件测试课程实践教学是非常有现实意义的。本书取材新颖、内容翔实、通俗易懂、技术实用、覆盖面广、指导性强,既可作为软件测试相关课程的研究生与高年级本科生的教材,同时也可作为软件测试培训和软件测试人员的自学书籍。
软件测试是软件工程的一个重要分支,是软件质量保证的重要基础。现代软件测试与传统的软件测试不一样,它贯穿软件工程整个软件生命周期(从需求分析、软件设计、代码开发,一直到最后测试、验收和维护),涉及各种软件开发技术、应用技术以及测试技术,覆盖软件各种应用领域(桌面软件、网络应用、信息系统、电子服务、嵌入式系统、数字娱乐等),面临不同的专业领域知识,所要求的投入与软件开发相比规模同等甚至更高。 软件测试是一项需具备较强专业技术、学习和创新能力的工作,软件测试人员必须要具有缜密的逻辑思维能力、全面的技术能力、敢想敢干的创新能力,要有较强的责任心和团队合作精神以及出色的沟通能力等专业素质,要成为一名合格的软件测试人才需要经过严格系统化的专业培养,并且在专业培养过程中一定要结合软件测试专业化的特殊要求,强调学生实践动手能力和工程应用能力。 近年来我国政府强调要加大工业化与信息化融合的力度,促进我国工业的发展和转型,这一措施有助于我国软件产业的升级,软件开发模式的升级。实际上,软件作为工业化的产品,软件测试是软件开发企业必不可少的质量监控环节,它在整个软件开发的系统工程中占据相当大的比重。在软件产业发达国家,软件企业一般是把40%的工作花在测试上,测试人员和开发人员之比平均在1:1以上,软件测试费用占整体开发费用的30-50%,对于要求高可靠性、高安全性的软件,测试费用则相当于整个软件项目开发所有费用的3至5倍。这些说明软件测试的重要性。 软件测试的上述特点和重要性表明软件测试职业专业性极强,知识面极广、对人员综合素质(包括学习能力、观察能力、沟通能力及团队合作能力)要求极高。加上软件测试新技术、新需求、新观念的发展和变化,传统的软件测试思想、方法以及与之对应的教材难以满足现代教学要求。因此,本人在多年从事软件工程、软件测试以及软件质量保证的研究和多年讲授软件测试课程经验和体会的基础上,对软件测试课程教学内容的知识点进行调整、补充和完善等方面的改革,特别针对我国国防工业如航空、航天、船舶、电子、通讯等大量国防、军用软件开发和应用的实际情况以及对软件质量评价和软件高可靠性的要求,针对国内软件研发和测试外包的本地化要求,以及针对软件测试用于各种应用领域的要求选择授课的知识点,并取得了较好的效果。 软件测试与软件开发、应用以及质量保证密切相关,而大多数软件测试人员更多地关注和应用传统的软件测试技术,而缺乏现代的软件测试知识。本书是目前国内软件测试教材中难得的全面、系统地介绍包括现代软件测试的书籍。 本书以现代软件测试需求为背景,以现代软件测试技术和方法为基础,以当前软件测试通常应用为典型实例,全面地介绍了软件测试的基本概念,软件测试的技术、方法和工具应用,以及软件测试在当前主流应用中的具体开展和实施。与国内常见的软件测试教材重点讲授一般软件测试技术和方法不同,本书特色在于: ♦ 以现代软件测试思想为指导,除了全面讲述传统软件测试技术和方法外,还通过突出全生命周期软件测试概念、软件质量分析手段、现代软件测试技术、主流测试工具应用以及典型应用测试方法等,帮助学生了解和掌握现代软件测试的各种原理、方法和技术,并能够选择合适的软件测试工具进行相关测试。为培养学生今后成为高素质、专业化的软件测试人才打下基础。 ♦ 针对软件开发方法和技术的发展变化,针对我国软件外包服务的蓬勃兴起,针对我国国防工业如航空、航天、船舶、电子、通讯等大量重要软件或关键软件的实际应用情况和测试要求,特别是对软件高可靠性的要求,选择教材的知识点; ♦ 本书对支撑现代软件测试技术应用的测试工具进行了全面地介绍,特别是对开源软件测试工具的介绍,这对高校开设软件测试实验课程是非常有意义的。 ♦ 本书内容全面、条理清晰、结构严谨、可用性强,对重点、难点阐述透彻,使其既符合现代软件测试技术发展的潮流,又具有相对的稳定性,还易于剪裁,以满足各类软件测试课程的教学需要和各类软件测试人员的学习需要。 事实上,撰写软件测试方面的教材想法来源于我国软件工程领域资深专家何新贵院士很早的一个建议(在这里我首先对何院士表示感谢)。三年前,何院士指导北京工业大学软件学院办学时特别指出学院要将软件工程学科和专业建设的重点放在软件质量保证和软件评测方向上,以提升我国软件质量保证和软件评测的专业方向建设水平,解决我国这方面人才严重匮乏的问题。这样,本人就有了编写软件测试课程教材的计划,也与有关出版社签订了编写协议,由于工作太过繁忙,无法按期完成编写任务而最终放弃。为此,我在这里表示歉意。 本书撰写的再一次启动并最终完稿首先要感谢学校质量工程建设任务的安排,作为工作我没有后退之路,必须完成;同时要感谢清华大学出版社对我编写本书过程中发生的一些变化所给予的理解和通融。本书的完成得益于许多教师和学生的积极参与,如早期的何坚老师和石振莲教师,以及王毅同学等。在这里我要特别感谢我指导的研究生路翠同学,本书的撰写和完稿她花费了很多心血,如资料的收集,大部分章节的起草,图表的制作,以及习题的编写等。没有她的积极参与,本书的完稿时间可能还会一拖再拖。另外,本书很多内容是对互联网资料进行收集、整理和改编的结果,包括软件测试专业网站,软件测试专家或工程师的博客,以及软件测试人员在网上论坛的经验之谈。我认为这些素材是很有意义的,尽管他们中的很多人可能很平常——不是学者或专家,但他们是从实际工作或项目中总结出的经验、体会或感想,对于软件测试教学特别是案例驱动教学很有帮助。因此,在对原则性错误、语法错误和文字错误等进行简单地改编外,我基本上是原汁原味地奉上。当然,很多网上资料由于转载或引用频繁找不到原创处,在参考文献中无法标注,我在这里表示遗憾。最后,我要感谢我的家人,本书的撰写全部是利用寒暑假、节假日、周末和晚上的时间,没有家人的支持和照顾,本书也是很难完成的。 后续我们将组织教师和学生编写软件测试课程设计实验教材、嵌入式软件测试书籍,但愿我们能按计划如期完成。 目前国内关于软件测试方面的书较多,其中的很多是翻译的、为培训用的或介绍软件测试技术和方法的,作为教材或满足各类测试人员的学习还是有一定距离。本书是在本人长达二十几年软件工程、软件测试和软件质量保证实践经验和教学经验的基础上借鉴前人的成果,参考当前软件测试方法和技术应用实践案例进行编写的。尽管如此,由于软件测试覆盖面太大,应用周期太长,涉及领域太多,测试方法和技术太繁杂,加之时间紧、水平有限,一定有许多不周到、不准确或存在错误之处,恳请读者提出批评和建议,并争取再版时修正。 北京工业大学软件学院 蔡建平 2009年5月20日 于北京工业大学