0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

精准测试之探索

京东云 来源:jf_75140285 作者:jf_75140285 2024-09-26 17:44 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、怎样的技术

•百度百科:

精准测试是一套计算机测试辅助分析系统。

精准测试的核心组件包含的软件测试示波器、用例和代码的双向追溯、智能回归测试用例选取、覆盖率分析、缺陷定位、测试用例聚类分析、测试用例自动生成系统,这些功能完整的构成了精准测试技术体系。

•其他定义

精准测试是中国自己有知识产权的完全的理论体系,它同时关注功能点和代码相关逻辑这样一个方法论,是一种灰盒的测试模式。

最开始在2014年的国际软件测试大会上发布精准测试的时候,它叫穿线测试,英文名字叫Threading Test,表达了精准测试的本质,Threading这个英文单词本身有两个含义,一个是穿线一个是线程,建立用例和代码的关系,相当于把黑盒和白盒关联起来,做黑盒测试也能看到白盒数据,同时把开发和测试能够关联起来,测试一做完,开发的逻辑马上就能自动生成。另一个层面,精准测试最本质就是线程测试,因为精准测试基于覆盖率白盒理论产生,它跟白盒最大的区别是它的覆盖率是线程级的,也就是说要追溯到用例这个级别。

二、技术发展

•历史发展

wKgZomb1LI-ABSBFAAQZNxhO1dk470.png

•成熟度模型的五级划分

wKgaomb1LJCAJ5NEAAlTVTo47LQ881.png

三、知识与技能

这里介绍两款,分别为JAVA和C/C++相关,

第一,开发的基础和核心(编程)知识及所需要用到的版本管理工具(GIT)等。

第二,领域特定的知识、技术需要具备如下:

