一种可度量的测试体系-精准测试

行业现状

软件行业长期存在一个痛点,即测试效果无法度量。通常依赖于测试人员的能力和经验,测试结果往往不可控,极端情况下同一个业务功能,即使是同一个人员在不同的时间段,测试场景和过程也可能不一致,从而无法有效地保障软件产品质量。

质量总监总是抱怨:每一次版本发布时,时间并不是很充分,我们不确定这些需求代码变动到底影响范围有多大,无法精准地评估出测试范围,要么执行完整的全回归测试,花费大量的时间,严重影响交付效率;要么靠个人经验和主观能力,有选择的验证部分功能,很容易忽略出问题的业务场景,导致漏测现象和bug泄露。

测试人员总是抱怨:这个任务明明只需要改A需求,为啥会影响到B需求?咨询对应的开发人员,反馈为所有功能都需要重测。

多年来,许多大型企业都尝试过各种不同的方法,比如提升测试人员技能、标准化流程、加大需求评审的投资等等,但这些措施只能暂时缓解问题,最终软件产质量还是不尽人意。

有没有一种解决方案或者工具可以量化、数字化地解决这个问题呢?

可度量的测试体系-精准测试

先来回答一下什么叫精准测试,它涉及软件测试、数据分析、机器学习等多个交叉领域。其目的是通过收集和分析测试数据,预测软件缺陷的位置和严重程度,从而提高测试效率和准确性。

精准测试主要包括以下几个方面:

1.测试数据收集与管理

收集覆盖面广、质量高的测试数据是实现精准测试的基础。测试数据包括测试用例、代码变动、业务工单、API接口等所有过程数据,这需要采用自动化测试工具、人工测试等手段,在不同的测试阶段获取足够的有效数据。同时,建立测试数据管理平台,对测试数据进行分类、存储、分析和共享,以便在测试过程中为测试人员提供支持。

2.测试用例优化

基于机器学习和数据挖掘技术,分析历史测试数据,挖掘出潜在的测试用例覆盖不足和冗余。通过对测试用例进行优化,可以提高测试覆盖率和降低测试成本。

3.缺陷预测

通过对测试数据的分析,建立软件缺陷预测模型。该模型可以根据测试数据预测软件中可能存在的缺陷位置和严重程度,从而帮助测试人员优先处理高风险的缺陷,提高测试效率。

4.测试人员辅助

通过大数据和机器学习技术,为测试人员提供辅助决策支持。例如,在测试过程中,根据测试数据为测试人员推荐合适的测试策略、测试用例和缺陷处理方法等。

5.可视化分析与展示

将测试数据进行可视化处理,使测试人员能够更直观、快速地了解软件测试状况。可视化分析可以帮助测试人员发现测试过程中的问题和改进方向,提高测试效果。

精准测试的目标?

将需求、代码、用例建立映射关系,通过数字化、可量化的数据判断,实现代码覆盖率的可衡量性,从而提高测试效率,提高版本质量。

精准测试从2012年开始提出和发展,至今已经过了10年多的历程,越来越多的企业发现它的价值点,但是落地却很困难,行业内的质疑声也一直存在,并没有形成一个通用、完整的解决方案,无法适配不同公司的产品业务。

总结一下,难点主要有如下方面:

如何解决这些难点?

打造精准测试框架是解决这些难点的最重要和有用的方案。为了实现这一目标,我们可以围绕三个核心特征来定义企业级平台:平台底座、价值变现和用户体验。

平台底座是技术架构的基础构建,它包括四个主要部分:数据采集、代码插桩、正向追溯和数据存储。

数据采集:通过过多种消息中间件,利用流量隔离的技术并行采集,自动化采集数据并入库,提升执行效率,解决数据采集困难的问题。

- 使用调用链做流量隔离,实现并行采集,这也是精准测试落地到人工测试的基础条件,其最大的优势为:

  • 有效隔离不同业务、不同IP、不同人员的流量,减少流量之间的干扰,实现个人测试流量的单独采集。

  • 可以有效优化系统性能,减少资源浪费,提高采集的效率。

- 使用类似kafka做消息管道,利用其高可靠,高性能的优势,支撑了每秒百万级的消息处理。

