目录
一、按照测试对象划分
1.界面测试(UI测试)
界面测试的常见错误:
2.可靠性测试
3.容错性测试
4.文档测试
5.兼容性测试
6.易用性
7.安装卸载测试
8.安全性测试
9.性能测试
10.内存泄漏
二、按照是否查看代码
1.黑盒测试
2.白盒测试
3.灰盒测试
三、按照开发阶段划分(和软件测试V模型结合在一起)
1.单元测试
2.集成测试
3.系统测试
4.回归测试(自动化)
5.冒烟测试(准入原则)
6.验收测试
四、按照实施组织去划分
1.α测试
2.β测试
3.第三方测试
五、按照是否运行划分
1.静态测试
编辑 2.动态测试
六、按照手否手工划分
1.手工测试
2.自动化测试
七、按照地域去划分
1.软件国际化测试
2.软件本地化测试
一、按照测试对象划分
1.界面测试(UI测试)
界面是直接和用户交互的,界面设计的好坏决定了用户使用软件的直观感受
(1)保证界面和UI设计稿的一致性、正确性
(2)测试界面每一个功能的正确性,从上到下,从左到右,做到不遗漏
(3)界面的布局排版合理。字体大小、斜体、图片布局、清晰程度
(4)界面的控件(下拉框、复选框、滚动条、按钮、文本框)功能是否正常,有效状态高亮显示,无效状态置灰色
(5)要进行界面不同分辨率的测试(自适应测试),页面从小到大,文字图片展示正常,功能展示全面
(6)页面的状态(颜色、排版)和当下的节日、实事相结合
例如:同一个web页面不同页面大小的测试:
页面从大到小变化过程中,衔接丝滑,不会出现断裂,可以让用户接受
页面的字体不模糊、不消失、不重影
页面的图片不消失,排版布局合理
页面的功能可以正常使用
界面测试的常见错误:
不适合的快捷键(键盘打不出来的键)、文字丢失、文字有截断(显示不清楚有遮挡)、文字没对齐、文档自动换行、文字重叠、重复的快捷键
2.可靠性测试
可靠性 = 软件正常使用时间 / (正常运行时间+非正常运行时间)
软件自身和软件所部署的环境(硬件、软件系统、网络等)有问题导致软件无法正常运行,都属于非正常运行的时间
一般软件,可靠性要求99.99%,表示一年时间,出现故障时间为52min
特殊软件比如军事系统,可靠性要求99.999%,表示一年时间,出现故障时间为5min
如何进行软件的可靠性测试?
让软件运行一段时间,统计其中的正常运行时间和非正常运行时间,带入公式计算
软件可靠性的影响因素:软件本身,外界因素(电,网络,硬件设备,软件系统)
3.容错性测试
容错性:系统因为自身或者外部一些异常的情况,使得系统发生异常,但是系统能够自我处理这种异常或者错误操作的能力
数据级别:人民币 0.001元 识别不了,25时30分 2月30日
校验级别:输入账号 6-16位,最多只能输入16位,输17位就输不进去了
大小写、前后信息一致性、空格
界面级别:一些复杂的操作或者危险性较高的操作,会给用户提示信息; 禁用危险的按钮
环境级别:断电、断网、硬件设备出问题,是否可以无缝切换(让用户无感知)到备用服务器
灾难恢复性测试:人为让系统发生故障,测试是否能够很快让系统恢复稳定,恢复数据,不丢失用户的信息
4.文档测试
整个开发过程中产生的所有文档,需求文档,功能文档,设计文档,用户使用手册
测试文档的正确性、一致性,完整性、专业术语
文档和软件功能进行对比
5.兼容性测试
平台的兼容性:(web网页:各种浏览器,操作系统的兼容性
APP: 不同系统IOS/安卓,不同品牌手机,不同的系统版本)
软件本身的兼容性:软件对本身功能前后的兼容性,比如开发的新功能不能影响老功能,也不能影响后序开发
软件对用户数据的兼容性:数据库中某一张表不能影响用户之前的数据存储
软件对第三方软件的兼容性:不能影响其他软件的使用;
如果和第三方软件有交互,数据要有兼容性(支付宝和淘宝)
6.易用性
用户使用软件的体验,也叫用户体验测试
(1)必须符合一定的标准和规范
(2)直观性:让用户直接看到自己期望的操作或预期结果
(3)灵活性:用户可以根据自己的习惯选择自己喜欢的操作方式(全键盘、九宫格键盘、五笔。手写)
灵活性 == 复杂性,两者间找一个平衡点
(4)舒适性:让用户对自己的操作有感知,不产生焦虑情绪(安装软件的进度条)
(5)实用性
7.安装卸载测试
正常的安装和卸载功能
软件更新
安装软件时断网、断电、死机等异常情况下,软件的响应
安装软件,内存不足是否有提示
卸载软件,如果暂停,是否可以继续卸载
卸载到一半,取消卸载,看软件是否可以正常使用
卸载的过程中,有一些异常的情况(断网、断电、死机)
卸载后软件的数据文件信息是否清理干净
8.安全性测试
防病毒、防黑客攻击
输入域安全性,防止XSS注入,防止SQL注入
防爬虫,防止邮件文件携带病毒,上传下载过程中数据拦截
9.性能测试
内存泄漏、资源瓶颈、系统运行速度越来越慢、系统运行受外界的影响越来越大、死锁(操作某个界面卡主了、加载信息很慢)
10.内存泄漏
导致系统运行越来越慢(可积累的错误)
导致原因:
内存分配后,没有回收
API函数使用不正确,无法回收
内存分配后,忘记回收或无法回收
二、按照是否查看代码
1.黑盒测试
不关心软件内部代码的试实现,不关心代码的逻辑结构,只关心输入输出是否符合预期
好处:
(1)不用看代码(不懂代码也可以测试)
(2)黑盒 测试系统的功能,站在用户的角度去使用,有利于培养用户思维 (产品经理必须具备用户思维)
(3)按照需求设计的,不容易遗漏需求
黑盒测试设计测试用例的方法有哪些?
等价类、边界值、因果图、错误猜测法、场景法、正交法
2.白盒测试
针对代码进行测试,关心代码的逻辑和结构,看实现的功能是否符合用户的需求
白盒测试设计测试用例的方法有哪些?
语句覆盖、逻辑覆盖
判定组合覆盖、判定覆盖、条件覆盖、条件组合覆盖、判定和条件组合覆盖
条件组合:无穷尽,使用等价类和边界值进行测试
那么白盒测试怎样测试一个单元模块?
使用Junit框架(Java的单元测试框架)
3.灰盒测试
介于黑盒和白盒测试之间的
三、按照开发阶段划分(和软件测试V模型结合在一起)
测试金字塔,越往下测试效率越高,定位问题越容易。越往上,集成度越高。
1.单元测试
针对软件组成的最小单元模块,进行测试(具体的某个类、方法)
测试阶段:编码前(TDD),编码后
TDD测试驱动开发:测试人员先写代码空跑,开发人员根据异常写代码,直到测试用例通过
测试对象:组成软件的最小的单元模块
测试方法:白盒测试
测试人员:白盒测试工程师 / 开发人员
测试依据:详细测试文档(软件测试V模型)
测试内容:模块的接口,局部的数据测试,边界测试,异常测试,路径测试
2.集成测试
集成测试:按照一定的策略,把单元模块组合起来,形成一个大的功能模块,对这个功能模块进行的测试叫集成测试
测试阶段:单元测试后
测试对象:集成模块
测试方法:灰盒测试
测试依据:概要设计文档(V模型)
测试人员:黑盒测试工程师 / 开发人员
测试内容:整个模块功能的正确性,单元块之间接口的正确性,全局数据结构测试,单个模块缺陷对整个功能的影响、模块之间功能的冲突
3.系统测试
当软件开发完成,系统全面的对软件功能进行测试
测试阶段:集成测试之后
测试对象:整个系统
测试方法:黑盒测试
测试人员:黑盒测试工程师
测试依据:软件需求设计说明书
测试内容:系统的功能、界面、容错性、可移植性、兼容、性能、可靠性、易用性
4.回归测试(自动化)
当系统引入了新的代码,查看新的代码是否影响了旧的功能(迭代、修改bug)
5.冒烟测试(准入原则)
在正式测试之前,要对软件系统的基本流程和核心功能进行测试。如果测试通过,才同意正式测试。
测试人员:开发人员 / 测试工程师
回归测试和冒烟测试都属于系统测试
6.验收测试
软件上线前的最后一道测试,由用户或者产品经理发起
测试阶段:系统测试后
测试内容:同系统测试(包含文档、用户使用手册、功能设计文档)
测试方法:黑盒测试
测试依据:用户需求(V模型)
测试人员:用户 / 产品方
四、按照实施组织去划分
1.α测试
让用户或者除了开发和测试人员以外的格式内部人员到达开发现场去进行测试
测试环境:开发环境
2.β测试
让实际使用的用户在我们的实际使用环境下进行测试,不限时间,不限地点
α测试和β测试的区别:
测试环境不同、 时间集中程度不一样 、 α测试是优先于β测试的
3.第三方测试
第三方软件测试机构对软件进行测试(按照业界的规范和标准进行测试)
五、按照是否运行划分
1.静态测试
不运行代码,通过分析代码的风格,分析是否符合公司的标准规范,分析代码的逻辑、结构、算法,以及方法的实现是否满足用户的需求
2.动态测试
运行代码进行测试,执行测试用例,进行测试
六、按照手否手工划分
1.手工测试
手工执行测试用例,查看执行结果
缺点:量大,容易出错,效率低
优点:无法被自动化测试替代,手工过程是认为可控的,有利于做探索性测试
2.自动化测试
机器按照预先设定好的条件(自动化测试脚本)去执行测试,这些条件包括正常和异常方面
UI自动化、接口自动化、性能自动化
七、按照地域去划分
软件国际化:开发软件的时候,使用一种软件技术,使得软件在适用不同的国家语言、风俗、使用习惯的时候,不用改源码就可以做到。
Windows操作系统、微博国际版、苹果手机、MicroSoft Office