CN112015640A - 一种软件测试方法及*** - Google Patents
一种软件测试方法及*** Download PDFInfo
- Publication number
- CN112015640A CN112015640A CN202010784860.4A CN202010784860A CN112015640A CN 112015640 A CN112015640 A CN 112015640A CN 202010784860 A CN202010784860 A CN 202010784860A CN 112015640 A CN112015640 A CN 112015640A
- Authority
- CN
- China
- Prior art keywords
- tested
- source code
- application
- test case
- determining
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 70
- 238000013522 software testing Methods 0.000 title claims abstract description 37
- 238000012360 testing method Methods 0.000 claims abstract description 101
- 230000006870 function Effects 0.000 claims description 27
- 238000004891 communication Methods 0.000 claims description 15
- 238000012544 monitoring process Methods 0.000 claims description 9
- 239000000523 sample Substances 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 5
- 238000004043 dyeing Methods 0.000 claims description 5
- 238000013507 mapping Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 description 7
- 230000009471 action Effects 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 239000003086 colorant Substances 0.000 description 2
- 238000011990 functional testing Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000010186 staining Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
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
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
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
技术领域
本申请涉及软件测试技术领域,尤其涉及一种软件测试方法及***。
背景技术
一般情况下,为了保证应用程序的正常运行,在应用程序上线前需要对其进行测试;但是,随着计算机技术的发展及业务的需求,应用程序***也随之越来越庞大,因此对测试人员的要求也越来越高。
其中黑盒测试是一种常用的功能测试方法;在实现本发明过程中,发明人发现:现有的黑盒测试,用户无法观察到功能测试用例对被测程序的代码覆盖情况。
针对相关技术中存在的诸多技术问题,目前尚未提供有效的解决方案。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请提供了一种软件测试方法及***。
第一方面,本申请实施例提供了一种软件测试方法,包括:
确定待测试应用;
确定所述待测试应用的第一源代码;
获取所述待测试应用按照预设的测试用例运行时的运行数据;
根据所述运行数据确定所述待测试应用按照所述测试用例运行时,所述第一源代码中被执行的第二源代码;
对所述第一源代码和第二源代码进行差异化展示。
可选的,如前述的软件测试方法,所述获取所述待测试应用按照预设的测试用例运行时的运行数据,包括:
将探针***所述待测试应用运行的程序类中;所述待测试应用包括至少一个所述程序类;
获取通过所述探针跟踪的程序类的程序信息;其中,所述运行数据包括多个所述程序信息;所述程序信息包括:所述程序类中各行源代码的类名、方法名和代码行号;
将所述程序信息写入预设的存储空间。
可选的,如前述的软件测试方法,所述根据所述运行数据确定所述待测试应用按照所述测试用例运行时,所述第一源代码中被执行的第二源代码,包括:
对所述存储空间进行监听,实时读取得到写入所述存储空间中的最新程序信息;
按照预设的分割策略对所述最新程序信息进行分割,得到多个分割后程序信息;
根据每个所述分割后程序信息分别确定被执行的所述第二源代码。
可选的,如前述的软件测试方法,所述对所述第一源代码和第二源代码进行差异化展示,包括:
分别将各个所述第一源代码映射至前端,得到与各个所述第一源代码对应的第一展示信息,并对所述第一展示信息按照第一展示策略进行展示;
确定所有所述第一展示信息中与所述第二源代码对应的第二展示信息,并对所述第二展示信息按照第二展示策略进行展示;其中,所述第一展示策略异于所述第二展示策略。
可选的,如前述的软件测试方法:
所述确定待测试应用,包括:
确定所述待测试应用的配置信息;其中,所述配置信息包括:所述待测试应用所在服务器的服务器IP地址,所述待测试应用的存储路径信息;
所述获取所述待测试应用按照预设的测试用例运行时的运行数据,包括:
根据所述配置信息生成对应的驱动脚本;
通过所述驱动脚本驱动Btrace程序对所述待测试应用进行监听,得到所述待测试应用按照所述测试用例运行时的所述运行数据。
可选的,如前述的软件测试方法,所述测试用例包括多个待测试功能;还包括:
确定当前进行测试的待测试功能;
获取所述待测试功能的测试结果;
在所述测试结果不符合预设要求时,确定所述第二展示信息中与所述待测试功能对应的第三展示信息;
将所述第三展示信息按照第三展示策略进行展示。
可选的,如前述的软件测试方法,还包括:
根据各个所述第一源代码的程序信息以及各个所述第二源代码的程序信息,确定不存在于所述第二源代码中的缺失程序信息;其中,所述运行数据包括多个所述程序信息;所述程序信息包括:所述程序类中各行源代码的类名、方法名和代码行号;
根据所述缺失程序信息得到测试用例更新策略;
根据所述测试用例更新策略对所述测试用例进行更新,得到更新后测试用例。
第二方面,本申请实施例提供了一种软件测试***,包括:服务器以及代码染色平台;
所述服务器包括:
第一确定模块,用于确定待测试应用;
第二确定模块,用于确定所述待测试应用的第一源代码;
运行数据模块,用于获取所述待测试应用按照预设的测试用例运行时的运行数据;
第三确定模块,用于根据所述运行数据确定所述待测试应用按照所述测试用例运行时,所述第一源代码中被执行的第二源代码;
所述代码染色平台,用于对所述第一源代码和第二源代码进行差异化展示。
第三方面,本申请实施例提供了一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,所述处理器、通信接口和存储器通过通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行所述计算机程序时,实现如前述任一项所述的处理方法。
第四方面,本申请实施例提供了一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如前述任一项所述的处理方法。
本申请实施例提供了一种软件测试方法及***,其中方法包括:确定待测试应用;确定所述待测试应用的第一源代码;获取所述待测试应用按照预设的测试用例运行时的运行数据;根据所述运行数据确定所述待测试应用按照所述测试用例运行时,所述第一源代码中被执行的第二源代码;对所述第一源代码和第二源代码进行差异化展示。采用本实施例中的方案可以获取待测试应用在通过测试用例进行测试时,执行的源代码;同时,通过对第一源代码和第二源代码进行差异化展示,可以直观表征出执行的第二源代码,使测试人员能够更为直观的观察到测试用例对所有源代码的逻辑覆盖情况。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种软件测试方法的流程示意图;
图2为本申请另一实施例提供的一种软件测试方法的流程示意图;
图3为本申请另一实施例提供的一种软件测试方法的流程示意图;
图4为本申请另一实施例提供的一种软件测试方法的流程示意图;
图5为本申请另一实施例提供的一种软件测试方法的流程示意图;
图6为本申请实施例提供的一种软件测试方法的流程示意图;
图7为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请实施例提供的一种第一方面,本申请实施例提供了一种软件测试方法,包括如下所述步骤S1至S5:
步骤S1.确定待测试应用。
具体的,待测试应用即为需要进行测试的应用。
可选的,确定待测试应用可以是将待测试应用导入测试环境中;也可以是,获取待测试应用的存储位置,将其加载至测试环境中。
步骤S2.确定待测试应用的第一源代码。
具体的,可以通过git clone命令在代码仓库中获取待测试应用的第一源代码;一般的,第一源代码是待测试应用的所有源代码。
步骤S3.获取待测试应用按照预设的测试用例运行时的运行数据。
具体的,测试用例(Test Case)是指对一项特定的软件产品进行测试的任务的描述,且测试用例中可以体现测试方案、方法、技术和策略。测试用例的内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档。简单地认为,测试用例是为待测试应用而编制的一组测试输入、执行条件以及预期结果,用于核实待测试应用是否满足特定需求。
由于本实施例是用于获取软件中按照测试用例运行时,被测试的源代码,因此,运行数据可以是表征:按照该测试用例对待测试应用进行测试时,待测试应用中执行的源代码。
步骤S4.根据运行数据确定待测试应用按照测试用例运行时,第一源代码中被执行的第二源代码。
具体的,在得到运行数据之后,可以确定其中的第二源代码;所述第二源代码是待测试应用按照测试用例运行时被执行的源代码。
步骤S5.对第一源代码和第二源代码进行差异化展示。
也就是说,将第一源代码和第二源代码分别映射到展示界面,然后将第二源代码通过与第一源代码不同的展示方法进行展示;即:将待测试应用中被执行过的源代码以及未被执行的源代码采用不同的显示方式进行展示;具体的,可以采用不同的字符大小,不同的字体以及颜色等方式进行差异化展示。
综上所述,采用本实施例中的方案可以获取待测试应用在通过测试用例进行测试时,执行的源代码;同时,通过对第一源代码和第二源代码进行差异化展示,可以直观表征出执行的第二源代码,使测试人员能够更为直观的观察到测试用例对所有源代码的逻辑覆盖情况。
如图2所示,在一些实施例中,如前述的软件测试方法,步骤S3获取待测试应用按照预设的测试用例运行时的运行数据,包括如下所述步骤S31至S33:
步骤S31.将探针***待测试应用运行的程序类中;待测试应用包括至少一个程序类。
可选的,当待测试应用是java程序时,可以通过Btrace程序(一个开源项目;旨在为java提供安全可靠的动态跟踪分析工具;Btrace基于动态字节码修改技术(Hotswap)来实现运行时java程序的跟踪和替换)将探针***待测试应用的程序类中;一般的,待测试应用中会包括多个程序类。
因此,在按照测试用例对待测试程序进行测试时,探针跟踪的是待测试应用中运行的程序类。
可选的,当待测试应用是java程序时,当启动待测试应用时,一个JVM实例就产生了,任何一个拥有public static void main(String[]args)函数的class都可以作为JVM实例运行的起点。
步骤S32.获取通过探针跟踪的程序类的程序信息;其中,运行数据包括多个程序信息;程序信息包括:程序类中各行源代码的类名、方法名和代码行号。
具体的,java程序并不一个可执行文件,是由多个独立的类文件组成。因此,待测试应用中的这些程序类对应的文件并非一次性全部装入内存,而是依据程序逐步载入,逐个进行测试。由于类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。因此源代码的类名可以是:类的类型的名称(即:classname);类中的方法是直接可以使用类引用,不需要实例化就可以使用的方法;方法名为:方法的名称(即:methodname);代码行号可以是:以第一行的代码为初始行(例如第一行),然后依次逐行递增得到;由于程序信息包括:程序类中各行源代码的类名、方法名和代码行号;因此,程序信息是用于表征通过探针跟踪过的源代码的信息。
步骤S33.将程序信息写入预设的存储空间。
具体的,存储空间是预先分配得到的,用于存储程序信息存储空间;进一步的,由于程序信息中包括多种不同类型的信息,因此,可以将程序信息存储在特定的数据表中,也可以写入以待测试应用名称命名的txt格式文件中。
如图3所示,在一些实施例中,如前述的软件测试方法,步骤S4根据运行数据确定待测试应用按照测试用例运行时,第一源代码中被执行的第二源代码,包括如下所述步骤S41至S43:
步骤S41.对存储空间进行监听,实时读取得到写入存储空间中的最新程序信息。
具体的,可以是按照固定间隔时间对存储空间进行监听,以获取写入存储空间中的最新程序信息。
其中,最新程序信息是之前在对存储空间进行监听时,未监听得到,但在当下监听时,监听得到的程序信息。
进一步的,进行监听的频率可以按照待测试应用程序运行的情况进行,当程序运行处理效率高的时候,可以适当提高对存储空间的监听频率;反之,当程序运行处理效率低的时候,可以适当降低对存储空间的监听频率。
步骤S42.按照预设的分割策略对最新程序信息进行分割,得到多个分割后程序信息。
具体的,分割策略可以是诸如按照程序类、按照代码行号等方式进行分割;可选的,由于进行程序类或代码行进行分割,需要识别的信息较多,会增高***运行的压力,降低分割效率;因此,可以通过识别特定的字符进行分割;由于每行源代码一般都以“;”(即:分号)作为结尾,因此,其中一种可选的分割方式可以是:识别得到源代码中每个“;”,然后根据“;”对最新程序信息进行分割,得到与每行源代码对应的分割后程序信息。
步骤S43.根据每个分割后程序信息分别确定被执行的第二源代码。
具体的,第二源代码是与每个分割程序信息对应的源代码;在前一步骤的基础上,由于分割策略是按照“;”逐行进行分割的。
进一步的,在分割后,可以确定每个分割后程序信息中的代码行号;因此得到的每个分割后程序信息都有对应的第二源代码。
其中一种可选的实现方式可以是:按照上述功能设置一个agent(agent为java可执行程序的jar包,用于读取JVM信息容器(即:存储空间)的数据并通过socket的方式传递给其他模块(例如:对源代码进行展示及渲染的模块等等));当agent被启动完成后,会创建一个守护进程,该进程通过执行java语言的BufferedReader方法读取“信息容器”的信息并进行分割;将获取的信息传递给其他模块。
通过本实施例中的方法,可以快速通过“程序信息”确定按照测试用例被执行的每行源代码,以便于后期能够对执行的源代码进行差异化展示。
在一些实施例中,如前述的软件测试方法,所述步骤S5对第一源代码和第二源代码进行差异化展示,包括如下所述步骤S51和S52:
步骤S51.分别将各个第一源代码映射至前端,得到与各个第一源代码对应的第一展示信息,并对第一展示信息按照第一展示策略进行展示。
具体的,可以通过git clone命令在代码仓库中读取得到所有第一源代码;其中第一展示信息是在前端展示界面对所有第一源代码进行展示后的信息;可选的,第一展示策略是对第一展示信息进行展示的策略;且第一展示策略中包含的策略可以包括但不限于:字符的大小、字符颜色、背景色、所在行的标记等等。
步骤S52.确定所有第一展示信息中与第二源代码对应的第二展示信息,并对第二展示信息按照第二展示策略进行展示;其中,第一展示策略异于第二展示策略。
具体的,第二展示信息是:第一展示信息中与第二源代码对应的信息。因此第二展示信息是待测试应用中被执行的源代码对应的信息。
可以在第一展示信息中展示出各行的第一源代码以及各行第一源代码的代码行号;在得到第二源代码之后,可以确定各个第二源代码的代码行号,然后根据代码行号在展示界面中查询得到与其对应的第二展示信息。
可选的,第二展示策略是对第二展示信息进行展示的策略;且第二展示策略中包含的策略可以包括但不限于:字符的大小、字符颜色、背景色、所在行的标记等等。
通过使第一展示策略异于第二展示策略,可以是:采用不同的颜色或大小进行展示,也可以将第二展示信息所在行进行标记等等;进而可以直观的将第二展示信息进行突出显示,便于测试人员发现测试用例覆盖的源代码,以及未覆盖的源代码。
在一些实施例中,如前述的软件测试方法:
步骤S1确定待测试应用,包括:
确定待测试应用的配置信息;其中,配置信息包括:待测试应用所在服务器的服务器IP地址,待测试应用的存储路径信息。
具体的,配置信息还可以包括待测试应用的应用名称以及服务器账号密码等信息。其中,服务器账号密码用于登录服务器,以使用进行测试的资源;获取待测试应用的应用名称、存储路径信息以及服务器IP地址;用于根据服务器IP地址找到存储有待测试应用的服务器,然后根据存储路径信息准确在该服务器中查询得到该待测试应用,并且,可以通过应用名称对查询得到的待测试应用进行验证,以判断是否是需要测试的应用。
步骤S3获取待测试应用按照预设的测试用例运行时的运行数据,包括如下所述步骤S31和S32:
步骤S31.根据配置信息生成对应的驱动脚本。
具体的,驱动脚本是用于驱动对待测试应用执行监听行为的程序的脚本。
步骤S32.通过驱动脚本驱动Btrace程序对待测试应用进行监听,得到待测试应用按照测试用例运行时的运行数据。
也就是说,可以通过Btrace程序对待测试应用进行监听;由于Btrace程序是受驱动脚本的驱动,而驱动脚本是根据配置信息生成的,因此Btrace程序可以在驱动脚本的驱动下对指定位置的对待测试应用进行监听的。
也就是说,通过本实施例中的方法可以根据使Btrace程序对任意位置的待测试应用进行监听,而无需将待测试应用配置到测试环境中之后再进行测试,可以有效提高测试效率。
如图4所示,在一些实施例中,如前述的软件测试方法,测试用例包括多个待测试功能;步骤S52中的对第二展示信息按照第二展示策略进行展示,包括如下所述步骤S531至S56:
步骤S53.确定当前进行测试的待测试功能;
步骤S54.获取待测试功能的测试结果;
步骤S55.在测试结果不符合预设要求时,确定第二展示信息中与待测试功能对应的第三展示信息;
步骤S56.将第三展示信息按照第三展示策略进行展示。
具体的,在按照测试用例进行测试时,可以实时确定当前进行测试的功能,并且将该功能记为待测试功能。
在进行测试时,一般会将入参输入待测试应用中,然后根据得到的出参判断实现的功能是否有误,测试结果则可以是表征出参是否符合预期结果的信息,例如:“符合”或“不符合”。
预设要求可以是表征测试结果符合预期要求(例如:“符合”“正确”等)时的结果;反之,当测试结果不符合预设要求时,可以是测试结果不正常等情况。
由于,在前述实施例的基础上,每执行一段源代码,都会确定对应的第二展示信息;因此,在确定当前进行测试的待测试功能之后,可以确定以第二展示策略进行展示的最新的第二展示信息是与待测试功能相对应的;其中,第三展示信息即为,测试结果不符合预设要求的第二展示信息;将待测试功能对应的第三展示信息按照第三展示策略进行展示,可以用于记录出现性能异常的源代码,以便于后期对源代码进行改写。
如图5所示,在一些实施例中,如前述的软件测试方法,还包括如下所述步骤S6至S8:
步骤S6.根据各个第一源代码的程序信息以及各个第二源代码的程序信息,确定不存在于第二源代码中的缺失程序信息;其中,运行数据包括多个程序信息;程序信息包括:程序类中各行源代码的类名、方法名和代码行号。
具体的,由于程序信息中包括代码行号等信息,因此可以定位得到在按照测试用例执行待测试应用时,未被执行的源代码对应的程序信息,即不存在于第二源代码中的缺失程序信息。
步骤S7.根据缺失程序信息得到测试用例更新策略;
步骤S8.根据测试用例更新策略对测试用例进行更新,得到更新后测试用例。
具体的,由于每个程序信息中都包括类名、方法名,因此可以确定缺失程序信息对应的未测试的功能。
然后,按照未测试的功能确定对测试用例进行更新的测试用例更新策略,其中测试用例更新策略可以是只生成对未测试的功能进行测试的测试用例,还可以是,在原有的测试用例的基础上,增加对未测试的功能进行测试的测试用例。最后,根据测试用例更新策略对测试用例进行更新,即可得到更新后测试用例。
如图6所示,根据本申请另一方面的一个实施例,还提供了一种软件测试***,包括:服务器1以及代码染色平台2;
服务器1包括:
第一确定模块11,用于确定待测试应用;
第二确定模块12,用于确定待测试应用的第一源代码;
运行数据模块13,用于获取待测试应用按照预设的测试用例运行时的运行数据;
第三确定模块14,用于根据运行数据确定待测试应用按照测试用例运行时,第一源代码中被执行的第二源代码;
代码染色平台2,用于对第一源代码和第二源代码进行差异化展示。具体的,本发明实施例的装置中各模块实现其功能的具体过程可参见方法实施例中的相关描述,此处不再赘述。
根据本申请的另一个实施例,还提供一种电子设备,包括:如图7所示,电子设备可以包括:处理器1501、通信接口1502、存储器1503和通信总线1504,其中,处理器1501,通信接口1502,存储器1503通过通信总线1504完成相互间的通信。
存储器1503,用于存放计算机程序;
处理器1501,用于执行存储器1503上所存放的程序时,实现上述方法实施例的步骤。
上述电子设备提到的总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DigitalSignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本申请实施例还提供一种非暂态计算机可读存储介质,非暂态计算机可读存储介质存储计算机指令,计算机指令使计算机执行上述方法实施例的步骤。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种软件测试方法,其特征在于,包括:
确定待测试应用;
确定所述待测试应用的第一源代码;
获取所述待测试应用按照预设的测试用例运行时的运行数据;
根据所述运行数据确定所述待测试应用按照所述测试用例运行时,所述第一源代码中被执行的第二源代码;
对所述第一源代码和第二源代码进行差异化展示。
2.根据权利要求1所述的软件测试方法,其特征在于,所述获取所述待测试应用按照预设的测试用例运行时的运行数据,包括:
将探针***所述待测试应用运行的程序类中;所述待测试应用包括至少一个所述程序类;
获取通过所述探针跟踪的程序类的程序信息;其中,所述运行数据包括多个所述程序信息;所述程序信息包括:所述程序类中各行源代码的类名、方法名和代码行号;
将所述程序信息写入预设的存储空间。
3.根据权利要求2所述的软件测试方法,其特征在于,所述根据所述运行数据确定所述待测试应用按照所述测试用例运行时,所述第一源代码中被执行的第二源代码,包括:
对所述存储空间进行监听,实时读取得到写入所述存储空间中的最新程序信息;
按照预设的分割策略对所述最新程序信息进行分割,得到多个分割后程序信息;
根据每个所述分割后程序信息分别确定被执行的所述第二源代码。
4.根据权利要求1所述的软件测试方法,其特征在于,所述对所述第一源代码和第二源代码进行差异化展示,包括:
分别将各个所述第一源代码映射至前端,得到与各个所述第一源代码对应的第一展示信息,并对所述第一展示信息按照第一展示策略进行展示;
确定所有所述第一展示信息中与所述第二源代码对应的第二展示信息,并对所述第二展示信息按照第二展示策略进行展示;其中,所述第一展示策略异于所述第二展示策略。
5.根据权利要求1所述的软件测试方法,其特征在于:
所述确定待测试应用,包括:
确定所述待测试应用的配置信息;其中,所述配置信息包括:所述待测试应用所在服务器的服务器IP地址,所述待测试应用的存储路径信息;
所述获取所述待测试应用按照预设的测试用例运行时的运行数据,包括:
根据所述配置信息生成对应的驱动脚本;
通过所述驱动脚本驱动Btrace程序对所述待测试应用进行监听,得到所述待测试应用按照所述测试用例运行时的所述运行数据。
6.根据权利要求4所述的软件测试方法,其特征在于,所述测试用例包括多个待测试功能;还包括:
确定当前进行测试的待测试功能;
获取所述待测试功能的测试结果;
在所述测试结果不符合预设要求时,确定所述第二展示信息中与所述待测试功能对应的第三展示信息;
将所述第三展示信息按照第三展示策略进行展示。
7.根据权利要求1所述的软件测试方法,其特征在于,还包括:
根据各个所述第一源代码的程序信息以及各个所述第二源代码的程序信息,确定不存在于所述第二源代码中的缺失程序信息;其中,所述运行数据包括多个所述程序信息;所述程序信息包括:所述程序类中各行源代码的类名、方法名和代码行号;
根据所述缺失程序信息得到测试用例更新策略;
根据所述测试用例更新策略对所述测试用例进行更新,得到更新后测试用例。
8.一种软件测试***,其特征在于,包括:服务器以及代码染色平台;
所述服务器包括:
第一确定模块,用于确定待测试应用;
第二确定模块,用于确定所述待测试应用的第一源代码;
运行数据模块,用于获取所述待测试应用按照预设的测试用例运行时的运行数据;
第三确定模块,用于根据所述运行数据确定所述待测试应用按照所述测试用例运行时,所述第一源代码中被执行的第二源代码;
所述代码染色平台,用于对所述第一源代码和第二源代码进行差异化展示。
9.一种电子设备,其特征在于,包括:处理器、通信接口、存储器和通信总线,其中,所述处理器、通信接口和存储器通过通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行所述计算机程序时,实现权利要求1-7任一项所述的方法步骤。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行权利要求1-7任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010784860.4A CN112015640B (zh) | 2020-08-06 | 2020-08-06 | 一种软件测试方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010784860.4A CN112015640B (zh) | 2020-08-06 | 2020-08-06 | 一种软件测试方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112015640A true CN112015640A (zh) | 2020-12-01 |
CN112015640B CN112015640B (zh) | 2024-04-05 |
Family
ID=73499317
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010784860.4A Active CN112015640B (zh) | 2020-08-06 | 2020-08-06 | 一种软件测试方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112015640B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130326484A1 (en) * | 2012-06-04 | 2013-12-05 | International Business Machines Corporation | Synchronization point visualization for modified program source code |
US20150347278A1 (en) * | 2014-05-28 | 2015-12-03 | Vmware, Inc. | Identifying test gaps using code execution paths |
CN106294109A (zh) * | 2015-05-27 | 2017-01-04 | 腾讯科技(深圳)有限公司 | 获取缺陷代码的方法及装置 |
CN107832062A (zh) * | 2017-09-08 | 2018-03-23 | 上海壹账通金融科技有限公司 | 一种程序更新方法及终端设备 |
CN108446234A (zh) * | 2018-03-20 | 2018-08-24 | 中国银行股份有限公司 | 信息处理方法及信息处理装置 |
CN108763054A (zh) * | 2018-04-17 | 2018-11-06 | 平安科技(深圳)有限公司 | 测试案例的测试效果展示方法、电子装置及存储介质 |
CN109815105A (zh) * | 2017-11-20 | 2019-05-28 | 北京京东尚科信息技术有限公司 | 基于Btrace的应用程序测试方法和装置 |
CN110221968A (zh) * | 2019-05-20 | 2019-09-10 | 平安普惠企业管理有限公司 | 软件测试方法及相关产品 |
-
2020
- 2020-08-06 CN CN202010784860.4A patent/CN112015640B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130326484A1 (en) * | 2012-06-04 | 2013-12-05 | International Business Machines Corporation | Synchronization point visualization for modified program source code |
US20150347278A1 (en) * | 2014-05-28 | 2015-12-03 | Vmware, Inc. | Identifying test gaps using code execution paths |
CN106294109A (zh) * | 2015-05-27 | 2017-01-04 | 腾讯科技(深圳)有限公司 | 获取缺陷代码的方法及装置 |
CN107832062A (zh) * | 2017-09-08 | 2018-03-23 | 上海壹账通金融科技有限公司 | 一种程序更新方法及终端设备 |
CN109815105A (zh) * | 2017-11-20 | 2019-05-28 | 北京京东尚科信息技术有限公司 | 基于Btrace的应用程序测试方法和装置 |
CN108446234A (zh) * | 2018-03-20 | 2018-08-24 | 中国银行股份有限公司 | 信息处理方法及信息处理装置 |
CN108763054A (zh) * | 2018-04-17 | 2018-11-06 | 平安科技(深圳)有限公司 | 测试案例的测试效果展示方法、电子装置及存储介质 |
CN110221968A (zh) * | 2019-05-20 | 2019-09-10 | 平安普惠企业管理有限公司 | 软件测试方法及相关产品 |
Non-Patent Citations (1)
Title |
---|
周丽雯;: "一种基于Bullseye反推代码行对应测试用例的方法", 集成电路应用, no. 06 * |
Also Published As
Publication number | Publication date |
---|---|
CN112015640B (zh) | 2024-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10878106B2 (en) | Firmware verification | |
US8087005B2 (en) | Software testing by groups | |
US7647584B2 (en) | Automation and isolation of software component testing | |
CN106776338B (zh) | 一种测试方法、装置及服务器 | |
US9459991B2 (en) | Heap dump object identification in a heap dump analysis tool | |
CN106708704B (zh) | 一种对崩溃日志进行分类的方法和装置 | |
US20180060224A1 (en) | Distinguishing Public and Private Code in Testing Environments | |
CN111045927A (zh) | 性能测试评估方法、装置、计算机设备及可读存储介质 | |
US11422917B2 (en) | Deriving software application dependency trees for white-box testing | |
CN111427792A (zh) | 测试方法、装置、电子设备和可读存储介质 | |
CN111913878B (zh) | 基于程序分析结果的字节码插桩方法、装置及存储介质 | |
US11868465B2 (en) | Binary image stack cookie protection | |
CN112445490A (zh) | 文件序列处理方法、装置、终端设备及存储介质 | |
US20190094300A1 (en) | Ensuring completeness of interface signal checking in functional verification | |
CN110414218B (zh) | 内核检测方法、装置、电子设备及存储介质 | |
CN117407312A (zh) | 应用测试方法、装置、计算机设备及存储介质 | |
US7458063B2 (en) | Method and apparatus for supporting functionality documentation | |
CN116719736A (zh) | 一种用于测试软件界面的测试用例生成方法及装置 | |
CN112015640B (zh) | 一种软件测试方法及*** | |
CN108614704B (zh) | 代码编译方法及装置 | |
CN112560041B (zh) | 质量自动化验证检测的方法、设备及计算机存储介质 | |
KR102403351B1 (ko) | 바이너리 취약점 식별 코드 생성 방법, 그리고 이를 구현하기 위한 장치 | |
CN111371699B (zh) | 资源限流方法、装置、电子设备及存储介质 | |
CN112506782A (zh) | 一种应用程序的测试方法、装置、设备及存储介质 | |
CN112527657B (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 | ||
CB02 | Change of applicant information |
Address after: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176 Applicant after: Jingdong Technology Holding Co.,Ltd. Address before: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176 Applicant before: Jingdong Digital Technology Holding Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |