1. 按照测试对象划分
1.1 界面测试
界面测试是指按照界面的要求(UI设计稿)和界面的设计规则,对软件界面所展示的全部内容进行测试和检查
界面是直接和用户交互的,界面设计的好坏决定了用户使用软件的直观感受
界面测试一般包含以下内容:
验证界面和UI设计稿的一致性和正确性
验证界面的排版布局是否合理(字体大小,斜体,图片布局排版,清晰程度…)
验证界面每一个功能的正确性
验证界面的控件功能是否正常(滚动条,按钮,文本框,选项按钮…)
验证界面的色调和布局是否符合当下实事的发展
对不同分辨率下的界面进行测试
1.2 可靠性测试
可靠性指系统正常运行的能力或程度
可靠性 = 正常运行时间 正常运行时间 + 非正常运行时间 \frac{正常运行时间}{正常运行时间+非正常运行时间}
正常运行时间+非正常运行时间
正常运行时间
∗ 100 \ast100∗100%
非正常运行时间可能是由于硬件,软件,网络故障和其他因素如断电等造成的,这些可以使系统停止运行,连接中断不能被访问,性能降低导致不能使用软件现有的服务
不同的软件,可靠性要求不同:
一般软件,可靠性要求99.99%
特殊软件,如军事系统,可靠性要求99.999%
1.3 容错性测试
容错性是指自身或者外部一些异常的操作使得系统发生异常,系统能够自我处理这种错误操作或者异常的能力
容错性可从以下几个方面测试:
数据容错性,时间,25时60分,日期,5月32号
校验容错性,输入账号为16位,输17位的时候就输不进去
界面容错性,复杂或危险性较高的操作给用户提示信息,危险的按钮可以屏蔽,禁用
环境容错性,断电,断网,硬件设备出问题了,是否可以切换(用户无感知)到备用服务器
灾难恢复性测试: 人为让系统发生故障,测试系统是否能够很快恢复稳定,测试丢失的数据是否很快恢复
1.4 文档测试
对软件的整个开发过程中产生的各种文档,需求文档,设计文档,功能文档,用户使用手册进行测试,验证文档的正确性,一致性,专业术语,完整性,易用性
1.5 兼容性测试
对软件的兼容性进行测试,主要考虑以下几个方面:
平台的兼容性,如不同的浏览器,不同的系统版本,不同的操作系统
软件本身的兼容性,比如开发的新功能不能影响旧功能
软件对用户数据的兼容性,比如数据库中某张表增加一个字段,不能影响用户之前存储的数据
软件对第三方软件的兼容性,不能影响其他软件的使用,如果和第三方软件有交互,数据要有兼容性
1.6 易用性测试
易用性旨在用户使用软件的时候有舒适,易用的体验
易用性包含的几个要素:
标准性和规范性
用户界面上的各中信息应该符合规范和习惯,否则用户使用起来会不舒适,并得不到用户的认可
直观性
让用户直接看到自己期望的操作,或者预期的结果
灵活性
用户可以根据自己的习惯选择适合自己的操作方式,如手机上的键盘有手写,9键,五笔,全键盘
注意: 灵活性和复杂性是正相关的,在两者之间找一个平衡点
舒适性
舒适性主要强调界面友好,美观,操作过程顺畅,色彩用运恰当,按钮的立体感等
1.7 安装卸载测试
应用的安装和卸载是任何一款APP最基本的功能,主要考虑以下几个方面:
软件可以正确的安装和卸载
安装和卸载过程中是否可以手动的暂停或取消
是否可以在不同系统,版本下安装
安装软件内存不足时有提示
安装和卸载时,断网,死机等异常情况下,软件是否正确并合理的应对
1.8 安全性测试
安全性是指信息安全,是指计算机系统或网络保护用户数据隐私,完整,保护数据正常传输和抵御黑客,病毒攻击的能力
常见的威胁:
病毒
黑客攻击
SQL,XML注入
防爬虫
1.9 性能测试
我们在使用软件的时候有时会碰到软件网页打开时越来越慢,查询数据时很长时间才显示列表,软件运行越来越慢等问题,这些问题都是系统的性能问题引起的
常见的性能问题如下:
资源泄露
资源瓶颈
线程死锁,线程阻塞
查询,加载信息慢
系统受外界影响越来越大
1.10 内存泄露测试
内存泄露是会累积的,只要执行的次数足够多,最终会耗尽所有可用内存,使软件的执行越来越慢,最后停止响应
常见的内存泄露有以下几种:
内存分配后没有回收
API函数使用不正确,无法回收
内存分配方式有问题,无法回收
2. 按照是否查看代码划分
2.1 黑盒测试
黑盒测试就是不关系软件内部代码的实现,不关心代码的逻辑结构,只关心输入输出是否符合预期
黑盒测试的优点:
不需要了解代码的实现和代码的逻辑结构
测试系统的功能,站在用户的角度使用功能,有利于培养测试人员的产品思维
测试用例是基于需求设计的,不容易遗漏需求
黑盒测试设计测试用例的方法有等价类,边界值,因果图,错误猜测法,场景法,正交法
2.2 白盒测试
白盒测试就是针对代码进行的测试,分析和测试代码的逻辑和结构以及实现的功能,看是否符合用户的需求
白盒测试包含六种测试方法:
语句覆盖,判定覆盖,条件覆盖,判定条件覆盖,条件组合覆盖,路径覆盖
2.3 灰盒测试
灰盒测试是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关心输
出、输入的正确性,同时也关心程序内部的情况
3. 按照开发阶段划分
3.1 单元测试
单元测试是对组成软件的最小单元模块进行测试
测试阶段:编码后,编码前(TDD)
编码前指测试驱动开发,测试人员先写测试代码空跑,开发人员根据异常写代码只到测试用例代码通过
测试对象:组成软件的最小单元模块
测试方法:白盒测试
测试人员:白盒测试工程师或开发人员
测试依据:代码注释和详细的设计文档
测试内容:模块接口测试,局部数据结构测试,边界测试,异常测试,路径测试
3.2 集成测试
集成测试是按照一定的策略把单元模块组合起来形成一个大的功能模块,对这个功能模块进行测试
测试阶段:单元测试后
测试对象:集成模块
测试方法:灰盒测试
测试依据:单元测试的模块和概要设计文档
测试人员:黑盒测试工程师或开发人员
测试内容:整个功能模块的正确性,全局数据结构测试,单个模块对整个功能模块的影响,模块之间的冲突
3.3 系统测试
当软件开发完,系统的全面的对软件功能进行测试
测试阶段:集成测试后
测试对象:整个系统
测试方法:黑盒测试
测试人员:黑盒测试工程师
测试依据:需求设计文档
测试内容:系统的功能,界面,易用性,可靠性,性能,兼容性,安全性等
回归测试: 当系统引入新的代码的时候,要查看新的代码是否影响了旧的功能,进行回归测试
冒烟测试: 正式测试之前,对软件系统的基本流程和核心功能进行测试,如果测通过,才同意正式测试
回归测试和冒烟测试都属于系统测试
3.4 验收测试
验收测试是软件上线前的最后一道测试,由用户或产品径路发起
测试阶段:系统测试后
测试对象:整个系统
测试方法:黑盒测试
测试依据:用户需求
测试人员:用户或产品经理
测试内容:同系统测试
4. 按照测试实施组织划分
4.1 α \alphaα测试
α \alphaα测试是让除了开发人员和测试人员以外的公司内部员工到开发现场去进行测试
4.2 β \betaβ测试
β \betaβ测试是让实际用户在实际使用环境下进行测试,不限时间和地点
α \alphaα测试和β \betaβ测试的区别:
测试人员和测试环境不同
时间集中程度不同,α \alphaα测试优先与β \betaβ测试
4.3 第三方测试
第三方软件测评机构对软件进行测试,主要是对业界的便准和规范进行测试
5. 按照是否运行代码划分
5.1 静态测试
静态测试就是不运行被测软件,只是静态地检查程序代码、界面或文档中可能存在错误的过程,不以测试数据的执行而是对测试对象的分析过程,仅通过分析或检查源程序的设计、内部结构、逻辑、代码风格和规格等来检查程序的正确性
5.2 动态测试
动态测试指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符
大多数软件测试工作都属于动态测试
6. 按照是否手工划分
6.1 手工测试
手工测试就是手动的执行测试用例,查看测试结果
优点:不可替代,无法被自动化测试替代,手工测试的过程人为可控,有利于做探索性测试
缺点:量大容易出错,效率低
6.2 自动化测试
自动化测试就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常和异常条件
自动化测试按照测试对象可以分为:UI自动化测试,接口自动化测试,性能自动化测试
自动化实施步骤:
完成功能测试,版本基本稳定
根据项目特性,选择适合项目的自动化工具,并搭建环境
提取手工测试的测试用例转化为自动化测试的用例
通过工具、代码实现自动化的构造输入,自动检测输出结果是否符合预期
生成自动测试报告
持续改进,脚本优化
自动化的价值和意义在于节省人力,自动化脚本运行率越高,越有价值,所以自动化不适合项目不稳定,功能频繁变动的项目
7. 按照地域划分
按照地域可以划分为国际化测试和本地化测试
7.1 国际化测试
什么是软件国际化?
软件国际化是在软件设计和文档开发过程中,使得功能和代码设计能处理多种语言和文化习俗,使创建不同语言版本时,不需要重新设计源程序代码的软件工程方法
国际化测试的要点
是否对所有界面元素都进行了国际化处理,包括对话框、菜单、工具栏、状态栏、提示信息(包括声音的提示)、日志等
是否存在不同的字体大小,字体设置是否恰当。
日期,数字格式,货币等是否适应不同国家的文化习俗,如中文是年月日,而英文是月日年
排序的方式是否考虑了不同语言的特点,如中文按照第一个字的汉语拼音顺序排序,而英文按照首字母排序
在不同的国家采用不同的度量单位,软件是否能自适应和转换。
软件是否能在不同类型的硬件上正常运行,特别是在当地市场上销售的流行硬件上。
软件是否能在Windows或者其他操作系统的当地版本上正常运行。
联机帮助和文档是否已经翻译,翻译后的链接是否正常。正文翻译是否正确、恰当, 是否有语法
错误
7.2 本地化测试
之前所讲的全部都是本地化测试