一、软件质量保证过程
(一)计划阶段
1.软件项目管理计划
2.软件项目质量管理计划
3.软件配置管理计划
(二)需求分析阶段
1.需求说明
2.需求管理
(三)设计阶段
1.概要设计
2.详细设计
3.选择有用工具
(四)编码阶段
1.制定编码计划
2.认真阅读开发规范
3.理解详细设计说明书
4.编码准备
5.专家指导
6.编写代码
7.代码审查
8.代码测试
9.提交代码
10.更改代码
(五)测试阶段
1.软件测试的各个阶段
2.测试方法
(六)系统交付和安装阶段
1.制定软件交付及培训计划
2.制定软件维护计划
3.交付给用户所有的文档
4.交付、安装软件系统
5.评审批准软件维护计划
6.用户验收确认
二、软件测试分类
(一)按技术分类
1.白盒测试技术
白盒测试技术是通过对程序内部结构的分析、检测来寻找问题。如果已知产品内部的活动方式,就可以采用白盒测试技术来测试它的内部活动是否都符合设计要求。
2.黑盒测试技术
黑盒测试技术是通过软件的外部表现来发现其缺陷和错误。这是在已知产品需求的情况下,通过测试来检验是否都能被满足的测试方法。对于软件测试而言,黑盒测试技术把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程。
(二)按测试方法分类
1.静态测试
静态测试又称为静态分析技术,其基本特征是不执行被测试软件,而对需求分析说明书、软件设计说明书、源程序做结构检查、流程图分析、符号执行等找出软件错误。静态测试可以人工进行分析,也可以用静态分析工具来进行自动分析,它将被测试程序的正文作为输入,经静态分析程序分析得出测试结果。(人工分析+静态分析工具)
2.动态测试
动态测试的基本特征是执行被测程序,通过执行结果分析软件可能出现的错误。可以人工设计程序测试用例,也可以由动态分析测试工具做检查与分析。通过执行设计好的相关测试用例,检查输入与输出关系是否正确。(人工设计测试用例+动态分析工具)
(三)按测试阶段分类
1.单元测试
单元测试的目的在于发现各模块内部可能存在的各种差错。单元测试又称为模块测试,是针对软件设计的最小程序单位进行正确性检查的测试工作。
2.集成测试
集成测试也称组装测试或联合测试。集成测试按设计要求把通过单元测试的各个模块组装在一起之后进行测试,其目的是检查程序单元或部件的接口关系,以便发现与接口有关的各种错误。集成测试依据的标准是软件概要设计规格说明书。
3.确认测试
确认测试也称为合格性测试,用来检测集成后的软件功能是否符合用户的需求。它依据软件需求规格说明书,主要验证软件是否满足预期用途的需求。
4.系统测试
系统测试是将已经集成好的软件系统,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行(使用)环境下,对计算机系统进行一系列的测试。系统测试一般依据系统需求规格说明书。
有时会把确认测试和系统测试合并为一个过程,统称为系统测试。
5.验收测试
验收测试又称有效性测试。验收测试的任务是验证软件的功能、性能及其他特性是否与用户的要求一致。验收测试要由使用用户参加测试,检验软件规格说明的技术标准的符合程度,是保证软件质量的最后关键环节。
(四)按测试内容分类
1.功能测试
功能测试可以验证每个功能是否按照事先定义的要求那样正常工作。
2.压力测试
压力测试也称为负载测试,用来检查系统在不同负载(如数据量、并发用户、连接数等)条件下的系统运行情况,特别是高负载、极限负载下的系统运行情况,以发现系统不稳定、系统性能瓶颈、内存泄漏、CPU使用率过高等问题。
3.性能测试
性能测试是指测试系统在不同负载条件下的系统具体的性能指标。
4.可靠性测试
可靠性测试是检验系统是否能保持长期稳定、正常的运行,如确定正常运行时间,即平均失效时间。可靠性测试包括强壮性测试和异常处理测试。
5.安全性测试
安全性测试是测试系统在应对非授权的内部/外部访问、故意损坏时的系统防护能力。
6.兼容性测试
兼容性测试是测试系统不同运行环境(网络、硬件、第三方软件等)下的实际表现。
7.安装测试
安装测试是验证系统是否能按照安装说明书成功地完成系统的安装。
8.灾难性恢复测试
灾难性恢复测试是在系统崩溃、硬件故障或其他灾难发生之后,重新恢复系统和数据的能力测试。
9.回归测试
回归测试是为保证软件中新的变化(新增代码、代码修改等)不会对原有功能的正常使用有影响而进行的测试。
软件测试的三维空间
三、静态测试:代码审查、走查等的概念及区别
(一)代码审查
代码审查是指通过阅读代码来检查源代码与编码标准的符合性以及代码质量的活动。
代码审查的测试内容如下:
1.检查代码和设计的一致性。
2.检查代码对标准的遵循、可读性。
3.检查代码的逻辑表达的正确性。
4.检查代码结构的合理性。
代码审查的主要步骤:准备、程序阅读、审查会和跟踪及报告。
代码审查单是代码审查过程所用的主要技术,包括的主要内容:
1.数据引用错误
2.数据声明错误
3.计算错误
(二)走查
代码走查与代码审查相似,它也是由一组程序和错误检查技术组成,只是程序和错误检查技术不完全相同。系统化走查的目的是评估软件产品,走查的另一个目的是培训人员。其主要的目标如下:
1.查找异常
2.改进软件产品
3.考虑可替代的实现
4.评估与标准和规格说明之间的一致性
5.评估软件产品的可用性和易用性
走查的其他重要目标还包括技术交换,风格改变以及参与者培训等。
走查的内容包括软件需求规格说明、软件设计描述、源代码、软件测试计划和过程、软件用户文档以及版权等。
代码走查会的内容是由被指定的作为测试员的小组成员提供若干测试用例(程序的输入数据和期望的输出结果),让参加会的成员当计算机,在会议上对每个测试用例用头脑来执行程序,也就是用测试用例沿程序逻辑走一遍,并由测试人员讲述程序执行过程,在纸上或黑板上监视程序状态(变量的值)。
(三)走查与审查
走查与审查都是对软件产品的细节进行检查和评估,其目的和整个评审的过程基本是一致的。
走查的目的还包括对新手的培训,审查却没有。
审查一般是读程序找错误,走查是模拟计算机的执行,人脑中跑测试用例,在纸上或白板上监视。
审查特点
1.由专门接受过培训的主持人来领导
2.通常是同行检查
3.定义不同的角色
4.引入度量
5.根据出入口规则和检查列表定义正式的评审过程
6.会议之前需要准备
7.具有审查报告和发现问题列表
8.可以进行评审过程改进
9.目的是发现缺陷
走查特点
1.由作者召集开会
2.以情景、演示的形式和同行参加的方式进行评审
3.评审会议之前的准备、评审报告、发现的问题和记录员都不是必须的
4.在实际情况中可以是非常正式的,也可以是非正式的
5.主要目的是学习、增加理解和发现缺陷