JAVA:Javassist(官网- https://www.javassist.org/ ),

ASM3.0(官网- https://asm.ow2.io/ ),

JaCoCo(官网- https://www.eclemma.org/jacoco/)。

C/C++:汇编、反汇编,PE,逆向工程(IDA)。

要用C/C++实现,通用与效率等方面没得说,但各协议的插桩,代码信息的收集,复杂程度和工作量都不是一般人所能承受,要做好心里建设。

直接使用JaCoCo需要注意覆盖率的误差,一些语句行,分支层级,其误差会被指数级放大。其更适用于偏向辅助个人开发者和小型项目组对项目覆盖率进行非常基础的评估。

•误差产生的具体成因:

1.复杂系统通常由大量子模块组成,JaCoCo无法实现对于内部被调用的子模块进行插装,因此对于子模块覆盖率的评估会产生显著的误差。

2.如果某个子模块没有被调用,那么对于JaCoCo来说,该模块内的方法等同于不存在。JaCoCo需要调用该子模块,才能将该子模块内的代码计入覆盖率计算的“分母”。

3.除了几种既定的逻辑意外事件,JaCoCo无法正确处理例外情况(Exception),如果在控制流程中遇到Exception,JaCoCo会把这种情况直接标记为未覆盖,这种判定方式直接的影响到了对程序逻辑关系的把控,造成对于覆盖率无法准确评估。

•误差引发的后果:

1.伪瓶颈的产生,以及对测试质量的错误高估。第一种情况,测试人员投入大量工作之后,却无法进一步提升覆盖率,造成对资源和实践的浪费;第二种情况,会让用户误将未达标的系统判定为达标,有可能引发严重的生产事故。

2.无法实现缺陷定位,大量的算法和应用依托覆盖率的输入,而缺陷定位更是其中最主要的实践。

3.回归测试的精准度,受到了严重的影响。

•无损插桩技术(推荐)

wKgZomb1LJSABXDzAAI4ladk0Oo243.png

精准测试推出的SABI和SASI是中国自己的技术

SABI,SouceCode Analyzer ByteCode Intrumentation,就是说源码分析,字节码查看,观测和分析是在源码,插桩是在字节码。

SASI,SouceCode Analyzer SouceCode Intrumentation,这是传统商用白盒最基础的技术,有时候对源码进行分析,直接在源码插装。源码插装以后,代码经过高级语言、高级编译器的编译,直接生成最后发布包。这种是完全无损的标准技术,插装代码经过编译器编译后执行可靠性更高。

四、总结与介绍

大纲

wKgaomb1LJWAE7VWAAFAkK-NLVs492.png

1、测试范围,代码分析

wKgZomb1LJaADOQiAAqr9Mi_c5Q118.png

2、差异化

wKgaomb1LJeAGq9fAAUlmD9YSOA138.png



3、调用关系

wKgZomb1LJeAf9VHAADEvoBUhl0292.png

4、度量与分析

wKgaomb1LJeAV-PGAAwdj1mGn3Y300.png

5、质量评估

wKgZomb1LJiAA1RyAAK-QXQUKCU730.png

6、知识库兼优化

wKgaomb1LJiALK4vAAeHH6-CGNo431.png

7、用例预分析

wKgZomb1LJqAEVwyAAKKGY5WROY179.png

8、自动化测试与精准测试

wKgaomb1LJqAEyaPAAF7XrwFya4976.png

五、平台

>设计思路

从产品的需求、功能模块,开发的代码到测试的用例,从正向到逆向的覆盖,追溯和可视。

wKgZomb1LJuATIKBAACHhzKkXhQ906.png

>大纲

wKgaomb1LJuAdog3AAkHG3hV9ek504.png

>调用链与代码覆盖

使用的是插桩,有点类似C++中的Hook技术,获取所需数据信息。

wKgZomb1LJyADb6XAALlV8wB8n0778.png

协议,HTTP,MySql,Dubbo,Redis等,需要先进行分析,找到关键插桩位置,然后结合使用设计模式进行收集(所需)信息。

设计模式推荐两个,1、反射+适配器,2、动态代理。

需要注意,代码膨胀问题。

>影响范围

假如有个应用系统开发出A版本提测,通过前端功能发起HTTP接口,平台的实时快照收到HTTP接口信息,将该次的接口相关信息(类、方法、执行代码行数)保存为系统快照; 当A版本开发后变为A_01版本,使用平台对两次版本(Jar包或War包)进行比对,通过系统快照中信息会分析出变更项与影响项,如:类、方法、接口。

wKgaomb1LJyAdJwoAABXHReL-5o184.png

根据影响用例中的菜单与接口,到接口测试工具中进行执行。

wKgZomb1LJ2ATAYAAAZ_8ZXmA9A127.png

>实现与应用

通过数据进行可视化,显示服务/应用的启动,拓扑图,调用链,代码覆盖,版本比对等信息。

wKgaomb1LJ6AYHJ1AAeOtnt_Zxo258.png

>>项目列表

添加,服务/应用

wKgZomb1LJ6AEIQSAAByj_f0OhE044.png

>>项目动态

wKgaomb1LKCASZ_LAB32amV5wz0295.gif

启动,服务/应用

wKgZomb1LKGAMmuFAAHlKKgcKSE365.png

1、搜索

可显示多个服务/应用的拓扑关系图

wKgaomb1LKGAQYT0AACxItGcIbY450.png

1)详情视图

wKgaomb1LKSAFgr4AD1B5-l7Fpg055.gif

wKgZomb1LKeAV4VIAADtCOjV0vs669.png

•表结构,可查看接口与数据库表间的关联

wKgaomb1LKeAZWQHAASOIiidBwY883.png

•热点,可查看接口与数据库表的关联个数

wKgZomb1LKmAcaitAAQ2-Fqvgwg420.png

2)展开快照

chaijie_default.png

这里显示的节点是保存到系统快照的。

•表结构-数据库表,远程服务-调用的rpc接口,源码-代码关系图层;

wKgZomb1LLmANWp_AALFSMxd8C0661.png

wKgaomb1LLqAFBAaAAQsgZpA3AI946.png

•远程服务,显示远程调用接口,如dubbo接口;

wKgZomb1LLyADqeVAAORoN_63A4567.png

•源代码关系图谱,可查看代码关联关系和覆盖程度;

wKgaomb1LL6AKzqEAAuMC0ZOF94845.png

•清除图谱,清除表结构、远程服务、源代码关系节点;

•详情页,跳转到快照详情页;

•概要,显示快照详情中图片;

•删除节点,删除显示的节点;

3)搜索