代码插桩:使用JAVA Instrumentation,无侵入的对业务代码插桩,在容器化基础上,进一步标准化启动脚本,只需修改环境变量即可控制是否插桩使用调用链数据或者Agent插件注入来形成插桩方式。

- 无侵入性:此技术不会改变业务代码,不会对应用程序的功能产生负面影响。

- 灵活性:通过容器化、环境变量控制动态插桩的方式,可以在不修改代码的情况下,根据环境轻松切换不同的插桩策略。

- 标准化和可扩展性:使用容器化技术和标准化启动脚本,可以使插桩过程可复制,方便在多个项目或环境中应用。

正向追溯、反向追溯:通过数据采集和存储建立的映射关系以及覆盖率报告,可以更好地理解业务需求与代码实现之间的关系,评估测试的效果,并扩展建立需求、用例、代码片段(块/行)和版本基线的基础映射关系,通过正向追溯和反向追溯的方式增强项目管理、变更管理和持续改进的能力。

数据存储:精准测试过程中会产生大量数据,链路结构的特性使得数据存储和管理变得复杂。为了应对这种情况,建议使用非关系型数据库进行数据存储。例如,可以使用类似ElasticSearch、Neo4j、ClickHouse等数据库来支持精准测试数据。这些数据库能够处理百亿级别的数据量,并实时维护覆盖率数据的追溯关系。通过使用这些数据库,我们可以提高数据存储和查询的性能,更好地管理精准测试数据。

- 高性能:ElasticSearch具有强大的全文搜索功能和数据分析能力,而Neo4j则擅长处理图结构数据,ClickHouse具备高压缩比,低存储成本,都是为处理大规模数2据和复杂查询而设计的。

- 可扩展性:具有水平扩展的能力,可以随着数据量的增加自动进行分片和负载均衡,确保系统的可伸缩性。

- 实时性:可以实时更新和查询数据,对于需要实时反馈的场景非常适用。

- 开放性:开源组件,可以自由使用和定制,同时也提供了丰富的API和工具,方便进行二次开发和维护。

价值变现:精准测试平台的价值主要表现在针对企业不同实际业务,通过多元化业务场景功能来实现。例如覆盖率视图等基本价值能力在此不再赘述,本段重点介绍代码染色和用例智能推荐。

代码染色:代码染色是一种通过分析代码逻辑和结构,为代码片段赋予颜色标记的技术。精准测试平台利用代码染色技术,通过Bug泄露情况,代码变动频率等多种维度的数据聚合,将代码中的重要程度直观地展示出来,帮助开发人员快速发现和定位问题。同时,代码染色还可以提示开发人员某些代码片段可能存在的潜在风险,从而提前预防和解决潜在问题。

- 故障率维度:根据数据积累,每个故障泄露对应的代码文件,可以定义文件引起的故障率,一般来讲,此类高危定义的权重最高。

- 外部依赖维度:核心程序被调用情况,可以在一定程度上定义代码的重要程度,通用的就是扇入扇出。

- 修改频率:每个文件的修改频率,在一定范围内会影响Bug的泄露,一般修改频率越高,引起问题的几率会增大。

- 自身代码复杂程度:代码的易维护程度,越难维护出问题几率越大,比如圈复杂度,重复代码度。

用例智能推荐和变更范围分析:常见的技术是使用建模语言(UML)和工具来创建业务模型、用例模型和代码模型,通过类图和业务模型之间的关联来建立业务和用例与代码之间的映射。

- 根据需求、用例和代码变动,从追溯映射数据库中智能匹配现有场景用例,用例最小集+有效场景覆盖,并反馈给开发和测试人员,让测试更清晰和准确,有效提升测试效率。

- 依据代码变动片段信息,分析出关联影响,提供变更的函数、接口、功能、菜单以及对应的业务列表,精准地评估影响范围,同用例智能推荐融合使用。

用户体验:用户体验是精准测试落地的关键点,我们可以从易用性和交互性着手,尽可能的降低测试/开发的额外工作量,降低额外的资源和环境,开箱即用,从而帮助用户提高工作效率、增强用户满意度、降低错误率,我们可以在下面两个方面考虑:

系统快照:将用户的测试操作,通过插桩和流量监控,形成step by step的测试用例。

- 一键生成文本测试用例。通过浏览器插件事件监听API,流量监听API,以及本地Gotest流量监听工具,自动记录人工测试的操作过程。

- 采集代码覆盖率信息。将文本用例,手工测试,代码覆盖率三者整合,可以很大程度上提高测试效率,丰富用例代码关系库。

插件能力:提供浏览器插件、任务单一键录制、接口插件等能力,用户无需额外投入学习成本,解决易用性低的痛点。

最终形成DevOps的全场景价值平台,解决价值链单一问题,实现从数据版本匹配覆盖率到整合需求任务单管理、嵌入DevOps流程,形成质量门禁和多维度度量统计视图的全方位改进,实现全链路效率提升。通过精准测试完整体系,可以更高效地管理和监控软件开发过程,提高软件质量,降低开发成本,同时增强团队协作和沟通。

持续思考

采集侧:考虑无调用链应用的接入,适配更多的业务产品情况,进一步提升精准测试的覆盖范围

易用性:易用性能力的进一步提升,在任务单处理环节,用户可以一键式的采集流量信息;根据流量信息自动生成测试用例和测试快照,进一步提升测试效率

AI分析:用例推荐更加AI化,同GPT融合,能够分析出有效用例

缺陷分析能力:基于业务场景、任务单、测试用例数据,能够分析出漏测点,提示并补充测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/153391.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抖音电商双11官方数据最全汇总!

11月13日,抖音电商数据发布“抖音商城双11好物节”数据报告,展现双11期间平台全域经营情况及大众消费趋势。 报告显示,10月20日至11月11日,抖音电商里的直播间累计直播时长达到5827万小时,挂购物车的短视频播放了1697亿…

第十一篇 基于JSP 技术的网上购书系统——产品类别管理、评论/留言管理、注册用户管理、新闻管理功能实现(网上商城、仿淘宝、当当、亚马逊)

目录 1.产品类别管理 1.1功能说明 1.2界面设计 1.3处理流程 1.4数据来源和算法 1.4.1数据来源 1.4.2 查询条件 1.4.3相关sql实例 2. 评论/留言管理 2.1功能说明 2.2 界面设计 2.3处理流程 2.4数据来源和算法 2.4.1数据来源 2.4.2 查询条件 2.4.3相关sql实例…

vue3 使用simplebar【滚动条】

1.下载simplebar-vue npm install simplebar-vue --save2.引入注册 import simplebar from "simplebar-vue"; import simplebar-vue/dist/simplebar.min.css import simplebar-vue/dist/simplebar-vue.jsvue2的版本基础上 【引入注册】 import simplebar from &qu…

IDEA 搭建 SpringCloud 项目【超详细步骤】

文章目录 一、前言二、项目搭建1. 数据库准备2. 创建父工程3. 创建注册中心4. 服务注册5. 编写业务代码6. 服务拉取 一、前言 所谓微服务,就是要把整个业务模块拆分成多个各司其职的小模块,做到单一职责原则,不会重复开发相同的业务代码&…

数据预处理pandas pd.json_normalize占用内存过大优化

问题描述 从ES下载数据,数据格式为json,然后由pandas进行解析,json中的嵌套字段会进行展开作为列名(由于维度初期无法预测,所以根据数据有啥列就使用啥列,这是最方便的点),变成表格,方面了后续…

电脑开不了机怎么办?三招帮你成功解决!

电脑是我们日常工作和生活的重要工具,但有时候它们也会出现开机问题。当电脑无法启动时,可能会让人感到焦虑,电脑开不了机怎么办?不必担心,通常有多种方法可以解决这些问题。本文将介绍三种常见的方法,以帮…

【广州华锐互动】VR虚拟现实技术助力太空探险:穿越时空,探索宇宙奥秘

随着科技的不断发展,虚拟现实(VR)技术已经逐渐走进我们的生活。在教育领域,VR技术的应用也日益广泛,为学生提供了更加生动、直观的学习体验。本文将以利用VR开展太空探险学习为主题,探讨如何将这一先进技术…

