CN113760728A - 应用测试的方法和装置 - Google Patents

应用测试的方法和装置 Download PDF

Info

Publication number
CN113760728A
CN113760728A CN202110089195.1A CN202110089195A CN113760728A CN 113760728 A CN113760728 A CN 113760728A CN 202110089195 A CN202110089195 A CN 202110089195A CN 113760728 A CN113760728 A CN 113760728A
Authority
CN
China
Prior art keywords
application
user
link
test
test script
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.)
Pending
Application number
CN202110089195.1A
Other languages
English (en)
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 Jingdong Century Trading Co Ltd
Beijing Wodong Tianjun Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Wodong Tianjun Information Technology 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 Jingdong Century Trading Co Ltd, Beijing Wodong Tianjun Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN202110089195.1A priority Critical patent/CN113760728A/zh
Publication of CN113760728A publication Critical patent/CN113760728A/zh
Pending legal-status Critical Current

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/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/368Test management for test version control, e.g. updating test cases to a new software version
    • 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

应用测试的方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种应用的测试方法。
背景技术
随着移动设备的普及和发展,移动应用和其所包含的功能也不断丰富,极大的提升了用户的使用体验。
然而,用户在使用过程中难免会遇到问题,移动应用偶尔会出现崩溃等情况。针对以上问题,目前主要的解决方案是当移动应用在灰度或者上线使用过程中发生崩溃时,上报该时刻的崩溃数据,研发人员通过分析日志从而定位问题,并尝试解决该问题从而再次灰度或者上线。
由于现有技术只在应用发生崩溃的时刻进行数据上报,导致难以复现用户的实际操作,从而导致开发人员定位问题的过程十分繁琐,这降低了应用的开发效率,也降低了用户体验。
发明内容
有鉴于此,本发明实施例提供一种应用的测试方法和装置,通过复现用户操作,能够准确定位应用崩溃的原因。
为实现上述目的,根据本发明实施例的一个方面,提供了一种应用的测试方法,包括:
获取应用的用户行为数据;
对所述用户行为数据进行解析,得到用户针对所述应用的操作链路;
根据所述操作链路,生成所述应用对应的测试脚本;
根据所述测试脚本,复现所述用户针对所述应用的操作,确定所述应用的崩溃信息,以对所述应用进行测试。
可选地,所述对所述用户行为数据进行解析,得到用户针对所述应用的操作链路,包括:
确定所述用户行为数据对应的一个或多个第一操作类型;
根据所述一个或多个第一操作类型,对所述用户行为数据进行分类,得到每一个所述第一操作类型对应的操作数据;
根据预设的全局测试日志中包括的第二操作类型以及所述第一操作类型,将所述操作数据映射到所述全局测试日志中;
根据每一个所述操作数据的生成时间,对所述操作数据进行排序,生成所述操作链路。
可选地,所述根据所述操作链路,生成所述应用对应的测试脚本,包括:
对所述操作链路进行去重,根据去重结果,生成所述测试脚本。
可选地,该方法进一步包括:
对所述操作链路进行起始点切分;
再对切分后的操作链路进行环切分,以将所述操作链路中连续的至少两个操作进行分割,得到至少两个操作组合,每个所述操作组合包括一个或多个操作;
对所述至少两个操作组合进行去重操作,以得到最短的操作链路,
根据所述最短的操作链路,生成所述测试脚本。
可选地,所述根据所述测试脚本,复现所述用户针对所述应用的操作,包括:
运行所述最短的操作链路所生成的测试脚本;
当所述测试脚本出现问题时,根据去重的操作,对所述最短的操作链路进行更新,并根据更新后的操作链路,更新所述测试脚本;
根据更新的所述测试脚本,确定所述应用的崩溃信息。
可选地,所述对所述用户行为数据进行解析,得到用户针对所述应用的操作链路,包括:
提取所述用户行为数据中的关键信息,所述关键信息包括以下任意一个或多个:用户标识、所述应用对应的操作系统、所述应用的版本信息、所述应用的崩溃时间、所述应用崩溃时的堆栈信息;
根据所述关键信息,得到所述操作链路。
可选地,该方法进一步包括:
对多个用户的所述用户行为数据进行解析,得到所述多个用户针对所述应用的多个功能的点击率;
确定所述操作百分比是否小于预设阈值,如果是,调整所述应用的发布策略,以提高用户对所述多个功能的点击率。
根据本发明实施例的第二方面,提供了一种应用的测试装置,包括:获取模块、解析模块、生成模块和测试模块;其中,
所述获取模块,用于获取应用的用户行为数据;
所述解析模块,用于对所述用户行为数据进行解析,得到用户针对所述应用的操作链路;
所述生成模块,用于根据所述操作链路,生成所述应用对应的测试脚本;
所述测试模块,用于根据所述测试脚本,复现所述用户针对所述应用的操作,确定所述应用的崩溃信息,以对所述应用进行测试。
可选地,
所述解析模块,用于确定所述用户行为数据对应的一个或多个第一操作类型;
根据所述一个或多个第一操作类型,对所述用户行为数据进行分类,得到每一个所述第一操作类型对应的操作数据;
根据预设的全局测试日志中包括的第二操作类型以及所述第一操作类型,将所述操作数据映射到所述全局测试日志中;
根据每一个所述操作数据的生成时间,对所述操作数据进行排序,生成所述操作链路。
可选地,
所述生成模块,用于对所述操作链路进行去重,根据去重结果,生成所述测试脚本;对所述操作链路进行起始点切分;
再对切分后的操作链路进行环切分,以将所述操作链路中连续的至少两个操作进行分割,得到至少两个操作组合,每个所述操作组合包括一个或多个操作;
对所述至少两个操作组合进行去重操作,以得到最短的操作链路,根据所述最短的操作链路,生成所述测试脚本。
可选地,
所述测试模块,用于运行所述最短的操作链路所生成的测试脚本;
当所述测试脚本出现问题时,根据去重的操作,对所述最短的操作链路进行更新,并根据更新后的操作链路,更新所述测试脚本;
根据更新的所述测试脚本,确定所述应用的崩溃信息。
根据本发明实施例的第三方面,提供了一种服务器,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述第一方面提供的一种应用的测试方法中任一所述的方法。
根据本发明实施例的第四方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述第一方面提供的一种应用的测试方法中任一所述的方法。
上述发明中的一个实施例具有如下优点或有益效果:由于本申请提供的技术方案是基于应用的用户行为数据,得到用户针对应用的操作链路,即该应用的操作链路能够比较完整的反映用户行为,那么,根据该操作链路,生成的应用对应的测试脚本,能够完整的复现用户针对应用的操作,而通过复现用户针对应用的操作,确定出的应用的崩溃信息,能够比较真实的且准确的体现用户操作过程中出现崩溃的原因。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的应用的测试的方法的主要流程的示意图;
图2是本发明一个实施例提供的一种实时上报用户行为数据的流程示意图;
图3是本发明一个实施例提供的一种输出可自动化执行的测试脚本的流程示意图;
图4是本发明一个实施例提供的一种解析用户操作链路的切分结果示意图;
图5是本发明一个实施例提供的一种更新测试脚本的方式的流程示意图;
图6是根据本发明实施例的应用的测试的装置的主要模块的示意图;
图7是本发明实施例可以应用于其中的示例性系统架构图;
图8是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
如图1所示,本发明实施例提供了一种应用的测试方法,该方法可以包括以下步骤S101至步骤S104:
步骤S101:获取应用的用户行为数据;
应用的形式可以是手机终端(app)、小程序和前端网页等。该步骤的一种具体实现方式可如图2所示,通过移动应用中第三方软件开发工具包SDK进行埋点,抓取并解码埋点的数据,即图2所示的获取C rash文件并对Crash文件解析的过程,在解析完成后,从解析的结果中可以获取关键信息比如用户ID,操作系统、崩溃时间、应用程序版本、Crash堆栈信息等,这些关键信息组成该步骤的用户行为数据。进一步地,如图2所示,用户行为数据可通过服务端API发送到消息中间件,以在服务端对用户行为数据进行持久化存储。其中,传输该用户行为数据的方式可以为离线传输或者实时传输。
在本发明实施例中,上述获取用户行为数据的过程至少可以通过以下程序语言实现:
Figure BDA0002912084180000061
Figure BDA0002912084180000071
步骤S102:对所述用户行为数据进行解析,得到用户针对所述应用的操作链路。
在本发明实施例中,可以通过以下方式,得到用户的操作链路:提取所述用户行为数据中的关键信息,所述关键信息包括以下任意一个或多个:用户标识、所述应用对应的操作系统、所述应用的版本信息、所述应用的崩溃时间、所述应用崩溃时的堆栈信息;根据所述关键信息,得到所述操作链路。
在本发明实施例中,步骤S102可以通过以下方式实现:确定所述用户行为数据对应的一个或多个第一操作类型;根据所述一个或多个第一操作类型,对所述用户行为数据进行分类,得到每一个所述第一操作类型对应的操作数据;根据预设的全局测试日志中包括的第二操作类型以及所述第一操作类型,将所述操作数据映射到所述全局测试日志中;根据每一个所述操作数据的生成时间,对所述操作数据进行排序,生成所述操作链路。
其中,第一操作类型对应的操作数据是指属于该第一操作类型的用户行为数据。前面已经提到该用户行为数据用户ID,操作系统、崩溃时间、应用程序版本、Crash堆栈信息等,相应地,第一操作类型对应的操作数据可包括属于该第一操作类型的用户ID,操作系统、崩溃时间、应用程序版本、Crash堆栈信息等。
用户行为数据还包含了用户各个第一操作类型的点击数据(该点击数据是指用户进行第一操作类型的操作的起始时间点,比如,用户在购物应用中进行加购操作的起始时间点),对该点击数据进行分类,可以得到每一种第一操作类型的起始时间节点。根据全局测试日志中第二操作类型与第一操作类型的唯一映射关系,将第一操作类型的操作数据映射到全局测试日志中。根据各个操作数据的起始时间节点对所有操作数据进行排序,从而得到完整的用户操作链路。
上述映射关系,如图3所示,用户行为日志(即前述用户行为数据)中包含多组第一操作类型的操作数据,每组操作数据均包含ID(ACTION_ID)、用户点击数据(ACTION_INFO)、点击时间(ACTION_TIME)等信息。全局测试日志中包含了多组第二操作类型的操作数据,每组操作数据均包含数据时间(EVENT_TIME)、数据信息(ACTIVITY)、数据类别(ITEM_MESSAGE)。根据第一操作类型与第二操作类型的唯一映射关系,输出可自动执行的测试脚本,进行测试。如遇问题,则返回修正该脚本再次进行测试。其中,第一操作类型和第二操作类型并不是特指操作类型的个数,而是为了区别操作类型的来源,即第一操作类型是指来源于用户行为日志中的操作类型;第二操作类型是指来源于全局测试日志中的操作类型。将所述操作数据映射到所述全局测试日志中的具体实现方式:针对用户行为数据对应的每一个第一操作类型,执行:从全局测试日志中确定与该第一操作类型相同的第二操作类型对应的操作数据,并将该第一操作类型对应的操作数据,填充到与该第一操作类型相同的第二操作类型对应的操作数据中。
以目前普遍使用的购物软件为例,当用户在网购过程中应用发生崩溃时,自动上报相关的用户点击数据,其中包括但不限于加购相关的数据、付款相关的数据、商品详情页相关的数据、评论相关的数据、售后服务相关的数据、退款相关的数据。对不同类型的所有点击数据进行分类,即上述用户点击数据可分为加购、付款、商品详情页、评论、售后服务、退款等类型。并根据用户点击数据中每一条点击数据的点击时间将数据重新排列,从而得到一条完整的用户操作链路。例如,一名用户在某次操作中的用户点击数据以及对用户点击数据进行分类可得到如表1所示的分类结果,进一步按照点击时间将表1中的数据重新排列可得表2所示的按时间排列得到的操作链路为:加购-商品详情页-用户评论-商品详情页-加购-用户评论-付款。
表1
操作类型 点击次数 时间
加购 2 15:43 15:58
商品详情页 2 15:45 15:54
用户评论 2 15:60 16:03
付款 1 16:08
表2
操作类型 操作时间
加购 15:43
商品详情页 15:45
用户评论 15:60
商品详情页 15:54
加购 15:58
用户评论 16:03
付款 16:08
步骤S103:根据所述操作链路,生成所述应用对应的测试脚本;
在本发明实施例中,可以通过以下两种方式生成应用对应的测试脚本:
方式一:直接按照操作链路给出的操作执行顺序,生成测试脚本,比如,针对上述表2提供的操作链路:加购-商品详情页-用户评论-商品详情页-加购-用户评论-付款,生成的测试脚本包括的测试操作以及测试操作的顺序与该链路完全一致,即测试脚本顺序执行加购操作、商品详情页点击操作、用户评论点击操作、商品详情页点击操作、加购操作、用户评论点击操作以及付款操作。
方式二:对所述操作链路进行去重,根据去重结果,生成所述测试脚本。
具体地,对所述操作链路进行起始点切分;再对切分后的操作链路进行环切分,以将所述操作链路中连续的至少两个操作进行分割,到至少两个操作组合,每个所述操作组合包括一个或多个操作;对所述至少两个操作组合进行去重操作,以得到最短的操作链路,根据所述最短的操作链路,生成所述测试脚本。
其中,起始点是指为应用预先设置的一个操作类型对应的操作节点,比如,针对购物软件来说,其起始点可以为点击商品详情页这一操作类型的操作节点,即用户每点击一次商品详情页即出现一次起始点。该起始点可以根据具体需求进行相应的设定。
其中,环切分是指,针对起始点切分后的多个链路片段中的每一条链路片段执行:当该链路片段中存在的至少两个链路子片段,每一个链路子片段中连续的多个操作出现在其他链路片段中,则从相邻的两个链路子片段的交界位置切分。
以图4所示的操作链路为例进行说明。如图4所示,基于步骤S102得到的两条操作链路分别为:A-B-C-A-B-C-D-E;A-E-G-A-B-C-B-C,其中,该两条操作链路的起始点均为A,那么,对上述两条操作链路进行起始点切分,得到A-B-C,A-B-C-D-E,A-E-G,A-B-C-B-C。进一步进行环切分,可得到:A-B-C、A-B-C-D-E、A-E-G、A-B-C、B-C。通过去重后,得到A-B-C-D-E,A-E-G。
又比如,通过起始点切分某一链路得到多条链路片段为:A-B-C,A-B-C-D-E,A-E-G,A-B-C-B-C-D-F,则在后续进行环切分时,由于A-B-C,A-B-C-D-E以及A-E-G均不满足环切分的条件(即不满足存在的至少两个链路子片段,每一个链路子片段中链路子片段中连续的多个操作出现在其他链路片段中),则只对满足环切分的条件的链路片段A-B-C-B-C-D-F进行切分。其中,在该链路片段A-B-C-B-C-D-F中,A-B-C和B-C这两个链路子片段出现在其他链路片段中,则在A-B-C与B-C的交界位置进行环切分,对链路片段A-B-C-B-C-D-F环切分后的结果:A-B-C、B-C-D-F。
根据上述实施例,由于采用了对用户的实际链路进行去重,包括起始点切分、环切分的技术手段,得到了一条可以模拟用户实际操作效果的最短操作链路,相较于用户实际链路他的测试过程较为简便清晰。因此可以实现在保证模拟用户行为的前提下最大限度的提高测试效率。
通过上述最短链路来进行应用测试时,由于最短链路中删除了用户实际链路中重复的点击数据,可能会导致测试脚本运行出现问题。因此,在本发明实施例中,为了顺利地对应用进行测试,运行所述最短的操作链路所生成的测试脚本;当所述测试脚本出现问题时,根据去重的操作,对所述最短的操作链路进行更新,并根据更新后的操作链路,更新所述测试脚本;根据更新的所述测试脚本,确定所述应用的崩溃信息。
仍以图4中的链路为例,若图4中最终生成的操作链路A-B-C-D-E以及A-E-G未达到用户实际操作链路的测试效果,我们需要依据实际用户链路对以上链路进行更新,重新进行测试。
具体更新方法可如图5所示,循环执行下述步骤S501至S503:
步骤S501:为当前链路片段增加一个或一组去重的操作,以更新该当前链路片段;
比如,图5得到的去重后的最短链路A-B-C-D-E对应的测试脚本出现问题,该步骤可在A-B-C-D-E基础上,增加一个去重操作比如A或者一组去重操作比如A-B-C,由于在实际链路中,该A或者A-B-C位于A-B-C-D-E之前,则在该步骤中将增加的A或者A-B-C,添加到A-B-C-D-E之前得到A-A-B-C-D-E或者A-B-C-A-B-C-D-E。
步骤S502:当更新后的链路片段对应的测试脚本出现问题,将该更新后的链路片段作为当前链路片段,并执行步骤S501;
比如,针对上述步骤S501得到的更新后的链路片段为A-A-B-C-D-E,该链路片段A-A-B-C-D-E对应的测试脚本仍然出现问题,则可基于步骤S501,为该链路片段A-A-B-C-D-E增加一个去重的操作比如B或者一组去重的操作比如B-C。
步骤S503:当更新后的链路片段对应的测试脚本能够确定出应用的崩溃信息,结束当前流程。
比如,针对上述步骤S501得到的更新后的链路片段A-A-B-C-D-E对应的测试脚本能够确定出应用的崩溃信息,则不再继续为A-A-B-C-D-E增加重复的操作。
从此例中可以看出,用户在实际操作过程中往往会出现很多重复点击,这就导致了用户实际操作链路中存在很多重复的链路,而一般导致应用程序问题的具体原因与这些重复链路无关。通过对用户实际操作链路的去重,可以去除测试过程中与导致该问题无关的部分,在保证测试效果的基础上很大程度提高了测试效率。
步骤S104:根据所述测试脚本,复现所述用户针对所述应用的操作,确定所述应用的崩溃信息,以对所述应用进行测试。
在图1所示的实施例中,由于本申请提供的技术方案是基于应用的用户行为数据,得到用户针对应用的操作链路,即该应用的操作链路能够比较完整的反映用户行为,那么,根据该操作链路,生成的应用对应的测试脚本,能够完整的复现用户针对应用的操作,而通过复现用户针对应用的操作,确定出的应用的崩溃信息,能够比较真实的且准确的体现用户操作过程中出现崩溃的原因
在本发明实施例中,该方法还可以包括:对多个用户的所述用户行为数据进行解析,得到所述多个用户针对所述应用的多个功能的操作百分比;确定所述操作百分比是否小于预设阈值,如果是,调整所述应用的发布策略,以提高用户对所述多个功能的操作百分比。
操作百分比是指,在测试过程中,灰度用户操作过程所使用到的功能的个数占该应用所包括的功能的总个数的百分比。比如,一个应用包括的功能总个数为5个,灰度用户操作过程所使用到的功能的个数为3个,该操作百分比为
Figure BDA0002912084180000121
该预设阈值可以根据实际需求进行相应地调整或设定。
其中,调整所述应用的发布策略具体可为,增加灰度用户。
为了更好地进行灰度发布,我们必须对尽可能提高灰度用户所操作的功能的覆盖率。例如,某app包含以下八种功能:评论、加购、付款、退款、商品详情、上传、存储、发送。在该程序的灰度测试中,我们预设本次灰度测试功能占比(即预设阈值)为75%,即通过灰度测试,必须有不少于该应用总功能个数75%的功能得到灰度人群的使用,从而最大限度的发现问题。通过对某灰度用户行为数据进行解析,我们可以得到一条完整的用户操作链路:评论-加购-商品详情-付款-退款。经计算该用户操作的功能有5个,即用户操作功能的覆盖率(即操作百分比)为62.5%,小于预设阈值75%,此时我们需要适度扩大灰度人群。经扩展后,得到另一用户的操作链路为商品详情-加购-付款-上传-发送-评论-退款,经计算,结合前一位用户的操作链路,该功能覆盖率为87.5%,超过预设阈值75%,达到了灰度测试目标。
根据上述实施例,通过对灰度测试的用户行为日志进行分析,得到了测试过程中灰度用户操作的功能覆盖率(即操作百分比)。对该功能覆盖率进行控制,有利于开发人员在灰度测试时最大限度的发现问题,并且有针对性的调整灰度策略,一定程度上避免了应用上线后问题集中爆发的风险。
如图6所示,本发明实施例提供了一种应用的测试装置600,包括:获取模块601、解析模块602、生成模块603和测试模块604;其中,
所述获取模块601,用于获取应用的用户行为数据;
所述解析模块602,用于对所述用户行为数据进行解析,得到用户针对所述应用的操作链路;
所述生成模块603,用于根据所述操作链路,生成所述应用对应的测试脚本;
所述测试模块604,用于根据所述测试脚本,复现所述用户针对所述应用的操作,确定所述应用的崩溃信息,以对所述应用进行测试。
本发明一个实施例中,所述解析模块602,用于确定所述用户行为数据对应的一个或多个第一操作类型,根据所述一个或多个第一操作类型,对所述用户行为数据进行分类,得到每一个所述第一操作类型对应的操作数据,根据预设的全局测试日志中包括的第二操作类型以及所述第一操作类型,将所述操作数据映射到所述全局测试日志中,根据每一个所述操作数据的生成时间,对所述操作数据进行排序,生成所述操作链路。
本发明一个实施例中,所述生成模块603,用于对所述操作链路进行去重,根据去重结果,生成所述测试脚本。
本发明一个实施例中,所述生成模块603,进一步用于对所述操作链路进行起始点切分,再对切分后的操作链路进行环切分,以将所述操作链路中连续的至少两个操作进行分割,得到至少两个操作组合,每个所述操作组合包括一个或多个操作,对所述至少两个操作组合进行去重操作,以得到最短的操作链路,根据所述最短的操作链路,生成所述测试脚本。
本发明一个实施例中,所述测试模块604,用于运行所述最短的操作链路所生成的测试脚本;
所述生成模块603,当所述测试脚本出现问题时,根据去重的操作,对所述最短的操作链路进行更新,并根据更新后的操作链路,更新所述测试脚本。
本发明一个实施例中,所述解析模块602,用于提取所述用户行为数据中的关键信息,所述关键信息包括以下任意一个或多个:用户标识、所述应用对应的操作系统、所述应用的版本信息、所述应用的崩溃时间、所述应用崩溃时的堆栈信息;
所述生成模块603,用于根据所述关键信息,得到所述操作链路。
本发明一个实施例中,所述解析模块602,用于对多个用户的所述用户行为数据进行解析,得到所述多个用户针对所述应用的多个功能的操作百分比,确定所述操作百分比是否小于预设阈值,如果是,调整所述应用的发布策略,以提高用户对所述多个功能的操作百分比。
本发明实施例还提供了一种服务器,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述任一实施例提供的应用的测试方法。
本发明实施例还提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述任一实施例提供的应用的测试方法。
图7示出了可以应用本发明实施例的一种应用的测试方法或一种应用的测试装置的示例性系统架构700。
如图7所示,系统架构700可以包括终端设备701、702、703,网络704和服务器705。网络704用以在终端设备701、702、703和服务器705之间提供通信链路的介质。网络704可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备701、702、703通过网络704与服务器705交互,以接收或发送消息等。比如,服务器705可以获取并存储终端设备701、702、703的用户行为数据。服务器705可以将测试的结果提供给终端设备701、702、703,以使用户通过终端设备查看测试的结果。终端设备701、702、703上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备701、702、703可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器705可以是提供各种服务的服务器,例如对用户对终端设备701、702、703的任意应用的操作行为或者用户行为数据提供支持的后台管理服务器(仅为示例)。后台管理服务器可以获取到的应用的用户行为数据进行分析等处理,得到测试脚本,并基于测试脚本测试终端设备701、702、703的任意应用,并可将处理结果(例如测试的结果--仅为示例)反馈给终端设备。
需要说明的是,本发明实施例所提供的一种应用的测试方法一般由服务器705执行,相应地,一种应用的测试装置一般设置于服务器705中。
应该理解,图7中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图8,其示出了适于用来实现本发明实施例的终端设备的计算机系统800的结构示意图。图8示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,计算机系统800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM803中,还存储有系统800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CP U)801执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括获取模块、解析模块、生成模块和测试修正模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,解析模块还可以被描述为“对用户操作链路进行解析的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:获取应用的用户行为数据;对所述用户行为数据进行解析,得到用户针对所述应用的操作链路;根据所述操作链路,生成所述应用对应的测试脚本;根据所述测试脚本,复现所述用户针对所述应用的操作,确定所述应用的崩溃信息,以对所述应用进行测试。
根据本发明实施例的技术方案,在应用发生崩溃时,通过埋点数据得到完整的用户操作链路,并对该链路进行解析,从而得到一条既能保证复现用户操作又能使测试效率最优的测试链路,并通过用户行为到测试日志的映射关系生成可自动执行的测试脚本,在测试过程中如有问题,返回修正再执行。另外,通过对用户行为日志的分析,可以得到当前灰度测试应用的功能覆盖率,并实时调整灰度策略。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (10)