wKgZomb1LL-AWhFaAABHaZhV6Mw887.png

•搜索数据库表中,表名,字段名,筛选条件;

wKgaomb1LMGAM2XQAAfSjbnSEHg180.png

•搜索接口,HTTP接口;

wKgaomb1LMKAQ-Y2AAGO3Mmqk04096.png

2、监控台

通过HTTP接口实时获取到协议、代码相关信息,不同于通过单元测试得到代码覆盖率,然后将这些信息保存下来(我的快照和系统快照)。

wKgZomb1LMiAZ36bAERxccv0Uh4721.gif

1)实时监控

实时展示接口的调用链及链上各节点信息

wKgaomb1LMiAD8STAAPFA_FbNPE194.png

2)我的快照

实时监控中可保存为我的快照,

2.1)调用链和链路分析的可视化

调用链即是服务与中间件的调用链拓扑图层;链路分析即是代码链路分析关系图谱。

•"流程图(拓扑图)"中可查看到覆盖后端及各中间件信息;

wKgZomb1LMmAJni0AAGfQMUwXlo282.png

•"堆栈列表"中展示服务与中间件的应用名,类型,服务/方法,用时等信息;

wKgZomb1LMqAGdeiAAGo_p9x3Fg468.png

•点击""弹窗为代码图谱(代码链路分析关系图谱),点击某个节点,即显示某个方法的方法名称、执行到的代码行数、代码总数、代码覆盖率和圈复杂度信息,

wKgaomb1LMyAXUM8AAUavmuGDIo216.png

wKgZomb1LNSAYPQdAAWzAXANivQ915.png

根据某个尾节点,能寻到开始节点;

wKgaomb1LNWACmIZAAZyd2nAbsw782.png

2.2)查看代码覆盖率报告

代码覆盖率信息列表,显示我的快照列表中所有覆盖率信息,类名、方法名、执行代码行数、方法行数、覆盖率、圈复杂度;

wKgZomb1LNeAOb-cAAcVHAP3CeY705.png

3、应用中心

1)在线应用

wKgaomb1LNeAYVU_AAE4IUWXfDQ718.png

2)应用

2.1)系统快照

chaijie_default.png

快照目录,点击链接进入系统快照详情页

wKgZomb1LOWAAkIqAAMOv6VEO9k902.png

系统快照详情页,基本信息页签

wKgaomb1LOaADFnIAAPB6bZvyhs126.png

系统快照详情页,流程图页签

wKgZomb1LOeAFPC5AAKFqILUiUQ541.png

系统快照详情页,堆栈列表页签,点击打开代码关系图层(代码关系链)

wKgaomb1LOmAbnF8AAJi7J4XZTQ738.png

2.2)版本比对

比对文件格式为Jar或War包,比对之后会产生记录报告

wKgZomb1LOuAEJlzAA5LFXqNCu0322.gif

wKgaomb1LPGAdin1AAEzRmKjiWo735.png

开始比对后的结果显示,能查看报告,显示差异项,(比对)日志输出(新增、修改、变更、删除的文件与方法,类与方法的影响数)

wKgZomb1LPKAAEpZAAMKYgXwzS8781.png

2.2.1)报告

比对成功后查看报告,显示变更项,影响用例,对比日志;点击影响用例链接,会跳转到(系统)快照详情页

wKgaomb1LPOAPoq2AAPu6_2NYIo151.png

参考

1、百度百科-精准测试, https://baike.baidu.com/item/精准测试/22355867

2、精准测试白皮书v3.0-2019最新版,作者:星云精准测试, https://wenku.baidu.com/view/fe7e99a401d276a20029bd64783e0912a2167c23.html

3、《不测的秘密-精准测试之路》,作者:TMQ精准测试实践团队。

4、源码阅读网:http://www.coderead.cn/home/index.html

