CN108491321A - 测试用例范围确定方法、装置及存储介质 - Google Patents

测试用例范围确定方法、装置及存储介质 Download PDF

Info

Publication number
CN108491321A
CN108491321A CN201810183368.4A CN201810183368A CN108491321A CN 108491321 A CN108491321 A CN 108491321A CN 201810183368 A CN201810183368 A CN 201810183368A CN 108491321 A CN108491321 A CN 108491321A
Authority
CN
China
Prior art keywords
code
data
covering
test
use cases
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
CN201810183368.4A
Other languages
English (en)
Other versions
CN108491321B (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.)
Ping An Technology Shenzhen Co Ltd
Original Assignee
Ping An Technology Shenzhen 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 Ping An Technology Shenzhen Co Ltd filed Critical Ping An Technology Shenzhen Co Ltd
Priority to CN201810183368.4A priority Critical patent/CN108491321B/zh
Priority to PCT/CN2018/089318 priority patent/WO2019169760A1/zh
Publication of CN108491321A publication Critical patent/CN108491321A/zh
Application granted granted Critical
Publication of CN108491321B publication Critical patent/CN108491321B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/3676Test management for coverage analysis
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (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

本发明提出一种测试用例范围确定方法,包括:记录用户在系统的运行环境下执行操作行为时的第一代码覆盖数据,初步确定测试用例集;记录在系统的测试环境下执行所述测试用例集时的第二代码覆盖数据;计算所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异;当差异不满足预设条件时,定位所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异代码,调整所述测试用例集,执行所述调整后的测试用例集,得到更新后的第二代码覆盖数据;及,当差异满足预设条件时,确定所述测试用例集为最终的测试用例集。本发明还提出一种电子装置及存储介质。利用本发明,可快速、准确地确定测试用例范围,使测试用例范围贴近用户的实际操作,提高测试效率。

Description

测试用例范围确定方法、装置及存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种测试用例范围确定方法、电子装置及计算机可读存储介质。
背景技术
测试是指在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。测试用例(Test Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。
现在,各个系统或软件版本迭代周期都较短,若要在较短时间内完成测试,这就要求有明确的测试范围。目前,测试范围大都通过预估或通过拓扑的方式来获取,但获取的范围有限,使测试的范围不够全面。因此,需要提供一种能快速、准确确定测试用例范围的方法。
发明内容
本发明提供一种测试用例范围确定方法、电子装置及计算机可读存储介质,其主要目的在于快速、准确地确定测试用例范围,使测试用例范围贴近用户的实际操作,提高测试效率。
为实现上述目的,本发明提供一种测试用例范围确定方法,该方法包括:
S1、记录用户在系统的运行环境下执行操作行为时的第一代码覆盖数据,分析所述第一代码覆盖数据推导出用户的操作行为,并初步确定测试用例集;
S2、接收执行所述测试用例集的指令,记录在系统的测试环境下执行所述测试用例集时的第二代码覆盖数据;
S3、对所述第一代码覆盖数据及所述第二代码覆盖数据进行分析,得到所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异,并判断所述差异是否满足预设条件;
S4、当所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异不满足预设条件时,定位所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异代码,根据所述差异代码调整所述测试用例集,执行所述调整后的测试用例集,得到更新后的第二代码覆盖数据,流程返回至S3;及
S5、当所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异满足预设条件时,确定所述测试用例集为最终的测试用例集。
此外,为实现上述目的,本发明还提供一种电子装置,该装置包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的测试用例范围确定程序,该程序被所述处理器执行时实现如上所述的测试用例范围确定方法的任意步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有测试用例范围确定程序,该程序被处理器执行时实现如上所述的测试用例范围确定方法的任意步骤。
相较于现有技术,本发明提出的测试用例范围确定方法、电子装置及计算机可读存储介质,根据用户在系统的运行环境下执行操作行为得到的第一代码覆盖数据,初步确定测试用例范围,缩小了测试用例的有效,提高测试用例范围确定的效率;并在系统测试环境下执行测试用例得到第二代码覆盖数据,对比两组代码覆盖数据得到差异代码,根据差异代码调整测试用例,确定最终的测试用例范围,使测试用例范围最大限度地接近用户实际的操作行为,提高测试效率。
附图说明
图1为本发明服务器较佳实施例的示意图;
图2为图1中测试用例范围确定程序的程序模块示意图;
图3为本发明测试用例范围确定方法较佳实施例的流程图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种服务器1。参照图1所示,为本发明服务器1较佳实施例的示意图。
在本实施例中,服务器1可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器。
该服务器1包括存储器11、处理器12,通信总线13,网络接口14以及显示器15。
其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是所述服务器1的内部存储单元,例如该服务器1的硬盘。存储器11在另一些实施例中也可以是所述服务器1的外部存储设备,例如该服务器1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括该服务器1的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于该服务器1的应用软件及各类数据,例如测试用例范围确定程序10等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如测试用例范围确定程序10等。
通信总线13用于实现这些组件之间的连接通信。
网络接口14可以包括标准的有线接口、无线接口(如WI-FI接口),通常用于在该服务器1与其他电子设备之间建立通信连接。例如,服务器1可以通过网络接口14从代码覆盖率工具的服务器端(图中未标出)提取代码覆盖数据,所述代码覆盖率工具的服务器端部署服务器1端,用于接收代码覆盖率工具的客户端(图中未标出)发送的代码覆盖数据,所述代码覆盖率工具的客户端部署在待测试系统上。
显示器15(Display)可以是LED显示器、液晶显示器、触控式液晶显示器以及有机发光二极管(Organic Light-Emitting Diode,OLED)触摸器等。其中,显示器15也可以称为显示屏或显示单元,用于显示在服务器1中处理的信息以及用于显示可视化的用户界面。
图1仅示出了具有组件11-14的服务器1,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
可选地,该服务器1还可以包括用户接口,用户接口可以包括输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。
在图1所示的实施例中,存储器11中存储有测试用例范围确定程序10。处理器12执行存储器11中存储的测试用例范围确定程序10时实现如下步骤:
A1、记录用户在系统的运行环境下执行操作行为时的第一代码覆盖数据,分析所述第一代码覆盖数据推导出用户的操作行为,并初步确定测试用例集;
A2、接收执行所述测试用例集的指令,记录在系统的测试环境下执行所述测试用例集时的第二代码覆盖数据;
A3、对所述第一代码覆盖数据及所述第二代码覆盖数据进行分析,得到所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异,并判断所述差异是否满足预设条件;
A4、当所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异不满足预设条件时,定位所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异代码,根据所述差异代码调整所述测试用例集,执行所述调整后的测试用例集,得到更新后的第二代码覆盖数据,流程返回至A3;及
A5、当所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异满足预设条件时,确定所述测试用例集为最终的测试用例集。
本实施例中,以系统P为例对本发明的方案进行说明。在系统P部署代码覆盖率工具的客户端,在服务器1端部署代码覆盖率工具的服务器端,例如,Jacoco代码覆盖率工具的客户端及服务器端。具体地,Jacoco代码覆盖率工具的客户端用于记录用户在系统的实际运行环境下执行某操作行为,及在系统的测试环境下执行测试用例时,系统代码的被覆盖情况;Jacoco代码覆盖率工具的服务器端用于接收Jacoco代码覆盖率工具的客户端记录的系统代码的被覆盖情况。
在对进行版本更新后的系统P进行测试时,需确保测试用例的范围满足测试需求。启动部署在系统P的Jacoco代码覆盖率工具的客户端,对用户在系统的实际运行环境下的操作行为进行监控。其中,操作行为包括:用户点击系统、执行系统的某个功能模块或者执行某些操作流程,Jacoco代码覆盖率工具的客户端会记录下被用户执行的功能模块或者操作流程对应的系统代码,并生成第一代码覆盖数据。Jacoco代码覆盖率工具的客户端将生成的第一代码覆盖数据发送至Jacoco代码覆盖率工具的服务器端,服务器1从Jacoco代码覆盖率工具的服务器端摘取第一代码覆盖数据,并通过服务器1的显示器向测试人员展示,供测试人员针对第一代码覆盖数据进行分析,以初步确定系统P的测试用例范围。可以理解的是,被用户执行过的功能模块或者操作流程,其在系统P中对应的代码都会被覆盖到,反之,未被执行过的功能模块或者操作流程对应的代码则不会被覆盖。具体地,所述第一代码覆盖数据包括:用户在系统P的实际运行环境下执行上述操作行为时,系统P的代码中被覆盖的包、类、方法及行信息。在第一代码覆盖数据收集过程中,计算了对应的包、类、方法的第一覆盖率,以及被覆盖代码的行数占系统P的代码的总行数的第一比例。
进一步地,服务器1从Jacoco代码覆盖率工具的服务器端摘取出第一代码覆盖数据后,对第一代码覆盖数据中被覆盖的代码进行分析。可以理解的是,系统的功能模块或者操作流程由均代码实现,因此,根据第一代码覆盖数据中被覆盖的代码,可以推导出用户在系统P的实际运行环境下执行了哪些功能模块或者操作流程。根据推导得出的操作流程分别确定各操作流程的场景,并进一步得到对应的测试用例,生成初步确定的测试用例集。例如,对第一代码覆盖数据中的代码数据进行挖掘,发现MD5算法对应的代码被覆盖,sha-1算法对应的代码未被覆盖,那么可以确定用户执行的操作流程中调用了MD5算法,测试人员在设计测试用例时,则需要覆盖MD5算法的调用场景。确定测试用例集为本领域人员习知的技术手段,在此不作累述。
接收执行测试用例集的指令,开启部署在系统P的测试环境下的Jacoco代码覆盖率工具的客户端,并在系统P的测试环境下执行上述步骤得到的测试用例集中的测试用例,记录执行测试用例时系统P的代码的被覆盖情况,作为第二代码覆盖数据。具体地,第二代码覆盖数据包括:在系统P的测试环境下执行测试用例时,系统P的代码中被覆盖的包、类、方法及行信息。同样,在第二代码覆盖数据收集过程中,计算了对应的包、类、方法的第二覆盖率,以及被覆盖代码的行数占系统P的代码的总行数的第二比例。
需要说明的是,在执行测试用例时,可能出现返回的测试结果与预期结果不一致的情况。在本方案中,强调的是用户的操作行为,重点关注的是用户执行的操作流程,因为输入的具体值本身就存在差异,而且,测试结果对系统代码的被覆盖情况不会有影响,故不会影响第二代码覆盖数据。
两组代码覆盖数据中被覆盖部分包含多个包,每个包中包括类,类中包括方法,方法中包括代码行。如果某包在两组代码覆盖数据中的覆盖率的差异不满足预设条件,说明该包中包含的类、类中包含的方法、方法中包含的代码行也存在差异,进一步说明初步确定的测试用例集中未覆盖到的、用户在系统P的实际运行环境下执行的操作行为,需进一步完善测试用例。
具体地,分别读取第一代码覆盖数据中包含的各包在第一代码覆盖数据和第二代码覆盖数据中的覆盖率,计算各包在第一代码覆盖数据和第二代码覆盖数据中的覆盖率的差异度;筛选出差异度小于预设阈值对应的包,确定差异小于预设阈值的该部分包对应的差异代码。其中,差异度的计算公式为:
M=(A-B)/A
其中,M为某包在第一代码覆盖数据中的覆盖率与第二代码覆盖数据中的覆盖率之间的差异度,A为该包在第一代码覆盖数据中的覆盖率,B为该包在第二代码覆盖数据中的覆盖率。
例如,某包在第一代码覆盖数据中的覆盖率为40%,在第二代码覆盖数据中的覆盖率为35%,根据计算公式计算该包在两组代码覆盖数据中的覆盖率的差异度为5%,假设预设阈值为3%,差异度大于预设阈值,则需要进一步确定该包对应的差异代码。进一步对比该包所包含的类的覆盖情况,从该包中筛选出第一覆盖率与第二覆盖率不一致的一个或多个类,并进一步对该一个或多个类所包含的方法的覆盖情况进行分析,对比并挑选出在两组代码覆盖数据中覆盖率不一致的一个或多个方法,将最终的差异代码具体到代码行。例如,经过上述分析步骤,发现在第一代码覆盖数据中被覆盖的第10行至第20行代码,在第二代码覆盖数据中未被覆盖到,那么,第10行至第20行代码即为两组代码覆盖数据之间的差异代码。
至此,已定位了第一代码覆盖数据及第二代码覆盖数据之间的差异代码。对所述差异代码进行分析,确定差异代码对应的应用场景及操作流程或者功能模块,若已有的测试用例集中包含该应用场景对应的测试用例,则对该测试用例进行调整,若已有的测试用例集中不包含该应用场景对应的测试用例,则新增该应用场景对应的测试用例,并更新初步确定的测试用例集。
继续接收执行测试用例的指令,从所述更新后的测试用例集中调取并执行新增的或者调整后的测试用例,Jacoco代码覆盖率工具的客户端记录第三代码覆盖数据。作为一种实施方式,利用第三代码覆盖数据对第二代码覆盖数据进行更新得到更新后的第二代码覆盖数据,具体地,从第二代码覆盖数据中抽取未被覆盖的差异代码,且对与第三代码覆盖数据中被覆盖的代码一致的差异代码的覆盖状态进行更新,即,由未被覆盖的状态更新为被覆盖状态。
进一步地,获取更新后的第二代码覆盖数据中该包的覆盖率,计算各包在第一代码覆盖数据和第二代码覆盖数据中的覆盖率的差异度,当各包的差异度均小于或等于预设阈值时,说明测试用例不需要再调整,否则,继续执行上述确定差异代码、调整测试用例的步骤。
可以理解的是,第二代码覆盖数据与第一代码覆盖数据之间各包的差异度越小,则测试用例覆盖的范围越接近用户的真实操作情况,测试人员可根据需求调整差异度预设阈值的大小。在其他实施例中,当所述差异度的预设阈值为0时,也就是对第三代码覆盖数据被覆盖的代码与上述差异代码进行对比,当第三代码覆盖数据中被覆盖的代码完全包含上述差异代码,在对第二代码覆盖数据进行更新后,计算得到的第一代码覆盖数据及第二代码覆盖数据的差异度则为0,说明新增或者调整后的测试用例范围已经完全覆盖了上述步骤中未被覆盖的应用场景及操作流程。通过该步骤可使测试用例的范围完全包含用户在系统实际运行环境下的行为,提高测试的准确性。
上述实施例提出的服务器1,根据用户在系统的运行环境下执行操作行为得到的第一代码覆盖数据,初步确定测试用例范围,缩小了测试用例的有效,提高测试用例范围确定的效率;并在系统测试环境下执行测试用例得到第二代码覆盖数据,对比两组代码覆盖数据得到差异代码,根据差异代码调整测试用例,确定最终的测试用例范围,使测试用例范围最大限度地接近用户实际的操作行为,提高测试效率。
可选地,在其他的实施例中,测试用例范围确定程序10还可以被分割为一个或者多个模块,一个或者多个模块被存储于存储器11中,并由一个或多个处理器(本实施例为处理器12)所执行,以完成本发明,本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段。例如,参照图2所示,为图1中测试用例范围确定程序10的程序模块示意图,该实施例中,测试用例范围确定程序10可以被分割为第一记录模块110、第二记录模块120、分析模块130、更新模块140及确定模块150,所述模块110-150所实现的功能或操作步骤均与上文类似,此处不再详述,示例性地,例如其中:
第一记录模块110,用于记录用户在系统的运行环境下执行操作行为时的第一代码覆盖数据,分析所述第一代码覆盖数据推导出用户的操作行为,并初步确定测试用例集;
第二记录模块120,用于接收执行所述测试用例集的指令,记录在系统的测试环境下执行所述测试用例集时的第二代码覆盖数据;
分析模块130,用于对所述第一代码覆盖数据及所述第二代码覆盖数据进行分析,得到所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异,并判断所述差异是否满足预设条件;
更新模块140,用于当所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异不满足预设条件时,定位所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异代码,根据所述差异代码调整所述测试用例集,执行所述调整后的测试用例集,得到更新后的第二代码覆盖数据;及
确定模块150,用于当所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异满足预设条件时,确定所述测试用例集为最终的测试用例集。
此外,本发明还提供一种人才管理方法。参照图3所示,为本发明人才管理方法较佳实施例的流程图。该方法可以由一个装置执行,该装置可以由软件和/或硬件实现。
在本实施例中,人才管理方法包括步骤S1-S5:
S1、记录用户在系统的运行环境下执行操作行为时的第一代码覆盖数据,分析所述第一代码覆盖数据推导出用户的操作行为,并初步确定测试用例集;
S2、接收执行所述测试用例集的指令,记录在系统的测试环境下执行所述测试用例集时的第二代码覆盖数据;
S3、对所述第一代码覆盖数据及所述第二代码覆盖数据进行分析,得到所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异,并判断所述差异是否满足预设条件;
S4、当所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异不满足预设条件时,定位所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异代码,根据所述差异代码调整所述测试用例集,执行所述调整后的测试用例集,得到更新后的第二代码覆盖数据,流程返回至S3;及
S5、当所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异满足预设条件时,确定所述测试用例集为最终的测试用例集。
本实施例中,以系统P为例对本发明的方案进行说明。在系统P部署代码覆盖率工具的客户端,在服务器1端部署代码覆盖率工具的服务器端,例如,Jacoco代码覆盖率工具的客户端及服务器端。具体地,Jacoco代码覆盖率工具的客户端用于记录用户在系统的实际运行环境下执行某操作行为,及在系统的测试环境下执行测试用例时,系统代码的被覆盖情况;Jacoco代码覆盖率工具的服务器端用于接收Jacoco代码覆盖率工具的客户端记录的系统代码的被覆盖情况。
在对进行版本更新后的系统P进行测试时,需确保测试用例的范围满足测试需求。启动部署在系统P的Jacoco代码覆盖率工具的客户端,对用户在系统的实际运行环境下的操作行为进行监控。其中,操作行为包括:用户点击系统、执行系统的某个功能模块或者执行某些操作流程,Jacoco代码覆盖率工具的客户端会记录下被用户执行的功能模块或者操作流程对应的系统代码,并生成第一代码覆盖数据。Jacoco代码覆盖率工具的客户端将生成的第一代码覆盖数据发送至Jacoco代码覆盖率工具的服务器端,服务器1从Jacoco代码覆盖率工具的服务器端摘取第一代码覆盖数据,并通过服务器1的显示器向测试人员展示,供测试人员针对第一代码覆盖数据进行分析,以初步确定系统P的测试用例范围。可以理解的是,被用户执行过的功能模块或者操作流程,其在系统P中对应的代码都会被覆盖到,反之,未被执行过的功能模块或者操作流程对应的代码则不会被覆盖。具体地,所述第一代码覆盖数据包括:用户在系统P的实际运行环境下执行上述操作行为时,系统P的代码中被覆盖的包、类、方法及行信息。在第一代码覆盖数据收集过程中,计算了对应的包、类、方法的第一覆盖率,以及被覆盖代码的行数占系统P的代码的总行数的第一比例。
可以理解的是,Jacoco代码覆盖率工具的客户端在较短时间内记录用户行为生成的第一代码覆盖数据不一定能完全代表用户在系统P执行的所有功能模块或者操作流程,为了在不浪费资源的前提下,使第一代码覆盖数据更全面,在时间维度上对第一代码覆盖数据进行过滤,设置预设时间区间,例如,开启Jacoco代码覆盖率工具的客户端的时间点之后两天的时间内,取该时间段内的第一代码覆盖数据作为最终的第一代码覆盖数据,并将其发送至Jacoco代码覆盖率工具的服务器端。
进一步地,服务器1从Jacoco代码覆盖率工具的服务器端摘取出第一代码覆盖数据后,对第一代码覆盖数据中被覆盖的代码进行分析。可以理解的是,系统的功能模块或者操作流程由均代码实现,因此,根据第一代码覆盖数据中被覆盖的代码,可以推导出用户在系统P的实际运行环境下执行了哪些功能模块或者操作流程。根据推导得出的操作流程分别确定各操作流程的场景,并进一步得到对应的测试用例,生成初步确定的测试用例集。例如,对第一代码覆盖数据中的代码数据进行挖掘,发现MD5算法对应的代码被覆盖,sha-1算法对应的代码未被覆盖,那么可以确定用户执行的操作流程中调用了MD5算法,测试人员在设计测试用例时,则需要覆盖MD5算法的调用场景。确定测试用例集为本领域人员习知的技术手段,在此不作累述。
接收执行测试用例集的指令,开启部署在系统P的测试环境下的Jacoco代码覆盖率工具的客户端,并在系统P的测试环境下执行上述步骤得到的测试用例集中的测试用例,记录执行测试用例时系统P的代码的被覆盖情况,作为第二代码覆盖数据。具体地,第二代码覆盖数据包括:在系统P的测试环境下执行测试用例时,系统P的代码中被覆盖的包、类、方法及行信息。同样,在第二代码覆盖数据收集过程中,计算了对应的包、类、方法的第二覆盖率,以及被覆盖代码的行数占系统P的代码的总行数的第二比例。
需要说明的是,在执行测试用例时,可能出现返回的测试结果与预期结果不一致的情况。在本方案中,强调的是用户的操作行为,重点关注的是用户执行的操作流程,因为输入的具体值本身就存在差异,而且,测试结果对系统代码的被覆盖情况不会有影响,故不会影响第二代码覆盖数据。
两组代码覆盖数据中被覆盖部分包含多个包,每个包中包括类,类中包括方法,方法中包括代码行。如果某包在两组代码覆盖数据中的覆盖率的差异不满足预设条件,说明该包中包含的类、类中包含的方法、方法中包含的代码行也存在差异,进一步说明初步确定的测试用例集中未覆盖到的、用户在系统P的实际运行环境下执行的操作行为,需进一步完善测试用例。
具体地,分别读取第一代码覆盖数据中包含的各包在第一代码覆盖数据和第二代码覆盖数据中的覆盖率,计算各包在第一代码覆盖数据和第二代码覆盖数据中的覆盖率的差异度;筛选出差异度小于预设阈值对应的包,确定差异小于预设阈值的该部分包对应的差异代码。其中,差异度的计算公式为:
M=(A-B)/A
其中,M为某包在第一代码覆盖数据中的覆盖率与第二代码覆盖数据中的覆盖率之间的差异度,A为该包在第一代码覆盖数据中的覆盖率,B为该包在第二代码覆盖数据中的覆盖率。
例如,某包在第一代码覆盖数据中的覆盖率为40%,在第二代码覆盖数据中的覆盖率为35%,根据计算公式计算该包在两组代码覆盖数据中的覆盖率的差异度为5%,假设预设阈值为3%,差异度大于预设阈值,则需要进一步确定该包对应的差异代码。进一步对比该包所包含的类的覆盖情况,从该包中筛选出第一覆盖率与第二覆盖率不一致的一个或多个类,并进一步对该一个或多个类所包含的方法的覆盖情况进行分析,对比并挑选出在两组代码覆盖数据中覆盖率不一致的一个或多个方法,将最终的差异代码具体到代码行。例如,经过上述分析步骤,发现在第一代码覆盖数据中被覆盖的第10行至第20行代码,在第二代码覆盖数据中未被覆盖到,那么,第10行至第20行代码即为两组代码覆盖数据之间的差异代码。
至此,已定位了第一代码覆盖数据及第二代码覆盖数据之间的差异代码。对所述差异代码进行分析,确定差异代码对应的应用场景及操作流程或者功能模块,若已有的测试用例集中包含该应用场景对应的测试用例,则对该测试用例进行调整,若已有的测试用例集中不包含该应用场景对应的测试用例,则新增该应用场景对应的测试用例,并更新初步确定的测试用例集。
继续接收执行测试用例的指令,从所述更新后的测试用例集中调取并执行新增的或者调整后的测试用例,Jacoco代码覆盖率工具的客户端记录第三代码覆盖数据。作为一种实施方式,利用第三代码覆盖数据对第二代码覆盖数据进行更新得到更新后的第二代码覆盖数据,具体地,从第二代码覆盖数据中抽取未被覆盖的差异代码,且对与第三代码覆盖数据中被覆盖的代码一致的差异代码的覆盖状态进行更新,即,由未被覆盖的状态更新为被覆盖状态。
进一步地,获取更新后的第二代码覆盖数据中该包的覆盖率,计算各包在第一代码覆盖数据和第二代码覆盖数据中的覆盖率的差异度,当各包的差异度均小于或等于预设阈值时,说明测试用例不需要再调整,否则,继续执行上述确定差异代码、调整测试用例的步骤。
可以理解的是,第二代码覆盖数据与第一代码覆盖数据之间各包的差异度越小,则测试用例覆盖的范围越接近用户的真实操作情况,测试人员可根据需求调整差异度预设阈值的大小。在其他实施例中,当所述差异度的预设阈值为0时,也就是对第三代码覆盖数据被覆盖的代码与上述差异代码进行对比,当第三代码覆盖数据中被覆盖的代码完全包含上述差异代码,在对第二代码覆盖数据进行更新后,计算得到的第一代码覆盖数据及第二代码覆盖数据的差异度则为0,说明新增或者调整后的测试用例范围已经完全覆盖了上述步骤中未被覆盖的应用场景及操作流程。通过该步骤可使测试用例的范围完全包含用户在系统实际运行环境下的行为,提高测试的准确性。
在其他实施例中,对于第一代码覆盖数据中未被覆盖的系统代码,例如,sha-1算法对应的代码,分析sha-1算法未被调用的原因,若sha-1算法对应的这段代码无可操作场景,或者用户没有执行该类操作,可将sha-1算法对应的未被覆盖的代码作为冗余代码,将其从系统代码中剔除,从而精简系统代码体积。
上述实施例提出的测试用例范围确定方法,根据用户在系统的运行环境下执行操作行为得到的第一代码覆盖数据,初步确定测试用例范围,缩小了测试用例的有效,提高测试用例范围确定的效率;并在系统测试环境下执行测试用例得到第二代码覆盖数据,对比两组代码覆盖数据得到差异代码,根据差异代码调整测试用例,确定最终的测试用例范围,使测试用例范围最大限度地接近用户实际的操作行为,提高测试效率。。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有测试用例范围确定程序10,该程序被处理器执行时实现如下操作:
A1、记录用户在系统的运行环境下执行操作行为时的第一代码覆盖数据,分析所述第一代码覆盖数据推导出用户的操作行为,并初步确定测试用例集;
A2、接收执行所述测试用例集的指令,记录在系统的测试环境下执行所述测试用例集时的第二代码覆盖数据;
A3、对所述第一代码覆盖数据及所述第二代码覆盖数据进行分析,得到所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异,并判断所述差异是否满足预设条件;
A4、当所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异不满足预设条件时,定位所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异代码,根据所述差异代码调整所述测试用例集,执行所述调整后的测试用例集,得到更新后的第二代码覆盖数据,流程返回至A3;及
A5、当所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异满足预设条件时,确定所述测试用例集为最终的测试用例集。
本发明计算机可读存储介质具体实施方式与上述测试用例范围确定方法的具体实施方式基本相同,在此不作累述。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种测试用例范围确定方法,应用于电子装置,其特征在于,该方法包括:
S1、记录用户在系统的运行环境下执行操作行为时的第一代码覆盖数据,分析所述第一代码覆盖数据推导出用户的操作行为,并初步确定测试用例集;
S2、接收执行所述测试用例集的指令,记录在系统的测试环境下执行所述测试用例集时的第二代码覆盖数据;
S3、对所述第一代码覆盖数据及所述第二代码覆盖数据进行分析,得到所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异,并判断所述差异是否满足预设条件;
S4、当所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异不满足预设条件时,定位所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异代码,根据所述差异代码调整所述测试用例集,执行所述调整后的测试用例集,得到更新后的第二代码覆盖数据,流程返回至S3;及
S5、当所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异满足预设条件时,确定所述测试用例集为最终的测试用例集。
2.如权利要求1所述的测试用例范围确定方法,其特征在于,所述步骤S3包括:
分别读取所述第一代码覆盖数据中包含的各包在所述第一代码覆盖数据和所述第二代码覆盖数据中的覆盖率;
分别计算各包在所述第一代码覆盖数据和所述第二代码覆盖数据中的覆盖率的差异度;及
判断所述各包的差异度是否均小于或等于预设阈值。
3.如权利要求1或2所述的测试用例范围确定方法,其特征在于,所述“当所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异不满足预设条件时,确定所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异代码”的步骤包括:
当所述各包中包含差异度大于预设阈值的一个或多个包时,筛选出所述一个或多个包;
分别对比所述一个或多个包中包含的类在所述第一代码覆盖数据及所述第二代码覆盖数据中的覆盖率,筛选出在所述第一代码覆盖数据及所述第二代码覆盖数据中的覆盖率不同的一个或多个类;
分别对比所述一个或多个类中包含的方法在所述第一代码覆盖数据及所述第二代码覆盖数据中的覆盖率,筛选出在所述第一代码覆盖数据及所述第二代码覆盖数据中的覆盖率不同的一个或多个方法;及
分别对比所述一个或多个方法中包含的代码行在所述第一代码覆盖数据及所述第二代码覆盖数据中的覆盖率,筛选出在所述第一代码覆盖数据及所述第二代码覆盖数据中的覆盖率不同的代码行,确定所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异代码。
4.如权利要求3所述的测试用例范围确定方法,其特征在于,所述第一代码覆盖数据包括:用户在生产环境下执行所述操作流程,系统代码中被覆盖的包、类、方法及行信息。
5.如权利要求4所述的测试用例范围确定方法,其特征在于,所述第二代码覆盖数据包括:在测试环境下执行所述测试用例集,系统代码中被覆盖的包、类、方法及行信息。
6.一种电子装置,其特征在于,该装置包括:存储器、处理器,所述存储器上存储有可在所述处理器上运行的测试用例范围确定程序,该程序被所述处理器执行时实现如下步骤:
A1、记录用户在系统的运行环境下执行操作行为时的第一代码覆盖数据,分析所述第一代码覆盖数据推导出用户的操作行为,并初步确定测试用例集;
A2、接收执行所述测试用例集的指令,记录在系统的测试环境下执行所述测试用例集时的第二代码覆盖数据;
A3、对所述第一代码覆盖数据及所述第二代码覆盖数据进行分析,得到所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异,并判断所述差异是否满足预设条件;
A4、当所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异不满足预设条件时,定位所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异代码,根据所述差异代码调整所述测试用例集,执行所述调整后的测试用例集,得到更新后的第二代码覆盖数据,流程返回至A3;及
A5、当所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异满足预设条件时,确定所述测试用例集为最终的测试用例集。
7.如权利要求6所述的电子装置,其特征在于,所述步骤A3包括:
分别读取所述第一代码覆盖数据中包含的各包在所述第一代码覆盖数据和所述第二代码覆盖数据中的覆盖率;
分别计算各包在所述第一代码覆盖数据和所述第二代码覆盖数据中的覆盖率的差异度;及
判断所述各包的差异度是否均小于或等于预设阈值。
8.如权利要求6或7所述的电子装置,其特征在于,所述“当所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异不满足预设条件时,确定所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异代码”的步骤包括:
当所述各包中包含差异度大于预设阈值的一个或多个包时,筛选出所述一个或多个包;
分别对比所述一个或多个包中包含的类在所述第一代码覆盖数据及所述第二代码覆盖数据中的覆盖率,筛选出在所述第一代码覆盖数据及所述第二代码覆盖数据中的覆盖率不同的一个或多个类;
分别对比所述一个或多个类中包含的方法在所述第一代码覆盖数据及所述第二代码覆盖数据中的覆盖率,筛选出在所述第一代码覆盖数据及所述第二代码覆盖数据中的覆盖率不同的一个或多个方法;及
分别对比所述一个或多个方法中包含的代码行在所述第一代码覆盖数据及所述第二代码覆盖数据中的覆盖率,筛选出在所述第一代码覆盖数据及所述第二代码覆盖数据中的覆盖率不同的代码行,确定所述第一代码覆盖数据及所述第二代码覆盖数据之间的差异代码。
9.如权利要求8所述的电子装置,其特征在于,所述第一代码覆盖数据包括:用户在生产环境下执行所述操作流程,系统代码中被覆盖的包、类、方法及行信息;及
所述第二代码覆盖数据包括:在测试环境下执行所述测试用例集,系统代码中被覆盖的包、类、方法及行信息。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有测试用例范围确定程序,该程序被处理器执行时实现如权利要求1至5中任一项所述的测试用例范围确定方法的步骤。
CN201810183368.4A 2018-03-06 2018-03-06 测试用例范围确定方法、装置及存储介质 Active CN108491321B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201810183368.4A CN108491321B (zh) 2018-03-06 2018-03-06 测试用例范围确定方法、装置及存储介质
PCT/CN2018/089318 WO2019169760A1 (zh) 2018-03-06 2018-05-31 测试用例范围确定方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810183368.4A CN108491321B (zh) 2018-03-06 2018-03-06 测试用例范围确定方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN108491321A true CN108491321A (zh) 2018-09-04
CN108491321B CN108491321B (zh) 2021-05-25

Family

ID=63341563

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810183368.4A Active CN108491321B (zh) 2018-03-06 2018-03-06 测试用例范围确定方法、装置及存储介质

Country Status (2)

Country Link
CN (1) CN108491321B (zh)
WO (1) WO2019169760A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109542761A (zh) * 2018-10-11 2019-03-29 平安科技(深圳)有限公司 软件质量评估方法、装置及存储介质
CN110413506A (zh) * 2019-06-19 2019-11-05 平安普惠企业管理有限公司 测试用例推荐方法、装置、设备及存储介质
CN111309635A (zh) * 2020-03-26 2020-06-19 北京奇艺世纪科技有限公司 测试用例生成方法、装置、服务器及存储介质
WO2020143313A1 (zh) * 2019-01-11 2020-07-16 平安科技(深圳)有限公司 代码修改方法及装置、计算机可读介质及电子设备
CN111831535A (zh) * 2019-04-17 2020-10-27 北京世纪好未来教育科技有限公司 一种测试用例的代码定位方法、装置及计算机存储介质
CN113946511A (zh) * 2021-10-15 2022-01-18 杭州研极微电子有限公司 一种全功能测试用例集合获取方法和系统
CN115982058A (zh) * 2023-03-20 2023-04-18 中国空气动力研究与发展中心计算空气动力研究所 一种计算流体力学代码错误定位方法、装置、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103713989A (zh) * 2012-09-29 2014-04-09 百度在线网络技术(北京)有限公司 一种针对用户终端的测试用例生成方法和装置
CN105512021A (zh) * 2014-09-25 2016-04-20 阿里巴巴集团控股有限公司 用于软件测试的Diff分析方法及装置
US20160321168A1 (en) * 2015-04-29 2016-11-03 International Business Machines Corporation Unified processing test structure
CN106528399A (zh) * 2015-09-15 2017-03-22 腾讯科技(深圳)有限公司 一种测试用例确定方法及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103309811B (zh) * 2013-06-27 2015-09-16 南京大学 一种基于测试执行记录快速定位软件代码缺陷的方法
US20150026664A1 (en) * 2013-07-17 2015-01-22 International Business Machines Corporation Method and system for automated test case selection
CN104133771B (zh) * 2014-08-13 2018-07-31 五八同城信息技术有限公司 一种测试方法及装置
US9684507B2 (en) * 2015-03-31 2017-06-20 Ca, Inc. Effective defect management across multiple code branches
US10175657B2 (en) * 2016-06-27 2019-01-08 Webomates LLC Method and system for determining mapping of test case(s) to code snippets of computer program
CN106776338B (zh) * 2016-12-30 2020-04-03 北京金山安全软件有限公司 一种测试方法、装置及服务器

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103713989A (zh) * 2012-09-29 2014-04-09 百度在线网络技术(北京)有限公司 一种针对用户终端的测试用例生成方法和装置
CN105512021A (zh) * 2014-09-25 2016-04-20 阿里巴巴集团控股有限公司 用于软件测试的Diff分析方法及装置
US20160321168A1 (en) * 2015-04-29 2016-11-03 International Business Machines Corporation Unified processing test structure
CN106528399A (zh) * 2015-09-15 2017-03-22 腾讯科技(深圳)有限公司 一种测试用例确定方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ZHUJQ_FLYPIG: "jacoco+ maven+junit覆盖率测试及如何写出高效的测试用例提高覆盖率", 《HTTPS://MY.OSCHINA.NET/U/2947038/BLOG/856968》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109542761A (zh) * 2018-10-11 2019-03-29 平安科技(深圳)有限公司 软件质量评估方法、装置及存储介质
CN109542761B (zh) * 2018-10-11 2022-03-11 平安科技(深圳)有限公司 软件质量评估方法、装置及存储介质
WO2020143313A1 (zh) * 2019-01-11 2020-07-16 平安科技(深圳)有限公司 代码修改方法及装置、计算机可读介质及电子设备
CN111831535A (zh) * 2019-04-17 2020-10-27 北京世纪好未来教育科技有限公司 一种测试用例的代码定位方法、装置及计算机存储介质
CN110413506A (zh) * 2019-06-19 2019-11-05 平安普惠企业管理有限公司 测试用例推荐方法、装置、设备及存储介质
CN111309635A (zh) * 2020-03-26 2020-06-19 北京奇艺世纪科技有限公司 测试用例生成方法、装置、服务器及存储介质
CN111309635B (zh) * 2020-03-26 2023-12-15 北京奇艺世纪科技有限公司 测试用例生成方法、装置、服务器及存储介质
CN113946511A (zh) * 2021-10-15 2022-01-18 杭州研极微电子有限公司 一种全功能测试用例集合获取方法和系统
CN115982058A (zh) * 2023-03-20 2023-04-18 中国空气动力研究与发展中心计算空气动力研究所 一种计算流体力学代码错误定位方法、装置、设备及介质
CN115982058B (zh) * 2023-03-20 2023-07-07 中国空气动力研究与发展中心计算空气动力研究所 一种计算流体力学代码错误定位方法、装置、设备及介质

Also Published As

Publication number Publication date
CN108491321B (zh) 2021-05-25
WO2019169760A1 (zh) 2019-09-12

Similar Documents

Publication Publication Date Title
CN108491321A (zh) 测试用例范围确定方法、装置及存储介质
US11934301B2 (en) System and method for automated software testing
US20200034281A1 (en) System and method for automated intelligent mobile application testing
CN106662986B (zh) 优化的浏览器渲染过程
CN107145437B (zh) 一种java注解测试方法及装置
CN106844217A (zh) 对应用的控件进行埋点的方法及装置、可读存储介质
CN105302706B (zh) 应用程序测试方法和装置
CN107797923A (zh) 代码覆盖率分析方法及应用服务器
CN108415821A (zh) 测试报告的生成方法及装置
CN112039900B (zh) 网络安全风险检测方法、系统、计算机设备和存储介质
CN110134574A (zh) 一种软件性能测试方法、系统、介质及电子设备
US11709671B2 (en) Intelligent prefetching for OS components
CN111931179A (zh) 基于深度学习的云端恶意程序检测系统及方法
CN111258913A (zh) 算法自动测试方法、装置、计算机系统及可读存储介质
Trivedi et al. A fully automated deep packet inspection verification system with machine learning
CN111654495B (zh) 用于确定流量产生来源的方法、装置、设备及存储介质
CN110502538A (zh) 画像标签生成逻辑映射的方法、系统、设备及存储介质
CN111884876A (zh) 一种网络协议的协议类型检测方法、装置、设备及介质
CN113868120A (zh) 工业软件调试方法、装置、计算机设备和存储介质
CN109240905A (zh) 软件测试方法和系统
CN111538659A (zh) 业务场景的接口测试方法、系统、电子设备和存储介质
CN109144834A (zh) 用户行为数据的采集方法及装置、安卓系统及终端设备
US9002847B2 (en) Identifying an auto-complete communication pattern
CN117370203A (zh) 自动化测试方法、系统、电子设备及存储介质
CN110716778A (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