国内建设地铁的公司网站,淘宝 网站开发 退货,怎么在vmware上做网站,数商云怎么样作者#xff1a;京东工业 宛煜昕
一、怎样的技术
•百度百科#xff1a;
精准测试是一套计算机测试辅助分析系统。
精准测试的核心组件包含的软件测试示波器、用例和代码的双向追溯、智能回归测试用例选取、覆盖率分析、缺陷定位、测试用例聚类分析、测试用例自动生成系统…作者京东工业 宛煜昕
一、怎样的技术
•百度百科
精准测试是一套计算机测试辅助分析系统。
精准测试的核心组件包含的软件测试示波器、用例和代码的双向追溯、智能回归测试用例选取、覆盖率分析、缺陷定位、测试用例聚类分析、测试用例自动生成系统这些功能完整的构成了精准测试技术体系。
•其他定义
精准测试是中国自己有知识产权的完全的理论体系它同时关注功能点和代码相关逻辑这样一个方法论是一种灰盒的测试模式。
最开始在2014年的国际软件测试大会上发布精准测试的时候它叫穿线测试英文名字叫Threading Test表达了精准测试的本质Threading这个英文单词本身有两个含义一个是穿线一个是线程建立用例和代码的关系相当于把黑盒和白盒关联起来做黑盒测试也能看到白盒数据同时把开发和测试能够关联起来测试一做完开发的逻辑马上就能自动生成。另一个层面精准测试最本质就是线程测试因为精准测试基于覆盖率白盒理论产生它跟白盒最大的区别是它的覆盖率是线程级的也就是说要追溯到用例这个级别。
二、技术发展
•历史发展 •成熟度模型的五级划分 三、知识与技能
这里介绍两款分别为JAVA和C/C相关
第一开发的基础和核心编程知识及所需要用到的版本管理工具GIT等。
第二领域特定的知识、技术需要具备如下
JAVAJavassist官网- 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如果在控制流程中遇到ExceptionJaCoCo会把这种情况直接标记为未覆盖这种判定方式直接的影响到了对程序逻辑关系的把控造成对于覆盖率无法准确评估。
•误差引发的后果
1.伪瓶颈的产生以及对测试质量的错误高估。第一种情况测试人员投入大量工作之后却无法进一步提升覆盖率造成对资源和实践的浪费第二种情况会让用户误将未达标的系统判定为达标有可能引发严重的生产事故。
2.无法实现缺陷定位大量的算法和应用依托覆盖率的输入而缺陷定位更是其中最主要的实践。
3.回归测试的精准度受到了严重的影响。
•无损插桩技术推荐 精准测试推出的SABI和SASI是中国自己的技术
SABISouceCode Analyzer ByteCode Intrumentation就是说源码分析字节码查看观测和分析是在源码插桩是在字节码。
SASISouceCode Analyzer SouceCode Intrumentation这是传统商用白盒最基础的技术有时候对源码进行分析直接在源码插装。源码插装以后代码经过高级语言、高级编译器的编译直接生成最后发布包。这种是完全无损的标准技术插装代码经过编译器编译后执行可靠性更高。
四、总结与介绍
大纲 1、测试范围代码分析 2、差异化 3、调用关系 4、度量与分析 5、质量评估 6、知识库兼优化 7、用例预分析 8、自动化测试与精准测试 五、平台
设计思路
从产品的需求、功能模块开发的代码到测试的用例从正向到逆向的覆盖追溯和可视。 大纲 调用链与代码覆盖
使用的是插桩有点类似C中的Hook技术获取所需数据信息。 协议HTTPMySqlDubboRedis等需要先进行分析找到关键插桩位置然后结合使用设计模式进行收集所需信息。
设计模式推荐两个1、反射适配器2、动态代理。
需要注意代码膨胀问题。
影响范围
假如有个应用系统开发出A版本提测通过前端功能发起HTTP接口平台的实时快照收到HTTP接口信息将该次的接口相关信息类、方法、执行代码行数保存为系统快照 当A版本开发后变为A_01版本使用平台对两次版本Jar包或War包进行比对通过系统快照中信息会分析出变更项与影响项如类、方法、接口。 根据影响用例中的菜单与接口到接口测试工具中进行执行。 实现与应用
通过数据进行可视化显示服务/应用的启动拓扑图调用链代码覆盖版本比对等信息。 项目列表
添加服务/应用 项目动态 启动服务/应用 1、搜索
可显示多个服务/应用的拓扑关系图 1详情视图 •表结构可查看接口与数据库表间的关联 •热点可查看接口与数据库表的关联个数 2展开快照 这里显示的节点是保存到系统快照的。
•表结构-数据库表远程服务-调用的rpc接口源码-代码关系图层 •远程服务显示远程调用接口如dubbo接口 •源代码关系图谱可查看代码关联关系和覆盖程度 •清除图谱清除表结构、远程服务、源代码关系节点
•详情页跳转到快照详情页
•概要显示快照详情中图片
•删除节点删除显示的节点
3搜索 •搜索数据库表中表名字段名筛选条件 •搜索接口HTTP接口 2、监控台
通过HTTP接口实时获取到协议、代码相关信息不同于通过单元测试得到代码覆盖率然后将这些信息保存下来我的快照和系统快照。 1实时监控
实时展示接口的调用链及链上各节点信息 2我的快照
实时监控中可保存为我的快照
2.1调用链和链路分析的可视化
调用链即是服务与中间件的调用链拓扑图层链路分析即是代码链路分析关系图谱。
•流程图拓扑图中可查看到覆盖后端及各中间件信息 •堆栈列表中展示服务与中间件的应用名类型服务/方法用时等信息 •点击/弹窗为代码图谱代码链路分析关系图谱点击某个节点即显示某个方法的方法名称、执行到的代码行数、代码总数、代码覆盖率和圈复杂度信息 根据某个尾节点能寻到开始节点 2.2查看代码覆盖率报告
代码覆盖率信息列表显示我的快照列表中所有覆盖率信息类名、方法名、执行代码行数、方法行数、覆盖率、圈复杂度 3、应用中心
1在线应用 2应用
2.1系统快照 快照目录点击链接进入系统快照详情页 系统快照详情页基本信息页签 系统快照详情页流程图页签 系统快照详情页堆栈列表页签点击/打开代码关系图层代码关系链 2.2版本比对
比对文件格式为Jar或War包比对之后会产生记录报告 开始比对后的结果显示能查看报告显示差异项比对日志输出新增、修改、变更、删除的文件与方法类与方法的影响数 2.2.1报告
比对成功后查看报告显示变更项影响用例对比日志点击影响用例链接会跳转到系统快照详情页 参考
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