CN111930612A - 一种代码更新正确性的检测方法、装置及计算设备 - Google Patents

一种代码更新正确性的检测方法、装置及计算设备 Download PDF

Info

Publication number
CN111930612A
CN111930612A CN202010659335.XA CN202010659335A CN111930612A CN 111930612 A CN111930612 A CN 111930612A CN 202010659335 A CN202010659335 A CN 202010659335A CN 111930612 A CN111930612 A CN 111930612A
Authority
CN
China
Prior art keywords
response message
key
difference
type
code
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.)
Granted
Application number
CN202010659335.XA
Other languages
English (en)
Other versions
CN111930612B (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.)
Beijing Pierbulaini Software Co ltd
Original Assignee
Beijing Pierbulaini Software 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 Beijing Pierbulaini Software Co ltd filed Critical Beijing Pierbulaini Software Co ltd
Priority to CN202010659335.XA priority Critical patent/CN111930612B/zh
Publication of CN111930612A publication Critical patent/CN111930612A/zh
Application granted granted Critical
Publication of CN111930612B publication Critical patent/CN111930612B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/194Calculation of difference between files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Computer Security & Cryptography (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Debugging And Monitoring (AREA)
  • Input From Keyboards Or The Like (AREA)

Abstract

本发明公开了代码更新正确性的检测方法,包括:从部署先前代码的运行环境获取第一响应报文和第二响应报文,从部署有更新代码的运行环境获取第三响应报文;将第一响应报文与所述第三响应报文作对比得到第一差异集;确定第一、第二和第三类型差异;当第一差异集包括第一类型差异和/或第二类型差异时,确定更新代码存在错误;以及当第一差异集只包括第三类型差异时:将第一响应报文与第二响应报文作对比,得到第二差异集,从第二差异集中获取第三类型差异键‑值对;从第三类型差异中去除与所获取的差异键‑值对相对应的键‑值对;若去除后的第三类型差异不包括任何键‑值对,则更新代码不存在错误。

Description

一种代码更新正确性的检测方法、装置及计算设备
技术领域
本发明涉及计算机应用技术领域,特别涉及一种代码更新正确性的检测方法、装置及计算设备。
背景技术
随着网络技术的快速发展,软件更新迭代的速度也随之变快,当软件更新迭代时对更新代码进行测试,是保障更新迭代后的软件可靠性和稳定性的关键环节。目前多通过回归测试对更新代码进行测试,回归测试是将已抓取的线上/线下流量回放至部署了更新代码和先前代码的运行环境,并以先前代码运行环境得到的HTTP响应报文作为基础,与更新代码运行环境得到的HTTP响应报文进行人工比对得到差异,基于两个HTTP响应报文中的差异判断新代码是否存在问题。
目前通过人工比对先前代码运行环境得到的HTTP响应报文和更新代码运行环境得到的HTTP响应报文之间差异的方法包括:人工对本次测试***中提前预知需要忽略的响应报文的字段进行配置,在对先前代码运行环境得到的HTTP响应报文和新代码运行环境得到的HTTP响应报文进行比对时,忽略已配置的字段对应的差异;或通过人工对需要忽略的HTTP响应报文中部分字段进行正则替换配置,在人工对先前代码运行环境得到的HTTP响应报文和更新代码运行环境得到的HTTP响应报文进行比对时,先将通过正则表达式匹配的差异替换为相同的值后再比对。但是,上述通过人工预先配置比对时需要忽略字段对应差异的方法来判断更新代码的正确性,过程繁琐且十分耗时。
为此,需要一种新的代码更新正确性的检测方法来解决上述技术方案中存在的问题。
发明内容
为此,本发明提供一种代码更新正确性的检测方法、***及计算设备,以解决或至少缓解上面存在的问题。
根据本发明的一个方面,提供了一种代码更新正确性的检测方法,在计算设备中执行,所述计算设备中部署有运行先前代码和更新代码的运行环境,所述方法包括:
从部署有先前代码的运行环境获取第一响应报文和第二响应报文,并从部署有更新代码的运行环境获取第三响应报文,所述第一、第二和第三响应报文都包括一个或者多个键-值对;
将所述第一响应报文与所述第三响应报文作对比,以得到第一差异集;
确定第一、第二和第三类型差异,所述第一类型差异包括键在第一响应报文中存在而第三响应报文中不存在的键-值对,所述第二类型差异包括键在第一响应报文中不存在而在第三响应报文中存在的键-值对,以及所述第三类型差异包括键在第一和第三响应报文中都存在而对应键值在第一响应报文和第三响应报文中不一致的键-值对;
当所述第一差异集包括第一类型差异和/或第二类型差异时,确定所述更新代码存在错误;以及
当所述第一差异集只包括第三类型差异时:
将所述第一响应报文与所述第二响应报文作对比,以得到第二差异集,从所述第二差异集中获取键在第一和第二响应报文中都存在而对应键值在第一响应报文和第二响应报文中不一致的差异键-值对;
从所述第三类型差异中去除与所获取的差异键-值对相对应的键-值对;以及
如果去除后的第三类型差异不包括任何键-值对,则所述更新代码不存在错误。
可选地,所述将所述第一响应报文与所述第三响应报文作对比,以得到第一差异集,包括:
从所述第一响应报文中提取所有节点对应的路径和值,其中,所述节点包括叶子节点;
将每一节点对应的路径作为键、值作为键值组成一个键-值对,得到的一个或多个键-值对作为第一集合;
从所述第三响应报文中提取所有节点对应的路径和值,其中,所述节点包括叶子节点;
将每一节点对应的路径作为键、值作为键值组成一个键-值对,得到的一个或多个键-值对作为第三集合;
将所述第一集合和第三集合作对比,得到所述第一差异集。
可选地,所述方法还包括:
对所述第一响应报文、所述第二响应报文以及所述第三响应报文中部分键-值对的键值进行排序,得到排序后的所述第一响应报文、所述第二响应报文以及所述第三响应报文;
将排序后的所述第一响应报文与所述第三响应报文作对比,以得到新的第一差异集,所述新的第一差异集中仅包括第三类型差异,所述新的第一差异集中的第三类型差异与所述第一差异集中的第三类型差异不同。
可选地,所述对所述第一响应报文、所述第二响应报文以及所述第三响应报文中部分键-值对的键值进行排序,包括:
从所述第一响应报文、第二响应报文以及第三响应报文中取出部分键-值对;
将取出的部分键-值对的键值进行排序,得到排序后的部分键-值对;
将所述排序后的部分键-值对放回与所述第一响应报文、第二响应报文以及第三响应报文取出部分键-值对相对应的位置处。
可选地,所述将所述第一响应报文与所述第二响应报文作对比,以得到第二差异集,包括:
将排序后的所述第一响应报文与所述第二响应报文作对比,得到新的第二差异集;
从所述新的第二差异集中获取键在第一和第二响应报文中都存在而对应键值在第一响应报文和第二响应报文中不一致的差异键-值对,作为新的差异键-值对。
可选地,所述从所述第三类型差异中去除与所获取的差异键-值对相对应的键-值对,包括:
从所述新的第一差异集的第三类型差异中去除与所获取的新的差异键-值对相对应的键-值对。
可选地,按照如下顺序从部署有先前代码的运行环境获取第一响应报文和第二响应报文,并从部署有更新代码的运行环境获取第三响应报文:
从部署有先前代码的运行环境获取第一响应报文;
从部署有更新代码的运行环境获取第三响应报文;以及
从部署有先前代码的运行环境获取第二响应报文。
根据本发明的一个方面,提供了一种代码更新正确性的检测装置,在计算设备中执行,所述计算设备中部署有运行先前代码和更新代码的运行环境,所述装置包括:
获取模块,通过上述获取模块从部署有先前代码的运行环境获取第一响应报文和第二响应报文,并从部署有更新代码的运行环境获取第三响应报文,所述第一、第二和第三响应报文都包括一个或者多个键-值对;
对比模块,通过所述对比模块将所述第一响应报文与所述第三响应报文作对比,以得到第一差异集;以及当所述第一差异集只包括第三类型差异时:通过所述对比模块将所述第一响应报文与所述第二响应报文作对比,以得到第二差异集,其中,从所述第二差异集中获取键在第一和第二响应报文中都存在而对应键值在第一响应报文和第二响应报文中不一致的差异键-值对,作为第一键值对;
差异类型确定模块,通过差异类型确定模块确定第一、第二和第三类型差异,所述第一类型差异包括键在第一响应报文中存在而第三响应报文中不存在的键-值对,所述第二类型差异包括键在第一响应报文中不存在而在第三响应报文中存在的键-值对,以及所述第三类型差异包括键在第一和第三响应报文中都存在而对应键值在第一响应报文和第三响应报文中不一致的键-值对;
判断模块,当所述第一差异集包括第一类型差异和/或第二类型差异时,通过所述判断模块确定所述更新代码存在错误;以及如果去除后的第三类型差异不包括任何键-值对,则通过所述判断模块判断所述更新代码不存在错误。
去除模块,当所述第一差异集只包括第三类型差异时:通过所述去除模块从所述第三类型差异中去除与所获取的差异键-值对相对应的键-值对。
根据本发明的一个方面,提供了一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如上所述方法的指令。
根据本发明的一个方面,提供了一种存储有程序指令的可读存储介质,当所述程序指令被移动终端读取并执行时,使得所述移动终端执行如上所述方法。
根据本发明的技术方案,提供了一种代码更新正确性的检测方法,在第一次运行先前代码得到的响应报文与运行更新代码得到的响应报文进行第一次比较,得到第一差异集,再从第一差异集中去除第一次、第二次运行先前代码获得的响应报文之间的差异,从而实现两次比较差异,上述两次比较差异d方法能够消除时间戳等导致的差异,排除时间戳等导致的差异使得对于更新代码的正确性判断出现偏差的情况,可以更好地确定代码部署是否存在错误。
其次,上述两次比较差异的方法实现简单,可将差异项自动进行归类,能够自动识别被称为噪音的差异,并在测试更新代码过程中自动地过滤被识别为噪音的差异,因此,无需人工预先配置,使得判定更新代码是否正确的效率极大地提高,且在此基础上仍可叠加人工对响应报文中部分节点的忽略配置。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的计算设备100的示意图;
图2示出了根据本发明一个实施例的一种代码更新正确性的检测方法200的示意图;
图3示出了根据本发明一个实施例的第一差异集确定方法300的流程图;
图4示出了根据本发明另一个实施例的一种代码更新正确性的检测方法400的示意图;
图5示出了根据本发明一个实施例的一种代码更新正确性的检测装置500的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
对于软件的更新迭代,是提升软件性能的常规做法。现有技术中主要通过对更新代码进行测试,以保障更新迭代后的软件的可靠性和稳定性。目前多通过回归测试对更新代码的正确性进行判定,回归测试是将已抓取的线上/线下流量回放至部署了新代码和先前代码的运行环境,并以先前代码运行环境得到的HTTP响应报文作为基础,与新代码运行环境得到的HTTP响应报文进行人工比对得到差异,基于两个HTTP响应报文中的差异判断新代码是否存在问题。
其中,先前代码运行环境得到的HTTP响应报文作与新代码运行环境得到的HTTP响应报文之间的差异包括以下四种类型差异:1)两个响应报文中键-值对的键值(value)不同,例如时间戳类字段,此类差异并不是代码更新造成的,在更新代码测试过程中可忽略,因此在比对报文时此类差异被称为噪音差异;2)两个报文键-值对的键不同,当出现此类差异时则判定更新代码存在错误,在比对报文时此类差异不能忽略;3)两个报文中键-值对的value个数或顺序不同,此类差异并也不是代码更新造成的,在更新代码测试过程中可忽略,在比对报文时此类差异同样被称为噪音差异;4)两个响应报文的响应码和/或响应头不同,当出现此类差异时判定更新代码存在错误,在比对报文时此类差异不能忽略。
由于视为噪音的差异并不是由于代码的更新而造成的,在比对差异时噪音差异较多会降低比对效率,因此目前为了提高代码更新正确性的检测效率,在对更新代码进行测试之前,通过人工预先配置对比时需要忽略的响应报文中的字段,以在测试过程中过滤掉字段对应的差异,即在测试更新代码时尽可能的过滤掉上述第1)和3)两种类型差异,并基于测试得到的差异判定更新代码是否正确。
但是,上述通过人工预先配置比对响应报文时需要忽略的字段,配置过程繁琐且十分耗时,且过滤被视为噪音的差异效果差。因此,为了解决上述问题,本发明提出了一种代码更新正确性的检测方法,该方法在计算设备100中执行,计算设备100中部署有运行先前代码和更新代码的运行环境,即计算设备100中部署有可运行先前代码和更新代码的应用。
本发明中,通过将已抓取的线上/线下流量回放至部署了先前代码和更新代码的计算设备100的运行环境中,将线上/线下流量两次回放至部署了先前代码的运行环境中,得到先前代码对应的第一响应报文、第二响应报文,将线上/线下流量一次回放至部署了更新代码的运行环境中,得到更新代码对应的第三响应报文,将第一响应报文与第三响应报文作对比,以得到第一差异集,并基于预先确定的三种差异类型,当第一差异集包括第一类型差异和/或第二类型差异时,确定更新代码存在错误,当第一差异集只包括第三类型差异时:将第一响应报文与第二响应报文作对比,以得到第二差异集,从第二差异集中获取键在第一和第二响应报文中都存在而对应键值在第一响应报文和第二响应报文中不一致的差异键-值对,并从第三类型差异中去除与所获取的差异键-值对相对应的键-值对,如果去除后的第三类型差异不包括任何键-值对,则更新代码正确。本发明通过上述方法,可将差异项自动进行归类,能够自动识别被称为噪音的差异,并在测试更新代码过程中自动地过滤被识别为噪音的差异,尤其能够100%过滤时间戳类字段的差异,实现简单,且无需人工预先配置,使得判定更新代码是否正确的效率极大地提高。
图1示出了根据本发明一个实施例的计算设备100的结构图。如图1所示,在基本的配置102中,计算设备100典型地包括***存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和***存储器106之间的通信。
取决于期望的配置,处理器104可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器118可以与处理器104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。
取决于期望的配置,***存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。***存储器106可以包括操作***120、一个或者多个应用122以及程序数据124。应用122实际上是多条程序指令,其用于指示处理器104执行相应的操作。在一些实施方式中,应用122可以布置为在操作***上使得处理器104利用程序数据124进行操作。
计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图形处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个A/V端口152与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个I/O端口158和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
在根据本发明的计算设备100中,应用122包括代码更新正确性的检测方法的多条程序指令,这些程序指令可以指示处理器104执行本发明的一种代码更新正确性的检测方法200,以便计算设备100通过执行本发明的一种代码更新正确性的检测方法200自动过滤噪音差异,进而高效判定更新代码是否存在错误。
图2示出了根据本发明一个实施例的图片集中的代码更新正确性的检测方法200的示意性流程图。该方法200可以在计算设备100的应用中执行。
如图2所示,方法始于步骤S210。在步骤S210中,从部署有先前代码的运行环境获取第一响应报文和第二响应报文,并从部署有更新代码的运行环境获取第三响应报文。可以理解的是,本发明在部署先前代码的运行环境中运行两次先前代码,从而获取第一响应报文和第二响应报文,在部署更新代码的运行环境中运行一次更新代码,从而获取第三响应报文。且第一、第二和第三响应报文中都包括一个或者多个键-值对。
在得到先前代码对应的响应报文和更新代码对应的响应报文之后,需要比较两个报文之间的差异,才能判定更新代码的正确性。随后在步骤S220中,将第一响应报文与第三响应报文作对比,以得到第一差异集。图300为第一差异集确定方法的流程图,第一差异集确定方法300始于步骤S310。在步骤S310中,从第一响应报文中提取所有节点对应的路径和值,由于响应报文将参数保存在json文本中,因此从第一响应报文的json文本中提取所有节点对应的路径和值,节点中包括叶子节点。
随后在步骤S320中,将每一节点对应的路径作为键、值作为键值组成一个键-值对,得到的一个或多个键-值对作为第一集合。
确定第一集合后,在步骤S330中,从第三响应报文中提取所有节点对应的路径和值,进一步地,从第三响应报文的json文本中提取所有节点对应的路径和值。
接下来在步骤S340中,将每一节点对应的路径作为键、值作为键值组成一个键-值对,得到的一个或多个键-值对作为第三集合。
在确定第一集合和第三集合后,在步骤S350中,将第一集合和第三集合作对比,得到第一差异集。在本发明的一个实施例中,通过com.***.common.collect.Maps提供的方法将第一集合和第三集合作对比进而得到第一差异集,但是本发明并不限于此,所有可以将第一集合和第三集合作对比进而得到第一差异集的方法均在本发明的保护范围之内。另外,为了更加清楚地了解响应报文的json文本与第一集合或第三集合的差异,下面给出了第一响应报文的json文本和第一集合的示例。
第一响应报文json文本:
Figure BDA0002577938030000101
Figure BDA0002577938030000111
第一集合示例:
{
"/Noticelist":"null"
"/UserName":"名字旧"
"/SysName":"管理***"
"/LogoffUrl":"http://"
"/MessageUrl":"http://"
"/NavList/0/Url":"/passport/Home/Index"
"/NavList/0/Class":"nav-home"
"/NavList/0/Name":"首页"
"/NavList/0/CnName":"首页"
"/NavList/0/IsCurrent":"false"
"/NavList/0/IsNew":""
"/NavList/0/IsFloat":"false"
"/NavList/0/IsService":"false"
"/NavList/0/OrderNum":"0.0"
}
基于第一响应报文的json文本和第一集合的对比,可以看出在第一集合中所有节点为同一等级,进而所有键-值对为同一等级,这样,可以方便比对第一集合和第三集合之间存在的差异,从而便于确定第一差异集。
由于需要过滤掉第一差异集中的噪音差异,进而排除噪音差异对判断更新代码是否正确的影响,因此需要定义差异类型,从而确定第一差异集中的差异类型。接下来在步骤S230中,确定第一、第二和第三类型差异。在本发明一个实施例中,定义第一类型差异包括键在第一响应报文中存在而第三响应报文中不存在的键-值对,第二类型差异包括键在第一响应报文中不存在而在第三响应报文中存在的键-值对,以及第三类型差异包括键在第一和第三响应报文中都存在而对应键值在第一响应报文和第三响应报文中不一致的键-值对,第三类型差异为上述的1)类型差异,即被视为噪音的差异。
通过上述方式定义了差异类型,就可以确定第一差异集中的差异类型,进而对更新代码是否正确进行判断,接下来在步骤S240中,当第一差异集包括第一类型差异和/或第二类型差异时,确定更新代码存在错误,当第一差异集中没有任何差异时,则更新代码正确,然而在步骤S250中,当第一差异集只包括第三类型差异时,在步骤S260中,将第一响应报文与第二响应报文作对比,以得到第二差异集,并从第二差异集中获取键在第一和第二响应报文中都存在而对应键值在第一响应报文和第二响应报文中不一致的差异键-值对。随后在步骤S270中,从第三类型差异中去除与所获取的差异键-值对相对应的键-值对。接下来在步骤S280中,如果去除后的第三类型差异不包括任何键-值对,则更新代码不存在错误。
然而,当计算设备100的接口存在秒级时间戳时,可能出现因响应时间很短,使得对两次先前代码运行环境的请求在1秒内时间戳没变的情况,也就无法将时间戳差异(即上述1)类型差异)识别到第二差异集的第三类型差异。而请求更新代码运行环境时,由于时间戳改变,使得第一差异集的第三类型差异中包括时间戳差异,在从第三类型差异中去除所获取的差异键-值对相对应的键-值对之后,第三类型差异中仍然存在时间戳差异,此时计算设备100会做出更新代码存在错误的判断,但是实际上时间戳差异并不是由于代码更新导致的,因此出现误判的情况。
为了解决上述问题,本发明一个实施方式中,按照如下顺序从部署有先前代码的运行环境获取第一响应报文和第二响应报文,并从部署有更新代码的运行环境获取第三响应报文:从部署有先前代码的运行环境获取第一响应报文,从部署有更新代码的运行环境获取第三响应报文,以及从部署有先前代码的运行环境获取第二响应报文。
这样,如果两次请求先前代码的时间戳改变则其会被识别为差异,而如果两次请求先前代码时间戳没变,那么时间是流逝的,夹在中间请求的更新代码时间戳必然也是一致的,则从第三类型差异中去除所获取的差异键-值对相对应的键-值对之后,第三类型差异中不会存在时间戳差异,也就不会出现误判的情况。
本发明通过上述方法,可将差异项自动进行归类,能够自动识别被称为噪音的差异,并在测试更新代码过程中自动地过滤被识别为噪音的差异,尤其能够100%过滤时间戳类字段的差异,实现简单,且无需人工预先配置,使得判定更新代码是否正确的效率极大地提高,且在此基础上仍可叠加人工对响应报文中部分节点的忽略配置。
由于第一差异集的第三类型差异可能包括1)类型差异和3)类型差异,因此,在本明的另一个实施例中,在代码更新正确性的检测方法200的基础之上,预先对3)类型差异对应的响应报文内容进行配置,以在测试过程中过滤掉第三类型差异可能包括的所有1)类型差异和3)类型差异。图400为本发明另一个实施例的代码更新正确性的检测方法的示意图,代码更新正确性的检测方法400始于步骤S401,止于步骤S410。其中,步骤S401-步骤S405与步骤S210-步骤S250相同,此处不再赘述,接下来对步骤S406-步骤S410进行介绍。
在步骤S405中确定当第一差异集只包括第三类型差异时:则在步骤S406中,对第一响应报文、第二响应报文以及第三响应报文中部分键-值对的键值进行排序,得到排序后的第一响应报文、第二响应报文以及第三响应报文。例如,从3个响应报文中取出指定的子节点(键-值对的键),该子节点如果不是数组则忽略,如果是数组则对该子节点内第一层元素(键对应的键值)进行文本排序,然后将子节点和对应的排序后的第一层元素(排序后的键-值对)放回json文本的原子节点和对应的第一层元素相对应的位置处,这样对排序后的响应报文进行比对时,就会过滤掉被视为噪音的3)类型差异,也就不会因数组顺序不同而造成更新代码存在错误的误判。但是本发明并不限于上述方法,任何能够对第一响应报文、第二响应报文以及第三响应报文中键-值对进行排序的方法均在本发明的保护范围之内。
随后在步骤S407中,将排序后的第一响应报文与第三响应报文作对比,以得到新的第一差异集。其中,新的第一差异集中仅包括第三类型差异,且过滤掉了新的第一差异集中第三类型差异的3)类型差异,因此,新的第一差异集的第三类型差异仅包括1)类型差异,新的第一差异集中的第三类型差异与第一差异集中的第三类型差异不同。
确定第一差异集后,在步骤S408中,将排序后的第一响应报文与第二响应报文作对比,得到新的第二差异集,并从新的第二差异集中获取键在第一和第二响应报文中都存在而对应键值在第一响应报文和第二响应报文中不一致的差异键-值对,作为新的差异键-值对,并在步骤S409中,从新的第一差异集的第三类型差异中去除与所获取的新的差异键-值对相对应的键-值对。接下来在步骤S410中,如果去除后的新的第一差异集的第三类型差异不包括任何键-值对,则更新代码不存在错误。
本发明通过上述方法,可将差异项自动进行归类,能够自动识别被称为噪音的差异,并在测试更新代码过程中自动地过滤掉所有被视为噪音的差异,实现简单,且无需人工预先配置,使得判定更新代码是否正确的效率极大地提高。
图5示出了根据本发明一个实施例的代码更新正确性的检测装置500的示意图。代码更新正确性的检测装置500适于执行本发明的代码更新正确性的检测方法200。代码更新正确性的检测装置500驻留在计算设备100中,以使计算设备100执行本发明的代码更新正确性的检测方法200。
如图5所示,代码更新正确性的检测装置500包括获取模块510、对比模块520、差异类型确定模块530、判断模块540以及去除模块550。
根据一个实施例,通过获取模块510从部署有先前代码的运行环境获取第一响应报文和第二响应报文,并从部署有更新代码的运行环境获取第三响应报文,所述第一、第二和第三响应报文都包括一个或者多个键-值对;
根据一个实施例,通过对比模块520将所述第一响应报文与所述第三响应报文作对比,以得到第一差异集;以及当所述第一差异集只包括第三类型差异时:通过对比模块520将所述第一响应报文与所述第二响应报文作对比,以得到第二差异集,其中,从所述第二差异集中获取键在第一和第二响应报文中都存在而对应键值在第一响应报文和第二响应报文中不一致的差异键-值对,作为第一键值对;
根据一个实施例,通过差异类型确定模块530确定第一、第二和第三类型差异,所述第一类型差异包括键在第一响应报文中存在而第三响应报文中不存在的键-值对,所述第二类型差异包括键在第一响应报文中不存在而在第三响应报文中存在的键-值对,以及所述第三类型差异包括键在第一和第三响应报文中都存在而对应键值在第一响应报文和第三响应报文中不一致的键-值对;
根据一个实施例,当所述第一差异集包括第一类型差异和/或第二类型差异时,通过判断模块540确定所述更新代码存在错误;以及如果去除后的第三类型差异不包括任何键-值对,则通过判断模块540判断所述更新代码不存在错误。
根据一个实施例,当所述第一差异集只包括第三类型差异时:通过去除模块550从所述第三类型差异中去除与所获取的差异键-值对相对应的键-值对。
需要说明的是,获取模块510具体用于执行如前述步骤S210的方法,对比模块520具体用于执行如前述步骤S220、S250-S260的方法,差异类型确定模块530具体用于执行如前述步骤S230的方法,判断模块540具体用于执行如前述步骤S240和S280的方法,去除模块550具体用于执行如前述步骤S270的方法,关于获取模块510、对比模块520、差异类型确定模块530、判断模块540以及去除模块550的处理逻辑和功能可以参见前述步骤S210~S280的相关描述,此处不再赘述。同样地,代码更新正确性的检测装置500适于执行本发明另一个实施例的代码更新正确性的检测方法400,此处不再赘述。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,移动终端一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的代码更新正确性的检测方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟***或者其它设备固有相关。各种通用***也可以与本发明的示例一起使用。根据上面的描述,构造这类***所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机***的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的而非限制性的,本发明的范围由所附权利要求书限定。

