常见的软件测试类型
关于软件测试的类型,从不同角度来讲,可以分很多种,有时候甚至觉得软件测试是人类创造出来的最复杂的职业。。。
对一些常见的测试类型做了一个基本的文档总结,有些测试类型在之前的基础知识里面已经有所介绍,这里就没写入,当然有些术语表达上可能有所出入,理解就好。。。
推荐一篇文章,对测试类型的介绍也是蛮不错的:http://www.jianshu.com/p/26a74109cdab
一、可用性测试
定义:设计过程中被用来改善易用性的一系列方法,为用户提供一系列可操作场景和任务,与产品或者服务密切相关
1、表现形式
①.产品的基本自然属性,用户体验的一种衡量程度
②.依照原型图对GUI的评估
③.体现在产品和用户的交互友好性
④.评价指标:效率、满意、安全(容错、无错)
2、测试方法
①.对同一测试内容同时采取多指标测试
②.对同一测试内容在不同时间采用多指标测试
3、目的
①.确认用户界面设计在概念和详细设计2个不同层面的问题
②.概念层面和导航:用户定位和UI一致性
③.详细设计界面:遵循GUI设计界面标准,使用的术语等
二、压力测试
定义:对系统不断施加压力,通过确认一个系统瓶颈或不能接受的性能点,获得系统能提供最大级别服务的测试
1、什么是压力测试
即强度测试,模拟巨大工作负荷来测试应用程序在峰值情况下的服务处理能力
2、表现形式
①.短时间的极端负荷测试
②.高并发下的负载测试
③.持续一段时间的操作执行能力测试
3、特点
①.增加访问量,使应用系统资源使用保持在一定水平,检验应用的表现(重点:有误错误信息产生,系统的响应时间等)
②.通过压力测试使系统资源使用率达到较高水平(一般情况:CPU使用率占比75%,内存使用率占比70%)
4、压力测试与负载测试区别
压力测试:超常规负荷条件下,长时间连续运行系统,检验应用程序的各种性能表现
负载测试:应用程序在常规负荷下,确认响应时间和其他性能的表现
5、压力测试的目标
①.检查最终响应时间(完成一个业务流程所需要的时间)
②.可靠性(功能和性能是否有错误?大数据量下系统运行是否有错误?)
③.硬件和软件的可靠性
④.硬件配置是否合理
⑤.系统容量(没有显著性能下降情况下,系统能处理的最大负荷)
三、确认测试
定义:有效性测试;在模拟环境下,用黑盒测试方法,验证被测软件是否满足需求
1、目的
向用户表明系统能像预定的要求那样工作
2、内容
主要包括功能和性能两部分
四、容错性测试
定义:一种对抗性的测试过程;指软件运行出现故障,如何进行故障转移和恢复当前系统的实时数据
1、概念
检查软件在异常条件下自身是否具有防护性的措施或某种灾难性恢复的手段
当系统出现重大错误时,能否在指定时间间隔内修正错误并重启系统
当系统出现非关键错误时能否保证系统继续运行
2、内容
包括2个方面:
异常测试:输入异常数据或进行异常操作,验证系统的保护性;
灾难恢复性测试:通过各种手段,让软件强制发生故障,然后验证系统已保存的用户数据是否丢失,系统和数据是否能尽快恢复
3、注意事项
故障发生时数据的转移和恢复
故障表现:
①.服务器断电
②.网络设备断电
③.数据库系统发生故障
④.应用系统文件发生故障
⑤.系统软件发生故障
五、易用性测试
1、易用性测试定义
①.是交互的适应性、功能性和有效性的集中体现
②.分2个层次:用户界面易用性和操作系统易用性
③.易用性测试包括:针对应用程序的测试、对用户手册系统文档的测试(通常采用质量外部模型来评价易用性)
2、内容
①.用户界面测试
②.操作系统有内置支持
六、安全性测试
1、定义
验证应用程序的安全级别和识别潜在安全性缺陷的过程;一般在单元测试、集成测试阶段进行,以便在破坏之前预防并识别软件安全问题
2、表现
表现在2个方面
①.应用程序的安全性
②.操作系统的安全性
七、需求分析测试
定义:需求分析是说明软件应有的功能和性能,使分析人员能够清晰的了解用户需求能否实现
1、内容
①.功能需求的分析
②.界面需求的分析
③.性能需求的分析
④.分析约束条件
2、需求分析的关键点
①.功能能否满足用户需求
②.性能能否满足用户需求
③.需求说明书所讨论的内容是否得到用户认可
八、可靠性测试
定义:为了保证和验收软件的可靠性而进行的测试
1、概述
①.有效的发现程序中影响软件可靠性的缺陷,从而实现可靠性增长
②.验证软件可靠性满足一定的要求
③.估计、预计软件可靠性水平
2、注意事项
①.功能识别
②.可靠性对时间的要求
③.可靠性对环境条件的要求
3、测试流程
①.测试数据收集和准备
②.测试环境的准备
③.测试运行
④.可靠性测试数据分析
九、风险测试
定义:风险指的是软件开发过程中遇到的预算、进度、开发遇到的问题等引起的损失的可能性
1、表现形式
①.模块设计:所有模块开发没有统一设计,开发人员独立的设计测试模块
②.需求变更开发:需求变更没有及时告知测试人员所造成的的风险
③.人力资源:测试人员没有及时到位或者人员流失
④.硬件资源:各种硬件资源对测试工作的影响
⑤.测试时间:对测试时间没有进行科学、合理的规划
2、解决策略
①.增加资源
②.缩小范围
③.制定标准文档
3、测试步骤
①.风险分析
②.风险评估
③.执行风险
④.风险总结
十、缺陷测试
定义:对开发的软件是否存在缺陷进行的测试
1、问题表现
①.软件是否达到产品说明书表明的功能
②.是否出现了产品说明书中不一致的表现
③.是否超出了产品说明书的范围
④.能否达到用户期望的目标
⑤.软件的易用性
2、注意事项
①.由于客观因素(市场压力、运营状况等)造成的产品上线时间限制
②.因测试人员不正当操作或理解错误导致的缺陷
③.错误的修改影响的模块较多,带来的风险较大
④.很难被重现的缺陷
⑤.修改很耗时或对产品使用影响很小的,修改性价比很低的缺陷
3、缺陷分级
①.致命(软件产品不能启动、运行使用)
②.崩溃(产品重要模块不能正常使用,验证影响了系统要求或基本功能实现)
③.严重(产品功能模块不能正常使用,影响其他相关模块功能实现等)
④.一般(暂时不影响基本功能模块正常使用等)
⑤.优化(界面不美观,文字爆框超出,但不影响使用)
十一、接口测试
定义:为了验证软件对外的接口服务可以正常提供服务及软件在不同场景中执行路径的安全可操作性
1、接口测试的目的
目的:测试系统相关联的内外部接口
①.模块接口的测试
②.系统接口的测试
2、主要内容
①.接口逻辑测试
②.模块接口测试
3、关键点
①.数据类型问题
②.变量值问题
③.逻辑判断问题
④.文件I/O问题