用于测试应用的方法和装置与流程

文档序号:24158578发布日期:2021-03-05 13:44阅读:75来源:国知局
用于测试应用的方法和装置与流程

[0001]
本公开的实施例涉及计算机技术领域,具体涉及用于测试应用的方法和装置。


背景技术:

[0002]
现有的自动化测试多为实际操作的自动化,需要依赖测试环境、预发布环境。通常,自动化测试中涉及的测试环境和预生产环境并非应用上线后的真实环境。而在应用上线后,仍然可能存在较多未被测试过的功能,这些未被测试过的功能是否存在异常往往难以提前预料。
[0003]
若将线上真实环境作为测试环境,测试人员采用模拟数据进行测试,会在测试过程中产生垃圾数据。


技术实现要素:

[0004]
本公开提出了用于测试应用的方法和装置。
[0005]
第一方面,本公开的实施例提供了一种用于测试应用的方法,该方法包括:响应于检测到对应用的用户操作,通过预先在应用中配置的日志埋点生成用户操作对应的埋点日志,其中,埋点日志包括用户操作对应的实际结果数据;从预先确定的测试用例集合中,确定与埋点日志相匹配的测试用例,其中,测试用例集合中的测试用例包括期望结果数据;基于埋点日志和与埋点日志相匹配的测试用例,对用户操作对应的实际结果数据和期望结果数据进行比对,生成测试结果。
[0006]
在一些实施例中,用户操作用于对目标数据库中的数据进行操作;以及基于埋点日志和与埋点日志相匹配的测试用例,对用户操作对应的实际结果数据和期望结果数据进行比对,生成测试结果,包括:对用户操作对应的实际结果数据和期望结果数据进行比对,生成比对结果;响应于比对结果指示用户操作对应的实际结果数据和期望结果数据不一致,确定是否捕获到针对用户操作的异常日志信息;响应于捕获到异常日志信息,生成表征测试用例失败的测试结果;响应于比对结果指示用户操作对应的实际结果数据和期望结果数据一致,确定目标数据库中存储的与用户操作对应的数据是否正确;响应于目标数据库中存储的与用户操作对应的数据正确,生成表征测试用例成功的测试结果;响应于目标数据库中存储的与用户操作对应的数据不正确,生成表征测试用例失败的测试结果。
[0007]
在一些实施例中,该方法还包括:将埋点日志存储于日志文件中;按照预设的日志清理时间,清理日志文件中所存储的埋点日志。
[0008]
在一些实施例中,从预先确定的测试用例集合中,确定与埋点日志相匹配的测试用例,包括:从预先确定的测试用例集合中,确定与埋点日志包括相同的关键字符的测试用例,作为与埋点日志相匹配的测试用例。
[0009]
在一些实施例中,该方法还包括:运行测试用例集合中在第一时间段内未生成相匹配的埋点日志的测试用例,得到未生成相匹配的埋点日志的测试用例的测试结果。
[0010]
在一些实施例中,该方法还包括:基于测试用例集合和在预设的第二时间段内生
成的埋点日志,生成对应预设的第二时间段的测试覆盖率。
[0011]
第二方面,本公开的实施例提供了一种用于测试应用的装置,该装置包括:第一生成单元,被配置成响应于检测到对应用的用户操作,通过预先在应用中配置的日志埋点生成用户操作对应的埋点日志,其中,埋点日志包括用户操作对应的实际结果数据;确定单元,被配置成从预先确定的测试用例集合中,确定与埋点日志相匹配的测试用例,其中,测试用例集合中的测试用例包括期望结果数据;比对单元,被配置成基于埋点日志和与埋点日志相匹配的测试用例,对用户操作对应的实际结果数据和期望结果数据进行比对,生成测试结果。
[0012]
在一些实施例中,用户操作用于对目标数据库中的数据进行操作;以及比对单元,进一步被配置成:对用户操作对应的实际结果数据和期望结果数据进行比对,生成比对结果;响应于比对结果指示用户操作对应的实际结果数据和期望结果数据不一致,确定是否捕获到针对用户操作的异常日志信息;响应于捕获到异常日志信息,生成表征测试用例失败的测试结果;响应于比对结果指示用户操作对应的实际结果数据和期望结果数据一致,确定目标数据库中存储的与用户操作对应的数据是否正确;响应于目标数据库中存储的与用户操作对应的数据正确,生成表征测试用例成功的测试结果;响应于目标数据库中存储的与用户操作对应的数据不正确,生成表征测试用例失败的测试结果。
[0013]
在一些实施例中,该装置还包括:存储单元,被配置成将埋点日志存储于日志文件中;清理单元,被配置成按照预设的日志清理时间,清理日志文件中所存储的埋点日志。
[0014]
在一些实施例中,确定单元,进一步被配置成:从预先确定的测试用例集合中,确定与埋点日志包括相同的关键字符的测试用例,作为与埋点日志相匹配的测试用例。
[0015]
在一些实施例中,该装置还包括:运行单元,被配置成运行测试用例集合中在第一时间段内未生成相匹配的埋点日志的测试用例,得到未生成相匹配的埋点日志的测试用例的测试结果。
[0016]
在一些实施例中,该装置还包括:第二生成单元,被配置成基于测试用例集合和在预设的第二时间段内生成的埋点日志,生成对应预设的第二时间段的测试覆盖率。
[0017]
第三方面,本公开的实施例提供了一种用于测试应用的电子设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序,当上述一个或多个程序被上述一个或多个处理器执行,使得该一个或多个处理器实现如上述用于测试应用的方法中任一实施例的方法。
[0018]
第四方面,本公开的实施例提供了一种用于测试应用的计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上述用于测试应用的方法中任一实施例的方法。
[0019]
本公开的实施例提供的用于测试应用的方法和装置,通过在检测到对应用的用户操作的情况下,通过预先在应用中配置的日志埋点生成用户操作对应的埋点日志,其中,埋点日志包括用户操作对应的实际结果数据,然后,从预先确定的测试用例集合中,确定与埋点日志相匹配的测试用例,其中,测试用例集合中的测试用例包括期望结果数据,最后,基于埋点日志和与埋点日志相匹配的测试用例,对用户操作对应的实际结果数据和期望结果数据进行比对,生成测试结果,由此,可以在线上真实环境中实现测试,且不产生垃圾数据,有助于提高自动化测试的覆盖率。
附图说明
[0020]
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本公开的其它特征、目的和优点将会变得更明显:
[0021]
图1是本公开的一个实施例可以应用于其中的示例性系统架构图;
[0022]
图2是根据本公开的用于测试应用的方法的一个实施例的流程图;
[0023]
图3是根据本公开的用于测试应用的方法的一个应用场景的示意图;
[0024]
图4是根据本公开的用于测试应用的方法的又一个实施例的流程图;
[0025]
图5是根据本公开的用于测试应用的装置的一个实施例的结构示意图;
[0026]
图6是适于用来实现本公开的实施例的服务器的计算机系统的结构示意图。
具体实施方式
[0027]
下面结合附图和实施例对本公开作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
[0028]
需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
[0029]
图1示出了可以应用本公开的实施例的用于测试应用的方法或用于测试应用的装置的实施例的示例性系统架构100。
[0030]
如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
[0031]
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送数据等。例如,在用户对安装于终端设备101、102、103的客户端应用进行操作后,终端设备101、102、103可以将操作对应的http((hypertext transfer protocol,超文本传输协议)请求发送给服务器105,以便服务器105检测到用户对应用的操作。终端设备101、102、103上可以安装有各种客户端应用,例如视频播放软件、新闻资讯类应用、图像处理类应用、网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
[0032]
终端设备101、102、103可以是硬件,也可以是软件。当终端设备101、102、103为硬件时,可以是具有显示屏并且支持页面浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、mp3播放器(moving picture experts group audio layer iii,动态影像专家压缩标准音频层面3)、mp4(moving picture experts group audio layer iv,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。当终端设备101、102、103为软件时,可以安装在上述所列举的电子设备中。其可以实现成多个软件或软件模块(例如用来提供分布式服务的软件或软件模块),也可以实现成单个软件或软件模块。在此不做具体限定。
[0033]
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的页面提供支持的后台服务器。后台服务器可以对接收到的http请求等数据进行分析等处理,从而为运行安装于终端设备101、102、103的应用提供支持,进而通过预先在应用中配置的日志埋点生成用户操作对应的埋点日志,以及基于埋点日志和与埋点日志相匹配的测试
用例,生成测试结果。作为示例,服务器105可以是云端服务器,也可以是物理服务器。
[0034]
需要说明的是,服务器可以是硬件,也可以是软件。当服务器为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务的软件或软件模块),也可以实现成单个软件或软件模块。在此不做具体限定。
[0035]
还需要说明的是,本公开的实施例所提供的用于测试应用的方法通常由服务器执行。相应地,用于测试应用的装置包括的各个部分(例如各个单元、子单元、模块、子模块)通常设置于服务器中。
[0036]
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
[0037]
继续参考图2,示出了根据本公开的用于测试应用的方法的一个实施例的流程200。该用于测试应用的方法,包括以下步骤:
[0038]
步骤201,响应于检测到对应用的用户操作,通过预先在应用中配置的日志埋点生成用户操作对应的埋点日志。
[0039]
在本实施例中,在检测到对应用进行操作的用户操作的情况下,用于测试应用的方法的执行主体(例如图1所示的服务器)可以通过预先在应用中配置的日志埋点生成用户操作对应的埋点日志。其中,埋点日志包括用户操作对应的实际结果数据。
[0040]
其中,上述应用可以是一系列按照特定顺序组织的计算机数据和指令的集合。例如,上述应用可以是系统软件、应用软件(例如购物类软件)、网站应用等等。用户操作可以是上述应用的用户通过安装有上述应用的终端设备,对该应用执行的操作。例如,用户操作可以包括但不限于:收藏产品操作、购买产品操作等等。
[0041]
可以理解,上述日志埋点可以在开发阶段由技术人员配置于上述应用的程序代码之中。在完成开发后,当上述应用被部署上线后,用户可以通过在用户终端下载上述应用,进而通过安装有上述应用的用户终端与上述执行主体进行交互。在交互过程中,用户操作可以运行应用的程序代码,在被运行的程序代码中配置有日志埋点的情况下,上述执行主体可以通过预先在应用中配置的日志埋点生成该用户操作对应的埋点日志。
[0042]
作为示例,如果用户操作指示订单付款,那么,在用户付款成功的情况下,日志埋点可以是“log.info("autotest:订单xxxx付款成功!")”;在用户付款失败的情况下,日志埋点可以是“log.info("autotest:订单xxxx付款失败!")”。由此,上述执行主体可以在用户付款成功的情况下,生成埋点日志“订单xxxx付款成功!”;在用户付款失败的情况下,生成埋点日志“订单xxxx付款失败!”。其中,埋点日志“订单xxxx付款成功!”包括的用户操作对应的实际结果数据可以是“付款成功”;埋点日志“订单xxxx付款失败!”包括的用户操作对应的实际结果数据可以是“付款失败”。
[0043]
作为示例,上述日志埋点可以包括但不限于以下至少一项:前端(web)功能界面的日志埋点,接口和消息队列(mq)代码的日志埋点,异常日志埋点等等。其中,前端功能界面的日志埋点可以用于统计但不限于如下信息:每屏的触达率、每屏的回翻率、每屏的停留时长等。接口和消息队列代码的日志埋点可以通过log4j(一个开源的日志操作包)的方法,通过配置.properties文件,配置日志的目的地,格式等等来实现,此外,接口和消息队列代码的日志埋点对应的埋点日志可设置按日期打印。当设置的测试用例埋点范围内,有日志出
现异常时,可以对异常日志信息进行捕获。
[0044]
实践中,可以针对上述应用的每个功能设置多个日志埋点,通常情况下,日志埋点的数量越多,可以获得越多的埋点日志,从而有助于通过后续步骤对上述应用进行更全面的测试。
[0045]
步骤202,从预先确定的测试用例集合中,确定与埋点日志相匹配的测试用例。
[0046]
在本实施例中,上述执行主体可以从预先确定的测试用例集合中,确定与埋点日志相匹配的测试用例。其中,测试用例集合中的测试用例包括期望结果数据。期望结果数据可以表征技术人员预先确定的、用户操作产生的期望结果。作为示例,当用户操作指示支付订单时,对应该用户操作的测试用例包括的期望结果数据可以为用于指示支付成功的数据。
[0047]
在这里,上述测试用例集合可以针对多个流程分别设置。每个流程可以对应多个测试用例。作为示例,如果上述应用为购物类软件,那么,上述测试用例集合可以针对如下流程而设置:退货流程、返修换新流程、取件流程、支付流程、购买流程等等。其中,每个流程可以实现一个或多个功能。每个功能可以相应地设置一个或多个测试用例。
[0048]
作为示例,技术人员可以针对每个程序语句设置一个测试用例,也可以在应用的程序中的每个程序分支设置一个测试用例,从而实现更全面的测试,提升测试覆盖率。
[0049]
示例性的,上述预先确定的测试用例集合可以存储于文件中,该文件可以存储于预先指定的位置。由此,在导入开发包“java.io.ioexception”和“java.io.randomaccessfile”之后,可以使用randomaccessfile类中的seek方法根据存储文件的位置,实现文件实时读取。解析测试用例的关键字符:例如,关键字符:“autotest:销售出库单xxxx操作出库成功!”为出库操作的测试用例。由此,上述执行主体可以通过截取关键字符,进行实际结果数据和预期结果数据比对。
[0050]
在本实施例的一些可选的实现方式中,上述执行主体可以通过如下方式来执行该步骤202:
[0051]
从预先确定的测试用例集合中,确定与埋点日志包括相同的关键字符的测试用例,从而将与埋点日志包括相同的关键字符的测试用例作为与埋点日志相匹配的测试用例。
[0052]
可选的,上述执行主体也可以通过如下方式来执行该步骤202:
[0053]
技术人员可以在配置日志埋点时,在每个日志埋点中设置与该日志埋点相匹配的测试用例的标识,进而从预先确定的测试用例集合中,确定埋点日志包括的标识所指示的测试用例,然后,将埋点日志包括的标识所指示的测试用例作为与埋点日志相匹配的测试用例。
[0054]
步骤203,基于埋点日志和与埋点日志相匹配的测试用例,对用户操作对应的实际结果数据和期望结果数据进行比对,生成测试结果。
[0055]
在本实施例中,上述执行主体可以基于埋点日志和与埋点日志相匹配的测试用例,对用户操作对应的实际结果数据和期望结果数据进行比对,生成测试结果。其中,测试结果可以用于指示用户操作对应的实际结果数据和期望结果数据是否一致。
[0056]
在这里,当用户操作对应的实际结果数据和期望结果数据指示相同的结果时,用户操作对应的实际结果数据和期望结果数据一致。
[0057]
需要说明的是,当实际结果数据和期望结果数据不完全相同时,实际结果数据和期望结果数据也可以一致。例如,如果实际结果数据为“订单xxx出库成功”,期望结果数据为“出库成功”时,可以表征该实际结果数据和该期望结果数据一致。
[0058]
具体地,上述执行主体可以对所生成的埋点日志包括的实际结果数据和与该埋点日志相匹配的测试用例包括的期望结果数据进行比对,从而生成测试结果。
[0059]
继续参见图3,图3是根据本实施例的用于测试应用的方法的应用场景的一个示意图。在图3的应用场景中,用户对安装于终端设备301的应用执行了用户操作303(图3中为“收藏xx产品”的操作),然后,服务器302在检测到用户对上述应用的用户操作303的情况下,通过预先在应用中配置的日志埋点304生成用户操作303对应的埋点日志306,其中,埋点日志306包括用户操作303对应的实际结果数据308。之后,服务器302从预先确定的测试用例集合305中,确定与埋点日志306相匹配的测试用例307。其中,测试用例集合305中的测试用例包括期望结果数据。最后,服务器302基于埋点日志306和与埋点日志306相匹配的测试用例307,对用户操作303对应的实际结果数据308和期望结果数据309进行比对,生成了测试结果310。
[0060]
现有的自动化测试多为实际操作的自动化,需要依赖测试环境、预发布环境。通常,现有的自动化测试中涉及的测试环境和预生产环境并非应用上线后的真实环境。因而在应用上线后,仍然可能存在较多未被测试过的功能。而上述未被测试过的功能是否存在异常往往难以提前预料。若将线上真实环境作为测试环境,测试人员采用模拟数据进行测试,会在测试过程中产生垃圾数据。
[0061]
本公开的上述实施例提供的用于测试应用的方法,在检测到对应用的用户操作的情况下,通过预先在应用中配置的日志埋点,生成用户操作对应的埋点日志,然后,基于所生成的埋点日志和与埋点日志相匹配的测试用例,对用户操作对应的实际结果数据和期望结果数据进行比对,生成测试结果,由此,实现了在线上真实环境中对应用进行测试,,有助于提高自动化测试的覆盖率。此外,现有技术中所采用的数据往往为模拟的数据,而本公开的上述实施例所采用的数据则为用户的实际操作而产生的数据,还原了用户的使用场景,因此可以使得测试结果更为准确,并且可以实现对用户使用越多的功能,进行越多的测试,从而有助于确保用户使用频率较高的功能的稳定性。再者,现有技术将线上真实环境作为测试环境时,测试人员往往采用模拟的数据进行测试,测试过程中可能产生需要存储至数据库中的数据,然而,该数据库通常用来存储用户操作过程中产生的真实数据,因此,通常将测试人员采用模拟的数据进行测试的过程中存储至数据库中的数据作为垃圾数据。而本公开的实施例可以仅通过用户使用过程中的用户操作对应用进行测试,由于使用过程中所产生的数据为真实数据,因此,本公开的实施例在测试过程中可以避免垃圾数据的产生。
[0062]
在本实施例的一些可选的实现方式中,上述执行主体还可以执行如下步骤:
[0063]
首先,将埋点日志存储于日志文件中。其中,日志文件可以是预先创建的以.log为后缀的文件,也可以是以.txt为后缀的文件,还可以是具有其他后缀的文件。
[0064]
然后,按照预设的日志清理时间,清理日志文件中所存储的埋点日志。其中,上述预设的日志清理时间可以是预先确定的用于清理日志的时间。由此,上述执行主体可以在该预先确定的用于清理日志的时间清理日志文件中所存储的埋点日志。例如,预设的日志清理时间可以是“每天晚上0点”,这样,上述执行主体可以在每天晚上0点清理日志文件中
所存储的埋点日志。此外,上述预设的日志清理时间也可以指示用于清理日志的时间周期。这样,上述执行主体可以周期性地清理日志文件中所存储的埋点日志。
[0065]
在本实施例的一些可选的实现方式中,上述执行主体还可以执行如下步骤:
[0066]
运行测试用例集合中在第一时间段内未生成相匹配的埋点日志的测试用例,得到未生成相匹配的埋点日志的测试用例的测试结果。其中,上述第一时间段可以是预先确定的时间段。上述第一时间段可以是以任意时刻为起点,以起点之后的任意时刻为终点的时间段。在一些情况下,第一时间段的终点可以是当前时间。作为示例,第一时间段可以是由当天的0点到24点的时间段。
[0067]
可以理解,在需要获得第一时间段内上述应用的测试结果的情况下,可以通过确定测试用例集合中在第一时间段内未生成相匹配的埋点日志的测试用例,从而采用所确定出的测试用例对上述应用进行测试,进而获得第一时间段内用户操作未匹配的测试用例的测试结果。这样,相对于仅通过用户操作获得测试结果的方案,本可选的实现方案可以进一步提高测试覆盖率。
[0068]
在本实施例的一些可选的实现方式中,上述执行主体还可以执行如下步骤:
[0069]
基于测试用例集合和在预设的第二时间段内生成的埋点日志,生成对应预设的第二时间段的测试覆盖率。
[0070]
作为示例,上述执行主体可以采用如下方式生成对应预设的第二时间段的测试覆盖率:
[0071]
首先,确定测试用例集合中与在预设的第二时间段内生成的各个埋点日志相匹配的测试用例的数量。
[0072]
然后,将相匹配的测试用例的数量与测试用例集合中的测试用例的总数量的比值,确定为对应预设的第二时间段的测试覆盖率。
[0073]
作为又一示例,上述执行主体也可以采用如下方式生成对应预设的第二时间段的测试覆盖率:
[0074]
首先,确定测试用例集合中与在预设的第二时间段内生成的各个埋点日志表征测试用例成功的埋点日志的数量。
[0075]
然后,将所确定的埋点日志的数量与测试用例集合中的测试用例的总数量的比值,确定为对应预设的第二时间段的测试覆盖率。
[0076]
可以理解,通过计算测试覆盖率,可以度量测试完整性和有效性,进而获得已上线的应用的可靠性和稳定性。
[0077]
进一步参考图4,其示出了用于测试应用的方法的又一个实施例的流程400。该用于测试应用的方法的流程400,包括以下步骤:
[0078]
步骤401,响应于检测到对应用的用户操作,通过预先在应用中配置的日志埋点生成用户操作对应的埋点日志。之后,执行步骤402。
[0079]
在本实施例中,在检测到对应用的用户操作的情况下,用于测试应用的方法的执行主体(例如图1所示的服务器)可以通过预先在应用中配置的日志埋点生成用户操作对应的埋点日志。其中,埋点日志包括用户操作对应的实际结果数据。用户操作用于对目标数据库中的数据进行操作。
[0080]
在本实施例中,步骤401与图2对应实施例中的步骤201基本一致,这里不再赘述。
[0081]
步骤402,从预先确定的测试用例集合中,确定与埋点日志相匹配的测试用例。之后,执行步骤403。
[0082]
在本实施例中,步骤402与图2对应实施例中的步骤202基本一致,这里不再赘述。
[0083]
步骤403,对用户操作对应的实际结果数据和期望结果数据进行比对,生成比对结果。之后,执行步骤404。
[0084]
在本实施例中,用于测试应用的方法的执行主体(例如图1所示的服务器)可以对用户操作对应的实际结果数据和期望结果数据进行比对,生成比对结果。其中,比对结果可以用于指示用户操作对应的实际结果数据和期望结果数据是否一致。
[0085]
需要说明的是,当实际结果数据和期望结果数据不完全相同时,实际结果数据和期望结果数据也可以一致。例如,如果实际结果数据为“订单xxx出库成功”,期望结果数据为“出库成功”时,可以表征该实际结果数据和该期望结果数据一致。
[0086]
步骤404,确定比对结果是否指示用户操作对应的实际结果数据和期望结果数据一致。之后,若是,则执行步骤406;若否,则执行步骤405。
[0087]
在本实施例中,上述执行主体可以确定比对结果是否指示用户操作对应的实际结果数据和期望结果数据一致。
[0088]
步骤405,确定是否捕获到针对用户操作的异常日志信息。之后,若捕获到针对用户操作的异常日志信息,则执行步骤407。
[0089]
在本实施例中,在比对结果指示用户操作对应的实际结果数据和期望结果数据不一致的情况下,上述执行主体还可以确定是否捕获到针对用户操作的异常日志信息。
[0090]
在这里,上述异常日志信息可以是用于指示测试过程中出现异常日志的信息。
[0091]
可以理解,通常用户操作过程中出现异常时,上述执行主体可以捕获针对该用户操作的异常日志信息。
[0092]
作为示例,在比对结果指示用户操作对应的实际结果数据和期望结果数据不一致的情况下,上述执行主体可以确定用户操作过程中出现异常,从而捕获用于指示用户操作对应的实际结果数据和期望结果数据不一致的异常日志信息。
[0093]
作为又一示例,上述执行主体还可以在除上述示例之外的其他应用场景下,确定用户操作过程中出现异常,例如,如果程序语句以中文分号“;”而非英文分号“;”结束时,上述执行主体可以确定用户操作过程中出现异常,从而捕获用于指示程序语句以中文分号而非英文分号结束的异常日志信息。
[0094]
实践中,技术人员可以根据实际需求,自行确定在何种场景下生成何种异常日志信息,本公开的实施例在此不再赘述。
[0095]
步骤406,确定目标数据库中存储的与用户操作对应的数据是否正确。之后,若目标数据库中存储的与用户操作对应的数据正确,则执行步骤408;若目标数据库中存储的与用户操作对应的数据不正确,则执行步骤407。
[0096]
在本实施例中,在比对结果指示用户操作对应的实际结果数据和期望结果数据一致的情况下,上述执行主体可以确定目标数据库中存储的与用户操作对应的数据是否正确。目标数据库可以是用于存储用户操作所操作的数据。
[0097]
具体地,上述执行主体可以将目标数据库中实际存储的与用户操作对应的数据,与该用户操作对应的期望上述目标数据库中存储的数据进行比对,如果比对结果指示二者
一致,那么,上述执行主体可以确定目标数据库中存储的与用户操作对应的数据正确;如果比对结果指示二者不一致,那么,上述执行主体可以确定目标数据库中存储的与用户操作对应的数据不正确。
[0098]
作为示例,如果用户操作为用于指示收藏产品的操作,目标数据库用于存储用户操作对应的用户所收藏的产品的产品信息。那么,在用户执行该用户操作之后,相对于用户执行该用户操作之前,上述目标数据库应该新增了该用户操作所收藏的产品的产品信息。在此应用场景下,该用户操作对应的期望上述目标数据库中存储的数据可以是用户执行该用户操作所收藏的产品的产品信息,那么,在用户执行该用户操作之后,相对于用户执行该用户操作之前,如果上述目标数据库中实际确实新增了用户执行该用户操作所收藏的产品的产品信息,则上述执行主体可以确定目标数据库中存储的与用户操作对应的数据正确;反之,则上述执行主体可以确定目标数据库中存储的与用户操作对应的数据不正确。
[0099]
步骤407,生成表征测试用例失败的测试结果。
[0100]
在本实施例中,在目标数据库中存储的与用户操作对应的数据不正确的情况下,上述执行主体可以生成表征测试用例失败的测试结果。
[0101]
步骤408,生成表征测试用例成功的测试结果。
[0102]
在本实施例中,在目标数据库中存储的与用户操作对应的数据正确的情况下,上述执行主体可以生成表征测试用例成功的测试结果。
[0103]
可选的,在上述执行主体生成表征测试用例失败的测试结果,或者,表征测试用例成功的测试结果之后,可以生成测试报告,以便开发人员了解应用的运行情况,进而及时修复当前应用或开发应用的新功能。
[0104]
需要说明的是,除上面所记载的内容外,本实施例还可以包括与图2对应的实施例相同或类似的特征、效果,在此不再赘述。
[0105]
从图4中可以看出,本实施例中的用于测试应用的方法的流程400可以结合用户操作对应的实际结果数据和期望结果数据进行比对而获得的比对结果,以及数据库中存储的与用户操作对应的数据的正确性,对应用进行测试,由此进一步提高了测试结果的准确性。
[0106]
进一步参考图5,作为对上述图2所示方法的实现,本公开提供了一种用于测试应用的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,除下面所记载的特征外,该装置实施例还可以包括与图2所示的方法实施例相同或相应的特征,以及产生与图2所示的方法实施例相同或相应的效果。该装置具体可以应用于各种电子设备中。
[0107]
如图5所示,本实施例的用于测试应用的装置500包括:第一生成单元501、确定单元502和比对单元503。其中,第一生成单元501,被配置成响应于检测到对应用的用户操作,通过预先在应用中配置的日志埋点生成用户操作对应的埋点日志,其中,埋点日志包括用户操作对应的实际结果数据;确定单元502,被配置成从预先确定的测试用例集合中,确定与埋点日志相匹配的测试用例,其中,测试用例集合中的测试用例包括期望结果数据;比对单元503,被配置成基于埋点日志和与埋点日志相匹配的测试用例,对用户操作对应的实际结果数据和期望结果数据进行比对,生成测试结果。。
[0108]
在本实施例中,用于测试应用的装置500的第一生成单元501可以通过预先在应用中配置的日志埋点生成用户操作对应的埋点日志。其中,埋点日志包括用户操作对应的实际结果数据。
[0109]
在本实施例中,上述确定单元502可以从预先确定的测试用例集合中,确定与埋点日志相匹配的测试用例。其中,测试用例集合中的测试用例包括期望结果数据。期望结果数据可以表征技术人员预先确定的、用户操作产生的结果。
[0110]
在本实施例中,上述比对单元503可以基于埋点日志和与埋点日志相匹配的测试用例,对用户操作对应的实际结果数据和期望结果数据进行比对,生成测试结果。其中,测试结果可以用于指示用户操作对应的实际结果数据和期望结果数据是否指示相同的结果。
[0111]
在本实施例的一些可选的实现方式中,用户操作用于对目标数据库中的数据进行操作;以及,比对单元503可以进一步被配置成:对用户操作对应的实际结果数据和期望结果数据进行比对,生成比对结果;响应于比对结果指示用户操作对应的实际结果数据和期望结果数据不一致,确定是否捕获到针对用户操作的异常日志信息;响应于捕获到异常日志信息,生成表征测试用例失败的测试结果;响应于比对结果指示用户操作对应的实际结果数据和期望结果数据一致,确定目标数据库中存储的与用户操作对应的数据是否正确;响应于目标数据库中存储的与用户操作对应的数据正确,生成表征测试用例成功的测试结果;响应于目标数据库中存储的与用户操作对应的数据不正确,生成表征测试用例失败的测试结果。
[0112]
在本实施例的一些可选的实现方式中,该装置500还包括:存储单元(图中未示出),被配置成将埋点日志存储于日志文件中;清理单元(图中未示出),被配置成按照预设的日志清理时间,清理日志文件中所存储的埋点日志。
[0113]
在本实施例的一些可选的实现方式中,确定单元,进一步被配置成:从预先确定的测试用例集合中,确定与埋点日志包括相同的关键字符的测试用例,作为与埋点日志相匹配的测试用例。
[0114]
在本实施例的一些可选的实现方式中,该装置500还包括:运行单元(图中未示出),被配置成运行测试用例集合中在第一时间段内未生成相匹配的埋点日志的测试用例,得到未生成相匹配的埋点日志的测试用例的测试结果。
[0115]
在本实施例的一些可选的实现方式中,该装置500还包括:第二生成单元(图中未示出),被配置成基于测试用例集合和在预设的第二时间段内生成的埋点日志,生成对应预设的第二时间段的测试覆盖率。
[0116]
本公开的上述实施例提供的用于测试应用的装置,在响应于检测到对应用的用户操作的情况下,第一生成单元501通过预先在应用中配置的日志埋点生成用户操作对应的埋点日志,其中,埋点日志包括用户操作对应的实际结果数据,然后,确定单元502从预先确定的测试用例集合中,确定与埋点日志相匹配的测试用例,其中,测试用例集合中的测试用例包括期望结果数据,之后,比对单元503基于埋点日志和与埋点日志相匹配的测试用例,对用户操作对应的实际结果数据和期望结果数据进行比对,生成测试结果,实现了在线上真实环境中对应用进行测试,有助于提高自动化测试的覆盖率。此外,现有技术中所采用的数据往往为模拟的数据,而本公开的上述实施例所采用的数据则为用户的实际操作而产生的数据,还原了用户的使用场景,因此可以使得测试结果更为准确,并且可以实现对用户使用越多的功能,进行越多的测试,从而有助于确保用户使用频率较高的功能的稳定性。再者,现有技术将线上真实环境作为测试环境时,测试人员往往采用模拟的数据进行测试,测试过程中可能产生需要存储至数据库中的数据,然而,该数据库通常用来存储用户操作过
程中产生的真实数据,因此,通常将测试人员采用模拟的数据进行测试的过程中存储至数据库中的数据作为垃圾数据。而本公开的实施例可以仅通过用户使用过程中的用户操作对应用进行测试,由于使用过程中所产生的数据为真实数据,因此,本公开的实施例在测试过程中可以避免垃圾数据的产生。
[0117]
下面参考图6,其示出了适于用来实现本公开的实施例的电子设备(例如图1中的服务器)600的结构示意图。图6示出的服务器仅仅是一个示例,不应对本公开的实施例的功能和使用范围带来任何限制。
[0118]
如图6所示,电子设备600可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(rom)602中的程序或者从存储装置608加载到随机访问存储器(ram)603中的程序而执行各种适当的动作和处理。在ram 603中,还存储有电子设备600操作所需的各种程序和数据。处理装置601、rom 602以及ram 603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。
[0119]
通常,以下装置可以连接至i/o接口605:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器(lcd)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置608;以及通信装置609。通信装置609可以允许电子设备600与其他设备进行无线或有线通信以交换数据。虽然图6示出了具有各种装置的电子设备600,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。图6中示出的每个方框可以代表一个装置,也可以根据需要代表多个装置。
[0120]
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从rom 602被安装。在该计算机程序被处理装置601执行时,执行本公开的实施例的方法中限定的上述功能。
[0121]
需要说明的是,本公开的实施例所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开的实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、
rf(射频)等等,或者上述的任意合适的组合。
[0122]
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中的。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:响应于检测到对应用的用户操作,通过预先在应用中配置的日志埋点生成用户操作对应的埋点日志,其中,埋点日志包括用户操作对应的实际结果数据;从预先确定的测试用例集合中,确定与埋点日志相匹配的测试用例,其中,测试用例集合中的测试用例包括期望结果数据;基于埋点日志和与埋点日志相匹配的测试用例,对用户操作对应的实际结果数据和期望结果数据进行比对,生成测试结果。
[0123]
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的实施例的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0124]
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0125]
描述于本公开的实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括第一生成单元、确定单元和比对单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一生成单元还可以被描述为“通过预先在应用中配置的日志埋点生成用户操作对应的埋点日志的单元”。
[0126]
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1