Claims (10)

1.一种代码更新正确性的检测方法,在计算设备中执行,所述计算设备中部署有运行先前代码和更新代码的运行环境,所述方法包括:
从部署有先前代码的运行环境获取第一响应报文和第二响应报文,并从部署有更新代码的运行环境获取第三响应报文,所述第一、第二和第三响应报文都包括一个或者多个键-值对;
将所述第一响应报文与所述第三响应报文作对比,以得到第一差异集;
确定第一、第二和第三类型差异,所述第一类型差异包括键在第一响应报文中存在而第三响应报文中不存在的键-值对,所述第二类型差异包括键在第一响应报文中不存在而在第三响应报文中存在的键-值对,以及所述第三类型差异包括键在第一和第三响应报文中都存在而对应键值在第一响应报文和第三响应报文中不一致的键-值对;
当所述第一差异集包括第一类型差异和/或第二类型差异时,确定所述更新代码存在错误;以及
当所述第一差异集只包括第三类型差异时:
将所述第一响应报文与所述第二响应报文作对比,以得到第二差异集,从所述第二差异集中获取键在第一和第二响应报文中都存在而对应键值在第一响应报文和第二响应报文中不一致的差异键-值对;
从所述第三类型差异中去除与所获取的差异键-值对相对应的键-值对;以及
如果去除后的第三类型差异不包括任何键-值对,则所述更新代码不存在错误。
2.如权利要求1所述的方法,其中,所述将所述第一响应报文与所述第三响应报文作对比,以得到第一差异集,包括:
从所述第一响应报文中提取所有节点对应的路径和值,其中,所述节点包括叶子节点;
将每一节点对应的路径作为键、值作为键值组成一个键-值对,得到的一个或多个键-值对作为第一集合;
从所述第三响应报文中提取所有节点对应的路径和值,其中,所述节点包括叶子节点;
将每一节点对应的路径作为键、值作为键值组成一个键-值对,得到的一个或多个键-值对作为第三集合;
将所述第一集合和第三集合作对比,得到所述第一差异集。
3.如权利要求1所述的方法,所述方法还包括:
对所述第一响应报文、所述第二响应报文以及所述第三响应报文中部分键-值对的键值进行排序,得到排序后的所述第一响应报文、所述第二响应报文以及所述第三响应报文;
将排序后的所述第一响应报文与所述第三响应报文作对比,以得到新的第一差异集,所述新的第一差异集中仅包括第三类型差异,所述新的第一差异集中的第三类型差异与所述第一差异集中的第三类型差异不同。
4.如权利要求3所述的方法,其中,所述对所述第一响应报文、所述第二响应报文以及所述第三响应报文中部分键-值对的键值进行排序,包括:
从所述第一响应报文、第二响应报文以及第三响应报文中取出部分键-值对;
将取出的部分键-值对的键值进行排序,得到排序后的部分键-值对;
将所述排序后的部分键-值对放回与所述第一响应报文、第二响应报文以及第三响应报文取出部分键-值对相对应的位置处。
5.如权利要求3或4所述的方法,其中,所述将所述第一响应报文与所述第二响应报文作对比,以得到第二差异集,包括:
将排序后的所述第一响应报文与所述第二响应报文作对比,得到新的第二差异集;
从所述新的第二差异集中获取键在第一和第二响应报文中都存在而对应键值在第一响应报文和第二响应报文中不一致的差异键-值对,作为新的差异键-值对。
6.如权利要求5所述的方法,其中,所述从所述第三类型差异中去除与所获取的差异键-值对相对应的键-值对,包括:
从所述新的第一差异集的第三类型差异中去除与所获取的新的差异键-值对相对应的键-值对。
7.如权利要求1至6中任一项所述的方法,其中,按照如下顺序从部署有先前代码的运行环境获取第一响应报文和第二响应报文,并从部署有更新代码的运行环境获取第三响应报文:
从部署有先前代码的运行环境获取第一响应报文;
从部署有更新代码的运行环境获取第三响应报文;以及
从部署有先前代码的运行环境获取第二响应报文。
8.一种代码更新正确性的检测装置,在计算设备中执行,所述计算设备中部署有运行先前代码和更新代码的运行环境,所述装置包括:
获取模块,通过上述获取模块从部署有先前代码的运行环境获取第一响应报文和第二响应报文,并从部署有更新代码的运行环境获取第三响应报文,所述第一、第二和第三响应报文都包括一个或者多个键-值对;
对比模块,通过所述对比模块将所述第一响应报文与所述第三响应报文作对比,以得到第一差异集;以及当所述第一差异集只包括第三类型差异时:通过所述对比模块将所述第一响应报文与所述第二响应报文作对比,以得到第二差异集,其中,从所述第二差异集中获取键在第一和第二响应报文中都存在而对应键值在第一响应报文和第二响应报文中不一致的差异键-值对,作为第一键值对;
差异类型确定模块,通过差异类型确定模块确定第一、第二和第三类型差异,所述第一类型差异包括键在第一响应报文中存在而第三响应报文中不存在的键-值对,所述第二类型差异包括键在第一响应报文中不存在而在第三响应报文中存在的键-值对,以及所述第三类型差异包括键在第一和第三响应报文中都存在而对应键值在第一响应报文和第三响应报文中不一致的键-值对;
判断模块,当所述第一差异集包括第一类型差异和/或第二类型差异时,通过所述判断模块确定所述更新代码存在错误;以及如果去除后的第三类型差异不包括任何键-值对,则通过所述判断模块判断所述更新代码不存在错误。
去除模块,当所述第一差异集只包括第三类型差异时:通过所述去除模块从所述第三类型差异中去除与所获取的差异键-值对相对应的键-值对。
9.一种计算设备,包括:
至少一个处理器;以及
存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求1-7中任一项所述方法的指令。
10.一种存储有程序指令的可读存储介质,当所述程序指令被移动终端读取并执行时,使得所述移动终端执行如权利要求1-7中任一项所述方法。
CN202010659335.XA 2020-07-09 2020-07-09 一种代码更新正确性的检测方法、装置及计算设备 Active CN111930612B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010659335.XA CN111930612B (zh) 2020-07-09 2020-07-09 一种代码更新正确性的检测方法、装置及计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010659335.XA CN111930612B (zh) 2020-07-09 2020-07-09 一种代码更新正确性的检测方法、装置及计算设备

Publications (2)

Publication Number Publication Date
CN111930612A true CN111930612A (zh) 2020-11-13
CN111930612B CN111930612B (zh) 2024-03-19

Family

ID=73312269

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010659335.XA Active CN111930612B (zh) 2020-07-09 2020-07-09 一种代码更新正确性的检测方法、装置及计算设备

Country Status (1)

Country Link
CN (1) CN111930612B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113791983A (zh) * 2021-09-24 2021-12-14 北京顺源开华科技有限公司 应用代码的测试方法、装置以及电子设备

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106569844A (zh) * 2016-09-23 2017-04-19 北京五八信息技术有限公司 程序代码更新的处理方法、装置和设备
CN108491331A (zh) * 2018-04-13 2018-09-04 平安普惠企业管理有限公司 软件测试方法、装置、设备和计算机存储介质
CN108595200A (zh) * 2018-04-19 2018-09-28 北京微播视界科技有限公司 代码更新方法、图形更新方法、装置、存储介质和终端
CN109271313A (zh) * 2018-08-13 2019-01-25 中国平安财产保险股份有限公司 代码测试方法、装置及计算机可读存储介质
CN109460220A (zh) * 2018-10-19 2019-03-12 泰康保险集团股份有限公司 报文预定义代码生成方法、装置、电子设备和存储介质
CN109710522A (zh) * 2018-12-17 2019-05-03 平安普惠企业管理有限公司 代码测试方法、装置、计算机设备和存储介质
US10635566B1 (en) * 2017-07-31 2020-04-28 Cisco Technology, Inc. Predicting code change impact within an integrated development environment
US20200133656A1 (en) * 2018-10-30 2020-04-30 Walmart Apollo, Llc Systems and methods for differential bundle updates
CN111209180A (zh) * 2018-11-21 2020-05-29 ***通信集团浙江有限公司 一种基于模糊匹配的回归测试方法和装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106569844A (zh) * 2016-09-23 2017-04-19 北京五八信息技术有限公司 程序代码更新的处理方法、装置和设备
US10635566B1 (en) * 2017-07-31 2020-04-28 Cisco Technology, Inc. Predicting code change impact within an integrated development environment
CN108491331A (zh) * 2018-04-13 2018-09-04 平安普惠企业管理有限公司 软件测试方法、装置、设备和计算机存储介质
CN108595200A (zh) * 2018-04-19 2018-09-28 北京微播视界科技有限公司 代码更新方法、图形更新方法、装置、存储介质和终端
CN109271313A (zh) * 2018-08-13 2019-01-25 中国平安财产保险股份有限公司 代码测试方法、装置及计算机可读存储介质
CN109460220A (zh) * 2018-10-19 2019-03-12 泰康保险集团股份有限公司 报文预定义代码生成方法、装置、电子设备和存储介质
US20200133656A1 (en) * 2018-10-30 2020-04-30 Walmart Apollo, Llc Systems and methods for differential bundle updates
CN111209180A (zh) * 2018-11-21 2020-05-29 ***通信集团浙江有限公司 一种基于模糊匹配的回归测试方法和装置
CN109710522A (zh) * 2018-12-17 2019-05-03 平安普惠企业管理有限公司 代码测试方法、装置、计算机设备和存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113791983A (zh) * 2021-09-24 2021-12-14 北京顺源开华科技有限公司 应用代码的测试方法、装置以及电子设备

