【测试开发】进阶篇——各种测试技术分类

简介: 按开发阶段划分单元测试集成测试系统测试验收测试按测试实施组织划分α测试β测试α和β测试区别第三方测试按是否运行划分静态测试动态测试按是否手工划分手工测试自动化测试按是否查看代码划分

按开发阶段划分


测试金字塔


83.png


84.png


1、UI界面层(用户界面测试):功能性验证测试、兼容性与用户测试

2、业务逻辑层(API层面):客户端模拟测试、内外接口测试、SDK接口测试(Software Development Kit一般指的是软件工程师特定的软件包建立的开发工具的集合)

3、数据处理层:单元测试

单元测试


单元测试是对软件组成单元进行测试。其目的是检验软件基本组成单位的正确性。


测试的对象是软件设计的最小单位:模块。又称为模块测试

测试阶段:编码后或者编码前(TDD)

测试对象:最小模块

测试人员:白盒测试工程师或开发工程师

测试依据:代码和注释+详细设计文档

测试方法:白盒测试

测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试


idea使用Junit插件进行单元测试


85.png


集成测试


集成测试(也成联合测试,联调)、组装测试,将程序模块采用适当的集成策略组装起来 集成主要目的是检查软件单位之间的接口是否正确。


测试阶段:一般的单元测试之后进行

测试对象:模块间的接口

测试人员:白盒测试工程师或开发工程师

测试依据:单元测试模块+概要设计文档

测试方法:黑盒测试和白盒测试相互结合

测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能的正确性、全局数据结构、单模块缺陷对系统的影响。


系统测试


将软件系统看成是一个系统的测试。包括对功能、性能以及软件所运行的软硬件环境进行测试。时间大部分在系统测试执行阶段,包括回归测试冒烟测试

测试阶段:集成测试之后

测试对象:整个系统(软、硬件)

测试人员:黑盒测试工程师

测试依据:需求规格说明文档

测试方法:黑盒测试

测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全等


回归测试(Regression Tesing)

回归测试指的就是你修改了旧的代码之后。重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误,自动回归测试将大幅降低系统测试、维护升级等阶段的成本。

在整个软件的过程中占有很大的工作量比重,软件开发的各个阶段都会运行多次回归测试


冒烟测试(Regression Tesing)

对一个硬件或硬件组件进行更改或修复后,直接给设备加电,如果没有冒烟就认为该组件通过了测试,

冒烟测试的对象都是每一个新编译的需要正式测试的软件版本,目的是确认软件的基本功能正常,可以进行后续的测试工作,冒烟测试的执行者是版本编译人员。

冒烟测试一般是开发人员开发完毕之后送给测试人员进行测试时,测试人员要先进行冒烟,用以保证基本功能是正确的,不会阻碍后续的测试


验收测试


验收测试是部署软件之前的最后一个测试操作。它是技术测试的最后一个阶段,也称为交付测试。验收测试的目的是确保软件准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件购买都展示该软件系统满足原始需求。


测试阶段:系统测试通过之后

测试对象:整个系统(包括软硬件)。

测试人员:主要是最终用户或者需求方。

测试依据:用户需求、验收标准

测试方法:黑盒测试

测试内容:同系统测试(功能…各类文档等)


按测试实施组织划分


α测试


主要是由一个用户 在开发环境进行 的测试,也可以是 公司内部的用户在模拟实际操作环境下进行的测试

主要的目的是:评价软件产品的FLURPS(即功能、局域化、可使用性、可靠性、性能和支持);


β测试


由软件的 最终的用户们在一个或者多个客户场所进行的测试。(内测)


α和β测试区别


测试的场所是不同的:α测试是把用户请到开发方的场所进行的测试,β测试值的是就是在一个用户或者多个用户场所所进行的测试。

α测试的测试环境是由开发方进行控制的,用户的数量是相对比较少的,时间也是相对比较集中的。β测试的测试场所也不是由开发方进行控制的,相对来说用户的数量是相对比较多的,但是时间也不是很集中的。

α测试是先与β测试的,通用的软件产品时需要大规模的β测试,猜测是的周期是相对是比较长的。


第三方测试


介于开发方和用户之间的组织测试。


按是否运行划分


静态测试


静态测试值的 是不运行程序本身,仅通过分析和检查源程序的语法、结构、过程、接口来检查程序的正确性(看代码) 。对需求规格说明书、软件设计说明书、流程图分析、符号执行来进行找错。


89.png


动态测试


动态测试指的就是运行被测的程序。检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性的等性能,这种方法主要是由三部分进行组成的:

测试用例、执行程序、分析程序运行输出的结果。

大多数的软件测试就是属于动态测试的。


按是否手工划分


手工测试


是由人一个一个的输入测试用例,然后观察结果、和机器测试相对应,属于比较原始,大事需要一个一个步骤进行测试。

  • 优点:自动化 无法替代探索性测试、发散思维类无既定结果的测试。
  • 缺点:执行的效率比较慢。量大易错。



自动化测试


在预设条件下运行系统或应用程序,评估运行结果、预先条件应该包括正常的条件和异常条件。简单的说 自动化测试是通过脚本把人为驱动的测试行为转化为机器执行的一种过程。


自动化测试比如功能测试自动化、性能测试自动化、安全测试自动化

通常我们所说的自动化测试就是指的是功能自动化测试

自动化测试按照测试的对象来分:分为接口测试、UI测试等。接口测试的ROI(产出投入比)要比UI测试高。


自动化实施的步骤


完成功能测试,版本基本稳定

根据项目特性、选择合适的项目自动化工具,并搭建环境

提取手工测试的测试用例转化为自动化测试的用例

通过工具,代码实现自动化的构造输入,自动检测输出结果是否符合预期

生成自动化的构造输入,自动的检测世界古是否符合预期

生成自动测试报告

持续改进、脚本优化


按是否查看代码划分


不管黑盒、白盒,抓住bug就是好盒


黑盒测试(Black-box Testing)


黑盒测试也称功能测试,测试中把被测的软件当成一个黑盒子,不关心盒子的内部结构是什么,只关心软件的输入数据与输出数据。


86.png

白盒测试(White-box Testing)


白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒指的打开盒子,去研究里面的源代码和程序结果。接口测试也是白盒测试的是一种 。


87.png


灰盒测试(Gray-Box Testing)


灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。


按测试地域划分


国际化测试


软件本地化和国际化测试是一个综合了翻译行业和软件测试行业的测试类型。

它要求测 试人员具备一定的翻译能力、语言文化,同时具备测试人员的基本技能。


88.png


本地化测试


之前所有我们学的都是基于本地化进行测试的。


按测试对象划分


业务测试


是测试人员将系统的各个模块串接起来运行、模拟真是用户实际的工作流程,满足永续需求定义的功能进行测试的过程。


90.png


界面测试


界面测试也成为UI测试。测试用户界面的功能模块的 布局是否合理,整体风格是否一致、各个控件的放置位置是否符合客户的使用习惯,还要测试操作界面操作便捷性、导航简单易懂性、页面元素的可用性,页面元素的可用性、界面中文字是否正确,命名是否统一,页面是否美观、文字、图片组合是否完美


91.png


容错性测试


检查软件 在异常条件下自身是否具有防护性的措施或密谋中灾难性恢复的手段


92.png


文档测试


文档测试的关注点

  • 文档的术语
  • 文档的正确性
  • 文档的完整性
  • 文档的一致性
  • 文档的易用性


兼容性测试


兼容线性主要指的就是 软件之间很好的运作,会不会有影响、软件和硬件之间是否能够发挥很好的效率工作,会不会影响导致系统的奔溃

  • 平台测试
  • 浏览器测试
  • 软件本身能否向前或者向后兼容
  • 测试软件能否与其它相关的软件兼容
  • 数据兼容性测试


93.png


易用性测试


易用性指的即使我们对于平时所使用的东西是否放在了合适的位置在我们是用的时候能够进行很好的找到。满足人体天生的人体工程学的范畴。


94.png


安装测试


测试程序的安装、卸载

典型的就是测试APP的测试的安装和卸载


安全测试


安全测试是一个相当于来说独立的领域,需更多的专业知识,例如Web的安全测试、需要熟悉各种网络协议,Tcp/Http,防火墙、CDN、熟悉各种操作系统的漏洞。 熟悉路由器等从软件来说熟悉各种的攻击手段,例如sql注入、Xss等。


95.png


性能测试


检查系统是否满足需求规格说明书中规定的性能

通常表现在以下的几个方面

  • 对资源的利用(如内存、处理机周期等)进行精确地度量。
  • 对执行间隔、日志文件(如中断、报错)
  • 响应时间
  • 吞吐量(TPS)
  • 辅助存储区(例如缓冲区、工作区的大小)
  • 处理精度等进行检测


内存泄漏测试


造成内存泄漏的原因

  • 内存分配完了忘记进行了回收
  • 程序写法有问题
  • 某些API函数的使用不正确,造成内存泄漏
  • 没有及时的进行释放


