软件测试类型
基于测试策略
-
白盒测试:从软件的源代码内部派生测试,具体包括分支、单个条件和语句,需要内部资源。
-
黑盒测试:从软件的外部描述中派生测试,包括规范、需求和设计,不需要应用程序内部资源。
-
灰盒测试=黑盒+白盒,在对应用程序的内部源代码、设计、算法或实现细节了解有限的情况下进行测试。
- 功能+代码
基于测试级别
-
单元测试/模块测试/组件测试/类测试
Unit testing /Module testing/ Component testing /Class testing
- 单元测试面向对象大部分以类为最小单元测试,但方法代码行数多时应以方法为单元。程序中的单个子程序、子程序、类或过程。
- 目标:确认组件或子系统编码正确,并执行预期功能
-
集成测试
Integration testing
- 测试对象:子系统组(子系统的集合)以及最终整个系统。
- 目标:测试子系统之间的接口。
-
系统测试
System testing
- 对象:整个系统
- 开发者进行
- 目标:确定系统是否满足需求(功能性&非功能性)
-
验收测试
Acceptance Testing
-
评估开发者交付的系统,由客户执行
-
目标:证明系统满足要求可以使用
-
四种典型形式
-
合同验收测试
Contract Acceptance Testing
-
客户专用软件
测试标准:开发合同中确定的验收标准。
测试用例:软件生产商应准备测试用例,并重新运行合同要求的与验收相关的测试用例,以向客户证明已满足合同的验收标准。
验收测试用例由客户设计,或至少由客户彻底审查。
验收测试在客户的实际操作环境中运行。
-
-
用户验收测试
User acceptance testing
- 如果客户和用户不同,尤其建议进行此类测试,获得每个用户组的认可
- 客户通常会组织这些测试,根据业务流程和典型使用场景选择测试用例。
-
操作验收测试
Operational acceptance testing
,系统管理员角度- 确保系统管理员对系统的验收。
- 可能包括测试备份/恢复周期(包括复制数据的恢复)、灾难恢复、用户管理和安全漏洞检查
-
域测试
Field Testing
- 先Alpha测试后Beta测试
-
-
Alpha测试&Beta测试
Alpha testing
:在实验室环境、受控环境中;目标:评估产品质量,确保可进行Beta测试。Beta testing
:终端用户在一个或多个客户网站上进行,开发人员无法控制环境;目标:评估客户满意度并确保可以进行发布。
-
基于程序是否运行
- 静态测试
- 不执行程序的测试,包括软件检查和一些形式的分析。
- 分析、代码检查、审查、代码走查
Walkthroughs
。 - 预防缺陷,成本低。
- 动态测试
- 通过实际输入执行程序进行测试。
- 动态测试包括所有类型的功能和功能测试。
- 探测缺陷,成本高。
基于需求类型
- 功能测试
- 使用客户提供的功能规范进行功能/功能测试,并根据功能要求验证系统。
- 非功能测试
- 非功能测试检查软件系统的性能、可靠性、可扩展性和其他非功能方面。
- 非功能测试应在功能测试后进行
- 性能测试:量特定用例的处理速度和响应时间,通常取决于负载的增加。
- 负载测试:测量增加系统负载的系统行为(例如,同时工作的用户数、事务数);
- 压力测试:观察系统过载时的系统行为;在非正常条件下运行应用程序来观察应用程序的健壮性。仅适用于“关键任务”软件,如零停机时间的服务器级应用程序
- 容量测试:
Volume test
flood testing
根据数据量观察系统行为(例如,处理非常大的文件)通常,数据库和自动化脚本有助于生成所需的卷并记录系统性能。 - 安全测试:针对未经授权访问系统或数据、拒绝服务攻击等的安全性测试
- 兼容性测试:软件系统确实有许多依赖项,例如平台、运行时、编译器、第三方库、浏览器、web服务器等。兼容性测试有助于确定应用程序是否可以使用指定的依赖项或环境,并提前确定任何问题。
- 浏览器兼容性测试
- 向后兼容性测试
- 安装测试
- 大多数软件应用程序都使用安装程序包,这些安装程序包可以复制文件、准备系统注册表、配置防火墙,并分配权限,使产品为最终用户做好准备。安装测试将探索这些区域,并检查安装程序是否按预期工作,测试升级、安装、卸载操作。
- 恢复测试:验证应用程序是否能够从意外事件(如崩溃、机器或网络故障、断电)中恢复。恢复测试模拟这些意外故障,观察应用程序如何响应并报告问题(如果有)。
- 可靠性测试:验证被测软件在真实环境中能够在预期的持续时间内无任何错误地运行。可靠性测试证明该应用程序是无错误的,并且可以在最终用户系统上按预期运行。
- 可用性测试:检查系统的易学性、操作的易用性和效率、系统输出的可理解性等,始终考虑特定用户群体的需求。
- 本地化测试:本地化是软件以本地化语言显示其文本或将其限制在特定区域的一种方法。本地化测试提供了一种针对特定地区、文化或语言环境测试软件本地化质量的方法。测试人员只在产品的本地化版本上执行。
- 符合性测试:
Compliance testing
有些软件产品必须遵守特定的规则或政策,通常称为compliance。合规性测试确保软件应满足预期的监管要求。如果符合性检查失败,那么开发人员必须进行修复。有时候,这不仅仅是一个小小的改变,而是变成了一个全新的需求。
基于变化
- 确认测试
Confirmation testing
:(重新测试)以确保错误确实已被成功删除。简单地说,最初检测到错误的测试用例将再次执行,这一次应该可以顺利通过。 - 回归测试
Regression testing
:验证错误修复,确保更改后没有出现或发现新的缺陷。
基于工具
- 手动测试:手动测试软件以发现缺陷的过程。测试人员在不使用任何自动化工具的情况下手动执行测试用例并生成报告。
- 自动化测试:使用自动化工具测试软件以发现缺陷的过程。自动化工具会自动执行测试脚本并生成结果。
其他
-
Smoke Testing(冒烟测试)
- 是在软件构建(build)后进行的一种测试,用来确定程序的关键功能是否正常工作。在软件构建上执行任何详细的功能或回归测试之前执行。
- 测试用例选择覆盖系统最重要的功能或组件。其目的不是执行详尽的测试,而是验证系统的关键功能是否正常工作。典型的冒烟测试是验证应用程序是否成功启动,检查GUI是否响应…等。
-
Sanity Testing
- 在接收到软件构建(Build)后进行的一种测试,在代码或功能上做了细微的更改,以确定缺陷已被修复,并且不会因这些更改而引入进一步的问题。
- 也称为测试人员验收测试。
-
随机测试
Ad hoc testing
,random testing
,monkey testing
- 无需任何计划和文档。测试是非正式和随机进行的,没有任何正式程序或预期结果。
-
GUI测试
- 包括屏幕上显示的按钮和输入字段的大小,以及表格中所有文本、表格和内容的对齐方式。
- 在选择不同的菜单和菜单项后,验证应用程序的菜单。将鼠标悬停在菜单或子菜单上后,它会验证页面是否波动,对齐方式是否保持不变。
-
大猩猩测试
Gorilla Testing
- 对一个模块或模块中的功能进行了彻底而严格的测试。此测试的目的是检查应用程序的健壮性。
- 不需要测试用例和测试数据。它使用随机数据和测试用例来执行应用程序测试。Gorilla测试的目的是通过对单个模块施加重负载和压力来检查其功能。
-
正向测试
- 称为“快乐路径测试”,是在正向流上成功测试应用程序。重点只放在应用程序生成预期输出所需的有效和积极的输入上
-
负面测试
- 称为错误路径测试或失败测试,是使用错误数据、无效数据或输入测试应用程序。它验证系统是否抛出无效输入错误并按预期运行
-
突变测试
- 一种白盒测试,其中一个程序的源代码被更改,并验证现有测试用例是否能够识别系统中的这些缺陷。程序源代码中的更改非常小,因此不会影响整个应用程序,只有具有影响的特定区域和相关测试用例才能识别系统中的这些错误
-
可访问性测试
- 目的:确定残疾人是否可以访问软件或应用程序。这里的残疾是指聋人、色盲、智障、盲人、老年人和其他残疾群体。
- 进行各种检查,如视觉障碍的字体大小、色盲的颜色和对比度等。
例子
-
灰盒测试
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5jDEoyqw-1649770808446)(img/软件测试与交付_img/image-20220412195154933.png)]
-
纸质花纹杯子装水
- 安全性:水变色、温水、热水、牛奶、果汁漏水
- GUI测试:图案美观、正版不侵权、装水后图案是否会变化
- 复杂测试:容量
- 性能测试:持续多久不漏水
-
手机APP常见测试包括哪些?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lQGjBwd0-1649770808448)(img/软件测试与交付_img/image-20220412213904737.png)]