Also Published As

Publication number Publication date
CN111930612B (zh) 2024-03-19

Similar Documents

Publication Publication Date Title
JP6874950B2 (ja) 詐欺的ソフトウェアプロモーションを検出するための方法、装置、及びシステム
WO2018000607A1 (zh) 一种识别测试用例失败原因的方法及电子设备
CN110474900B (zh) 一种游戏协议测试方法及装置
CN109271315B (zh) 脚本代码检测方法、装置、计算机设备及存储介质
CN104978526A (zh) 病毒特征的提取方法及装置
CN108875317B (zh) 软件克隆检测方法及装置、检测设备及存储介质
CN111737137A (zh) 接口测试数据生成方法、装置、主机及存储介质
US11399071B2 (en) Program operation system and program operation method
CN113032580A (zh) 关联档案推荐方法、***及电子设备
CN111930612B (zh) 一种代码更新正确性的检测方法、装置及计算设备
US10073938B2 (en) Integrated circuit design verification
CN110503504B (zh) 网络产品的信息识别方法、装置及设备
WO2016122318A1 (en) A computer implemented method for generating a variant call file
CN110430140A (zh) 路径处理方法、装置、设备及存储介质
CN113778834B (zh) 一种应用软件的***性能测试方法、装置与计算设备
CN110715799B (zh) 断路器机械状态检测方法、装置及终端设备
CN114912587A (zh) 神经网络分布式训练***、方法、装置、计算单元及介质
CN114281691A (zh) 测试用例排序方法、装置、计算设备及存储介质
CN111371818B (zh) 一种数据请求的验证方法、装置及设备
CN112737831A (zh) 一种固件升级包处理方法、装置、电子设备和存储介质
CN106648558B (zh) 用于TPL Dataflow 的控制方法和装置
JP2019215867A (ja) ソースコードのプロパティを検証するための方法およびシステム
CN113032038B (zh) 一种应用程序管理方法、装置、计算设备及可读存储介质
CN116319762B (zh) 局域网内文件批量复制方法、装置、电子设备及存储介质
CN111339360B (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