5、网易严选的精准测试实践, https://www.infoq.cn/article/xuu91crqa4hcjz8uomjs

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 测试
    +关注

    关注

    9

    文章

    6390

    浏览量

    131665
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    什么是探索测试ET

    探索测试ET(exploratory)是和ST(script based test)相比较而言的.笼统地说,ST就是有确定的步骤和预期目标的测试.探索
    发表于 07-05 06:38

    请问如何解决小信号测试精准度问题?

    如何解决小信号测试精准度问题?12bit示波器成为“芯”趋势
    发表于 12-01 07:29

    如何对正点原子stm32F407探索者进行测试

    注:此代码只测试于正点原子stm32F407探索者,其他情况请自行修改画圆函数在:注:此代码只测试于正点原子F407探索者,其他情况请自行修改#include "snake.h"#de
    发表于 08-05 07:36

    如何对stm32F407探索者进行测试

    如何对stm32F407探索者进行测试呢?
    发表于 10-21 07:34

    chroma16502数字电桥电阻电容电感测试测试精准chroma16502电阻测试

    二手chroma16502数字电桥电阻电容电感测试测试精准chroma16502电阻测试仪+价格“1550”广州发j货chroma16502数字电桥电阻电容电感
    发表于 01-06 17:57

    YIE002开发探索RS4852串口

    YIE002开发探索串口(485)1 YIE002上的RS4852 YIE002-STM32的串口编程(485)2.1 串口(485)的Cube MX图形配置2.2 添加应用代码1)设置
    发表于 01-14 08:14

    EMC测试标准雷击浪涌测试

    EMC测试标准雷击浪涌测试说明。
    发表于 05-30 10:03 90次下载

    星云测试--测试数字化转型精准测试与用例引擎的双轮驱动

    创始人、产品设计师赵明,应邀参加大会China Test第十届中国软件测试大会,并做“测试数字化转型精准测试与用例引擎的双轮驱动”的主题演
    的头像 发表于 09-16 17:04 3154次阅读
    星云<b class='flag-5'>测试</b>--<b class='flag-5'>测试</b>数字化转型<b class='flag-5'>之</b><b class='flag-5'>精准</b><b class='flag-5'>测试</b>与用例引擎的双轮驱动

    探索编码器电机步进跟踪器

    电子发烧友网站提供《探索编码器电机步进跟踪器.zip》资料免费下载
    发表于 01-05 10:40 1次下载
    <b class='flag-5'>探索</b>编码器<b class='flag-5'>之</b>电机步进跟踪器

    焊线拉力测试机如何精准测试与准确判断焊接质量

    焊线拉力测试机如何精准测试与准确判断焊接质量
    的头像 发表于 11-09 09:09 1369次阅读
    焊线拉力<b class='flag-5'>测试</b>机如何<b class='flag-5'>精准</b><b class='flag-5'>测试</b>与准确判断焊接质量

    五轴按键测试机:精准评估按键性能的利器

    五轴按键测试机:精准评估按键性能的利器
    的头像 发表于 12-26 09:15 1592次阅读
    五轴按键<b class='flag-5'>测试</b>机:<b class='flag-5'>精准</b>评估按键性能的利器

    精准可靠的工具:螺丝扭力测试

    精准可靠的工具:螺丝扭力测试
    的头像 发表于 01-17 09:14 1382次阅读
    <b class='flag-5'>精准</b>可靠的工具:螺丝扭力<b class='flag-5'>测试</b>仪

    探索EMC(电磁兼容):原理、测试与应用?

    探索EMC(电磁兼容):原理、测试与应用?|深圳比创达电子
    的头像 发表于 03-25 11:19 2344次阅读
    <b class='flag-5'>探索</b>EMC(电磁兼容):原理、<b class='flag-5'>测试</b>与应用?

    探索LM27:精准温控的理想

    探索LM27:精准温控的理想选 引言 在电子设备的设计中,温度管理至关重要。无论是微处理器、便携式电池供电系统,还是工业过程控制中的HVAC系统,都需要精确的温度监测与控制。德州仪器(TI
    的头像 发表于 02-26 11:35 296次阅读

    探索LTC2911:精准监控电源的理想

    探索LTC2911:精准监控电源的理想选 在电子系统的设计中,稳定的电源供应是系统可靠运行的基石。电源监控芯片作为保障电源稳定的关键组件,其性能直接关系到整个系统的可靠性和稳定性。今天,我们来
    的头像 发表于 02-26 13:50 261次阅读