提升办公效率,畅享多功能办公笔记软件Notion for Mac

在现代办公环境中,高效的笔记软件对于提高工作效率至关重要。而Notion for Mac作为一款全能的办公笔记软件,将成为你事业成功的得力助手。 Notion for Mac以其多功能和灵活性而脱颖而出。无论你是需要记录会议笔记、管理项目任务、制定流程指南&#xf…

基于springboot实现冬奥会科普平台系统【项目源码+论文说明】计算机毕业设计

基于SpringBoot实现冬奥会科普平台系统演示 摘要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理平台应运而生&…

图像的傅里叶变换

目录 ​编辑 傅里叶基础 傅里叶基础numpy实现 逆傅里叶numpy实现 频域的高通滤波 傅里叶OpenCV实现 傅里叶OpenCV逆变换实现 频域的低通滤波 傅里叶变换有什么应用场景 傅里叶变换matlab实现 傅里叶基础 法国数学家吉恩巴普提斯特约瑟夫傅里叶被世人铭记的最大的贡献…

llvm源码windows编译

1.克隆llvm源码: git clone --config core.autocrlf=false https://github.com/llvm/llvm-project.git 2.创建build文件夹并生成makefile 生成前置条件: cmake ,ninja,python3要先安装 cmake -S llvm -B build -G Ninja -DCMAKE_BUILD_TYPE=Release 生成成功 3.编译 进…

初刷leetcode题目(7)——数据结构与算法

😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️Take your time ! 😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️…

UE 调整材质UV贴图长宽比例

首先,为什么要先减去0.5呢,因为缩放的贴图中心在0,0原点,以这个点缩放效果是这样: 它缩放的图案不会在正中间,因为是以0,0点进行缩放的 以这个图的箭头去缩放图片的,所以不能使得缩放后的图片放在正中心 那…

【机器学习】038_梯度消失、梯度爆炸

一、原因 神经网络梯度 假设现在有一个 层的神经网络,每层的输出为一个对输入作 变换的函数结果 用 来表示第 层的输出,那么有下列公式: 链式法则计算损失 关于某一层某个参数 的梯度: 注意到, 为向量&am…

NX二次开发UF_CAM_ask_post_template_name 函数介绍

文章作者:里海 来源网站:里海NX二次开发3000例专栏 UF_CAM_ask_post_template_name Defined in: uf_cam.h int UF_CAM_ask_post_template_name(const char * * post_template_filename ) overview 概述 This function provides the name of the file…

git 提交成了LFS格式,如何恢复

平常习惯使用sourceTree提交代码,某次打开时弹出了一个【是否要使用LFS提交】的确认弹窗,当时不知道LFS是什么就点了确认,后续提交时代码全变成了这个样子 因为是初始化的项目首次提交,将近四百个文件全被格式化成了这个样子&…

利用ETLCloud自动化流程实现业务系统数据快速同步至数仓

现代企业有不少都完成了数字化的转型,而还未转型的企业或商铺也有进行数字化转型的趋势,由此可见,数据已经成为企业决策的重要依据。企业需要先获取数据,将业务系统数据同步至数仓进行整合,然后再进行数据分析。为了更…

Vatee万腾外汇市场新力量:vatee科技决策力

在当今数字化时代,Vatee万腾崭露头角,以其强大的科技决策力进军外汇市场,成为该领域的新力量。这一新动向将不仅塑造外汇市场的未来,也展现Vatee科技决策力在金融领域的引领作用。 Vatee万腾带着先进的科技决策力进入外汇市场&…

Java格式化类Format

文章目录 Format介绍Format方法- format(格式化)- parseObject(解析) 格式化分类日期时间格式化1. DateFormat常用方法getInstancegetDateInstancegetTimeInstancegetDateTimeInstance 方法入参styleLocale 2. SimpleDateFormat常…

CentOS7安装Docker遇到的问题笔记

笔记/朱季谦 以下是笔者本人学习搭建docker过程当中记录的一些实践笔记,过程当中也遇到了一些坑,但都解决了,就此记录,留作以后再次搭建时可以直接参考。 一、首先,先检查CentOS版本,保证在CentOS7版本以…