前言 近年来,随着国家对信息技术产业持续不断的扶持,软件的应用领域不断拓展、软件设计复杂程度逐步提升、开发周期不断缩短、质量要求不断提高,软件企业也面临着巨大的挑战。因此,发展软件测试技术并规范其测试流程,可以有效地保证软件质量。这种观念正在被更多的软件企业人士理解、接受和实施,这也是软件企业快速发展的必经之路。 今天的信息技术产业涌现了大量新的开发语言、开发模式和应用类型,在任何软件项目的生命周期过程管理中,软件测试都是保障软件质量的重要手段,面对大量新技术的发展,高素质的软件测试人才短缺的问题日益严峻,软件产业的高质量发展和人才培养逐步引起国家的重视。 在各类高等院校,越来越多的学生有志从事软件测试行业,但是他们对于软件测试理论知识和实用测试技术的系统性学习与行业需求存在较大的偏差,而这也进一步加剧了软件测试业务的人才供需矛盾。 本书在结合高校的教学特点和企业对测试人才的需求基础上,从知识学习和案例实施两方面进行编排,在参阅了大量国内外相关标准、测试网站相关案例、软考历年真题以及笔者自身在企业工作的实际经验等基础上进行总结和充实后,完成了该书的编写工作。本书每章的开始都有本章要点,方便读者查看和学习; 每章结尾部分附有来自软考历年软考评测师的真题供读者检验学习成果。总之,本书试图为软件人才的培养和锻炼提供一定的帮助和指导。 本书全面、系统地阐述了软件测试的基础知识和应用技术,是一本非常实用的软件测试技术教程。全书共分12章,其中,第1章是引入章节,主要介绍软件测试的一些基本知识,如软件测试的必要性、软件测试的背景、软件测试的基本概念、软件测试与软件开发之间的关系等问题,通过本章的学习读者能够充分认识到软件质量在整个软件开发体系中的重要性,除此之外,笔者力图从一些经典的软件质量事故中给读者一些启发。第2章主要从软件测试的模型逐步深入到软件测试的依据和规范,讨论CMM和一些改进模型。第3章全面介绍黑盒测试方法中的主流技术,包括等价类划分、边界值分析、决策表、因果图等方法,以及其他一些诸如正交实验法、场景法和错误猜测法等特殊的测试技术。第4章介绍白盒测试方法中的主流技术,包括逻辑覆盖测试、基本路径测试、程序插桩、域测试、变异测试和Z路径覆盖等方法。第5章主要介绍单元测试的概念和各种方法,也简单说明编码标准和规范、代码的审查等。第6章主要介绍集成测试的概念和策略等。第7章主要介绍系统测试的概念、类型以及当前最为流行的Web测试方法,重点说明压力测试、容量测试、性能测试、兼容性测试等方法。第8章主要介绍验收测试,其中包括安装测试、卸载测试,涉及产品验证、可用性、兼容性等方法及其说明。第9章主要介绍回归测试,主要说明回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中所起到的重要作用,软件开发的各个阶段都会进行多次回归测试。第10章主要介绍面向对象的软件测试其原理和方法,主要包括面向对象的分析、设计和编程的测试,面向对象的单元和集成测试以及系统测试等。第11章主要介绍软件自动化测试的概念、实现原理、常用的技术以及测试工具等。第12章则依据最新国标GB/T 38634.2—2020《系统与软件工程 软件测试 第2部分: 测试过程》(ISO/IEC/IEEE 291192: 2013,MOD)中定义的软件测试过程模型,同时借鉴和参考清华大学出版社出版的《软件测评师教程》(第2版)关于软件测试过程和管理的内容,介绍和说明了软件测试管理的通用过程模型。 本书重视实践能力和解决问题能力的培养,因此形成了以下特色。 (1)案例教学。本书在介绍基础方法时结合具体实例,通过对具体案例操作过程的讲述使读者举一反三,融会贯通。 (2)学练一体。本书每章的结尾都附有从软考历年软件评测师真题中精心选取的重点章节习题,让读者可以在高度真实的环境下检验学习成果。读者可在本书提供的电子资源中获取习题参考答案。 (3)标准权威。本书的定义、规范、术语以及方法、过程等完全对接最新国标,是软件测试方向对国家标准的最新解读,也对接软考指定指导书《软件评测师教程》(第2版)的相关理论和方法,是最新成果的实践和推广应用。 本书由魏培阳、叶振担任主编,唐聃、刘魁、曹亮、刘丰担任副主编,全书由舒红平审稿和定稿。其中,第1、3、12章由魏培阳编写,第2、9章由叶振编写,第5章由唐聃编写,第4、6章由刘丰、林江滨编写,第7、10章由刘魁编写,第8、11章由曹亮编写,重庆第二师范学院的王兰老师编写了附录内容。同时,感谢中国科学院重庆绿色智能技术研究院的尚明生、史晓雨、闪锟等对本书提出的修改意见以及所做的其他工作,感谢教育部产学合作协同育人项目2021年第2批(202102638010)企业方中科泰岳(北京)科技有限公司对本书提供的相关案例及出版支持。本书作者魏培阳在重庆邮电大学攻读博士学位期间做了大量软件测试的相关工作,在此感谢在校期间各位师长和同学提供的帮助,同时作者也一直在成都信息工程大学软件工程学院担任教学工作,进行了大量的教学探索和研究,在此感谢学院在成书过程中提供的各种宝贵资料、建议和帮助。感谢清华大学出版社提供这次合作的机会,使得本书可以早日和读者见面。 本书适合本科、专科院校学生学习以及培训机构开展软件测试培训。 由于作者水平和时间的限制,书中难免存在疏漏,敬请读者及各界同仁批评指正。 编者2023年1月于重庆