按测试对象划分
这里可以分为界面测试, 可靠性测试, 容错率测试, 文档测试, 兼容性测试, 安装卸载测试, 安全测试, 性能测试, 内存泄露测试.
界面测试
界面测试(简称UI测试),指按照界面的需求(一般是UI设计稿)和界面的设计规则,对我们软件界面所
展示的全部内容进行测试和检查. 一般会从:
- 验证界面内容显示的完整性,一致性,准确性,友好性。
- 验证整个界面布局和排版是否合理
- 对界面不同控件的测试是否合理
- 界面的布局和色调符合需求.
可靠性测试
可靠性 = 正常运行时间/(正常运行时间+非正常运行时间)*100%.
系统非正常运行的时间可能是由于硬件,软件,网络故障或任何其他因素(如断电)造成的,这些因素 能让系统停止工作,或者连接中断不能被访问,或者性能急剧降低导致不能使用软件现有的服务等。
可用性指标一般要求达到4个或5个“9”,即99.99%或者99.999%
容错率测试
容错性测试是指系统能够处理异常,用户的错误操作而不至于系统崩溃,从而能够提高系统的可用性。
容错性测试包含以下方面:
**输入异常数据或进行异常操作,以检验系统的保护性。**如果系统的容错性好,系统只给出提示或内
部消化掉,而不会导致系统出错甚至崩溃。 比如数据级测试,校验测试,环境容错性测试,界面容错性测试
灾难恢复性测试。 通过各种手段,让软件强制性地发生故障,然后验证系统已保存的用户数据是否丢失,系统和数据是否能尽快恢复。
文档测试
文档测试的关注点: 文档的术语, 文档的正确性, 文档的完整性, 文档的一致性, 文档的易用性
兼容性测试
兼容性测试需求是指明确要测试的兼容环境,考虑软,硬件的兼容,就软件兼容来说,主要考虑以下几
个方面:
- 系统自身版本的兼容,用户已有数据的兼容,数据兼容是重中之重,对用户来说,数据是最有价值的。
- 测试与应用环境的兼容性,比如操作系统,应用平台,浏览器的兼容
- 测试与第三方系统以及第三方数据的兼容性
易用性测试
易用性一般考虑以下几点:
- 规范性和标准性 2. 直观 3. 灵活性 4. 舒适性
安装卸载测试
主要需要考虑以下方面:
- 软件不同的安装和卸载方式;
- 应用是否可以在不同的环系统,版本下安装(安装兼容性, 高版本兼容低版本)
- 安装或者卸载过程中是否可以手动暂停,或者取消
- 安装空不足的时候系统是否有提示
- 是否可以正常的卸载,以及应用软件的各种卸载方式
- 卸载和安装过程中出现环境问题,软件是否可以正常并且合理的应对,比如死机,断电,断网等
安全测试
系统常见的安全漏洞和威胁有:
- 输入域,如输入恶性或者带有病毒的脚本或长字符串;
- 代码中的安全性问题,如SQL/XML注入
- 不安全的数据存储或者传递
- 数据文件,邮件文件,系统配置文件等里面有危害系统的信息或者数据;
- 有问题的访问控制,权限分配等
- 假冒ID:身份欺骗
- 篡改,对数据的恶意修改,破坏数据的完整性
性能测试
常见的性能问题有:
- 资源泄露
- 资源瓶颈
- 线程死锁,线程阻塞
- 查询速度慢或效率低
- 受外部系统影响越来越大
衡量一个性能的好坏有多个指标: 用户响应时间, 事务响应时间, 吞吐率, 每秒点击次数, 内存, cpu使用率等
内存泄露测试
造成内存泄露的原因有很多,最常见的有以下几种。
- 分配完内存之后忘了回收。
- 程序写法有问题,造成没办法回收(如死循环造成无法执行到回收步骤)。
- 某些API函数的使用不正确,造成内存泄露。
内存泄露的检测方法分为人工检测法和自动工具法.它们各有各的好处, 分情况对待.
按照是否查看代码划分
黑盒测试
黑盒测试就是在不考虑程序逻辑和内部结构的情况下,检查系统功能是否满足规范需求。所以,黑盒测试又称之为数据驱动测试,只注重软件的功能.
黑盒测试关注的是业务功能是否符合预期,不关注代码.
它的测试方法有: 等价类, 边界值, 判定表, 正价表, 场景法, 基于需求设计测试用例法.
黑盒测试的优缺点
优点:
- 不需要了解软件的内部代码, 对测试人员的代码能力要求比较低.
- 从用户角度出发来设计测试用例. 可以容易的知道用户会用到哪些功能和遇到哪些问题
- 测试用例是基于软件需求开发文档来设计的, 可以比较全面的覆盖需求文档中需要测试的功能.
缺点:
测试用例不能覆盖所有的代码
白盒测试
**白盒测试它一般用来分析程序的内部结构,针对程序的逻辑结构来设计测试用例进行测试。**白盒测试的测试目的是通过检查软件内部的逻辑结构以确定实际运行状态与预期状态是否一致。
**白盒测试关注的是程序内部的代码逻辑是是否符合预期, 不关注业务功能. **
测试方法有: 语句覆盖, 条件覆盖, 判定覆盖, 组合覆盖, 路径覆盖等.
白盒测试的优缺点
优点:
- 它可以帮助测试人员增加代码的覆盖率.
- 可以提高代码的质量
缺点:
因为注重点在代码上, 在项目上线后,业务逻辑可能会出现问题,没有测试到.
灰盒测试
灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输
出、输入的正确性,同时也关注程序内部的情况。
按开发阶段划分
这里会分为: 单元测试, 集成测试, 系统测试, 回归测试, 冒烟测试, 验收测试.
单元测试
单元测试是对软件组成单元进行测试。其目的是检验软件基本组成单位的正确性。测试的对象是软件设
计的最小单位:模块。又称为模块测试
测试阶段:编码后或者编码前(TDD)
测试对象:最小模块 (Java中就是一个类或者方法)
测试人员:白盒测试工程师或开发工程师
测试依据:代码和注释+详细设计文档
测试方法:白盒测试
测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试
集成测试
集成测试就是将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。集成主要目的是检查软件单位之间的接口是否正确。
测试阶段:一般单元测试之后进行
测试对象:模块间的接口
测试人员:白盒测试工程师或开发工程师
测试依据:单元测试的模块+概要设计文档
测试方法:黑盒测试与白盒测试相结合
测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模块缺陷对系统的影响
系统测试
将软件系统看成是一个系统的测试。包括对功能、性能以及软件所运行的软硬件环境进行测试。
测试阶段:集成测试通过之后
测试对象:整个系统(软、硬件)
测试人员:黑盒测试工程师
测试依据:需求规格说明文档
测试方法:黑盒测试
测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性等
回归测试
**回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。 **
在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。随着系统
的庞大,回归测试的成本越来越大,通过选择正确的回归测试策略来改进回归测试的效率和有效性是很
有意义的
冒烟测试
冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件主要功能和核心流程正
常,在正式进行系统测试之前执行。冒烟测试一般在开发人员开发完毕后提交给测试人员来进行测试
时,先进行冒烟测试,保证基本功能正常,不阻碍后续的测试.
如果冒烟测试通过,则测试人员开始进行正式的系统测试,如果不通过,则测试人员可以让开发人员重
新修复代码直到冒烟测试通过,再开始进行系统测试
一般开发都需要拿着冒烟测试用例自己测试,.通过了再交给测试人员进行系统测试.
按测试实施组织划分
α和β的区别
- 测试环境: α测试是在公司内部测试,β测试各种环境都有
- 测试人员: α测试是公司内部员工测试的, β测试是客户测试的
- 测试时间: α在前, β在后
- 测试人员: α比β人数少
这就好比一个公司需要上线一个项目, 让全体工作人员100个都去测试, 发现了问题交给测试人员审核, 这属于α测试. 然后还请了一些用户1000个,去进行测试, 发现bug,有福利, 持续一个星期. 这属于β测试.
按是否运行划分
静态测试
所谓静态测试(static testing)就是不实际运行被测软件,而只是静态地检查程序代码、界面或文档中
可能存在的错误的过程。不以测试数据的执行而是对测试对象的分析过程,仅通过分析或检查源程序的
设计、内部结构、逻辑、代码风格和规格等来检查程序的正确性
动态测试
动态测试(dynamic testing),指的是**实际运行被测程序,输入相应的测试数据,检查实际输出结果 **
和预期结果是否相符的过程,所以判断一个测试属于动态测试还是静态的,唯一的标准就是看是否运行
程序。
按是否手动划分
手工测试
手工测试就是由人去一个一个的输入用例,然后观察结果,和机器测试相对应,属于比较原始但是必须
的一个步骤。总结优缺点:
优点:自动化无法替代探索性测试、发散思维结果的测试。
缺点:执行效率慢,量大易错。
自动化测试
就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。简单说
自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。
不能说是自动化好还是手工好, 种类各有各的好处, 使用哪种要看当前公司的业务状态.