1.一种应用的测试方法,其特征在于,包括:
获取应用的用户行为数据;
对所述用户行为数据进行解析,得到用户针对所述应用的操作链路;
根据所述操作链路,生成所述应用对应的测试脚本;
根据所述测试脚本,复现所述用户针对所述应用的操作,确定所述应用的崩溃信息,以对所述应用进行测试。
2.根据权利要求1所述的方法,其特征在于,所述对所述用户行为数据进行解析,得到用户针对所述应用的操作链路,包括:
确定所述用户行为数据对应的一个或多个第一操作类型;
根据所述一个或多个第一操作类型,对所述用户行为数据进行分类,得到每一个所述第一操作类型对应的操作数据;
根据预设的全局测试日志中包括的第二操作类型以及所述第一操作类型,将所述操作数据映射到所述全局测试日志中;
根据每一个所述操作数据的生成时间,对所述操作数据进行排序,生成所述操作链路。
3.根据权利要求1所述的方法,其特征在于,所述根据所述操作链路,生成所述应用对应的测试脚本,包括:
对所述操作链路进行去重,根据去重结果,生成所述测试脚本。
4.根据所述要求3所述的方法,其特征在于,
对所述操作链路进行起始点切分;
再对切分后的操作链路进行环切分,以将所述操作链路中连续的至少两个操作进行分割,得到至少两个操作组合,每个所述操作组合包括一个或多个操作;
对所述至少两个操作组合进行去重操作,以得到最短的操作链路,
根据所述最短的操作链路,生成所述测试脚本。
5.根据权利要求4所述的方法,其特征在于,所述根据所述测试脚本,复现所述用户针对所述应用的操作,包括:
运行所述最短的操作链路所生成的测试脚本;
当所述测试脚本出现问题时,根据去重的操作,对所述最短的操作链路进行更新,并根据更新后的操作链路,更新所述测试脚本;
根据更新的所述测试脚本,确定所述应用的崩溃信息。
6.根据权利要求1所述的方法,其特征在于,所述对所述用户行为数据进行解析,得到用户针对所述应用的操作链路,包括:
提取所述用户行为数据中的关键信息,所述关键信息包括以下任意一个或多个:用户标识、所述应用对应的操作系统、所述应用的版本信息、所述应用的崩溃时间、所述应用崩溃时的堆栈信息;
根据所述关键信息,得到所述操作链路。
7.根据权利要求1所述的方法,其特征在于,还包括:
对多个用户的所述用户行为数据进行解析,得到所述多个用户针对所述应用的多个功能的操作百分比;
确定所述操作百分比是否小于预设阈值,如果是,调整所述应用的发布策略,以提高用户对所述多个功能的点击率。
8.一种应用的测试装置,其特征在于,包括:上传模块、解析模块、测试和修正模块;其中,
所述获取模块,用于获取应用的用户行为数据;
所述解析模块,用于对所述用户行为数据进行解析,得到用户针对所述应用的操作链路;
所述生成模块,用于根据所述操作链路,生成所述应用对应的测试脚本;
所述测试模块,用于根据所述测试脚本,复现所述用户针对所述应用的操作,确定所述应用的崩溃信息,以对所述应用进行测试。
9.一种应用测试的电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的方法。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-7中任一所述的方法。
CN202110089195.1A 2021-01-22 2021-01-22 应用测试的方法和装置 Pending CN113760728A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110089195.1A CN113760728A (zh) 2021-01-22 2021-01-22 应用测试的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110089195.1A CN113760728A (zh) 2021-01-22 2021-01-22 应用测试的方法和装置

