CN105095087A - 一种基于权限操作的软件测试系统和方法 - Google Patents
一种基于权限操作的软件测试系统和方法 Download PDFInfo
- Publication number
- CN105095087A CN105095087A CN201510547072.2A CN201510547072A CN105095087A CN 105095087 A CN105095087 A CN 105095087A CN 201510547072 A CN201510547072 A CN 201510547072A CN 105095087 A CN105095087 A CN 105095087A
- Authority
- CN
- China
- Prior art keywords
- pitching pile
- code
- software
- configuration file
- tested software
- 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
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种基于权限操作的软件测试系统,所述系统包括:终端,终端用于获取当前登录用户的用户信息;获取模块,用于获取第一配置文件;代码插入模块,用于根据所述第一配置文件,在被测软件的插桩点处插入对应的所述插桩代码,生成插桩后的被测软件;代码运行模块,用于运行所述插桩后的被测软件。本发明由于能够在被测软件的插桩点处插入对应的插桩代码,使得插桩后的被测软件在运行过程中,其中的插桩点被触发时能自动执行与插桩点对应的插桩代码,从而模拟出各种测试场景,不需要人工模拟场景或者手动修改数据或临时修改代码,因此既能模拟出各种异常场景又能降低测试时间成本,同时,通过终端授权,能够分配软件测试的内容。
Description
技术领域
本发明涉及软件测试技术领域,尤其是涉及一种基于权限操作的软件测试系统和方法。
背景技术
软件在发布之前为确保软件的稳定性,需要对软件进行测试。在软件测试中,为保证软件质量,需要对各种软件可能面临的场景进行覆盖测试。传统技术中,通常会采用基于功能的黑盒测试方法和基于代码的白盒测试方法这两种方案来实现软件测试。但是,如果要覆盖各种异常场景,比如,对于机器内存不足的异常场景,需要开启大量的程序将系统的内存耗尽;对于磁盘空间不足的异常场景,则需要通过拷贝文件等方式将本地磁盘空间占满。因此基于功能的黑盒测试方法实现起来比较困难,且需要一定的测试时间成本。并且,对于一些程序内部的异常分支,如某个函数异常返回,基于功能的黑盒测试方法更加难以模拟。
基于代码的白盒测试方法,虽然能够在程序运行时设置断点,通过手动修改程序运行时数据或者临时修改代码来模拟这类异常场景,但是这种方式的测试时间成本同样很高,特别是对于一些涉及到较多代码模块修改的特定场景的模拟,比如,所有new函数调用均要返回NULL的特定场景,这种测试方法的时间成本会更加高。
同时,一款软件的测试有时会需要多人同时进行分工测试,现实中大多是口头分工,未进行系统化的整理,有时会出现重复测试或者漏测现象的发生,给正常工作带来不便。
发明内容
鉴于上述问题,提供能模拟出各种异常场景且能降低测试时间成本的一种基于权限操作的软件测试系统和方法。
为了实现本发明的目的所采用的技术方案是一种基于权限操作的软件测试系统,所述系统包括:
终端,终端用于获取当前登录用户的用户信息,根据当前登录用户的用户信息获取当前登录用户所对应的权限控制策略;
获取模块,用于获取第一配置文件,所述第一配置文件中设有插桩点和对应的用于产生测试场景的插桩代码;
代码插入模块,用于根据所述第一配置文件,在被测软件的插桩点处插入对应的所述插桩代码,生成插桩后的被测软件;
代码运行模块,用于运行所述插桩后的被测软件,当所述插桩后的被测软件中的所述插桩点被触发时,执行与触发的所述插桩点对应的所述插桩代码。
在一些实施方式中,上述终端接收当前登录用户对任意一个或多个应用软件进行操作的操作信息,将任意一个或多个应用软件的软件信息和/或对应的操作信息与对应的权限控制策略进行匹配,确定当前登录用户对任意一个或多个应用软件进行操作的操作结果。
一种基于权限操作的软件测试方法,所述方法包括:
A、终端获取当前登录用户的用户信息,根据当前登录用户的用户信息获取当前登录用户所对应的权限控制策略;
B、获取第一配置文件,所述第一配置文件中设有插桩点和对应的用于产生测试场景的插桩代码;
C、根据所述第一配置文件,在被测软件的插桩点处插入对应的所述插桩代码,生成插桩后的被测软件;
D、运行所述插桩后的被测软件,当所述插桩后的被测软件中的所述插桩点被触发时,执行与触发的所述插桩点对应的所述插桩代码。
本发明所提供的一种基于权限操作的软件测试系统和方法,由于能够在被测软件的插桩点处插入对应的插桩代码,使得插桩后的被测软件在运行过程中,其中的插桩点被触发时能自动执行与插桩点对应的插桩代码,从而模拟出各种测试场景,不需要人工模拟场景或者手动修改数据或临时修改代码,因此既能模拟出各种异常场景又能降低测试时间成本,同时,通过终端授权,能够分配软件测试的内容。
附图说明
图1为一种基于权限操作的软件测试系统的结构示意图;
图2为一种基于权限操作的软件测试方法的流程示意图;
具体实施方式
下面结合附图和具体实施方式对本发明作进一步说明。
如图1所示,一种基于权限操作的软件测试系统,所述系统包括:
终端,终端用于获取当前登录用户的用户信息,根据当前登录用户的用户信息获取当前登录用户所对应的权限控制策略;终端接收当前登录用户对任意一个或多个应用软件进行操作的操作信息,将任意一个或多个应用软件的软件信息和/或对应的操作信息与对应的权限控制策略进行匹配,确定当前登录用户对任意一个或多个应用软件进行操作的操作结果
获取模块,用于获取第一配置文件,所述第一配置文件中设有插桩点和对应的用于产生测试场景的插桩代码;
代码插入模块,用于根据所述第一配置文件,在被测软件的插桩点处插入对应的所述插桩代码,生成插桩后的被测软件;
代码运行模块,用于运行所述插桩后的被测软件,当所述插桩后的被测软件中的所述插桩点被触发时,执行与触发的所述插桩点对应的所述插桩代码。
本实施例中,插桩点包括系统函数、自定义函数和指定操作中的至少一种。
本实施例中,代码运行模块包括:
插桩代码执行模块,用于通过插桩代码读取第二配置文件,该第二配置文件中设有插桩点和对应的行为程序。
程序执行模块用于执行与触发的插桩点对应的行为程序,产生测试场景。
本实施例中,代码插入模块为插桩编译器,用于在被测软件的编译阶段,根据第一配置文件在被测软件的插桩点处插入对应的插桩代码,生成插桩后的被测软件。
本实施例中,代码插入模块为运行插桩器,用于在被测软件的运行阶段,根据第一配置文件在被测软件的插桩点处插入对应的插桩代码,生成插桩后的被测软件。
如图2所示,还提供了一种基于权限操作的软件测试方法,该方法包括:
步骤S100,终端用于获取当前登录用户的用户信息。
在用户在服务器上被成功激活之后,服务器会在间隔固定时间发送当前的系统时间和更新后的权限控制策略至终端的权限管理客户端,然后终端在接收到当前的系统时间和更新后的权限控制策略之后,使用更新后的权限控制策略更新本地保存的权限控制策略,使用当前的系统时间更新终端的本地系统时间;其中,间隔固定时间可以由操作人员进行设置,例如可以设置为5分钟或10分钟;通过更新当前时间,使得服务器和终端的时间保持同步,通过更新权限控制策略,使得终端可以获取到最新的权限控制策略,使用最新的权限控制策略控制每一个已经注册用户的操作行为。
步骤S200,获取第一配置文件。
第一配置文件也可称为插桩规则文件,其中设有插桩点和对应的用于产生测试场景的插桩代码。所谓插桩点,是指要插入插桩代码的代码点,可设为在调用系统函数或自定义函数时或者执行某类操作(如创建对象new)时插入预设的插桩代码。
依据AOP(AspectOrientedProgramming,面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术)技术的不同,对于不同语言,可以采用不同的形式来实现第一配置文件。比如,对于Java语言,可使用AspectJ(基于Java平台的AOP工具)源代码文件或者编译后的jar包(JavaArchive,Java归档文件),或者执行时的xml(可扩展标记语言)规则文件来实现第一配置文件。对于c/c++语言,则可使用AspectC(基于C/C++语言的AOP工具)来描述第一配置文件。采用哪种文件实现第一配置文件,由对被测软件插入插桩代码的时机(在被测软件编译阶段插入还是在被测软件运行阶段插入),以及被测软件的开发语言和平台决定。
第一配置文件实际上设置了可以对哪些函数或操作进行插桩以及对应的插桩代码,也就是插桩点和对应的插桩代码。插桩点包括系统函数、自定义函数和指定操作的至少一种。例如,第一配置文件中可设置有系统函数名和/或自定义函数名。以AspectJ源代码文件为例,其中记录的函数名有:
pointcutgetNetworkType():call(intandroid.net.NetworkInfo.getType());
pointcutgetSubtype():call(intandroid.net.NetworkInfo.getSubType());
pointcutgetExtraInfo():call(Stringandroid.net.NetworkInfo.getExtraInfo())等。表示在调用这些函数时,需要产生对应的测试场景。
步骤S300,根据第一配置文件,在被测软件的插桩点处插入对应的插桩代码,生成插桩后的被测软件。
所谓插桩代码,是指用于产生各种测试场景的代码,可以在被测软件编译时或者运行时插入到被测软件的插桩点处。这样,插桩后的被测软件在触发插桩点时就能够执行该插桩代码,从而得到各种测试场景。
步骤S400,运行插桩后的被测软件,当插桩后的被测软件中的插桩点被触发时,执行与触发的插桩点对应的插桩代码。
插桩后的被测软件是指已在插桩点植入了对应的插桩代码的被测软件,它在运行过程中,当其中的插桩点被触发,比如调用指定的函数时,则执行与该触发的插桩点对应的插桩代码。
进一步的,插桩代码可设置为执行时去解析第二配置文件中与插桩点对应的行为程序,从而得到第二配置文件中指定的结果。
仍以第一配置文件为AspectJ源代码文件为例进行举例说明,对应于某一函数的插桩代码可为:
该插桩代码在执行时,会去解析第二配置文件,从第二配置文件中读取android.net.NetworkIfo.getExtraInfo行信息。
作为优选的,执行与触发的插桩点对应的插桩代码的步骤,包括:通过插桩代码读取第二配置文件,第二配置文件中设有插桩点和对应的行为程序;执行与触发的插桩点对应的行为程序,产生测试场景。
第二配置文件可为软件运行时的系统配置文件,其中设有插桩点和对应的行为程序,该行为程序定义了对应插桩点应该返回的指定结果或应该执行的操作等。以Java语言为例,在第二配置文件中设定的对应某一插桩点的行为程序为:android.net.NetworkInfo.getExtraInfo=“3gnet”,表示凡是调用“ndroid.net.NetworkInfo.getExtraInfo”这一API函数,则返回结果“3gnet”。又如行为程序为:Thread.run=sleep(random(10)),表示线程执行前,随机挂起(sleep)几秒钟(如10秒以内)。
插桩代码在执行过程中,会去读取和解析指定的第二配置文件中的行为程序,然后执行该行为程序,从而产生各种预先设定的测试场景。比如,插桩代码执行时,从第二配置文件中读取ndroid.net.NetworkIfo.getExtraInfo行信息,得到对应的行为程序为“3gnet”,执行该行为程序,返回结果“3gnet”。
本发明实施例所提供的软件测试方法,可在被测软件编译阶段或者运行阶段插入插桩代码。
上述一种基于权限操作的软件测试系统和方法,根据第一配置文件来对被测软件中的插桩点(如函数触发点)进行截获并插入对应的插桩代码,从而改变了被测软件中的程序的运行行为(如修改函数的指定返回值、修改线程的执行时序等)。在插桩后的被测软件的运行过程中,当插桩点被触发就能运行对应的插桩代码,从而模拟出各种测试场景。比如:对于机器内存不足的场景,可通过第一配置文件设置对应new函数的插桩代码能够读取第二配置文件中对应的行为程序,该行为程序直接抛出outofmemory异常(即内存不足异常)。插入了该插桩代码的被测软件在运行过程中,当调用new函数时,不再继续该系统函数的调用,而是直接抛出outofmemory异常,从而模拟出机器内存不足的场景。对于其它测试场景都可以按照这种方式进行模拟,在此则不再一一列举。
由于采用该一种基于权限操作的软件测试系统和方法,节省了很多人工操作。比如,不需要像传统的黑盒测试方式那样,需要开启大量的程序将系统的内存耗尽或者拷贝文件占本地磁盘空间占满。也不需要像传统的白盒测试方式那样,需要临时修改代码或者手动的修改程序运行时的数据等来模拟各种场景。因此,本发明实施例所提供的一种基于权限操作的软件测试系统和方法,能够节省大量的测试时间成本。除了能够模拟一些常用的测试场景外,对于一些涉及较多代码模块修改的特定场景,本发明通过第一配置文件和第二配置文件中设定的内容也容易实现这些特定场景。
并且,对于多线程的测试,传统的白盒测试方法当需要对单个线程设置断电时,则需要将整个进程挂起,影响了被测软件的正常运行。而本发明除了可以在编译阶段对被测软件植入插桩代码,还可以在被测软件的运行阶段植入插桩代码,不会影响被测软件的正常运行。此外,传统的白盒测试方法在修改程序运行是数据或者临时修改代码时都需要有源代码,在一些不能提供源代码的测试场合下则不能实现测试。而本发明由于是通过预先配置好的第一配置文件来对被测软件的插桩点进行截获,从而将插桩代码插入被测软件中。因此,本发明不需要提供源代码就能够实现测试。
以上仅为本发明的一些实施方式,对于本领域普通技术人员来说,在不脱离本发明创造构思的前提下,还可进行若干变形和改进,这些都属于本发明的保护范围。
Claims (3)
1.一种基于权限操作的软件测试系统,所述系统包括:
终端,终端用于获取当前登录用户的用户信息,根据当前登录用户的用户信息获取当前登录用户所对应的权限控制策略;
获取模块,用于获取第一配置文件,所述第一配置文件中设有插桩点和对应的用于产生测试场景的插桩代码;
代码插入模块,用于根据所述第一配置文件,在被测软件的插桩点处插入对应的所述插桩代码,生成插桩后的被测软件;
代码运行模块,用于运行所述插桩后的被测软件,当所述插桩后的被测软件中的所述插桩点被触发时,执行与触发的所述插桩点对应的所述插桩代码。
2.根据权利要求1所述的一种基于权限操作的软件测试系统,其特征在于:上述终端接收当前登录用户对任意一个或多个应用软件进行操作的操作信息,将任意一个或多个应用软件的软件信息和/或对应的操作信息与对应的权限控制策略进行匹配,确定当前登录用户对任意一个或多个应用软件进行操作的操作结果。
3.一种基于权限操作的软件测试方法,所述方法包括:
A、终端获取当前登录用户的用户信息,根据当前登录用户的用户信息获取当前登录用户所对应的权限控制策略;
B、获取第一配置文件,所述第一配置文件中设有插桩点和对应的用于产生测试场景的插桩代码;
C、根据所述第一配置文件,在被测软件的插桩点处插入对应的所述插桩代码,生成插桩后的被测软件;
D、运行所述插桩后的被测软件,当所述插桩后的被测软件中的所述插桩点被触发时,执行与触发的所述插桩点对应的所述插桩代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510547072.2A CN105095087A (zh) | 2015-08-31 | 2015-08-31 | 一种基于权限操作的软件测试系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510547072.2A CN105095087A (zh) | 2015-08-31 | 2015-08-31 | 一种基于权限操作的软件测试系统和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105095087A true CN105095087A (zh) | 2015-11-25 |
Family
ID=54575582
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510547072.2A Pending CN105095087A (zh) | 2015-08-31 | 2015-08-31 | 一种基于权限操作的软件测试系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105095087A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229558A (zh) * | 2016-03-23 | 2017-10-03 | 阿里巴巴集团控股有限公司 | 软件测试方法和装置 |
CN108563575A (zh) * | 2018-04-16 | 2018-09-21 | 百度在线网络技术(北京)有限公司 | 应用程序测试方法、装置、终端及计算机可读存储介质 |
CN111782261A (zh) * | 2020-06-29 | 2020-10-16 | 百度在线网络技术(北京)有限公司 | 软件配置方法、装置、电子设备以及存储介质 |
CN112667245A (zh) * | 2021-01-15 | 2021-04-16 | 腾讯音乐娱乐科技(深圳)有限公司 | 一种代码处理方法、装置、电子设备及存储介质 |
CN112948013A (zh) * | 2019-12-24 | 2021-06-11 | 深圳市明源云科技有限公司 | 一种应用探针配置方法、装置、终端设备及存储介质 |
WO2024119490A1 (en) * | 2022-12-09 | 2024-06-13 | Ebay Inc. | Fault injection in a notification platform |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102243609A (zh) * | 2011-06-15 | 2011-11-16 | 惠州运通信息技术有限公司 | 一种基于嵌入式软件的测试分析方法及系统 |
US20150058826A1 (en) * | 2013-08-26 | 2015-02-26 | The Trustees Of Columbia University In The City Of New York | Systems and methods for efficiently and effectively detecting mobile app bugs |
CN104820791A (zh) * | 2015-05-19 | 2015-08-05 | 新华瑞德(北京)网络科技有限公司 | 应用软件的权限控制方法和系统 |
CN104834590A (zh) * | 2014-02-11 | 2015-08-12 | 腾讯科技(深圳)有限公司 | 软件测试方法和系统 |
-
2015
- 2015-08-31 CN CN201510547072.2A patent/CN105095087A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102243609A (zh) * | 2011-06-15 | 2011-11-16 | 惠州运通信息技术有限公司 | 一种基于嵌入式软件的测试分析方法及系统 |
US20150058826A1 (en) * | 2013-08-26 | 2015-02-26 | The Trustees Of Columbia University In The City Of New York | Systems and methods for efficiently and effectively detecting mobile app bugs |
CN104834590A (zh) * | 2014-02-11 | 2015-08-12 | 腾讯科技(深圳)有限公司 | 软件测试方法和系统 |
CN104820791A (zh) * | 2015-05-19 | 2015-08-05 | 新华瑞德(北京)网络科技有限公司 | 应用软件的权限控制方法和系统 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229558A (zh) * | 2016-03-23 | 2017-10-03 | 阿里巴巴集团控股有限公司 | 软件测试方法和装置 |
CN107229558B (zh) * | 2016-03-23 | 2020-10-16 | 阿里巴巴集团控股有限公司 | 软件测试方法和装置 |
CN108563575A (zh) * | 2018-04-16 | 2018-09-21 | 百度在线网络技术(北京)有限公司 | 应用程序测试方法、装置、终端及计算机可读存储介质 |
CN108563575B (zh) * | 2018-04-16 | 2019-12-10 | 百度在线网络技术(北京)有限公司 | 应用程序测试方法、装置、终端及计算机可读存储介质 |
CN112948013A (zh) * | 2019-12-24 | 2021-06-11 | 深圳市明源云科技有限公司 | 一种应用探针配置方法、装置、终端设备及存储介质 |
CN112948013B (zh) * | 2019-12-24 | 2023-10-10 | 深圳市明源云科技有限公司 | 一种应用探针配置方法、装置、终端设备及存储介质 |
CN111782261A (zh) * | 2020-06-29 | 2020-10-16 | 百度在线网络技术(北京)有限公司 | 软件配置方法、装置、电子设备以及存储介质 |
CN111782261B (zh) * | 2020-06-29 | 2024-05-28 | 百度在线网络技术(北京)有限公司 | 软件配置方法、装置、电子设备以及存储介质 |
CN112667245A (zh) * | 2021-01-15 | 2021-04-16 | 腾讯音乐娱乐科技(深圳)有限公司 | 一种代码处理方法、装置、电子设备及存储介质 |
WO2024119490A1 (en) * | 2022-12-09 | 2024-06-13 | Ebay Inc. | Fault injection in a notification platform |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104834590B (zh) | 软件测试方法和系统 | |
CN107436832B (zh) | 一种动态埋点的方法、装置及电子设备 | |
CN105095087A (zh) | 一种基于权限操作的软件测试系统和方法 | |
CN103177210B (zh) | 一种在Android中植入动态污点分析模块的方法 | |
US9361211B2 (en) | Automated generation of test cases for regression testing | |
CN103970659B (zh) | 基于插桩技术的安卓应用软件自动化测试方法 | |
US20080263400A1 (en) | Fault insertion system | |
US9063819B2 (en) | Extensible patch management | |
US20060129880A1 (en) | Method and system for injecting faults into a software application | |
CN110147240A (zh) | 基于云存储的应用程序安装方法、系统及存储介质 | |
US8302087B2 (en) | Quality assurance in software systems through autonomic reliability, availability and serviceability code generation | |
CN108255708B (zh) | 测试环境中访问生产文件的方法、装置、存储介质及设备 | |
CN108874437B (zh) | 一种android应用程序的在线云更新方法 | |
US20160259712A1 (en) | System and method for determination of code coverage for software applications in a network environment | |
CN106354638A (zh) | 基于词法分析的自动测试方法及装置 | |
CN109408101A (zh) | 一种用于编程的代码开发维护方法及电子设备 | |
CN105678118B (zh) | 一种含数字证书的软件版本生成方法及装置 | |
CN106445818B (zh) | 一种基于模型驱动的自动化脚本调试方法和装置 | |
US20070067762A1 (en) | Exposing code contentions | |
US20120030649A1 (en) | Methods and Systems for Automatic Generation of Multithread-Safe Software Code | |
Chen et al. | A framework for practical dynamic software updating | |
US10229029B2 (en) | Embedded instruction sets for use in testing and error simulation of computing programs | |
CN105204829B (zh) | 基于中间件插件框架的插件套接字资源控制方法及客户端 | |
Marek et al. | Java bytecode instrumentation made easy: The disl framework for dynamic program analysis | |
Long et al. | Enabling collaborative testing across shared software components |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20151125 |
|
WD01 | Invention patent application deemed withdrawn after publication |