CN115378854B - 基于自定义json规则的二进制数据报文修改方法 - Google Patents

基于自定义json规则的二进制数据报文修改方法 Download PDF

Info

Publication number
CN115378854B
CN115378854B CN202210802852.7A CN202210802852A CN115378854B CN 115378854 B CN115378854 B CN 115378854B CN 202210802852 A CN202210802852 A CN 202210802852A CN 115378854 B CN115378854 B CN 115378854B
Authority
CN
China
Prior art keywords
modification
rule
message
json
message modification
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202210802852.7A
Other languages
English (en)
Other versions
CN115378854A (zh
Inventor
姜锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Unittec Co Ltd
Original Assignee
Unittec Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Unittec Co Ltd filed Critical Unittec Co Ltd
Priority to CN202210802852.7A priority Critical patent/CN115378854B/zh
Publication of CN115378854A publication Critical patent/CN115378854A/zh
Application granted granted Critical
Publication of CN115378854B publication Critical patent/CN115378854B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/50Testing arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/03Protocol definition or specification 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请实施例提出了基于自定义JSON规则的二进制数据报文修改方法,包括截获二进制数据报文,根据xml报文配置文件对截获到的二进制报文进行递归解析,得到数据字典;对产生的数据字典进行序列化处理,将得到JSON字符串传给前端网页生成以树或视图方式显示的报文修改界面;接收用户基于报文修改界面发出的JSON格式的报文修改请求,基于报文修改请求生成报文修改规则对象列表;添加报文修改规则对象列表至修改任务队列按预设修改逻辑进行报文修改处理。采用JSON格式表达任意嵌套的报文结构,定义报文修改规则,能够减少了故障注入测试的人力投入,并使得部分之前无法测试的项成为可能。

Description

基于自定义JSON规则的二进制数据报文修改方法
技术领域
本申请属于计算机领域,尤其涉及基于自定义JSON规则的二进制数据报文修改方法。
背景技术
在通过二进制数据报文接口做故障注入的测试过程中,测试人员使用传统的测试工具,看到的是报文的十六进制字符串序列。如果要修改其中某一个字段的值,测试人员需要根据数据报文接口文档,计算待修改字段在数据报文序列中的位置。
而且随着业务的不断迭代,数据报文接口版本的更新,字段或删除或新增,字段在数据报文中的位置会不断地变化,测试人员每次修改报文都要重复计算待修改字段位置。如果是插入一个或多个复杂的结构体,那难度就会陡增。
发明内容
为了解决现有技术中存在的缺点和不足,本申请提出了基于自定义JSON规则的二进制数据报文修改方法,通过自定义简洁、且可自由扩展的JSON修改规则,解决了修改过程繁琐、重复、效率低的问题。
具体的,本申请实施例提出的基于自定义JSON规则的二进制数据报文修改方法,包括:
S1,截获各子系统内部以及子系统之间的二进制数据报文,根据xml报文配置文件对截获到的二进制报文进行递归解析,得到数据字典;
S2,对产生的数据字典进行序列化处理,将得到JSON字符串传给前端网页生成以树或视图方式显示的报文修改界面;
S3,接收用户基于报文修改界面发出的JSON格式的报文修改请求,基于报文修改请求生成报文修改规则对象列表;
S4,添加报文修改规则对象列表至修改任务队列中并按预设修改逻辑进行报文修改处理。
可选的,所述S3包括:
S31,接收用户基于报文修改界面发出的JSON格式的修改请求;
S32,对JSON格式的修改请求进行解析,得到待修改的报文的修改方式、字段定位符以及修改详情;
S33,构建对应报文的修改规则对象列表。
可选的,所述修改方式包括:
修改的连续周期数、持续时长、是否自动计算CRC。
可选的,所述S4包括:
S41,判断修改规则对象列表是否包含筛选表达式;
S42,解析数据报文到数据字典,并遍历修改规则对象列表,进行S43、S44、S45的操作;
S43,判断取出的规则是否是删除报文模式;
S44,判断取出的规则是否是按字节修改模式;
S45,按照字段名称规则修改报文;
S46,将修改完的数据字典序列化成数据报文,并结束本次修改。
可选的,所述S41包括:
S411,判断修改规则对象列表是否包含筛选表达式;
S412,如果包含筛选表达式,则解析数据报文到数据字典并判断数据字典是否满足筛选表达式;
S413,如果不满足筛选条件则跳出修改;
S414,否则进入下一步。
可选的,所述S43包括:
S431,如果取出的规则是删除报文模式,则直接删除报文,并结束本次修改;
S432,如果不是,则进入下一步。
可选的,所述S44包括:
S441,如果取出的规则是按字节修改模式,则直接按字节修改报文,并结束本次修改;
S442,否则进入下一步。
可选的,所述S45包括:
S451,如果取出的规则是值替换规则,则根据规则替换数据字典中指定字段的值,并进入下一个循环;
S452,如果取出的规则是自增自减规则,则根据规则加减数据字典中指定字段的值,并进入下一个循环;
S453,如果取出的规则是数组增删改规则,则根据规则对字典中指定字段的值进行增删改等操作,并进入下一个循环;
S454,如果取出的规则是码流替换规则,则根据规则对数据字典中指定字段的值进行码流替换操作,并进入下一个循环。
本申请提供的技术方案带来的有益效果是:
采用JSON格式表达任意嵌套的报文结构,定义报文修改规则。该方法的发明,大大减少了故障注入测试的人力投入,并使得部分之前无法测试的项成为可能。经过统计,基于该方法开发的工具投入使用后,每个版本的接口测试节省了95%以上的时间,用例覆盖率增加了30%以上。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提出的基于自定义JSON规则的二进制数据报文修改方法的流程示意图;
图2为本申请实施例提出的使用现有技术用户看到的数据报文图;
图3为本申请实施例提出的使用本方法修改报文用户看到的数据报文修改界面图;
图4为本申请实施例提出的具体的修改流程图。
具体实施方式
为使本申请的结构和优点更加清楚,下面将结合附图对本申请的结构作进一步地描述。
实施例一
具体的,本申请实施例提出的基于自定义JSON规则的二进制数据报文修改方法,如图1所示,包括:
S1,截获各子系统内部以及子系统之间的二进制数据报文,根据xml报文配置文件对截获到的二进制报文进行递归解析,得到数据字典;
S2,对产生的数据字典进行序列化处理,将得到JSON字符串传给前端网页生成以树或视图方式显示的报文修改界面;
S3,接收用户基于报文修改界面发出的JSON格式的报文修改请求,基于报文修改请求生成报文修改规则对象列表;
S4,添加报文修改规则对象列表至修改任务队列中并按预设修改逻辑进行报文修改处理。
在实施中,为了解决当前修改二进制数据报文过程不直观、繁琐、重复、效率低等问题,本申请提出了一种基于自定义JSON规则的二进制报文修改方法。测试人员使用该方法开发的工具可以查看数据报文解析后的数据字典(JSON形式)的。此外还可以使用基于使用JSON配置规则自定义的一套数据报文修改规则,灵活地修改数据报文。
具体的,执行步骤S1、S2可以将二进制数据报文递归地转换为JSON字符串,并以树和视图等对人类阅读友好的形式呈现给用户。相对于现有技术中需要观察图2所示的十六进制字符串序列、拆分报文、执行进制转换的操作,本方法可以直观地看到每个字段的解析情况,使修改过程更直观。
其次,通过预先自定义、且可自由扩展的JSON修改规则,解决了修改过程繁琐、重复、效率低的问题。只需要指定修改的字段名称、以及修改后的值就可以完成报文的修改。现有技术的修改报文的界面如图2所示,执行本方法修改报文的界面如图3所示。
进行报文转换前,需要执行步骤S3对用户的修改请求进行处理,以便适应后续的报文筛选操作,具体的,步骤S3包括:
S31,接收用户基于报文修改界面发出的JSON格式的修改请求;
S32,对JSON格式的修改请求进行解析,得到待修改的报文的修改方式、字段定位符以及修改详情;
S33,构建对应报文的修改规则对象列表。
其中,修改详情包括:修改的连续周期数、持续时长、是否自动计算CRC。
在执行步骤S3后,就可以执行步骤S4对报文进行修改,具体的,步骤S4包括:
S41,判断修改规则对象列表是否包含筛选表达式;
S42,解析数据报文到数据字典,并遍历修改规则对象列表,进行S43、S44、S45的操作;
S43,判断取出的规则是否是删除报文模式;
S44,判断取出的规则是否是按字节修改模式;
S45,按照字段名称规则修改报文;
S46,将修改完的数据字典序列化成数据报文,并结束本次修改。
对应上述步骤的修改流程示意图如图4所示。
在实施中,报文修改的逻辑规分为不同的种类,有根据解析后的数据字典内容筛选报文的规则,有直接删除报文的规则,有按照字节修改二进制数据报文的规则:还有些规则是先将二进制数据报文递归地解析成字典,再指定字段名称和修改内容修改报文。
由于报文的规则较多,因此需要对每一类规则进行步骤分解,判断修改规则对象列表是否包含筛选表达式步骤,即S41包括:
S411,判断修改规则对象列表是否包含筛选表达式;
S412,如果包含筛选表达式,则解析数据报文到数据字典并判断数据字典是否满足筛选表达式;
S413,如果不满足筛选条件则跳出修改;
S414,否则进入下一步。
具体的,判断取出的规则是否是删除报文模式步骤,即S43包括:
S431,如果取出的规则是删除报文模式,则直接删除报文,并结束本次修改;
S432,如果不是,则进入下一步。
可选的,判断取出的规则是否是按字节修改模式步骤,即S44包括:
S441,如果取出的规则是按字节修改模式,则直接按字节修改报文,并结束本次修改;
S442,否则进入下一步。
可选的,按照字段名称规则修改报文,即步骤S45包括:
S451,如果取出的规则是值替换规则,则根据规则替换数据字典中指定字段的值,并进入下一个循环;
S452,如果取出的规则是自增自减规则,则根据规则加减数据字典中指定字段的值,并进入下一个循环;
S453,如果取出的规则是数组增删改规则,则根据规则对字典中指定字段的值进行增删改等操作,并进入下一个循环;
S454,如果取出的规则是码流替换规则,则根据规则对数据字典中指定字段的值进行码流替换操作,并进入下一个循环;
在实施中,示例性的,基于JSON格式的自定义的报文修改规则列出如下部分:
1.替换某一个字段名称对应的值
{"age":31}
2.替换一个嵌套报文内部字段对应的值
{"skill.cpp":"master"}
3.替换数组中某一项的值
{"hobbies[1]":"reading"}
{"friends[0].skill":{"python":"master"}}
4.替换嵌套数组中某一项的值
{"friends[0].skill.csharp":"master"}
5.替换时的自动进制转换,以下操作结果都是相同的
{"luckynumber":13}
{"luckynumber":"13"}
{"luckynumber":"0x0D"}
{"luckynumber":"0b1101"}
6.某一个字段的值新增或减少
{"friends_count":"+3"}
{"friends_count":"-1"}
{"friends[0].friends_count":"+5"}
9.数组操作(追加多个)
11.报文过滤
12.按字节修改
13.删除报文
除了上述执行方式外,在进行报文修改过程中,每修改一次都更新一下修改任务状态,修改任务状态不满足,则从修改队列移除。
本申请实施例提出了基于自定义JSON规则的二进制报文修改方法,解决了通过指定字节位置和指定字节内容完成二进制数据报文故障注入测试存在的不直观、不方便、部分测试不可能等问题。该方法采用JSON格式表达任意嵌套的报文结构,定义报文修改规则。该方法的发明,大大减少了故障注入测试的人力投入,并使得部分之前无法测试的项成为可能。经过统计,基于该方法开发的工具投入使用后,每个版本的接口测试节省了95%以上的时间,用例覆盖率增加了30%以上。
上述实施例中的各个序号仅仅为了描述,不代表各部件的组装或使用过程中的先后顺序。
以上所述仅为本申请的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (7)

1.基于自定义JSON规则的二进制数据报文修改方法,其特征在于,所述方法包括:
S1,截获各子系统内部以及子系统之间的二进制数据报文,根据xml报文配置文件对截获到的二进制报文进行递归解析,得到数据字典;
S2,对产生的数据字典进行序列化处理,将得到JSON字符串传给前端网页生成以树或视图方式显示的报文修改界面;
S3,接收用户基于报文修改界面发出的JSON格式的报文修改请求,基于报文修改请求生成报文修改规则对象列表;
S4,添加报文修改规则对象列表至修改任务队列中并按预设修改逻辑进行报文修改处理;
所述S4包括:
S41,判断修改规则对象列表是否包含筛选表达式;
S42,解析数据报文到数据字典,并遍历修改规则对象列表,进行S43、S44、S45的操作;
S43,判断取出的规则是否是删除报文模式;
S44,判断取出的规则是否是按字节修改模式;
S45,按照字段名称规则修改报文;
S46,将修改完的数据字典序列化成数据报文,并结束本次修改。
2.根据权利要求1所述的基于自定义JSON规则的二进制数据报文修改方法,其特征在于,所述S3包括:
S31,接收用户基于报文修改界面发出的JSON格式的修改请求;
S32,对JSON格式的修改请求进行解析,得到待修改的报文的修改方式、字段定位符以及修改详情;
S33,构建对应报文的修改规则对象列表。
3.根据权利要求2所述的基于自定义JSON规则的二进制数据报文修改方法,其特征在于,所述修改方式包括:
修改的连续周期数、持续时长、是否自动计算CRC。
4.根据权利要求1所述的基于自定义JSON规则的二进制数据报文修改方法,其特征在于,所述S41包括:
S411,判断修改规则对象列表是否包含筛选表达式;
S412,如果包含筛选表达式,则解析数据报文到数据字典并判断数据字典是否满足筛选表达式;
S413,如果不满足筛选条件则跳出修改;
S414,否则进入下一步。
5.根据权利要求1所述的基于自定义JSON规则的二进制数据报文修改方法,其特征在于,所述S43包括:
S431,如果取出的规则是删除报文模式,则直接删除报文,并结束本次修改;
S432,如果不是,则进入下一步。
6.根据权利要求1所述的基于自定义JSON规则的二进制数据报文修改方法,其特征在于,所述S44包括:
S441,如果取出的规则是按字节修改模式,则直接按字节修改报文,并结束本次修改;
S442,否则进入下一步。
7.根据权利要求1所述的基于自定义JSON规则的二进制数据报文修改方法,其特征在于,所述S45包括:
S451,如果取出的规则是值替换规则,则根据规则替换数据字典中指定字段的值,并进入下一个循环;
S452,如果取出的规则是自增自减规则,则根据规则加减数据字典中指定字段的值,并进入下一个循环;
S453,如果取出的规则是数组增删改规则,则根据规则对字典中指定字段的值进行增删改等操作,并进入下一个循环;
S454,如果取出的规则是码流替换规则,则根据规则对数据字典中指定字段的值进行码流替换操作,并进入下一个循环。
CN202210802852.7A 2022-07-07 2022-07-07 基于自定义json规则的二进制数据报文修改方法 Active CN115378854B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210802852.7A CN115378854B (zh) 2022-07-07 2022-07-07 基于自定义json规则的二进制数据报文修改方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210802852.7A CN115378854B (zh) 2022-07-07 2022-07-07 基于自定义json规则的二进制数据报文修改方法

Publications (2)

Publication Number Publication Date
CN115378854A CN115378854A (zh) 2022-11-22
CN115378854B true CN115378854B (zh) 2023-11-14

Family

ID=84062330

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210802852.7A Active CN115378854B (zh) 2022-07-07 2022-07-07 基于自定义json规则的二进制数据报文修改方法

Country Status (1)

Country Link
CN (1) CN115378854B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1859268A (zh) * 2006-02-20 2006-11-08 华为技术有限公司 一种后台进行正反向解析报文的方法和系统
CN104410667A (zh) * 2014-10-31 2015-03-11 北京思特奇信息技术股份有限公司 一种xml报文到json报文的转换方法及系统
CN110971704A (zh) * 2019-12-11 2020-04-07 杭州安恒信息技术股份有限公司 一种基于json配置文件的数据传输方法及装置
CN111753164A (zh) * 2019-03-27 2020-10-09 北京京东尚科信息技术有限公司 链路事件引导方法、装置、电子设备及存储介质
CN113595817A (zh) * 2021-07-19 2021-11-02 上汽通用五菱汽车股份有限公司 一种lin通信故障注入方法、系统及存储介质
CN114490853A (zh) * 2022-01-27 2022-05-13 腾讯科技(深圳)有限公司 数据处理方法、装置、设备、存储介质及程序产品
CN114489625A (zh) * 2022-04-08 2022-05-13 北京优锘科技有限公司 将json格式文本转换为可视化配置工具的方法和装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10333709B2 (en) * 2016-04-25 2019-06-25 Barracuda Networks, Inc. Method and apparatus to support binary packing of JSON data
US11341317B2 (en) * 2019-10-16 2022-05-24 Oracle International Corporation Supporting piecewise update of JSON document efficiently

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1859268A (zh) * 2006-02-20 2006-11-08 华为技术有限公司 一种后台进行正反向解析报文的方法和系统
CN104410667A (zh) * 2014-10-31 2015-03-11 北京思特奇信息技术股份有限公司 一种xml报文到json报文的转换方法及系统
CN111753164A (zh) * 2019-03-27 2020-10-09 北京京东尚科信息技术有限公司 链路事件引导方法、装置、电子设备及存储介质
CN110971704A (zh) * 2019-12-11 2020-04-07 杭州安恒信息技术股份有限公司 一种基于json配置文件的数据传输方法及装置
CN113595817A (zh) * 2021-07-19 2021-11-02 上汽通用五菱汽车股份有限公司 一种lin通信故障注入方法、系统及存储介质
CN114490853A (zh) * 2022-01-27 2022-05-13 腾讯科技(深圳)有限公司 数据处理方法、装置、设备、存储介质及程序产品
CN114489625A (zh) * 2022-04-08 2022-05-13 北京优锘科技有限公司 将json格式文本转换为可视化配置工具的方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
可变报文格式编解码模块设计与实现;刘相;刘泽平;;电讯技术(11);全文 *

Also Published As

Publication number Publication date
CN115378854A (zh) 2022-11-22

Similar Documents

Publication Publication Date Title
US8447718B2 (en) Method and apparatus for filtering streaming data
US6564265B2 (en) Apparatus for encoding and decoding data according to a protocol specification
US8019709B2 (en) Method and system for rule-based content filtering
US20040054692A1 (en) Method for compressing/decompressing a structured document
CN105512182B (zh) 语音控制方法及智能电视
CN109739494B (zh) 一种基于Tree-LSTM的API使用代码生成式推荐方法
CN107885501B (zh) 获取Android中组件相互引用关系的方法及装置
CN110543421A (zh) 基于测试用例自动生成算法的单元测试自动执行方法
CN113238740B (zh) 代码生成方法、代码生成装置、存储介质及电子设备
US8442928B2 (en) Method and apparatus for employing rules to filter streaming data
CN114513566A (zh) 自定义网络协议解析方法、系统、介质及电子设备
CN107729001B (zh) 一种表达式处理方法和装置
CN112464620A (zh) 一种财务规则引擎的实现方法及实现系统
CN111464515A (zh) 一种数据转换方法、装置、设备及存储介质
CN115378854B (zh) 基于自定义json规则的二进制数据报文修改方法
CN112667795B (zh) 对话树构建方法和装置、对话树运行方法、装置以及系统
WO2024148880A1 (zh) 一种基于多源异构数据的系统检测方法及装置
CN106326090A (zh) 一种实现测试用例构建的方法及装置
CN116643739A (zh) 决策引擎实现方法、装置、设备及存储介质
CN113760734A (zh) 一种数据准备方法及装置、设备、存储介质
CN111104122B (zh) 一种xml业务逻辑映射到java业务逻辑的方法
CN114979307B (zh) 通信协议的解析方法、智能终端及存储介质
CN115454702A (zh) 日志故障分析方法、装置、存储介质及电子设备
CN113223520B (zh) 一种软件操作实景语义理解的语音互动方法、系统及平台
CN112612470B (zh) 用户界面文件生成方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant