根据测试软件规格属性分类
功能测试
功能测试是针对软件应用的功能进行的测试,以确保它们按照需求规格说明书的要求执行。 功能测试是测试的核心,也是通常意义下所指的测试:
- 运行软件,检查其行为(输出)是否符合预期
- 给系统不同的输入,将其与规格说明书对比
- 对软件进行探索式测试,检查是否违反了隐性需求
非功能测试
非功能测试关注软件的非功能方面,如性能、可用性、可靠性、响应时间和安全性。 这类测试评估软件系统在非功能需求上的表现。
根据测试是否关注软件内部分类
白盒测试
白盒测试是一种测试软件的方法,用于测试应用程序的内部结构或工作情况。白盒测试又称透明箱、玻璃箱、透明箱测试、结构测试。
- 此类测试主要由开发人员完成
- 测试内部结构
- 所有独立路径至少遍历一次
- 评估所有逻辑决策并确定它们是对还是错
- 评估所有循环以检查其边界
- 评估所有内部数据结构以确认其有效性
黑盒测试
黑盒测试是一种软件测试方法,它检查应用程序的功能(例如软件的功能),而无需深入了解其内部结构或工作原理。 黑盒测试完全是基于软件需求和规格说明书来进行的。
根据测试级别分类
单元测试
单元测试指对系统的一小部分而进行的测试。由于单元测试与代码存在固有耦合性,所以他们是开发人员编写,由单元测试框架执行。 单元测试大小是模糊的,可以是函数、方法、类,甚至是实现某些特定功能的一组相互协助的类。
集成测试
集成测试这一概念不仅模糊,而且有多重含义。 集成指的是集成多个系统还是多个模块?是系统测试还是单元测试? 这两种含义相差比较大,干系人可能并不相同,所以在使用集成测试这个名称时,需要确保大家理解一致。
验收测试
验收测试开始是指由最终用户实施的,证明软件符合预期,并为上线做准备的测试活动。 现在这个活动被称为用户验收测试。 验收测试现在通常指由框架执行的自动化黑盒测试,确保所有需求的用户故事都被正确实现。
根据开发模式区分
根据瀑布开发模式和敏捷开发模式,匹配的测试可以分为传统测试和敏捷测试
传统测试
传统上测试是一个验证的阶段,发生在软件完成构建之后。
测试者更容易跟开发人员形成分裂和对立。
敏捷测试
敏捷测试是一种支持敏捷开发的测试方式。在敏捷测试中,测试者参加团队的质量核心小组,并且以任何方式为成功发布做出贡献,而不是仅仅编写测试用例。 敏捷团队的每一个人都承担把客户需要的功能转变到软件里去的责任,而测试者花更多的时间在客户身上,他们的角色就是帮助澄清需求和设计测试用例。 这两个工作都需要非常熟悉业务规则。
敏捷测试四象限
其他一些测试类型
- 冒烟测试:
- 将烟吹进管道,测试管道是否有裂缝
- 电路板通电测试,如果接上电源就冒烟,其他的测试就不用做了
- 软件行业是指系统部署后,立即执行系统最基本功能的快速测试
- 端到端测试
- 系统测试,特指通过系统将整改执行路径或过程都包含进来
- 在不同软件产品或不同团队中,对于系统和系统的边界定义并不相同
- 特性测试:测试软件的变更是基于什么需求开发的
- 正面、负面测试
- 正面测试:验证按照约定输入被测对象会像预期的那样工作和表现。又称为主逻辑路径(happy path)
- 负面测试:验证在输入无效值的情况下,系统运行符合预期,不会产生意想不到的行为
- 小型、中型、大型测试:谷歌对测试的划分
- 小型测试:聚焦于单一函数或模块,通常是单元测试;速度快,60s内完成,执行频繁
- 中型测试:检查不同层次之间的交互,可以使用数据库,访问文件系统和测试多线程代码。不能访问外部系统和远程主机;执行时间不超过300s
- 大型测试:不受任何限制