CN108763054B - 测试案例的测试效果展示方法、电子装置及存储介质 - Google Patents
测试案例的测试效果展示方法、电子装置及存储介质 Download PDFInfo
- Publication number
- CN108763054B CN108763054B CN201810345030.4A CN201810345030A CN108763054B CN 108763054 B CN108763054 B CN 108763054B CN 201810345030 A CN201810345030 A CN 201810345030A CN 108763054 B CN108763054 B CN 108763054B
- Authority
- CN
- China
- Prior art keywords
- test
- static
- tested
- chain
- test case
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/32—Monitoring with visual or acoustical indication of the functioning of the machine
- G06F11/323—Visualisation of programs or trace data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/32—Monitoring with visual or acoustical indication of the functioning of the machine
- G06F11/324—Display of status information
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种测试案例的测试效果展示方法、电子装置及可读存储介质,该方法包括:对待测试***的代码进行分析,得到代码中各个方法之间的静态调用结构,根据静态调用结构建立各个静态方法链;基于预设展示规则将各个静态方法链按静态调用结构进行展示;在预设的测试案例对待测试***执行动态链路测试时,记录动态链路测试执行过程中流经的方法链,在展示的各个静态方法链中找到与流经的方法链对应的静态方法链作为已测试方法链;对展示的各个静态方法链中的已测试方法链和其他未测试的静态方法链进行区分标识,以将测试案例的测试执行效果展示给用户。本发明实现测试案例执行效果的可视化展示。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种测试案例的测试效果展示方法、电子装置及可读存储介质。
背景技术
在利用测试案例对待测试***进行测试时,有时需针对待测试***的动态链路进行测试。该动态链路指的是在待测试***向web服务器发起http请求的动态过程中所经过的方法链等。现有的测试方案中,用户只能获知测试案例在对待测试***执行动态链路测试时当前经过的方法链的情况,而无法让用户获知待测试***中的方法链层次结构,用户也无法确定待测试***中还有哪些方法链没被执行,即无法让用户完整衡量利用测试案例对待测试***进行测试时的执行效果。
发明内容
本发明的目的在于提供一种测试案例的测试效果展示方法、电子装置及可读存储介质,旨在向用户完整展示利用测试案例对待测试***进行测试时的执行效果。
为实现上述目的,本发明提供一种电子装置,所述电子装置包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的测试案例的测试效果展示***,所述测试案例的测试效果展示***被所述处理器执行时实现如下步骤:
对待测试***的代码进行分析,得到待测试***代码中各个方法之间的静态调用结构,并根据所述静态调用结构建立待测试***代码中的各个静态方法链;
基于预设展示规则将各个静态方法链按所述静态调用结构进行展示;
在预设的测试案例对所述待测试***执行动态链路测试时,记录所述测试案例在动态链路测试执行过程中所流经的方法链,并在展示的各个静态方法链中找到与流经的方法链对应的静态方法链作为已测试方法链;
对展示的各个静态方法链中的已测试方法链和其他未测试的静态方法链进行区分标识,以将所述测试案例的测试执行效果展示给用户。
优选地,所述对待测试***的代码进行分析,得到待测试***代码中各个方法之间的静态调用结构,并根据所述静态调用结构建立待测试***代码中的各个静态方法链的步骤包括:
利用Java字节码框架ASM包对待测试***代码的class文件进行逐行分析,获取待测试***代码的每个类中各个方法的调用关系作为静态调用结构;
将一个类中由若干具有调用关系的方法组合而成的方法链作为静态方法链。
优选地,所述基于预设展示规则将各个静态方法链按所述静态调用结构进行展示的步骤包括:
采用Graphviz包将各个静态方法链按所述静态调用结构绘制生成可缩放矢量图形来进行可视化展示。
优选地,所述在预设的测试案例对所述待测试***执行动态链路测试时,记录所述测试案例在动态链路测试执行过程中所流经的方法链的步骤包括:
配置Java字节码工具作为Java代理,在预设的Web服务器启动,预设的测试案例对所述待测试***执行动态链路测试过程中,利用所述Java代理对所述待测试***的过滤器进行增强,以捕获进入所述待测试***的HTTP请求,并利用所述Java代理记录进入所述待测试***的HTTP请求所经过的方法链。
此外,为实现上述目的,本发明还提供一种测试案例的测试效果展示方法,所述测试案例的测试效果展示方法包括:
对待测试***的代码进行分析,得到待测试***代码中各个方法之间的静态调用结构,并根据所述静态调用结构建立待测试***代码中的各个静态方法链;
基于预设展示规则将各个静态方法链按所述静态调用结构进行展示;
在预设的测试案例对所述待测试***执行动态链路测试时,记录所述测试案例在动态链路测试执行过程中所流经的方法链,并在展示的各个静态方法链中找到与流经的方法链对应的静态方法链作为已测试方法链;
对展示的各个静态方法链中的已测试方法链和其他未测试的静态方法链进行区分标识,以将所述测试案例的测试执行效果展示给用户。
优选地,所述对待测试***的代码进行分析,得到待测试***代码中各个方法之间的静态调用结构,并根据所述静态调用结构建立待测试***代码中的各个静态方法链的步骤包括:
利用Java字节码框架ASM包对待测试***代码的class文件进行逐行分析,获取待测试***代码的每个类中各个方法的调用关系作为静态调用结构;
将一个类中由若干具有调用关系的方法组合而成的方法链作为静态方法链。
优选地,所述基于预设展示规则将各个静态方法链按所述静态调用结构进行展示的步骤包括:
采用Graphviz包将各个静态方法链按所述静态调用结构绘制生成可缩放矢量图形来进行可视化展示。
优选地,所述在预设的测试案例对所述待测试***执行动态链路测试时,记录所述测试案例在动态链路测试执行过程中所流经的方法链的步骤包括:
配置Java字节码工具作为Java代理,在预设的Web服务器启动,预设的测试案例对所述待测试***执行动态链路测试过程中,利用所述Java代理对所述待测试***的过滤器进行增强,以捕获进入所述待测试***的HTTP请求,并利用所述Java代理记录进入所述待测试***的HTTP请求所经过的方法链。
优选地,还包括:
当所述测试案例在动态链路测试执行过程中所流经的方法链出现测试异常时,对展示的各个静态方法链中出现测试异常的方法链按预设异常标识方式进行标识,以向用户展示出现测试异常的方法链。
进一步地,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有测试案例的测试效果展示***,所述测试案例的测试效果展示***可被至少一个处理器执行,以使所述至少一个处理器执行如上述的测试案例的测试效果展示方法的步骤。
本发明提出的测试案例的测试效果展示方法、***及可读存储介质,通过对待测试***的代码进行分析,得到待测试***代码中各个方法之间的静态调用结构,并根据所述静态调用结构建立待测试***代码中的各个静态方法链;将各个静态方法链按所述静态调用结构进行展示;在预设的测试案例对所述待测试***执行动态链路测试时,记录所述测试案例在动态链路测试执行过程中所流经的方法链,并对展示的各个静态方法链中在动态链路测试执行过程中所流经的方法链和其他未测试的静态方法链进行区分标识,以将所述测试案例的测试效果展示给用户。由于能将待测试***的各个静态方法链按静态调用结构进行展示,用户可直观地获知待测试***中的方法链层次结构,而且,通过在按静态调用结构展示的各个静态方法链中对测试案例在动态链路测试执行过程中所流经的方法链和其他方法链进行区分标识,用户可直观地获知待测试***中当前已执行测试的方法链和还未执行测试的方法链,从而实现测试案例执行效果的可视化展示,让用户能完整衡量利用测试案例对待测试***进行测试时的执行效果。
附图说明
图1为本发明测试案例的测试效果展示***10较佳实施例的运行环境示意图;
图2为本发明测试案例的测试效果展示方法一实施例的流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
本发明提供一种测试案例的测试效果展示***。请参阅图1,是本发明测试案例的测试效果展示***10较佳实施例的运行环境示意图。
在本实施例中,所述的测试案例的测试效果展示***10安装并运行于电子装置1中。该电子装置1可包括,但不仅限于,存储器11、处理器12及显示器13。图1仅示出了具有组件11-13的电子装置1,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
所述存储器11为至少一种类型的可读计算机存储介质,所述存储器11在一些实施例中可以是所述电子装置1的内部存储单元,例如该电子装置1的硬盘或内存。所述存储器11在另一些实施例中也可以是所述电子装置1的外部存储设备,例如所述电子装置1上配备的插接式硬盘,智能存储卡(Smart Media Card, SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器11还可以既包括所述电子装置1的内部存储单元也包括外部存储设备。所述存储器11用于存储安装于所述电子装置1的应用软件及各类数据,例如所述测试案例的测试效果展示***10的程序代码等。所述存储器11还可以用于暂时地存储已经输出或者将要输出的数据。
所述处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU),微处理器或其他数据处理芯片,用于运行所述存储器11中存储的程序代码或处理数据,例如执行所述测试案例的测试效果展示***10等。
所述显示器13在一些实施例中可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。所述显示器13用于显示在所述电子装置1中处理的信息以及用于显示可视化的用户界面,例如按静态调用结构展示的待测试***中的各个静态方法链、对已测试方法链和未测试的静态方法链进行区分标识后的展示界面等。所述电子装置1的部件11-13通过***总线相互通信。
测试案例的测试效果展示***10包括至少一个存储在所述存储器11中的计算机可读指令,该至少一个计算机可读指令可被所述处理器12执行,以实现本申请各实施例。
其中,上述测试案例的测试效果展示***10被所述处理器12执行时实现如下步骤:
步骤S1,对待测试***的代码进行分析,得到待测试***代码中各个方法之间的静态调用结构,并根据所述静态调用结构建立待测试***代码中的各个静态方法链。
利用Java字节码框架ASM包对待测试***代码的class文件进行分析,分析得到待测试***代码中各个方法之间的静态调用结构;并可利用分析的静态调用结构得到待测试***代码的各个静态方法链。其中,ASM是一个java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。Java class 被存储在严格格式定义的 .class文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及 Java 字节码(指令)。ASM从类文件中读入信息后,能够分析类信息,解析编译过的class字节码文件。例如,可利用Asm包对待测试***代码进行逐行分析,获取待测试***代码中不同类之间各个方法的调用关系。如一个类中各个方法有对应的代码块,根据代码块之间的调用关系可以得到对应的各个方法之间的调用关系(即调用结构)。进一步地,方法链为若干具有调用关系的方法组合而成,根据一个类中各个方法之间的调用结构,即可获得一个类中由若干具有调用关系的方法组合而成的多条方法链,作为静态方法链。
步骤S2,基于预设展示规则将各个静态方法链按所述静态调用结构进行展示。
本实施例中,对分析的静态调用结构以及得到的待测试***代码的各个静态方法链按预设展示规则进行可视化展示。例如,可根据待测试***代码中各个方法之间的静态调用结构构建一个带主节点和子节点的方法调用结构树,对应的树形结构划分规则为:针对待测试***代码的不同类如不同功能模块,设置为对应的各个主节点;每一主节点即每一类下的若干方法按照方法之间的静态调用结构依次形成各级子节点;其中,方法调用结构树中若干有调用关系的方法组合成静态方法链。
步骤S3,在预设的测试案例对所述待测试***执行动态链路测试时,记录所述测试案例在动态链路测试执行过程中所流经的方法链,并在展示的各个静态方法链中找到与流经的方法链对应的静态方法链作为已测试方法链。
步骤S4,对展示的各个静态方法链中的已测试方法链和其他未测试的静态方法链进行区分标识,以将所述测试案例的测试执行效果展示给用户。
本实施例中,在利用测试案例对待测试***进行测试时,有时需针对待测试***的动态链路进行测试。该动态链路指的是在待测试***向web服务器发起http请求的动态过程中所经过的方法链。记录该测试案例在动态链路测试执行过程中所流经的方法链,并在展示的静态调用结构以及待测试***代码的各个静态方法链中找到流经的方法链所对应的静态方法链。将流经的方法链所对应的静态方法链与待测试***代码的各个静态方法链中其他静态方法链进行区分标识(如采用不同的颜色分别标注、高亮、标记等)。例如,可在方法调用结构树展示的待测试***代码的各个静态方法链中,将针对待测试***的动态链路进行测试时流经的方法链所对应的静态方法链进行点亮或采用绿色进行标注显示,将方法调用结构树中展示的其他静态方法链不进行点亮或采用红色进行标注显示。这样,用户通过展示的方法调用结构树,即可直观地获知测试案例执行的效果,通过区分显示的待测试***中流经的方法链所对应的静态方法链以及整个待测试***的静态调用结构,用户可直观地获知当前已执行的方法链和还未执行的方法链,从而实现可视化展示案例执行效果,以使得用户能从待测试***代码中各个方法之间的静态调用结构以及动态链路测试这两方面来完整衡量测试案例执行的效果。
本实施例通过对待测试***的代码进行分析,得到待测试***代码中各个方法之间的静态调用结构,并根据所述静态调用结构建立待测试***代码中的各个静态方法链;将各个静态方法链按所述静态调用结构进行展示;在预设的测试案例对所述待测试***执行动态链路测试时,记录所述测试案例在动态链路测试执行过程中所流经的方法链,并对展示的各个静态方法链中在动态链路测试执行过程中所流经的方法链和其他未测试的静态方法链进行区分标识,以将所述测试案例的测试效果展示给用户。由于能将待测试***的各个静态方法链按静态调用结构进行展示,用户可直观地获知待测试***中的方法链层次结构,而且,通过在按静态调用结构展示的各个静态方法链中对测试案例在动态链路测试执行过程中所流经的方法链和其他方法链进行区分标识,用户可直观地获知待测试***中当前已执行测试的方法链和还未执行测试的方法链,从而实现测试案例执行效果的可视化展示,让用户能完整衡量利用测试案例对待测试***进行测试时的执行效果。
在一可选的实施例中,在上述图1的实施例的基础上,所述测试案例的测试效果展示***10被所述处理器12执行实现所述步骤S2时,具体包括:
采用Graphviz包将各个静态方法链按所述静态调用结构绘制生成可缩放矢量图形来进行可视化展示。
本实施例中在展示静态调用结构以及流经的方法链所对应的静态方法链时,可采用Graphviz包生成svg进行可视化的展示。其中,Graphviz是AT&T Labs Research开发的开源的图形绘制工具, 它使用一个特定的DSL(领域特定语言):dot作为脚本语言,然后使用布局引擎来解析此脚本,并完成自动布局。它可以很方便的用来绘制结构化的图形网络,Graphviz提供丰富的导出格式,如常用的图片格式,SVG,PDF格式等。本实施例中采用graphviz来绘制展示静态调用结构,能有效保证生成图片的质量和速度。且本实施例中最终的展示格式采用svg(可缩放矢量图形)格式,Internet Explorer9,火狐,谷歌Chrome,Opera和Safari都支持SVG,因此,更加方便用户通过Web浏览器来打开查看展示的静态调用结构以及流经的方法链所对应的静态方法链,灵活地为用户可视化展示案例执行效果,更加实用。
在一可选的实施例中,所述测试案例的测试效果展示***10被所述处理器12执行实现所述步骤S3时,包括:
配置Java字节码工具包作为javassist即Java代理,Javassist是一个开源的java字节码操作工具,主要是对已经编译好的class文件进行修改和处理。在本实施例中,先配置javassist工具包作为javaagent代理,当web(网站)服务器启动时,利用javaagent代理在加载待测软件***的class文件之前或运行期间来进行拦截,对字节码做修改,以对待测软件***代码中的方法(链)进行增强,以便记录方法(链)的相关信息(如名称、编号等);并对待测软件***的过滤器进行增强,以便捕获http请求相关信息。例如,在测试案例的执行过程中,可记录进入待测软件***的http请求,并将进入待测软件***的http请求所经过的方法(链)保存起来。本案中的测试案例包括接口测试案例、WEB(网页)测试案例等。该测试案例可以是有针对性编写的个性化测试用例,也可以是已有的常用测试案例。
在一可选的实施例中,所述测试案例的测试效果展示***10被所述处理器12执行时,还实现如下步骤:
当所述测试案例在动态链路测试执行过程中所流经的方法链出现测试异常时,对展示的各个静态方法链中出现测试异常的方法链按预设异常标识方式进行标识,以向用户展示出现测试异常的方法链。
本实施例中还可在展示界面中针对测试结果向用户发出提示信息,例如,若所流经的方法链测试中无bug,则可由红色标识转为绿色标识或高亮提醒,或向用户发出短信等提示预警。否则,保持红色。用户即可更加直观地获知每一测试案例执行时对应方法链的测试结果。
在一可选的实施例中,所述测试案例的测试效果展示***10被所述处理器12执行时,还实现如下步骤:
当有代码变更,例如待测试***代码中某一类(如某一功能模块)发生变更时,需要利用测试案例对待测试***进行测试,若该测试案例在动态链路测试执行过程中所流经的方法链所对应的静态方法链在方法调用结构树中进行了标识展示(如标红),则进一步地,还可对该类中其他还未被测试案例覆盖测试的静态方法链进行标识(如标黄),以供用户针对标黄的静态方法链选取对应的测试案例进行有针对性的测试。这样,用户可明确案例执行流程以及案例遗漏流程,以提高代码变更时对待测试***的测试效果。
如图2所示,图2为本发明测试案例的测试效果展示方法一实施例的流程示意图,该测试案例的测试效果展示方法包括以下步骤:
步骤S10,对待测试***的代码进行分析,得到待测试***代码中各个方法之间的静态调用结构,并根据所述静态调用结构建立待测试***代码中的各个静态方法链。
利用Java字节码框架ASM包对待测试***代码的class文件进行分析,分析得到待测试***代码中各个方法之间的静态调用结构;并可利用分析的静态调用结构得到待测试***代码的各个静态方法链。其中,ASM是一个java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。Java class 被存储在严格格式定义的 .class文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及 Java 字节码(指令)。ASM从类文件中读入信息后,能够分析类信息,解析编译过的class字节码文件。例如,可利用Asm包对待测试***代码进行逐行分析,获取待测试***代码中不同类之间各个方法的调用关系。如一个类中各个方法有对应的代码块,根据代码块之间的调用关系可以得到对应的各个方法之间的调用关系(即调用结构)。进一步地,方法链为若干具有调用关系的方法组合而成,根据一个类中各个方法之间的调用结构,即可获得一个类中由若干具有调用关系的方法组合而成的多条方法链,作为静态方法链。
步骤S20,基于预设展示规则将各个静态方法链按所述静态调用结构进行展示。
本实施例中,对分析的静态调用结构以及得到的待测试***代码的各个静态方法链按预设展示规则进行可视化展示。例如,可根据待测试***代码中各个方法之间的静态调用结构构建一个带主节点和子节点的方法调用结构树,对应的树形结构划分规则为:针对待测试***代码的不同类如不同功能模块,设置为对应的各个主节点;每一主节点即每一类下的若干方法按照方法之间的静态调用结构依次形成各级子节点;其中,方法调用结构树中若干有调用关系的方法组合成静态方法链。
步骤S30,在预设的测试案例对所述待测试***执行动态链路测试时,记录所述测试案例在动态链路测试执行过程中所流经的方法链,并在展示的各个静态方法链中找到与流经的方法链对应的静态方法链作为已测试方法链。
步骤S40,对展示的各个静态方法链中的已测试方法链和其他未测试的静态方法链进行区分标识,以将所述测试案例的测试执行效果展示给用户。
本实施例中,在利用测试案例对待测试***进行测试时,有时需针对待测试***的动态链路进行测试。该动态链路指的是在待测试***向web服务器发起http请求的动态过程中所经过的方法链。记录该测试案例在动态链路测试执行过程中所流经的方法链,并在展示的静态调用结构以及待测试***代码的各个静态方法链中找到流经的方法链所对应的静态方法链。将流经的方法链所对应的静态方法链与待测试***代码的各个静态方法链中其他静态方法链进行区分标识(如采用不同的颜色分别标注、高亮、标记等)。例如,可在方法调用结构树展示的待测试***代码的各个静态方法链中,将针对待测试***的动态链路进行测试时流经的方法链所对应的静态方法链进行点亮或采用绿色进行标注显示,将方法调用结构树中展示的其他静态方法链不进行点亮或采用红色进行标注显示。这样,用户通过展示的方法调用结构树,即可直观地获知测试案例执行的效果,通过区分显示的待测试***中流经的方法链所对应的静态方法链以及整个待测试***的静态调用结构,用户可直观地获知当前已执行的方法链和还未执行的方法链,从而实现可视化展示案例执行效果,以使得用户能从待测试***代码中各个方法之间的静态调用结构以及动态链路测试这两方面来完整衡量测试案例执行的效果。
本实施例通过对待测试***的代码进行分析,得到待测试***代码中各个方法之间的静态调用结构,并根据所述静态调用结构建立待测试***代码中的各个静态方法链;将各个静态方法链按所述静态调用结构进行展示;在预设的测试案例对所述待测试***执行动态链路测试时,记录所述测试案例在动态链路测试执行过程中所流经的方法链,并对展示的各个静态方法链中在动态链路测试执行过程中所流经的方法链和其他未测试的静态方法链进行区分标识,以将所述测试案例的测试效果展示给用户。由于能将待测试***的各个静态方法链按静态调用结构进行展示,用户可直观地获知待测试***中的方法链层次结构,而且,通过在按静态调用结构展示的各个静态方法链中对测试案例在动态链路测试执行过程中所流经的方法链和其他方法链进行区分标识,用户可直观地获知待测试***中当前已执行测试的方法链和还未执行测试的方法链,从而实现测试案例执行效果的可视化展示,让用户能完整衡量利用测试案例对待测试***进行测试时的执行效果。
在一可选的实施例中,在上述实施例的基础上,所述步骤S20包括:
采用Graphviz包将各个静态方法链按所述静态调用结构绘制生成可缩放矢量图形来进行可视化展示。
本实施例中在展示静态调用结构以及流经的方法链所对应的静态方法链时,可采用Graphviz包生成svg进行可视化的展示。其中,Graphviz是AT&T Labs Research开发的开源的图形绘制工具, 它使用一个特定的DSL(领域特定语言):dot作为脚本语言,然后使用布局引擎来解析此脚本,并完成自动布局。它可以很方便的用来绘制结构化的图形网络,Graphviz提供丰富的导出格式,如常用的图片格式,SVG,PDF格式等。本实施例中采用graphviz来绘制展示静态调用结构,能有效保证生成图片的质量和速度。且本实施例中最终的展示格式采用svg(可缩放矢量图形)格式,Internet Explorer9,火狐,谷歌Chrome,Opera和Safari都支持SVG,因此,更加方便用户通过Web浏览器来打开查看展示的静态调用结构以及流经的方法链所对应的静态方法链,灵活地为用户可视化展示案例执行效果,更加实用。
在一可选的实施例中,所述步骤S30包括:
配置Java字节码工具包作为javassist即Java代理,Javassist是一个开源的java字节码操作工具,主要是对已经编译好的class文件进行修改和处理。在本实施例中,先配置javassist工具包作为javaagent代理,当web(网站)服务器启动时,利用javaagent代理在加载待测软件***的class文件之前或运行期间来进行拦截,对字节码做修改,以对待测软件***代码中的方法(链)进行增强,以便记录方法(链)的相关信息(如名称、编号等);并对待测软件***的过滤器进行增强,以便捕获http请求相关信息。例如,在测试案例的执行过程中,可记录进入待测软件***的http请求,并将进入待测软件***的http请求所经过的方法(链)保存起来。本案中的测试案例包括接口测试案例、WEB(网页)测试案例等。该测试案例可以是有针对性编写的个性化测试用例,也可以是已有的常用测试案例。
在一可选的实施例中,该方法还包括:
当所述测试案例在动态链路测试执行过程中所流经的方法链出现测试异常时,对展示的各个静态方法链中出现测试异常的方法链按预设异常标识方式进行标识,以向用户展示出现测试异常的方法链。
本实施例中还可在展示界面中针对测试结果向用户发出提示信息,例如,若所流经的方法链测试中无bug,则可由红色标识转为绿色标识或高亮提醒,或向用户发出短信等提示预警。否则,保持红色。用户即可更加直观地获知每一测试案例执行时对应方法链的测试结果。
在一可选的实施例中,该方法还包括:
当有代码变更,例如待测试***代码中某一类(如某一功能模块)发生变更时,需要利用测试案例对待测试***进行测试,若该测试案例在动态链路测试执行过程中所流经的方法链所对应的静态方法链在方法调用结构树中进行了标识展示(如标红),则进一步地,还可对该类中其他还未被测试案例覆盖测试的静态方法链进行标识(如标黄),以供用户针对标黄的静态方法链选取对应的测试案例进行有针对性的测试。这样,用户可明确案例执行流程以及案例遗漏流程,以提高代码变更时对待测试***的测试效果。
此外,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有测试案例的测试效果展示***,所述测试案例的测试效果展示***可被至少一个处理器执行,以使所述至少一个处理器执行如上述实施例中的测试案例的测试效果展示方法的步骤,该测试案例的测试效果展示方法的步骤S10、S20、S30等具体实施过程如上文所述,在此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件来实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上参照附图说明了本发明的优选实施例,并非因此局限本发明的权利范围。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本领域技术人员不脱离本发明的范围和实质,可以有多种变型方案实现本发明,比如作为一个实施例的特征可用于另一实施例而得到又一实施例。凡在运用本发明的技术构思之内所作的任何修改、等同替换和改进,均应在本发明的权利范围之内。
Claims (10)
1.一种电子装置,其特征在于,所述电子装置包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的测试案例的测试效果展示***,所述测试案例的测试效果展示***被所述处理器执行时实现如下步骤:
对待测试***的代码进行分析,得到待测试***代码中各个方法之间的静态调用结构,并根据所述静态调用结构建立待测试***代码中的各个静态方法链;
基于预设展示规则将各个静态方法链按所述静态调用结构进行展示;
在预设的测试案例对所述待测试***执行动态链路测试时,记录所述测试案例在动态链路测试执行过程中所流经的方法链,并在展示的各个静态方法链中找到与流经的方法链对应的静态方法链作为已测试方法链;
对展示的各个静态方法链中的已测试方法链和其他未测试的静态方法链进行区分标识,以将所述测试案例的测试执行效果展示给用户。
2.如权利要求1所述的电子装置,其特征在于,所述对待测试***的代码进行分析,得到待测试***代码中各个方法之间的静态调用结构,并根据所述静态调用结构建立待测试***代码中的各个静态方法链的步骤包括:
利用Java字节码框架ASM包对待测试***代码的class文件进行逐行分析,获取待测试***代码的每个类中各个方法的调用关系作为静态调用结构;
将一个类中由若干具有调用关系的方法组合而成的方法链作为静态方法链。
3.如权利要求2所述的电子装置,其特征在于,所述基于预设展示规则将各个静态方法链按所述静态调用结构进行展示的步骤包括:
采用Graphviz包将各个静态方法链按所述静态调用结构绘制生成可缩放矢量图形来进行可视化展示。
4.如权利要求1、2或3所述的电子装置,其特征在于,所述在预设的测试案例对所述待测试***执行动态链路测试时,记录所述测试案例在动态链路测试执行过程中所流经的方法链的步骤包括:
配置Java字节码工具作为Java代理,在预设的Web服务器启动,预设的测试案例对所述待测试***执行动态链路测试过程中,利用所述Java代理对所述待测试***的过滤器进行增强,以捕获进入所述待测试***的HTTP请求,并利用所述Java代理记录进入所述待测试***的HTTP请求所经过的方法链。
5.一种测试案例的测试效果展示方法,其特征在于,所述测试案例的测试效果展示方法包括:
对待测试***的代码进行分析,得到待测试***代码中各个方法之间的静态调用结构,并根据所述静态调用结构建立待测试***代码中的各个静态方法链;
基于预设展示规则将各个静态方法链按所述静态调用结构进行展示;
在预设的测试案例对所述待测试***执行动态链路测试时,记录所述测试案例在动态链路测试执行过程中所流经的方法链,并在展示的各个静态方法链中找到与流经的方法链对应的静态方法链作为已测试方法链;
对展示的各个静态方法链中的已测试方法链和其他未测试的静态方法链进行区分标识,以将所述测试案例的测试执行效果展示给用户。
6.如权利要求5所述的测试案例的测试效果展示方法,其特征在于,所述对待测试***的代码进行分析,得到待测试***代码中各个方法之间的静态调用结构,并根据所述静态调用结构建立待测试***代码中的各个静态方法链的步骤包括:
利用Java字节码框架ASM包对待测试***代码的class文件进行逐行分析,获取待测试***代码的每个类中各个方法的调用关系作为静态调用结构;
将一个类中由若干具有调用关系的方法组合而成的方法链作为静态方法链。
7.如权利要求6所述的测试案例的测试效果展示方法,其特征在于,所述基于预设展示规则将各个静态方法链按所述静态调用结构进行展示的步骤包括:
采用Graphviz包将各个静态方法链按所述静态调用结构绘制生成可缩放矢量图形来进行可视化展示。
8.如权利要求5、6或7所述的测试案例的测试效果展示方法,其特征在于,所述在预设的测试案例对所述待测试***执行动态链路测试时,记录所述测试案例在动态链路测试执行过程中所流经的方法链的步骤包括:
配置Java字节码工具作为Java代理,在预设的Web服务器启动,预设的测试案例对所述待测试***执行动态链路测试过程中,利用所述Java代理对所述待测试***的过滤器进行增强,以捕获进入所述待测试***的HTTP请求,并利用所述Java代理记录进入所述待测试***的HTTP请求所经过的方法链。
9.如权利要求5、6或7所述的测试案例的测试效果展示方法,其特征在于,还包括:
当所述测试案例在动态链路测试执行过程中所流经的方法链出现测试异常时,对展示的各个静态方法链中出现测试异常的方法链按预设异常标识方式进行标识,以向用户展示出现测试异常的方法链。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有测试案例的测试效果展示***,所述测试案例的测试效果展示***被处理器执行时实现如权利要求5至9中任一项所述的测试案例的测试效果展示方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810345030.4A CN108763054B (zh) | 2018-04-17 | 2018-04-17 | 测试案例的测试效果展示方法、电子装置及存储介质 |
PCT/CN2018/102100 WO2019200800A1 (zh) | 2018-04-17 | 2018-08-24 | 测试案例的测试效果展示方法、电子装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810345030.4A CN108763054B (zh) | 2018-04-17 | 2018-04-17 | 测试案例的测试效果展示方法、电子装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108763054A CN108763054A (zh) | 2018-11-06 |
CN108763054B true CN108763054B (zh) | 2021-03-23 |
Family
ID=64010751
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810345030.4A Active CN108763054B (zh) | 2018-04-17 | 2018-04-17 | 测试案例的测试效果展示方法、电子装置及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN108763054B (zh) |
WO (1) | WO2019200800A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110083391A (zh) * | 2019-03-16 | 2019-08-02 | 平安科技(深圳)有限公司 | 调用请求监控方法、装置、设备及存储介质 |
CN112015640B (zh) * | 2020-08-06 | 2024-04-05 | 京东科技控股股份有限公司 | 一种软件测试方法及*** |
CN117421839A (zh) * | 2023-11-06 | 2024-01-19 | 上海同星智能科技有限公司 | 汽车仿真测试过程中的程序步骤可视化实现方法及*** |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103617120A (zh) * | 2013-12-05 | 2014-03-05 | 北京奇虎科技有限公司 | 一种单元测试方法和装置 |
US8893087B2 (en) * | 2011-08-08 | 2014-11-18 | Ca, Inc. | Automating functionality test cases |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101645037B (zh) * | 2009-09-11 | 2011-06-29 | 兰雨晴 | 基础软件平台应用程序接口集成测试覆盖分析方法 |
CN102043710A (zh) * | 2009-10-22 | 2011-05-04 | 上海杉达学院 | 可视化软件测试*** |
CN103473171B (zh) * | 2013-08-28 | 2016-06-08 | 北京信息科技大学 | 一种基于函数调用路径的覆盖率动态跟踪方法及装置 |
CN104536895B (zh) * | 2015-01-12 | 2017-06-09 | 牟永敏 | 一种面向Java函数调用路径的测试过程跟踪方法及*** |
CN107797923B (zh) * | 2017-10-10 | 2019-04-26 | 平安科技(深圳)有限公司 | 代码覆盖率分析方法及应用服务器 |
-
2018
- 2018-04-17 CN CN201810345030.4A patent/CN108763054B/zh active Active
- 2018-08-24 WO PCT/CN2018/102100 patent/WO2019200800A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8893087B2 (en) * | 2011-08-08 | 2014-11-18 | Ca, Inc. | Automating functionality test cases |
CN103617120A (zh) * | 2013-12-05 | 2014-03-05 | 北京奇虎科技有限公司 | 一种单元测试方法和装置 |
Non-Patent Citations (1)
Title |
---|
"基于规则的嵌入式软件***静态测试";吕文晶;《中国优秀硕士学位论文全文数据库信息科技辑》;20140815(第08期);第I138-119页 * |
Also Published As
Publication number | Publication date |
---|---|
WO2019200800A1 (zh) | 2019-10-24 |
CN108763054A (zh) | 2018-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108763054B (zh) | 测试案例的测试效果展示方法、电子装置及存储介质 | |
US8434062B2 (en) | Enhancing source code debugging and readability using visual symbols | |
CN109947637B (zh) | 网页兼容性自动化测试方法、装置、设备及介质 | |
CN108845839B (zh) | 应用页面加载方法、装置及计算机可读存储介质 | |
CN108427731B (zh) | 页面代码的处理方法、装置、终端设备及介质 | |
WO2019227708A1 (zh) | 测试案例的在线调试装置、方法及计算机可读存储介质 | |
JP2011003182A (ja) | キーワード表示方法およびそのシステム | |
US20130275951A1 (en) | Race detection for web applications | |
CN111680253A (zh) | 页面应用数据包生成方法、装置、计算机设备及存储介质 | |
US9715483B2 (en) | User interface for testing and asserting UI elements with natural language instructions | |
JP6440895B2 (ja) | ソフトウェア分析装置及びソフトウェア分析方法 | |
CN112486490B (zh) | 前端代码打包方法、装置、电子设备及存储介质 | |
CN111475390A (zh) | 日志采集***部署方法、装置、设备及存储介质 | |
CN113377661A (zh) | 接口测试方法、装置、电子设备及存储介质 | |
CN108829575B (zh) | 测试案例推荐方法、电子装置及可读存储介质 | |
US8813036B2 (en) | Visual representation of a difference between Cartesian product models | |
CN112579475A (zh) | 代码测试方法、装置、设备及可读存储介质 | |
CN111914198A (zh) | 一种实现浏览器兼容的方法、***及电子设备 | |
CN109669799B (zh) | 错误上报控制方法、装置及存储介质 | |
CN113468458B (zh) | 一种基于web的应用运行方法 | |
CN115934503A (zh) | 程序测试方法、装置、设备及存储介质 | |
CN115033489A (zh) | 代码资源检测方法、装置、电子设备及存储介质 | |
CN112527282B (zh) | 前端页面校验方法、装置、电子设备及存储介质 | |
CN114564413B (zh) | 一种同步设备测试方法及装置 | |
CN113760706B (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 |