CN109522201A - 一种应用程序稳定性测试的方法和装置 - Google Patents

一种应用程序稳定性测试的方法和装置 Download PDF

Info

Publication number
CN109522201A
CN109522201A CN201710841138.8A CN201710841138A CN109522201A CN 109522201 A CN109522201 A CN 109522201A CN 201710841138 A CN201710841138 A CN 201710841138A CN 109522201 A CN109522201 A CN 109522201A
Authority
CN
China
Prior art keywords
activity
application program
tested
case
open
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
CN201710841138.8A
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 Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke 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 Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201710841138.8A priority Critical patent/CN109522201A/zh
Publication of CN109522201A publication Critical patent/CN109522201A/zh
Pending legal-status Critical Current

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/3688Test management for test execution, e.g. scheduling of test suites
    • 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/3696Methods or tools to render software testable

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

一种应用程序稳定性测试的方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种应用程序稳定性测试的方法和装置。
背景技术
在应用程序的稳定性测试中,目前主要采用单一的模拟用户随机输入的测试方式,向应用程序发送伪随机的用户事件流,实现对应用程序稳定性测试。测试人员针对被测应用程序的用户界面UI布局,设计伪随机的用户事件流各类型的百分比,简单配置参数后即开始测试。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
1.对于路径较深的界面:这些界面需要前置条件(例如输入正确的密码)才能被访问,而随机的用户事件流不可能发生该前置条件,因此无法访问该界面,导致测试过程中出现漏测页面的问题;
2.对于入口较小的界面:这些界面需要一系列事件依次发生之后才能被访问,而伪随机的用户事件流很难保证该一系列事件依次发生,因此在测试过程中漏测这些界面的概率非常大,出现漏测页面的问题;
3.对于出口较小的界面:这些界面需要一系列事件依次发生之后才能被访问,而随机的用户事件流很难保证该一系列事件依次发生,因此在测试过程中很容易被困在某些界面中。
发明内容
有鉴于此,本发明实施例提供一种应用程序稳定性测试的方法和装置,能够解决漏测页面的问题和某些页面被困住的问题,提高测试的有效性和测试的覆盖度。
为实现上述目的,根据本发明实施例的一个方面,提供了一种应用程序稳定性测试的方法,包括:
获取应用程序的源代码;
根据所述应用程序的源代码获取预先设置的用户操作流;
根据所述用户操作流对所述应用程序进行测试。
可选地,所述用户操作流包括:主场景用例;所述主场景用例包括:所述应用程序的活动Activity的访问路径;所述根据所述用户操作流对所述应用程序进行测试,包括:根据所述主场景用例,启动所述Activity的被测界面;对所述被测界面进行测试;其中,所述Activity为开放式。
可选地,所述获取应用程序的源代码之后还包括:对所述Activity进行预处理,判断所述Activity是否为开放式,若不是,则将所述Activity设置为开放式。
可选地,所述预处理的步骤包括:若所述Activity显式设置导出exported属性值,并且,若exported属性值为真true,则所述Activity为开放式,若exported属性值为假false,则所述Activity为非开放式;若所述Activity未设置exported属性值,则判断所述Activity是否有意图过滤器intent-filter,并且,若所述Activity有intent-filter,则所述Activity为开放式;若所述Activity没有intent-filter,则所述Activity为非开放式;将非开放式的Activity的exported属性值显式设置为true。
可选地,所述用户操作流包括:精细场景用例;所述精细场景用例包括:针对被测界面预先录制的用户事件流;所述根据所述用户操作流对所述应用程序进行测试,包括:获取所述被测界面的活动Activity名称;根据所述Activity名称获取与所述被测界面对应的精细场景用例;基于所述精细场景用例对所述应用程序进行测试。
可选地,所述方法包括在设定时间范围内对所述应用程序进行测试,若测试过程中出现应用程序闪退或者应用程序无响应情况,则结束测试。
可选地,所述方法包括使用测试工具Monkey对所述应用程序进行测试。
可选地,所述用户操作流为:模拟用户事件流和/或真实用户事件流;所述用户操作流包括以下至少之一:按键输入、触摸屏输入、手势输入。
为实现上述目的,根据本发明实施例的另一方面,提供了一种应用程序稳定性测试的装置,包括:预处理模块、数据获取模块、测试模块,其中,
预处理模块,用于获取应用程序源代码;
数据获取模块,用于根据所述应用程序的源代码获取预先设置的用户操作流;
测试模块,用于根据所述用户操作流对所述应用程序进行测试。
可选地,所述数据获取模块用于:获取主场景用例;所述主场景用例包括:所述应用程序的活动Activity的访问路径;所述根据所述用户操作流对所述应用程序进行测试,包括:根据所述主场景用例,启动所述Activity的被测界面;对所述被测界面进行测试;其中,所述Activity为开放式。
可选地,所述预处理模块用于:获取应用程序的源代码之后,对所述Activity进行预处理,判断所述Activity是否为开放式,若不是,则将所述Activity设置为开放式。
可选地,所述预处理模块用于:若所述Activity显式设置导出exported属性值,并且,若exported属性值为真true,则所述Activity为开放式,若exported属性值为假false,则所述Activity为非开放式;若所述Activity未设置exported属性值,则判断所述Activity是否有意图过滤器intent-filter,并且,若所述Activity有intent-filter,则所述Activity为开放式;若所述Activity没有intent-filter,则所述Activity为非开放式;将非开放式的Activity的exported属性值显式设置为true。
可选地,所述数据获取模块用于:获取精细场景用例;所述精细场景用例包括:针对被测界面预先录制的真实用户事件流;所述根据所述用户操作流对所述应用程序进行测试,包括:获取所述被测界面的活动Activity名称;根据所述Activity名称获取与所述被测界面对应的精细场景用例;基于所述精细场景用例对所述应用程序进行测试。
可选地,所述测试模块用于:在设定时间范围内对所述应用程序进行测试,若测试过程中出现应用程序闪退或者应用程序无响应情况,则结束测试。
可选地,所述测试模块用于:使用测试工具Monkey对所述应用程序进行测试。
可选地,所述用户操作流为:模拟用户事件流和/或真实用户事件流;所述用户操作流包括以下至少之一:按键输入、触摸屏输入、手势输入。
为实现上述目的,根据本发明实施例的再一方面,提供了一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明实施例所提供的应用程序稳定性测试的方法。
为实现上述目的,根据本发明实施例的再一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行本发明所提供的应用程序稳定性测试的方法。
根据本发明的技术方案,上述发明中的一个实施例具有如下优点或有益效果:根据预先设置的用户操作流对所述应用程序进行测试,能够解决漏测页面的问题和某些页面被困住的问题,提高测试的有效性和测试的覆盖度。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的应用程序稳定性测试的方法的主要流程的示意图;
图2是根据本发明实施例的应用程序稳定性测试的方法中预处理的主要流程的示意图;
图3是应用程序中的支付流程示意图;
图4是利用现有技术进行测试过程中被困在WebView的流程示意图;
图5是根据本发明实施例的根据主场景用例对所述应用程序进行测试的主要流程的示意图;
图6是根据本发明实施例的根据精细场景用例对所述应用程序进行测试的主要流程的示意图;
图7是根据本发明实施例的应用程序稳定性测试的装置的主要模块的示意图;
图8是本发明实施例可以应用于其中的示例性***架构图;
图9是适于用来实现本发明实施例的终端设备或服务器的计算机***的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的应用程序稳定性测试的方法的主要流程的示意图;
如图1所示,本发明实施例的一种应用程序稳定性测试的方法包括:
步骤S101:获取应用程序的源代码;
步骤S102:根据所述应用程序的源代码获取预先设置的用户操作流;
步骤S103:根据所述用户操作流对所述应用程序进行测试。
根据预先设置的用户操作流对所述应用程序进行测试,能够解决漏测页面的问题和某些页面被困住的问题,提高测试的有效性和测试的覆盖度。
本发明实施例中,所述获取应用程序的源代码之后还包括:对所述Activity进行预处理,判断所述Activity是否为开放式,若不是,则将所述应用程序的Activity设置为开放式。
若Activity为非开放式,则有可能由于该Activity无法被访问而导致该Activity对应的被测界面被漏测。本实施例中,通过将Activity设置为开放式,使得Activity可以直接被访问,避免上述情况的发生。
图2是根据本发明实施例的应用程序稳定性测试的方法中预处理的主要流程的示意图;
如图2所示,所述预处理的步骤包括:若所述Activity显式设置导出exported属性值,并且,若exported属性值为真true,则所述Activity为开放式,若exported属性值为假false,则所述Activity为非开放式;若所述Activity未设置exported属性值,则判断所述Activity是否有意图过滤器intent-filter,并且,若所述Activity有intent-filter,则所述Activity为开放式;若所述Activity没有intent-filter,则所述Activity为非开放式;将非开放式的Activity的exported属性值显式设置为true。
通过将非开放式的Activity的exported属性值显式设置为true,可以高效率的达到预处理的目的,经预处理后Activity为开放式。
关于导出exported可以进行以下说明:导出exported的属性用于描述一个Activity能否被外界直接调用。正常情况下,或者处于安全考虑,Activity一般不能由外界调用,只能程序内部调用。将Activity的exported属性值显式设置为true,这样其他程序就可以直接访问此Activity。
关于意图过滤器intent-filter可以进行以下说明:intent-filter定义了这个Activity可以接收并响应哪些Intent;所述Intent是一个***组件,可以在程序间传递数据。
所述预处理过程还可以包括:编译源代码、覆盖率统计代码、测试信息收集代码以及其他的有助于测试信息收集的代码。
对于路径较深的界面,需要前置条件(例如输入正确的密码)才能被访问,而随机的用户事件流不可能发生该前置条件,因此无法访问该界面,导致测试过程中出现漏测页面的问题。如图3所示,支付成功的页面是在实际下单并支付成功后才出现的一个页面,而在现有技术的测试中,由于不可能发生支付操作(支付需要支付密码),所以支付成功的页面是永远不可能测试到的。
对于入口较小的界面,需要一系列事件依次发生之后才能被访问,而伪随机的用户事件流很难保证该一系列事件依次发生,因此在测试过程中漏测这些界面的概率非常大,出现漏测页面的问题。例如,要进入“微博个人主页”,必须依次点击微博首页的“我”–左上角的“用户头像”,而由于伪随机的用户事件流的随机性,要连续点中这两个地方的概率很小,所以测试到界面“微博个人主页”的概率也就很小,甚至漏测该页面。
本发明实施例中,所述用户操作流包括:主场景用例;所述主场景用例包括:所述应用程序的活动Activity的访问路径;所述根据所述用户操作流对所述应用程序进行测试,包括:根据所述主场景用例,启动所述Activity的被测界面;对所述被测界面进行测试;所述Activity为开放式。
本发明实施例中根据主场景用例启动Activity对应的被测界面,能够解决漏测页面的问题,提高测试的有效性和测试的覆盖度。
其中,关于活动Activity可以进行以下说明:Activity是应用程序中负责与用户交互的组件,提供一个界面,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。
对于出口较小的界面,需要一系列事件依次发生之后才能被访问,而随机的用户事件流很难保证该一系列事件依次发生,因此在测试过程中很容易被困在某些界面中。如图4所示,点击网页视图WebView的关闭按钮“X”的概率非常小,导致测试过程被困在该WebView中;当该WebView中包含其他WebView的链接时,伪随机的用户事件流很有可能点中其他WebView的链接,如此往复循环,使得测试过程一直被困在WebView中。
本发明实施例中,所述用户操作流可以包括:精细场景用例;所述精细场景用例包括:针对被测界面预先录制的用户事件流;所述根据所述用户操作流对所述应用程序进行测试,包括:获取所述被测界面的活动Activity名称;根据所述Activity名称获取与所述被测界面对应的精细场景用例;基于所述精细场景用例对所述应用程序进行测试。
本发明实施例中基于所述精细场景用例对所述应用程序进行测试,能够解决在测试过程中出现的在某些页面中被困住的问题,提高测试的有效性和测试的覆盖度。
主场景用例的粒度较粗,通过主场景用例可以打开被测界面,可以但不限于直接调用命令行工具中的adb(adb shell am start)命令按设定路径打开被测界面。以电商领域为例,假设某电商软件app有几个界面:首页、商品详情、购物车、结算,主场景用例可以按照如下方式进行设置:
主场景用例1:进入首页(打开app,进入首页);
主场景用例2:进入商品详情(打开app,进入首页,进入商品详情);
主场景用例3:进入购物车(打开app,进入首页,进入商品详情,进入购物车页面);
主场景用例4:从首页直接进入购物车(打开app,进入首页,打开购物车页面)。
精细场景是相对于主场景用例而言的,其操作粒度较细。精细场景用例是由一系列用户事件流组成,在被测界面上做一些精细的操作。以电商领域为例,针对某电商软件app的商品详情页面,可以设置如下精细场景用例:勾选商品的颜色、规格,选择购买商品的数量,点击“加入购物车”,进入购物车页面。再例如,对于某个网页视图WebView,可以设置如下精细场景用例:点击网页视图WebView右上角的关闭按钮“X”,关闭WebView。
本发明实施例中,所述方法包括在设定时间范围内对所述应用程序进行测试。通过设定时间范围可以在合理的时间内获得测试结果,更有效的达到测试的目的,提高测试的效率。
本发明实施例中,所述方法包括使用测试工具Monkey对所述应用程序进行测试。本发明实施例结合使用Monkey进行测试,可以更有效的达到测试的目的,提高测试的效率。
关于Monkey可以进行以下说明:Monkey是一个用于稳定性测试的工具,Monkey测试模拟用户的按键输入,触摸屏输入,手势输入等操作行为,并向应用程序发送这些操作行为。
图5是根据本发明实施例的根据主场景用例对所述应用程序进行测试的主要流程的示意图。如图5所示,获取主场景用例;遍历当前主场景用例,进入被测界面;对被测界面进行测试,可以但不限于运行测试工具Monkey10分钟;获取下一个主场景用例,直至遍历完所有主场景用例。
图6是根据本发明实施例的根据精细场景用例对所述应用程序进行测试的主要流程的示意图。如图6所示,获取被测界面;获取所述被测界面的活动Activity名称;根据所述Activity名称获取与所述被测界面对应的精细场景用例;基于精细场景用例对被测界面进行测试,可以但不限于运行测试工具Monkey5分钟。
本发明实施例可以但不限于调用MonkeyRunner执行精细场景用例;关于MonkeyRunner可以进行以下说明:MonkeyRunner是一种自动化测试工具可以进行用户操作事件的录制和回放。
所述用户操作流为:模拟用户事件流和/或真实用户事件流;所述用户操作流包括以下至少之一:按键输入、触摸屏输入、手势输入。
所述模拟用户事件流是由随机的模拟操作行为组成的事件流;
所述真实用户事件流是由真实的操作行为而组成的事件流。
在测试过程结束后,可以收集并分析测试数据,更好的了解测试的效果,帮助了解应用程序的稳定性。若测试过程中出现应用程序闪退或者应用程序无响应的情况,结束测试,并将该情况发送至客户端。
测试数据包括以下一种或几种:执行模拟用户事件流过程中输出的日志信息、应用程序运行时输出的日志信息、覆盖率、应用程序的界面截图;其中,执行模拟用户事件流过程中输出的日志信息可以但包括不限于以下一种或几种:执行的模拟用户事件的类型、模拟用户事件流的执行状态;覆盖率为整个测试过程完成后,已运行的预处理后的应用程序源代码的百分比;应用程序运行时输出的日志信息可以包括但不限于:应用程序的运行状态信息。
图7是根据本发明实施例的应用程序稳定性测试的装置的主要模块的示意图。
如图7所示,本发明实施例的一种应用程序稳定性测试的装置700包括:预处理模块701、数据获取模块702、测试模块703,其中,
预处理模块701,用于获取应用程序源代码;
数据获取模块702,用于根据所述应用程序的源代码获取预先设置的用户操作流;
测试模块703,用于根据所述用户操作流对所述应用程序进行测试。
根据预先设置的用户操作流对所述应用程序进行测试,能够解决漏测页面的问题和某些页面被困住的问题,提高测试的有效性和测试的覆盖度。
本实施例中,所述数据获取模块702用于:获取主场景用例;所述主场景用例包括:所述应用程序的活动Activity的访问路径;所述测试模块703用于:根据所述主场景用例,启动所述Activity的被测界面;对所述被测界面进行测试;其中,所述Activity为开放式。
根据主场景用例启动Activity的被测界面并对所述被测界面进行测试,能够解决漏测页面的问题,提高测试的有效性和测试的覆盖度。
本实施例中,所述预处理模块701用于:获取应用程序的源代码之后,对所述Activity进行预处理,判断所述Activity是否为开放式,若不是,则将所述Activity设置为开放式。
通过将Activity设置为开放式,外界就可以直接访问Activity。
本实施例中,所述预处理模块701用于:若所述Activity显式设置导出exported属性值,并且,若exported属性值为真true,则所述Activity为开放式,若exported属性值为假false,则所述Activity为非开放式;若所述Activity未设置exported属性值,则判断所述Activity是否有意图过滤器intent-filter,并且,若所述Activity有intent-filter,则所述Activity为开放式;若所述Activity没有intent-filter,则所述Activity为非开放式;将非开放式的所述Activity的exported属性值显式设置为true。
通过将非开放式的Activity的exported属性值显式设置为true,可以高效率的达到预处理的目的,经预处理后Activity为开放式。
本实施例中,所述数据获取模块702用于:获取精细场景用例;所述精细场景用例包括:针对被测界面预先录制的用户事件流;所述测试模块703用于:获取所述被测界面的活动Activity名称;根据所述Activity名称获取与所述被测界面对应的精细场景用例;基于所述精细场景用例对所述应用程序进行测试。
基于所述精细场景用例对所述应用程序进行测试,能够解决在测试过程中出现的在某些页面中被困住的问题,提高测试的有效性和测试的覆盖度。
本实施例中,所述测试模块703用于:在设定时间范围内对所述应用程序进行测试。通过设定时间范围可以在合理的时间内获得测试结果,更有效的达到测试的目的,提高测试的效率。
本实施例中,所述测试模块703用于:使用测试工具Monkey对所述应用程序进行测试。结合使用Monkey进行测试,可以更有效的达到测试的目的,提高测试的效率。
图8示出了可以应用本发明实施例的应用程序稳定性测试的方法或装置的示例性***架构800。
如图8所示,***架构800可以包括终端设备801、802、803,网络804和服务器805。网络804用以在终端设备801、802、803和服务器805之间提供通信链路的介质。网络804可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备801、802、803通过网络804与服务器805交互,以接收或发送消息等。终端设备801、802、803上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备801、802、803可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器805可以是提供各种服务的服务器,例如对用户利用终端设备801、802、803所浏览的购物类网站提供支持的后台管理服务器。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果反馈给终端设备。
需要说明的是,本发明实施例所提供的应用程序稳定性测试方法一般由服务器805执行,相应地,应用程序稳定性测试装置一般设置于服务器805中。
应该理解,图8中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
根据本发明的实施例,本发明还提供了一种电子设备和一种可读存储介质。
本发明的电子设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行本发明所提供的应用程序稳定性测试的方法。
本发明的计算机可读存储介质,所述计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行本发明所提供的应用程序稳定性测试的方法。
下面参考图9,其示出了适于用来实现本发明实施例的终端设备的计算机***900的结构示意图。图9示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图9所示,计算机***900包括中央处理模块(CPU)901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。在RAM903中,还存储有***900操作所需的各种程序和数据。CPU901、ROM902以及RAM903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
以下部件连接至I/O接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被中央处理模块(CPU)901执行时,执行本发明的***中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器,包括:预处理模块、数据获取模块、测试模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,预处理模块还可以被描述为“获取应用程序源代码的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:步骤S101获取应用程序的源代码;步骤S102根据所述应用程序的源代码获取预先设置的用户操作流;步骤S103根据所述用户操作流对所述应用程序进行测试。
根据本发明实施例的应用程序稳定性测试的方法可以看出,通过向应用程序发送预先设置的用户事件流使所有界面都可以被直接访问,克服了漏测某些页面的技术问题,可以测试到每个界面,进而可以达到提高测试方法有效性的技术效果。同时克服了在测试过程被困在某些界面中的难题,达到提高测试程序覆盖度的技术效果,提高了测试方法的有效性。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (12)

1.一种应用程序稳定性测试的方法,其特征在于,包括:
获取应用程序的源代码;
根据所述应用程序的源代码获取预先设置的用户操作流;
根据所述用户操作流对所述应用程序进行测试。
2.根据权利要求1所述的方法,其特征在于,所述用户操作流包括:主场景用例;所述主场景用例包括:所述应用程序的活动Activity的访问路径;
所述根据所述用户操作流对所述应用程序进行测试,包括:
根据所述主场景用例,启动所述Activity的被测界面;
对所述被测界面进行测试;
其中,所述Activity为开放式。
3.根据权利要求2所述的方法,其特征在于,所述获取应用程序的源代码之后还包括:
对所述Activity进行预处理,判断所述Activity是否为开放式,若不是,则将所述Activity设置为开放式。
4.根据权利要求3所述的方法,其特征在于,所述预处理的步骤包括:
若所述Activity显式设置导出exported属性值,并且,
若exported属性值为真true,则所述Activity为开放式,
若exported属性值为假false,则所述Activity为非开放式;
若所述Activity未设置exported属性值,则判断所述Activity是否有意图过滤器intent-filter,并且,
若所述Activity有intent-filter,则所述Activity为开放式;
若所述Activity没有intent-filter,则所述Activity为非开放式;
将非开放式的所述Activity的exported属性值显式设置为true。
5.根据权利要求1或2所述的方法,其特征在于,所述用户操作流包括:精细场景用例;所述精细场景用例包括:针对被测界面预先录制的用户事件流;
所述根据所述用户操作流对所述应用程序进行测试,包括:
启动所述被测界面,并获取所述被测界面的活动Activity名称;
根据所述Activity名称获取与所述被测界面对应的精细场景用例;
基于所述精细场景用例对所述被测界面进行测试。
6.一种应用程序稳定性测试的装置,其特征在于,包括:预处理模块、数据获取模块、测试模块,其中,
预处理模块,用于获取应用程序源代码;;
数据获取模块,用于根据所述应用程序的源代码获取预先设置的用户操作流;
测试模块,用于根据所述用户操作流对所述应用程序进行测试。
7.根据权利要求6所述的装置,其特征在于,所述数据获取模块用于:
获取主场景用例;所述主场景用例包括:所述应用程序的活动Activity的访问路径;
所述根据所述用户操作流对所述应用程序进行测试,包括:
根据所述主场景用例,启动所述Activity的被测界面;
对所述被测界面进行测试;
其中,所述Activity为开放式。
8.根据权利要求7所述的装置,其特征在于,所述预处理模块用于:
获取应用程序的源代码之后,对所述Activity进行预处理,判断所述Activity是否为开放式,若不是,则将所述应用程序的Activity设置为开放式。
9.根据权利要求8所述的装置,其特征在于,所述预处理模块用于:
若所述Activity显式设置导出exported属性值,并且,
若exported属性值为真true,则所述Activity为开放式,
若exported属性值为假false,则所述Activity为非开放式;
若所述Activity未设置exported属性值,则判断所述Activity是否有意图过滤器intent-filter,并且,
若所述Activity有intent-filter,则所述Activity为开放式;
若所述Activity没有intent-filter,则所述Activity为非开放式;
将非开放式的所述Activity的exported属性值显式设置为true。
10.根据权利要求6或7所述的装置,其特征在于,所述数据获取模块用于:
获取精细场景用例;所述精细场景用例包括:针对被测界面预先录制的用户事件流;
所述根据所述用户操作流对所述应用程序进行测试,包括:
启动所述被测界面,并获取所述被测界面的活动Activity名称;
根据所述Activity名称获取与所述被测界面对应的精细场景用例;
基于所述精细场景用例对所述被测界面进行测试。
11.一种电子设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述至少一个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一所述的方法。
12.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-5中任一所述的方法。
CN201710841138.8A 2017-09-18 2017-09-18 一种应用程序稳定性测试的方法和装置 Pending CN109522201A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710841138.8A CN109522201A (zh) 2017-09-18 2017-09-18 一种应用程序稳定性测试的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710841138.8A CN109522201A (zh) 2017-09-18 2017-09-18 一种应用程序稳定性测试的方法和装置

Publications (1)

Publication Number Publication Date
CN109522201A true CN109522201A (zh) 2019-03-26

Family

ID=65767938

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710841138.8A Pending CN109522201A (zh) 2017-09-18 2017-09-18 一种应用程序稳定性测试的方法和装置

Country Status (1)

Country Link
CN (1) CN109522201A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110245086A (zh) * 2019-06-19 2019-09-17 北京字节跳动网络技术有限公司 应用程序稳定性测试方法、装置及设备
CN111581110A (zh) * 2020-04-16 2020-08-25 贝壳技术有限公司 一种业务数据准确性检测方法、装置、***及存储介质
CN112241356A (zh) * 2019-07-16 2021-01-19 腾讯科技(深圳)有限公司 一种页面测试方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150178180A1 (en) * 2013-12-23 2015-06-25 International Business Machines Corporation Creating trace data from recent software output and activity
CN104915290A (zh) * 2015-05-28 2015-09-16 小米科技有限责任公司 应用测试方法及装置
CN105740144A (zh) * 2016-01-27 2016-07-06 浪潮(北京)电子信息产业有限公司 一种Android移动终端的自动化测试方法及***
CN105868105A (zh) * 2016-03-24 2016-08-17 厦门美图移动科技有限公司 一种应用遍历测试方法、设备及移动终端

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150178180A1 (en) * 2013-12-23 2015-06-25 International Business Machines Corporation Creating trace data from recent software output and activity
CN104915290A (zh) * 2015-05-28 2015-09-16 小米科技有限责任公司 应用测试方法及装置
CN105740144A (zh) * 2016-01-27 2016-07-06 浪潮(北京)电子信息产业有限公司 一种Android移动终端的自动化测试方法及***
CN105868105A (zh) * 2016-03-24 2016-08-17 厦门美图移动科技有限公司 一种应用遍历测试方法、设备及移动终端

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
GORGLE: "结合源码谈谈Activity的exported属性", 《CSDN博客,HTTPS://BLOG.CSDN.NET/GORGLE/ARTICLE/DETAILS/51420586》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110245086A (zh) * 2019-06-19 2019-09-17 北京字节跳动网络技术有限公司 应用程序稳定性测试方法、装置及设备
CN110245086B (zh) * 2019-06-19 2023-05-16 北京字节跳动网络技术有限公司 应用程序稳定性测试方法、装置及设备
CN112241356A (zh) * 2019-07-16 2021-01-19 腾讯科技(深圳)有限公司 一种页面测试方法、装置、设备及存储介质
CN112241356B (zh) * 2019-07-16 2024-05-10 腾讯科技(深圳)有限公司 一种页面测试方法、装置、设备及存储介质
CN111581110A (zh) * 2020-04-16 2020-08-25 贝壳技术有限公司 一种业务数据准确性检测方法、装置、***及存储介质
CN111581110B (zh) * 2020-04-16 2023-08-15 贝壳技术有限公司 一种业务数据准确性检测方法、装置、***及存储介质

Similar Documents

Publication Publication Date Title
USRE49486E1 (en) System and method for tracking web interactions with real time analytics
CN108322473B (zh) 用户行为分析方法与装置
CN108334449A (zh) 一种接口自动化测试的方法和装置
CN103984626B (zh) 一种生成测试用例脚本的方法及装置
CN109426593A (zh) 自动评估***性能的方法和装置
CN110196790A (zh) 异常监控的方法和装置
CN110377522A (zh) 交易场景的测试方法、装置、计算设备以及介质
CN112559301B (zh) 业务处理方法、存储介质、处理器及电子装置
CN109933509A (zh) 一种实现自动化测试缺陷管理的方法和装置
CN108334641A (zh) 采集用户行为数据的方法、***、电子设备、存储介质
CN109033406A (zh) 用于搜索区块链数据的方法、装置及存储介质
CN109522201A (zh) 一种应用程序稳定性测试的方法和装置
CN109558323A (zh) 用于调试页面的***、方法和装置
CN109241722A (zh) 用于获取信息的方法、电子设备和计算机可读介质
CN107634947A (zh) 限制恶意登录或注册的方法和装置
CN107517251A (zh) 信息推送方法和装置
CN109002440A (zh) 用于大数据多维分析的方法、装置及***
CN109408754A (zh) 网页操作数据的处理方法、装置、电子设备及存储介质
CN109101294A (zh) 数据采集方法及插件、电子设备及存储介质
CN109614340A (zh) 应用程序的开发调试方法、装置、电子设备及存储介质
CN109002385A (zh) 用于数据流***的压力测试方法和装置
CN107635001A (zh) Web脚本异常处理方法和装置
CN109002282A (zh) 一种在web页面开发中实现动画效果的方法和装置
CN107295067A (zh) 跨屏识别用户的方法和装置
CN109814957A (zh) 一种用于ios***的标签添加方法和装置

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20190326

RJ01 Rejection of invention patent application after publication