内存泄漏的检测:


对于不同的程序可以使用不同的方法来进行内存泄露的检查,还可以使用一些专门的工具来进行内存问题的检查,

例如 MemProof. AQTime、Purify、BundsChecker 等。

有些开发工具本身就带有内存问题检查机制.要确保程序员在编写程序和编译程序的时候打开这些功能。


通过代码扫描分析工具来检查


内存泄漏的坏处:

系统的可用内存越来越少,系统运行越来越慢,长期运行下系统可能会崩溃


相关文章
|
4天前
|
运维 测试技术
测试与开发问题之测试开发工程师与软件开发工程师和测试工程师如何区别
测试与开发问题之测试开发工程师与软件开发工程师和测试工程师如何区别
|
18天前
|
存储 安全 测试技术
移动应用的安全测试与加固技术深度解析
【8月更文挑战第2天】随着移动互联网的发展,移动应用成为生活必需,但安全威胁也随之加剧。本文深入探讨移动应用的安全测试与加固技术,包括权限访问、数据加密、安全协议、组件安全测试及渗透测试等内容,同时覆盖源代码、运行时环境、数据传输存储及业务逻辑加固等方面,为开发者提供全面指导,以保护用户数据和企业资产安全。
51 12
|
12天前
|
机器学习/深度学习 人工智能 物联网
探索软件测试的前沿技术与未来趋势
在数字化时代的浪潮中,软件测试作为保障软件质量的重要环节,正经历着前所未有的变革。本文将深入探讨当前软件测试领域的最新技术进展,包括自动化测试、人工智能在测试中的应用、以及云测试平台的发展等。同时,文章也将对软件测试的未来发展趋势进行预测,为读者揭示一个更加智能化、高效化的软件测试新时代。
|
24天前
|
机器学习/深度学习 人工智能 自然语言处理
探索自动化测试的前沿技术与实践
随着科技的快速发展,软件测试领域也迎来了新的变革。自动化测试作为一种提高测试效率和准确性的有效手段,正逐渐成为软件开发过程中不可或缺的一部分。本文将深入探讨自动化测试的最新技术动态,包括人工智能在测试中的应用、持续集成/持续部署(CI/CD)流程中的自动化策略,以及跨平台测试框架的创新。同时,文章还将分享一些实用的自动化测试最佳实践,帮助读者构建更加高效、可靠的自动化测试体系。让我们一起迈向自动化测试的新纪元,解锁软件质量保障的新可能。
33 2
|
4天前
|
监控 安全 测试技术
测试与开发问题之为什么测试开发工程师需要有安全生产意识,文档编写能力对于测试开发工程师的重要性如何理解
测试与开发问题之为什么测试开发工程师需要有安全生产意识,文档编写能力对于测试开发工程师的重要性如何理解
|
11天前
|
测试技术 数据库 开发者
Python全栈测试开发Chapter11 Mock测试
总结起来,Mock测试是一种有效的隔离测试环境、提高测试效率的方法,它让我们能够在不依赖外部条件的情况下进行全面的单元测试。在Python全栈测试中,Mock的应用是一种非常实用的技能。
9 0
|
19天前
|
机器学习/深度学习 人工智能 自然语言处理
探索自动化测试的边界:如何有效整合AI技术提升软件质量
随着人工智能技术的飞速发展,其在软件测试领域的应用逐渐深入。本文将探讨自动化测试与AI结合的现状和挑战,分析AI在提升测试效率、发现深层次缺陷等方面的潜力,并提出实现这一融合的实践策略。
20 0
|
19天前
|
机器学习/深度学习 自然语言处理 算法
测试FunAudioLLM在性能、功能、技术先进性等跟国际知名语音大模型进行比较。
测试FunAudioLLM在性能、功能、技术先进性等跟国际知名语音大模型进行比较。
|
20天前
|
机器学习/深度学习 人工智能 算法
探索自动化测试的前沿技术
【7月更文挑战第30天】在软件开发的浪潮中,自动化测试已成为确保产品质量和效率的关键因素。本文将探讨自动化测试的最新进展,包括AI与机器学习的集成、云测试服务的发展,以及持续集成/持续部署(CI/CD)流程中的测试自动化实践。我们将深入分析这些技术如何改变测试策略,提高效率,并预测它们对未来软件测试领域的影响。
12 0
|
23天前
|
存储
Postman 接口测试配置 Pre-request Script
Postman 接口测试配置 Pre-request Script
66 5
Postman 接口测试配置 Pre-request Script

热门文章

最新文章