本文主要总结软件测试中的常见测试方法
*测试的分类
按开发阶段分类
1.单元测试
定义:单元测试是对软件组成单元进行测试,其目的是为了检验软件基本组成单位的正确性。对应V模型的详细设计阶段
测试对象:软件设计的基本模块
测试阶段:编码前或者编码后
测试人员:白盒测试工程师或者开发工程师
测试依据:代码注释+详细文档
测试方法:白盒测试,即代码测代码
测试内容:模块接口测试,局部数据测试,路径测试(分支循环),错误处理测试,边界测试
如:手机有很多功能,有一天突然微信支付功能不能使用了,那么我们就要针对微信这个模块的代码测试,就是单元测试,这个测试是发生在编码后的。
2.集成测试
定义:集成测试也叫联合性测试,组装测试。将模块采用适当的策略组装起来,对系统的接口及集成后的功能测试。主要检查软件单xiang位之间的接口是否正确。
对应V模型的概要设计阶段
测试阶段:一般单元测试之后
测试对象:模块之间的接口
测试人员:白盒测试工程师和开发工程师
测试依据::单元测试的模块+概要设计文档
测试方法:灰盒测试
测试内容:模块之间的数据传输,模块之间的功能冲突,模块组装的正确性,全局数据结构,单模块缺陷对全局的影响
举例:
手机通讯录可以添加,删除,更改手机jian号码
将这些小功能几种在一起,测试相关接口是否正常
3.系统测试
对软件系统的测试叫做系统测试,系统测试包括对功能,性能,已经软件所运行的硬件环境进行测试。对应V模型的用户系统分析阶段
系统测试包括回归测试和冒烟测试。
测试阶段:集成测试通过以后
测试对象整个软件系统
测试人员:黑盒测试工程师
测试依据:需求规格说明文档
测试方法:黑盒测试
测试内容:功能,性能,易用性,可靠性,兼容性,安全性等
手机在出厂前手机厂会对手机的所有功能全部测试一边,包括手机硬件本身,手机自带的APP
回归测试:
回归测试是指修改了部分代码后,重复进行测试以确认修改后没有引入新的BUG导致其他代码发生错误。自动回归测试将大幅降低系统测试。维护升级等阶段的成本。
回归测试在整个 软件测试中占据很大比重。软件开发的各个阶段都会进程回归测试。
冒烟测试
冒烟测试可以理解为这种测试时间短,仅一袋烟等的功夫就可以了。
冒烟测试的对象是每个新编译的需要正式测试的软件版本。目的确认软件的基本功能正常。可以进程后续的正式测试工作。冒烟测试执行的是版本编译人员。
系统测试的步骤:先进行冒烟测试,最后进行系统测试,然后在进行回归测试。
5.验收测试
定义:验收测试是部署软件之间的最后一个测试操作,也叫交付测试,测试的目的是确保软件准备就绪,按照项目合同,任务书,对方约定的验收文档,向软件购买方展示软件的原始需求。
测试阶段:系统测试通过之后
测试对象:整个系统
测试人员:主要是用户或者是需求方
测试依据 :用户需求,验收标准
测试方法:黑盒测试
测试内容:同系统测试
按测试对象划分:
1.业务测试
测试人员把系统的各个模块串接起来运行,模拟真实用户的实际工作流程。满足用户需求定义的功能进行测试的过程。
例子:
查看邮件
登陆网站-输入用户名,密码登陆–>进入收件箱,看到邮件->点击打开–查阅,关闭邮件–>关闭网站
2.界面测试
又叫UI测试,测试用户界面是模块布局否合理,整体风格是否一致,各个控件的放置位置是否符合用户的使用习惯,此外,还有测试界面擦操作的便捷性,页面元素的可用性,界面文字是否正确,命名是否统一,页面是否美观等,图片文字组合是否完美。
例子:
网易云音乐的界面做的很美观,赏心悦目,这成功的背后,就离不开界面测试。
注意:界面测试涉及美感体验,每个人对美的定义是不同的
3.文档测试
国家有关计算机软件产品开发文件编制指南中公有14种文件,可分为3类。
开发文档:可执行研究报告,软件需求说明书,数据需求说明书,概要设计说明书,详细设计说明书,数据库设计说明书,模块开发卷宗。
用户文档:用户手册,操作手册,文档的作用改善已安装性,改善软件的易学性,改善软件的可靠性降低技术支持成本
管理文档:项目开发文档,测试计划,测试分析报告,开发进度报告,项目开发总结报告
设计测试中,最常见的的是用户文件的测试,例如:手册说明书,有些公司也会对需求文档进行测试。
文档测试的关注点:
文档的术语;
文档的正确性;
文档的完整性;
文档的一致性;
文档的易用性;
4.兼容性测试
兼容性测试是测试软件是否能够很好的运作,会不会有影响,软件和硬件之间是否能够发挥很好的性能。
测试对象:
- 平台测试
- 浏览器测试(360,百度等浏览器呈现的界面功能是否完整)
- 数据兼容(int float类型数据是否兼容)
- 测试软件本身能否向前或向后兼容
- 测试软件能否与其他软件相互兼容
5.容错性测试:
检查软件在异常情况下自身是否具有防护性措施或者某种 灾难性恢复的手段,当系统出现错误时,能否在指定时间内修正错误并重新启动系统。
常见测试方法:
异常输入或者异常操作(输入错误的数据类型,输入规定范围以外的数字)
灾难性恢复测试(通过各种手段,让软件强制性发生故障,测试系统能否进行简单的自动修复)。
6.易用性测试:
指交互的适应性,功能性和有效性的集中体现,主要体现在日常使用过程中是否方便。
易用测试有时也叫用户体验测试。
例如:手机拨打电话的功能不放在首页,放在一个目录下面,点击三四次才能找到拨打电话的功能,这个时候的易用性就很不好。
7.安装测试
测试程序的安装,下载是否正常
典型的是APP的安装和卸载。
8.安全测试
安全测试是相对独立的领域,设计及知识面很广,比如web的安全测试,需要你熟悉各种协议,熟悉操作系统漏洞,熟悉路由器等。
比如:文件的下载和上传测试
9.性能测试
检查系统是否满足需求规格说明书中规定的性能
通常表现在以下几个方面:
资源利用率
执行间隔
日志事件
响应时间
吞吐量
处理进度等方面的检测。
10.内存泄露测试
很多软件都存在内存泄露的问题,尤其是缺乏自动回收机制的语言编写的程序,从用户使用的角度看,内存泄露不会产生什么危害,但是内存泄露是会累积的,只要执行的测试足够多,最终就会耗尽所有的内存,使软件执行的速度越来越慢。。最终停止响应。
造成内存泄露的原因有很多,最常见的就是以下几种:
分配完内存忘记回收
程序写法有问题,造成没有办法回收
某些API函数使用不正确,造成内存泄露。
没有及时释放内存
内存泄露检测:
1.对于不同的程序采用把不同的方法检测内存泄露,还可以使用专门的工具来进行内存问题的减产,例如:MemProof,AQTime,BundsChecker等。
2.通过代码扫描工具来检查。