Publications (1)

Publication Number Publication Date
CN113760728A true CN113760728A (zh) 2021-12-07

Family

ID=78786466

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110089195.1A Pending CN113760728A (zh) 2021-01-22 2021-01-22 应用测试的方法和装置

Country Status (1)

Country Link
CN (1) CN113760728A (zh)

Similar Documents

Publication Publication Date Title
CN107809331B (zh) 识别异常流量的方法和装置
CN106815254B (zh) 一种数据处理方法和装置
CN107480277B (zh) 用于网站日志采集的方法及装置
CN110858172A (zh) 一种自动化测试代码生成方法和装置
CN112527649A (zh) 一种测试用例的生成方法和装置
CN107908662B (zh) 搜索系统的实现方法和实现装置
CN111309550A (zh) 应用程序的数据采集方法、系统、设备和存储介质
CN112100079B (zh) 基于模拟数据调用的测试方法、系统和电子设备
CN110874307A (zh) 事件埋点的收集上报方法和装置
CN109284450B (zh) 订单成单路径的确定方法及装置、存储介质、电子设备
CN113010405A (zh) 一种应用程序的测试方法和装置
CN113378346A (zh) 模型仿真的方法和装置
CN113590447B (zh) 埋点处理方法和装置
CN110866031A (zh) 数据库访问路径的优化方法、装置、计算设备以及介质
CN108984221B (zh) 一种多平台用户行为日志的采集方法和装置
CN113760728A (zh) 应用测试的方法和装置
CN113051479B (zh) 文件处理、推荐信息生成方法、装置、设备及存储介质
CN115495740A (zh) 一种病毒检测方法和装置
CN111026629A (zh) 一种测试脚本自动生成的方法和装置
CN114912111A (zh) 一种云主机病毒检测方法、装置和系统
CN113076254A (zh) 一种测试用例集的生成方法和装置
CN114021642A (zh) 数据处理方法、装置、电子设备和存储介质
CN111950232B (zh) 一种自动切换号段的方法和装置
CN109218411B (zh) 数据处理方法及装置、计算机可读存储介质、电子设备
CN113792232A (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