前言
创新的动力源自人类不断升级的愿望和需求。自从1968年在联邦德国召开的NATO会议上提出软件工程的概念以来,经过四十多年的发展,软件产业已经成为当今世界投资回报比最高的产业之一,由此正在潜移默化地改变着这个人们赖以生存的星球的面貌。新时期的软件产业已经引人入胜地呈现出网络化、服务化、全球化的转变趋势,但是与此同时,当今社会每天却存在着关于银行账目收支表出错、火星探测器失踪、黑客获取数百万张信用卡号这样一些计算机软件的安全缺陷暴露带来的新闻报道。正如托马斯·弗里德曼(Thomas L. Friedman)2005年在《世界是平的》一书中指出:世界开始从垂直的价值创造模式(命令和控制)向日益水平化的价值创造模式(联系和合作)转变。在这种情况下,对于软件质量保证和测试的汇聚探讨,比以往任何时期都显得更加急迫,更加重要。
概括地说,软件质量保证与测试是运用工程的思想、原理、技术、管理和工具,研究提高大规模软件系统质量和改进软件测试方法的学科。具体地,软件质量就是“软件与明确的和隐含的定义的需求相一致的程度”,它是软件满足功能和性能需求、文档开发标准,以及各专业领域应用软件隐含特征的程度。21世纪可谓质量的世纪,质量管理越来越受关注,质量意识也不断在创新。单纯的质量检验已经发展到了全面质量管理、能力成熟度模型、六西格玛质量管理和零缺陷管理等新的理论、方法和体系。新的质量管理理念使得质量改进过程得到了极大的改善,完善的质量保证体系、严格的质量认证是软件企业提高生产力和竞争力的重要因素。相应地,高度的质量意识正慢慢扎根于软件研发和管理人员的灵魂深处,直至整个组织质量文化的形成,带来的一些有益探索和实践包括敏捷建模、极限编程、软件驱动开发、团队软件过程等。通过有效的软件质量管理模式和系统的软件质量工程体系,质量文化作为软件组织的全体员工共同质量价值观体现,发挥出越来越重要的作用,并贯穿到软件的整个生命周期。
伴随软件安全性问题,软件测试是利用测试工具按照测试方案和流程对产品进行功能和性能测试。或者根据需要编写不同的测试工具来设计和维护测试系统,并对测试方案可能出现的问题进行分析和评估。同时,在执行测试用例后,需要跟踪故障,以确保开发的软件产品满足需求。软件测试是软件质量保证的关键步骤,软件质量越高,软件发布后的维护费用就越低。软件缺陷发现得越早,软件开发费用就越低。软件工程实践表明,深刻理解软件思想的工程师通过一系列软件测试步骤,可以大幅度地提高软件质量。为此,本书从实践角度对软件研发各阶段的质量保证和管理的思想、方法和活动等进行详细介绍的同时,系统地讲述了软件测试的各种方法和技术,以从多层面探讨软件测试的本质和内涵,并应用于各个软件测试阶段,来满足不同的应用系统测试需求。同时,本书也详细介绍了从怎样组建测试队伍、部署测试环境,到如何进行测试用例设计、缺陷报告、测试项目管理等各个方面。按照总体的线索,本书组织如下。
第1章结合软件特征,从软件工程的一般视图谈起,介绍软件范型的转变,并明确软件质量、软件测试与软件可靠性在现代软件开发中的地位。
第2章介绍软件质量控制的基本方法,并包括软件质量工程体系中的模型和技术,以及软件质量保证体系。
第3章介绍软件质量度量和配置管理,并讨论了质量保证模型、软件过程度量和软件配置管理中的关键活动等。
第4章针对软件的差错、故障和失效,介绍软件可靠性度量和测试,包括可靠性模型及其评价标准、软件可靠性测试和评估、提高软件可靠性的方法和技术。
第5章介绍软件质量标准,重点为ISO 9001和9000—3在软件中的应用、能力成熟模型CMM&CMMI、IEEE软件工程标准。
第6章介绍软件评审,包括软件评审的角色和职能、评审的内容、评审的方法和技术、评审会议流程。
第7章介绍软件全面质量管理,讨论了六西格玛项目管理、质量功能展开设计、DFSS流程及主要设计工具。
第8章结合代码风格讨论高质量编程,重点在函数设计规则、内存管理规则、面向对象的设计规则、代码审查。
第9章介绍软件测试过程,针对软件可靠性,包括软件测试的各种方法以及软件测试和软件开发的关系。
第10章介绍黑盒测试,重点为等价类划分、边界值分析法、因果图法、功能图法、黑盒测试工具的使用。
第11章介绍白盒测试,结合软件缺陷分析,讨论了控制流测试、基本路径测试、程序插装、程序变异测试、白盒测试工具。
第12章针对软件缺陷属性,介绍基于缺陷模式的软件测试,包括软件缺陷的严重性和优先级、软件缺陷管理和CMM的关系、报告软件缺陷、软件缺陷管理、软件缺陷分析。
第13章介绍集成测试,重点在集成测试策略、集成测试用例设计、集成测试的过程、面向对象的集成测试。
第14章介绍系统测试,涵盖系统测试的主要方法,如性能测试、强度测试、恢复测试、用户图形界面测试、网站测试等,以及各种系统测试工具。
第15章介绍测试管理,包括如何建立软件测试管理体系、测试文档的撰写、调试技巧、软件测试自动化。
全书由秦航任主编。第1、7、15章由秦航编写,第8、10、11章由夏浩波编写,第2、4章由邱林编写,第5、14章中的系统测试工具部分由徐杏芳编写,第6、9章由包小军编写,第3、12章由吴中博编写,第13、14章中的测试方法部分由杨强编写,李鹏编写了附录并参与第2、8、11、15章的编写,全书由秦航负责统稿。
本书可作为高等院校“软件质量保证与测试”相关课程的教材或教学参考书,也可供具有一定实际经验的软件工程人员和需要开发应用软件的广大计算机用户阅读参考。同时,由于作者水平有限,书中不当与疏漏之处在所难免,敬请读者和专家提出宝贵意见,以帮助作者不断地改进和完善。
作者
2011年11月
