一种系统测试方法及相关装置与流程

文档序号:15557698发布日期:2018-09-29 01:30阅读:125来源:国知局

本申请涉及软件测试领域,尤其涉及一种软件系统测试方法及相关装置。



背景技术:

随着多媒体时代的快速发展,人们对终端设备运行的流畅度要求越来越高。但是随着使用时间的增加,终端设备的性能和可靠性会明显降低,例如手机经常会出现软件系统老化的问题,轻微的如卡顿、操作不灵敏等老化问题,严重还会产生如黑屏、莫名重启等等问题,如此一来严重影响了用户体验。

而终端内软件老化的根本原因是系统内部状态错误的长期积累和系统资源的不断消耗。传统的测试软件老化问题的方法是通过重复调用某项功能操作,以此模拟用户长期使用的情况,激发出软件老化问题,从而能够发现激发老化问题的老化因子,然后研发人员再根据老化因子和得到的终端检测数据进行分析,找出修复软件组件的方法。

当通过重复调用功能操作制造相同的老化状态以便找出老化因子时,从重复调用功能操作到该功能操作引起老化问题之间历经的时间周期太长,并且资源消耗较大,无法及时解决终端出现的老化问题。



技术实现要素:

本申请提供了一种软件系统测试方法、相关装置及终端设备,可消耗极少的资源在短时间内使得终端的软件组件快速达到指定的老化状态。

有鉴于此,本申请实施例第一方面提供了一种软件系统测试的方法,包括:

用户终端向服务器发送第一检测数据或反馈信息使得服务器确定用户终端中处于老化状态的第一软件组件,以使得服务器向用户终端推送软件更新包,该软件更新包中包括修复的软件组件,修复的软件组件为研发人员根据测试终端运行相关的测试实例得到的反馈信息进行修复得到的;其中,所述第一检测数据为所述第一终端对所述第一终端中的软件组件进行检测得到的数据,所述第一检测数据包括所述第一终端内每个软件组件的响应时间以及运行所述每个软件组件时的状态和参数,所述反馈信息用于反馈所述第一终端中处于老化状态的第一软件组件。

所述用户终端接收服务器推送的用于解决老化问题的软件包,其中,所述修复后的第一软件组件根据第二终端执行所述第一软件组件对应的功能或执行基于所述第一软件组件实现的功能得到的信息生成。

本申请实施例中用户终端出现的老化问题通过在测试终端上复现,并在测试终端上运行相应的测试实例得到反馈信息,研发人员根据该反馈信息修复老化的软件组件,并且服务器打包该软件组件使之成为软件包推送给用户终端进行安装。通过上述方式,用户终端进行检测和安装软件更新包都可由用户随时随地自行完成,无需将用户终端送至厂商,节省了运输时间和运输成本,提高了用户体验

本申请实施例第二方面提供了一种软件系统测试的方法,包括:首先,服务器确定第一终端中处于老化状态的第一软件组件,然后研发人员可根据检测数据和第一软件组件的内部原理生成对应的老化工具。针对第一软件组件以及记录的数据和状态等参数,在深入理解软件组件的内部原理和算法的基础上,从工具库中匹配出针对于某一软件组件的老化工具,若没有相匹配的老化工具,研发人员可根据检测数据以及老化软件组件的内部原理等有针对性地实时开发出对应的老化工具。老化工具实质上是根据第一软件组件的内部运行原理以及对终端的检测数据开发出来的应用程序,用于对相应的软件组件进行老化,能够利用极低资源达到快速老化的目的。接着,服务器与第二终端进行交互以实现老化工具在第二终端上的安装,以使得第二终端运行老化工具对第二终端的第一软件组件进行老化并达到上述老化状态,即第二终端中第一软件组件需要达到第一终端中第一软件组件的老化状态,并且第二终端的型号及软件系统的版本与第一终端相同。第二终端在该老化环境下,执行达到所述老化状态的第一软件组件对应的功能或执行基于第一软件组件实现的功能,记录这些功能执行过程中的数据,这些数据可反映激起老化状态的原因以及具体的老化现象,研发人员根据这些特征信息进行分析并生成用于解决上述老化问题的软件包,软件包中可能是研发人员根据特征信息生成的新的第一软件组件,也可能是针对老化的第一软件组件的补丁等等。

本申请实施例中,通过开发或直接确定对应的老化工具,并将老化工具部署到相同型号的第二终端(测试终端)上,使得第二终端造成与第一终端(用户终端)同样的老化问题和老化状态,目的是复现出第一终端的老化情况,然后通过运行第二终端上软件组件的相关功能得到特征信息,该特征信息可帮助研发人员分析老化问题。本申请实施例用老化工具代替传统的重复执行终端操作的方法,无需经过从重复执行操作到出现老化问题的漫长过程,也无需对终端进行成千上万次暴力的功能操作,因此能做到利用极低的资源快速制造老化效果并达到指定的老化状态。

结合本申请实施例第二方面,本申请实施例第二方面的第一种实施方式中,服务器确定第一终端中处于老化状态的第一软件组件,包括:

根据所述第一终端发送的第一检测数据或反馈信息确定第一终端中处于老化状态的所述第一软件组件;其中,所述第一检测数据为所述第一终端对所述第一终端中的软件组件进行检测得到的数据,所述第一检测数据包括所述第一终端内每个软件组件的响应时间以及运行所述每个软件组件时的状态和参数,所述反馈信息用于反馈所述第一终端中处于老化状态的第一软件组件。

当服务器根据第一终端发送的第一检测数据确定老化的第一软件组件时,该第一检测数据只是一个中间数据,该数据包括第一终端内每个软件组件的响应时间以及运行所述每个软件组件时的状态和参数,服务器需要根据这些数据分析出处于老化状态的软件组件。

此外,第一终端在对自身进行检测之后也可自行分析出处于老化状态的软件组件,将反应老化的软件组件的结果即反馈信息直接上报服务器使得服务器知晓。

本申请实施例中不仅服务器具有一定的分析能力,用户终端也具备一定的分析能力,在某些特殊情况下也能直接确定老化的软件组件,这种模式为检测方法提供了多种方案,提高了方案的灵活性和可实施性。

结合本申请实施例第二方面的第一种实施方式,本申请实施例第二方面的第二种实施方式中,还包括:

服务器确定老化的软件组件的方法还可以是通过第一检测数据和第二检测数据的对比,具体地,服务器获取第二检测数据,第二检测数据为第三终端通过系统或检测程序对所述第三终端中的软件组件进行检测得到的数据,所述第二检测数据包括所述第三终端内每个软件组件的响应时间,所述第三终端为与所述第一终端型号、软件系统版本相同的且未进行老化状态的设备,然后根据所述第一检测数据和所述第二检测数据确定处于老化状态的所述第一软件组件。

本申请实施例通过未老化状态下软件组件的响应时间可精确判断出某个软件组件是否已经出现老化,明显降低了误判老化组件的可能性,提高了判断的效率。

结合本申请实施例第二方面的第一种实施方式中,本申请实施例第二方面的第二种实施方式中,服务器确定第一终端中处于老化状态的第一软件组件,包括:

服务器从第一检测数据中获取第一响应时间,并从第二检测数据组中获取第二响应时间,第一响应时间是第一终端执行第二软件组件获得的,第二响应时间是第三终端执行第二软件组件获得的,第一终端和第三终端应执行同一个软件组件并记录下响应时间,然后计算两个响应时间的差值,若该差值大于预设阈值,则确定第二软件组件为处于老化状态的第一软件组件,若差值小于预设阈值,则说明软件组件未被老化,响应时间在正常的变化范围内。

本申请实施例中用未被老化的第三终端作为判断标准可以精确判断出用户终端中已出现老化现象的软件组件,提高了定位老化软件组件的准确性。

结合本申请实施例第二方面至第二方面的第二种实施方式中,本申请实施例第二方面的第三种实施方式中,服务器获取第一检测数据之前,方法还包括:

由于第一检测数据是用户主动或者系统自动执行老化检测服务得到的数据,也有可能是驻留终端的代理监控到老化现象后,自动执行老化检测服务得到的数据,这些数据属于用户隐私部分,虽然在该过程中会经过匿名化处理,但是也必须经过用户的合理授权,因此在服务器获取这些数据之前,会向第一终端发送授权请求,终端的显示屏上提示用户是否进行授权操作,一旦终端接收到用户同意授权的指令,便将第一检测数据中的数据发送至数据存储云中,可供研发人员进行调用分析。授权的方式可以是仅一次授权,此后每次默认为已授权状态,还可以每次都向用户提供是否授权的对话框。

本申请实施例中用户无需将手机送至厂商进行检测,可直接通过系统或驻留终端的代理服务对手机进行老化检测,然后与研发人员进行配合共同解决软件老化问题,节省了用户终端来回运输的时间和成本,大大缩短了手机检测所需的周期,并且丝毫不会影响用户终端的使用,极大地保证了用户体验。在向服务器提供用户终端的信息和数据之前会先征得用户的同意,提高了本方案的安全性。

结合本申请实施例第二方面的第三种实施方式中,本申请实施例第二方面的第五种实施方式中,还包括:

在有用户终端时,可根据用户终端实际出现的老化问题的软件组件具有针对性地开发老化工具,然后将该老化工具安装在测试终端上使得测试终端中对应的软件组件达到用户终端中老化软件组件的老化状态。可以理解的是,本实施例中还可应用于产品测试发布前,首先预测可能会出现老化问题的软件组件,然后根据该软件组件确定老化工具,在测试终端上使用老化工具对上述软件组件进行老化,达到任意指定的老化状态。

本申请实施例还可应用于产品测试发布前,使用老化工具制造任意程度的老化状态。在产品发布前,对终端进行老化测试,可提前发现老化问题,提前拦截一些老化问题,从而提高产品的质量。

本申请实施例第三方面提供了一种软件系统测试的方法,包括:

所述服务器用于确定第一终端中处于老化状态的第一软件组件;

所述服务器所述服务器还用于与所述第二终端交互,以实现与所述第一软件组件对应的老化工具在所述第二终端上的安装;

所述第二终端用于运行所述老化工具对所述第二终端的第一软件组件进行老化并达到所述老化状态,所述第二终端的型号及软件系统版本与所述第一终端相同;

所述服务器还用于向所述第一终端推送用于解决老化问题的软件包,其中,所述软件包根据所述第二终端执行达到所述老化状态的所述第一软件组件对应的功能或执行基于所述第一软件组件实现的功能得到的特征信息生成。

本申请实施例中,服务器和第二终端的交互完整了软件系统检测的流程,用老化工具直接制造老化状态的方法代替传统的暴力执行操作功能的方法,大大缩短了检测周期,并且避免了因大量调用功能使得测试终端的使用时间锐减的问题。

结合本申请实施例第三方面,本申请实施例第三方面的第一种实施方式中:

所述第二终端用于运行所述老化工具对所述第二终端的第一软件组件进行老化并达到所述老化状态时,具体用于运行所述老化工具并根据预定的老化模型以将所述第一软件组件中的数据存储地址改成能够反映第一软件组件老化状态的不连续的存储地址,其中,所述老化模型用于反映各种不连续存储地址与各种老化状态的对应关系。

本申请实施例中老化模型中具有软件组件的各种老化状态和存储地址状态的对应关系,在得知哪种老化状态应对应哪种程度的地址不连续状态之后将数据存入该种状态下的存储地址中达到对应的老化状态。通过上述方式可以指定达到任意的老化状态,提高了方案的灵活性和实用性。

本申请实施例第四方面提供了一种软件系统测试的方法,包括:

首先,第二终端确定需要进行系统测试的软件组件,然后根据预定的老化模型将所述软件组件存储的数据的存储地址改为不连续的存储地址以达到预定的老化状态,所述存储地址是反映软件组件老化状态的数据存储地址,该老化模型用于反映各种不连续存储地址与各种老化状态的对应关系。接着,第二终端执行达到老化状态的软件组件对应的功能或者执行基于所述软件组件实现的功能以得到特征信息。

本申请实施例中通过修改反映软件组件老化状态的数据存储地址,使得该存储地址处于不连续的状态,再将数据定向注入到不连续的存储地址中以制作数据碎片,以此达到对第二终端上的软件组件进行老化的目的。由于存储地址不连续,因此在读取文件时读取速度会急剧下降,从而达到直接制造老化效果的目的。通过上述方式,摒弃了反复调用操作的传统手段,从重复调用操作到老化状态浮现的这段时间就可以被省去,并且无需经过成千上万次的操作,即节省了时间又节省了调用所需的资源。

结合本申请实施例第四方面的第一种实施方式,本申请实施例第四方面的第二种实施方式:

所述软件组件为文件系统,相应地,所述软件组件存储的数据为所述文件系统的数据块,所述软件组件存储的数据的存储地址为所述数据块的存储地址。

本申请实施例通过修改数据块的存储地址使得存储数据的地址呈不连续的状态,再将不同大小的文件碎片间隔地插入文件系统中,直接地制造老化效果,快速地达到想要的老化状态,不用反复对存储器进行擦写删除,可延长存储器和终端的使用寿命。

结合本申请实施例第四方面的第一种实施方式,本申请实施例第四方面的第三种实施方式中:

所述软件组件为数据库,相应地,所述软件组件存储的数据为所述数据库的页面,所述软件组件存储的数据的存储地址为所述页面的存储地址。

本申请实施例中首先根据第一终端的老化状态,构造一个碎片化的sqlite数据库存储状态,然后反推得到数据库每页的存储状态,最后通过sqlite数据库的页面管理模块将每页数据写入,直接制造老化效果,节省了大量时间。

有鉴于此,本申请实施例第五方面提供了一种用于系统测试的装置,包括:

确定模块,用于确定第一终端中处于老化状态的第一软件组件;

交互模块,用于与第二终端进行交互以实现与所述第一软件组件对应的老化工具在所述第二终端上的安装,以使得所述第二终端运行所述老化工具对所述第二终端的第一软件组件进行老化并达到所述老化状态,所述第二终端的型号及软件系统版本与所述第一终端相同;

推送模块,用于向所述第一终端推送用于解决老化问题的软件包,其中,所述软件包根据第二终端执行达到所述老化状态的所述第一软件组件对应的功能或执行基于所述第一软件组件实现的功能得到的特征信息生成。

本申请实施例用老化工具代替传统的重复执行终端操作的方法,因此无需经过从重复执行操作到出现老化问题的漫长过程,也无需对终端进行成千上万次暴力的功能操作,从而能做到利用极低的资源快速制造老化效果并达到指定的老化状态。

结合本申请实施例第五方面,本申请实施例第五方面的第一种实施方式中,所述确定模块包括:

第一确定单元,用于根据所述第一终端发送的第一检测数据或反馈信息确定第一终端中处于老化状态的所述第一软件组件;其中,所述第一检测数据为所述第一终端对所述第一终端中的软件组件进行检测得到的数据,所述第一检测数据包括所述第一终端内每个软件组件的响应时间以及运行所述每个软件组件时的状态和参数,所述反馈信息用于反馈所述第一终端中处于老化状态的第一软件组件。

本申请实施例中不仅服务器具有一定的分析能力,用户终端也具备一定的分析能力,在某些特殊情况下也能直接确定老化的软件组件,这种模式为老化检测方法提供了多种方案,提高了方案的灵活性和可实施性。

结合本申请实施例第五方面的第一种实施方式中,本申请实施例第五方面的第二种实施方式中,所述系统测试装置还包括:

获取模块,用于所述确定模块之前获取第二检测数据,所述第二检测数据为第三终端通过系统或检测程序对所述第三终端中的软件组件进行检测得到的数据,所述第二检测数据包括所述第三终端内每个软件组件的响应时间,所述第三终端为与所述第一终端型号、软件系统版本相同的且未进行老化状态的设备;

确定模块,用于根据所述第一检测数据和所述第二检测数据确定处于老化状态的所述第一软件组件。

本申请实施例通过未老化状态下软件组件的响应时间可精确判断出某个软件组件是否已经出现老化,明显降低了误判老化组件的可能性,提高了判断的效率。

结合本申请实施例第五方面的第二种实施方式中,本申请实施例第一方面的第三种实施方式中,所述确定模块包括:

第一获取单元,用于从所述第一检测数据中获取第一响应时间,所述第一响应时间为所述第一终端执行所述第二软件组件获得;

第二获取单元,用于并从所述第二检测数据组中获取第二响应时间,所述第二响应时间为所述第三终端执行所述第二软件组件获得;

第三获取单元,用于获取第一差值,所述第一差值为所述第一响应时间和所述第二响应时间的时间差值;

第二确定单元,用于当所述第一差值大于预设阈值时,确定所述第二软件组件为处于老化状态的第一软件组件。

本申请实施例中用未被老化的第三终端作为判断标准可以精确判断出用户终端中已出现老化现象的软件组件,提高了定位老化软件组件的准确性。

结合本申请实施例第五方面的第三种实施方式中,本申请实施例第五方面的第四种实施方式中,所述系统测试装置还包括:

发送模块,用于所述确定模块之前向所述第一终端发送授权请求,所述授权请求用于指示数据存储云获取第一检测数据。

本申请实施例中用户无需将手机送至厂商进行检测,可直接通过系统或驻留终端的代理服务对手机进行老化检测,然后与研发人员进行配合共同解决软件老化问题,节省了用户终端来回运输的时间和成本,大大缩短了手机检测所需的周期,并且丝毫不会影响用户终端的使用,极大地保证了用户体验。在向服务器提供用户终端的信息和数据之前会先征得用户的同意,提高了本方案的安全性。

有鉴于此,本申请实施例第六方面提供了一种用于系统测试的装置,包括:

确定模块,用于确定需要进行系统测试的软件组件;

修改模块,用于根据预定的老化模型将所述软件组件存储的数据的存储地址改为不连续的存储地址以达到预定的老化状态,其中,所述老化模型用于反映各种不连续存储地址与各种老化状态的对应关系;

执行模块,用于执行达到所述老化状态的所述软件组件对应的功能或者执行基于所述软件组件实现的功能以得到特征信息。

本申请实施例中通过修改反映软件组件老化状态的数据存储地址,使得该存储地址处于不连续的状态,再将数据定向注入到不连续的存储地址中以制作数据碎片,以此达到对第二终端上的软件组件进行老化的目的。由于存储数据的地址不连续,因此在读取文件时读取速度会急剧下降,从而达到直接制造老化效果的目的。通过上述方式,摒弃了反复调用操作的传统手段,从重复调用操作到老化状态浮现的这段时间就可以被省去,并且无需经过成千上万次的操作,即节省了时间又节省了调用所需的资源。

从以上技术方案可以看出,本申请具有以下优点:

本申请实施例提供了一种系统老化的测试方法,包括:服务器确定第一终端中处于老化状态的第一软件组件;然后,服务器与第二终端进行交互以实现与所述第一软件组件对应的老化工具在所述第二终端上的安装,以使得所述第二终端运行所述老化工具对所述第二终端的第一软件组件进行老化并达到所述老化状态,所述第二终端的型号及软件系统版本与所述第一终端相同;服务器向所述第一终端推送用于解决老化问题的软件包,其中,所述软件包根据第二终端执行达到所述老化状态的所述第一软件组件对应的功能或执行基于所述第一软件组件实现的功能得到的特征信息生成。本申请实施例中通过开发的老化工具,并将老化工具部署到相同型号的终端设备也就是第二终端设备上,造成与用户终端同样的老化问题和老化状态,复现出用户终端的老化情况,然后通过运行第二终端对应软件组件的相关功能得到反馈信息,并将信息反馈至服务器帮助研发人员分析老化问题。开发的老化工具代替了传统的重复执行终端操作的方法,无需经过从重复执行终端操作到出现老化状态的漫长时间,也无需经过成千上万次的功能调用,可利用极低的资源快速制造老化效果达到老化状态。

附图说明

图1为本申请实施例中软件系统的架构示意图;

图2为本申请实施例中软件系统测试方法的流程示意图;

图3为本申请实施例中软件系统测试方法的一个交互示意图;

图4为本申请实施例中软件系统测试方法的一个流程示意图;

图5为本申请实施例中f2fs文件系统老化的示意图;

图6为本申请实施例中sqlite数据库老化的示意图;

图7为本申请实施例中软件系统测试方法的另一交互示意图;

图8为本申请实施例中第一系统测试装置的一个实施例示意图;

图9为本申请实施例中第一系统测试装置的另一实施例示意图;

图10为本申请实施例中第一系统测试装置的另一实施例示意图;

图11为本申请实施例中第一系统测试装置的另一实施例示意图;

图12为本申请实施例中第二系统测试装置的一个实施例示意图;

图13为本申请实施例中服务器的结构示意图。

具体实施方式

本申请提供了一种系统测试方法,本申请实施例中通过开发老化工具,并将老化工具部署到相同型号的终端设备也就是第二终端设备上,复现出第一终端出现的老化问题和老化状态,即造成与用户的终端设备同样的老化问题和同样程度的老化状态,然后通过运行第二终端的相关测试用例准确定位的老化问题。开发的老化工具代替了传统的暴力重复使用终端内操作的老化方法,减少了达到老化状态所需的资源,并且不会对终端设备产生损耗,提高了测试终端的使用寿命。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

在终端设备随处可见的今天,终端的使用体验成为用户购买设备的重要参考指标,但是手机在使用一段时间后,性能和可靠性明显降低,会出现种种由硬件或软件引起的问题,尤其是软件老化问题尤为明显。终端手机搭载的安卓软件系统如图1所示,软件系统的内部组成较为复杂,由几十个组件服务构成,大体可分为应用、应用框架、专业库、安卓运行时间、以及linux核心五个大的架构,它们各个部分又由很多组件、服务组成,软件系统整体的老化效果是各个软件组件老化效果的叠加。

当用户使用的手机出现老化问题时,为了不影响用户的继续使用,一般是在另一台手机上重复调用相关的功能操作使得该手机出现和用户手机同样的老化现象,模拟用户长期使用手机的情况,从而激发出软件老化缺陷,继而才能发现导致老化现象的老化因子,手机厂商的研发人员再根据该老化因子以及对检测数据找出修复方法。这种方法虽然也可以找出老化因子,但耗时太长,资源消耗太大,并且需要对终端的存储器进行反复擦写,导致用来测试的终端在软件老化测试完成后,测试终端的寿命锐减,甚至报废。

实质上对测试手机反复执行出现老化现象的功能操作是为了复现出用户手机的老化状态,从而能发现激发老化现象的原因。

因此也可通过其他方式制造老化状态,只要能达到和用户终端一样的老化状态即可。本申请实施例中软件系统的老化测试方法的流程如图2所示,手机厂商的工作人员可借助服务器,针对出现异常现象的软件组件开发出软件老化工具,利用该老化工具对另一台专门用来测试的终端进行老化并达到和用户终端一样的老化效果。在该老化环境下,测试终端运行与出现异常的软件组件相关的功能操作,然后记录激发老化问题的原因及老化现象,这实质也是在复现用户终端出现的老化问题,然后将这些整理成信息记录在老化漏洞列表中,该列表记录了执行异常功能操作时的情况,具体包括执行过程中产生的各类参数以及出现的现象。该老化漏洞列表能够帮助研发人员修复老化漏洞得到更新后的软件组件,然后推送到用户终端,供用户选择是否进行安装。在整个过程中,用户终端或用来测试的测试终端可通过自带的系统或驻留终端内的代理服务对自身进行检测,检测得到的老化检测数据可以存在数据存储云中,这些数据可以帮助研发人员确定已经产生老化现象的软件组件。

本申请实施例中软件系统老化测试方法的一个实施例如图3所示,该实施例可应用在:当用户终端出现老化问题时对用户终端进行老化测试,包括:

101、当用户进行身份授权的情况下,第一终端通过老化检测服务获取关于第一终端的第一检测数据;

由于服务器需要对来自终端的第一检测数据进行分析,因此为了保证用户信息的安全性,在此之前需得到用户的授权,因此服务器向终端发送授权请求指令,该指令用于表示是否允许服务器或数据存储云使用终端的第一检测数据,并且还会告知用户第一检测数据中可能会包含用户的哪些隐私数据。若用户同意授权,服务器或数据存储云就可利用第一检测数据进行分析验证以及后续工作。在终端向服务器提供检测数据时也会对用户进行匿名化处理。授权方式可能是每次执行都需要用户授权,也可能只需用户第一次进行授权,此后默认都处于授权状态。

用户在使用终端碰到软件老化问题时,可以主动通过终端的系统执行老化检测服务,除此之外,驻留终端的代理服务在监控到老化现象后,即发现老化指标超过一定阈值时也会自动执行老化检测服务,具体地,例如当某个应用程序的响应时间远远大于正常的标准响应时间时可触发对终端的检测。

进行检测的一个重要的目的是确定出现老化问题的软件组件:第一终端可通过检测服务获取到每个软件组件运行时的各类参数,其中包括运行软件组件的响应时间;本申请实施例中可利用动态二进制插桩技术获取运行软件组件时的响应时间,形象地说,是在某个软件组件运行的开始时刻、该软件组件的响应时刻各看成一个点,记录下这两个点之间经历的时间即响应时间。

当某些功能使用时出现的老化问题不太明显,可通过上述实施方式及早拦截老化问题,并记录老化现象,从而分析判断老化因子。

具体的,本申请实施例中可以先利用用户终端执行某个功能操作获取到一个响应时间,然后再用未出现老化状态的终端执行相应的功能操作得到标准响应时间,通过对比这两个时间,就可以判断该功能操作对应的软件组件是否出现老化问题。

进行检测的第二作用是可同时记录下执行每个软件组件时的情况,具体包括记录老化现象和激发老化问题的原因,老化现象又可包括执行时产生的参数和软件组件的状态。

102、第一终端发送第一检测数据或反馈信息到服务器;

当第一终端向服务器发送第一检测数据以使得服务器确定老化的第一软件组件时,该第一检测数据只是一个中间数据,该数据包括第一终端内每个软件组件的响应时间以及运行所述每个软件组件时的状态和参数,服务器需要根据这些数据分析出处于老化状态的软件组件。

此外,第一终端在对自身进行检测之后也可自行分析出处于老化状态的软件组件,将反应老化的软件组件的结果即反馈信息直接上报服务器使得服务器知晓。

103、服务器确定处于老化状态的第一软件组件;

具体地,服务器根据第一检测数据和第二检测数据确定处于老化状态的第一软件组件的具体过程如图4如下:

1031、第三终端获取运行每个软件组件的响应时间,第三终端的型号与软件系统版本与第一终端相同的且第三终端为未出现老化状态的设备。

1032、服务器将第一检测数据中每个软件组件的响应时间与第三终端获取的对应软件组件的响应时间相减得到差值;

1033、若差值大于预设阈值,则确定对应的软件组件为处于老化状态的第一软件组件;

1034、若差值小于等于预设阈值,则确定对应的软件组件未达到老化状态;

判断是否出现老化问题的老化指标中有一项典型的参数就是运行该软件组件时所需的响应时间,若响应时间远远大于正常的终端软件响应时间,则说明该软件组件是异常的,有可能已经出现老化问题。

第一检测数据包括了第一终端执行每个软件组件的响应时间。对第三终端进行检测可得到第二检测数据,同样的,第二检测数据包括了第三终端执行每个软件组件的响应时间,第三终端为未出现老化现象的终端设备。服务器在通过数据存储云分别获取了第一终端和第三终端执行相同的软件组件所需的响应时间后能分析出处于老化状态的软件组件。除此之外第一检测数据还可以包括其他能够反映老化问题的参数,例如占用的系统资源等。

104、服务器将研发人员匹配或开发的老化工具部署在第二终端上,执行软件系统的老化操作;

研发人员可根据检测数据组和第一软件组件的内部原理生成对应的老化工具。针对第一软件组件以及记录的数据和状态等参数,在深入理解软件组件的内部原理和算法的基础上,从工具库中匹配出针对于某一软件组件的老化工具,若没有相匹配的老化工具,研发人员可根据检测数据以及老化软件组件的内部原理等有针对性地实时开发出对应的老化工具。老化工具实质上是根据第一软件组件的内部运行原理以及对终端的检测数据开发出来的应用程序,用于对相应的软件组件进行老化,能够利用极低资源达到快速老化的目的。

具体地,假设服务器首先通过分析第一检测数据发现在运行联系人这个应用时响应时间过长,并通过分析其他参数,得知导致终端软件联系人卡顿的主要原因是f2fs文件系统和sqlite数据库老化,据此,厂商的研发人员可利用服务器针对f2fs文件系统和sqlite数据库开发老化工具,老化工具用于快速老化软件组件。

开发出来的老化工具用于部署在第二终端上,第二终端的型号与系统版本需与第一终端保持一致,这样第二终端被老化后才能达到模拟复现第一终端老化状态的目的。

具体地,文件系统利用老化工具进行老化的方式如图5所示,图5为文件系统碎片化的传统方式和快速方式,白色代表原始的文件系统,黑色表示导致老化的插入的文件碎片,传统制造碎片化的方式是通过不断对文件系统中的文件进行写入,然后再间隔性地擦除,以此达到老化的目的,而使用老化工具制造老化效果是通过直接操作文件系统中的元数据,然后修改索引节点的数据块的存储地址,使得修改后的存储地址呈间断不连续的状态,然后将不同尺寸的小文件分别存储到不连续的存储地址中达到快速制造文件碎片的目的。在此之前,先要确定文件系统需要达到怎样的老化状态,然后根据该状态反推插入文件碎片的情况。在使用建模进行评估时,可通过扫描文件系统,统计获得系统中4k、8k、16k和32k等不同尺寸文件的碎片数量,通过碎片数量的多少可确定老化程度。

若需要对sqlite数据库进行老化,也是通过直接制造与第一终端一样的老化状态。如图6所示,图6为sqlite数据库的老化方法。数据库是以b-tree的形式存储的磁盘文件,b-tree是数据库中存取和查找文件的一种数据结构,b-tree算法可减少定位时所经历的中间过程,加快存取速度。数据库的索引和表的根页面都存储在sqlite_master表中,可以像查询其它表一样查询这个特殊的表,通过sqlite_master表和每页上存储的链接关系便可存取任意页面上的数据,每个页面的根部都存有整个页面的存储情况信息,因此从根页面上遍历所有页面便可知道整个数据库的老化状态。

首先我们可以查询到第一终端上的数据库的老化状态,然后确定第二终端的数据库需要达到的老化状态,根据该状态反推出每一页面的状态,再通过修改数据库对应的内部代码变量来修改每一页面上的存储地址,使得存储数据的存储地址呈不连续的状态,如此一来在读取数据时读取速度变得异常缓慢,呈现出卡顿、响应时间过长、闪退等老化现象。

软件组件的老化状态和存储地址不连续状态之间具有对应关系,可通过提前输入大量的老化状态和存储地址状态的关系建立模型。

当期望达到某个老化状态时,通过老化模型便可得知对应的存储地址应该呈现怎样的状态,然后将数据存入该种状态下的存储地址以达到对应的老化状态,通过上述方式可以达到任意指定的老化状态,提高了方案的灵活性和实用性。

本申请实施例中所指的存储地址为实际存在的物理地址,表示存在于硬盘上的实际位置,该地址的连续性会影响存储于该地址上数据的读取速度,从而体现出老化状态。

总而言之,对于文件系统和数据库的老化都是根据组件的内部运行原理、算法制造出具有针对性的老化工具,利用老化工具直接制造老化效果,而不是重复地执行功能操作模拟达到使用一定年限的终端的老化状态。

可以理解的是,本申请实施例中,第二终端需要达到的老化状态可根据用户终端决定,此种情况下实质是在第二终端上模拟复现出用户终端(第一终端)的老化状态,因为制造出一致的老化状态才能准确找出导致用户终端出现老化问题的因素。但若是在产品研发阶段即没有用户终端做标准时,还可以根据需求任意指定老化状态,例如指定第二终端应达到终端使用三年时的老化状态。

本申请实施中,第三终端和第二终端可以为同一个终端设备,也可以不同的设备,当为同一个终端设备时,获取未老化的软件组件的响应时间应在部署老化工具之前未进行老化之前。

105、第二终端执行达到所述老化状态的所述第一软件组件对应的功能或执行基于所述第一软件组件实现的功能得到特征信息;

在老化工具对相关的软件组件进行老化后,基于快速老化后的终端软件环境,第二终端运行基于第一软件组件上可实现的功能,具体地,例如当联系人应用这个软件组件被认为是处于老化状态的第一软件组件时,根据第一检测数据的特点和历史问题清单分析出可能是文件系统或数据库出现老化,因此第二终端可以通过执行文件系统、数据库或与两者相关联的其他功能,来进一步具体复现第一终端出现的老化问题,然后将执行这些功能形成的特征信息发送给研发人员,从而帮助厂商的研发人员找出具体的老化因子。

基于第一软件组件的可实现功能可以被认为是用来测试第二终端的相关测试集,相关测试集与用户碰到的异常老化现象有关,针对不同的老化现象具有不同的相关测试集,并且这些相关测试集会存储在公司的测试系统中,可通过终端的自动化测试框架,自动分配到用来测试的第二终端上执行,以快速地复现与定位老化问题。

106、所述服务器向所述第一终端推送用于解决老化问题的软件包,其中,所述软件包根据第二终端执行达到所述老化状态的所述第一软件组件对应的功能或执行基于所述第一软件组件实现的功能得到的特征信息生成。

将老化问题的激发方法和现象通过信息的形式反馈给设计和开发人员,研发人员通过分析相关特征信息可生成用于解决上述老化问题的软件包,软件包中可能是研发人员根据特征信息生成的新的第一软件组件,也可能是针对老化的第一软件组件的补丁等等。

在完成各项测试后,修正后的软件组件等模块将被打包成软件更新包,通过驻留终端的代理服务推送给用户终端,并且同时还会发送安装请求,供用户选择是否安装该更新包。

本申请实施例中,针对用户终端出现的老化问题,通过在另一个型号和系统版本都相同的终端上复现出来,并运行该终端出现老化问题的软件组件或运行以该软件组件为中心的其他边缘功能,将运行过程中激发老化问题的原因及现象反馈至服务器,供研发人员分析得出修复措施,通过这种方式既可以通过测试终端复现出用户终端的问题,又不影响用户终端的使用,减小了测试对于用户的影响,极大地提高了用户体验。复现老化问题的方式也是通过老化工具直接制造老化效果,不必重复模拟用户进行操作,大大减小测试周期,并且延长了终端产品的使用寿命。

本申请中实施例中软件系统老化测试方法的另一实施例如图7所示,本申请实施例还可应用于终端软件的研发阶段,在研发阶段可根据预估的软件组件开发老化工具,包括:

201、服务器预估第一软件组件;

本实施例还可应用在终端软件的研发阶段,研发人员可以根据记录的历史问题清单、网上公开数据、科研文献等等定位到在某个使用阶段可能会出现老化问题的软件组件。

202、服务器将根据预估的第一软件组件匹配或开发出的老化工具部署在第二终端上,执行软件系统的老化操作;

研发人员有针对性地匹配或实时开发相应的老化工具。具体地,步骤202中的根据预估的第一软件组件开发对应的老化工具与步骤104服务器根据老化的第一软件组件开发老化工具类似,此处不再赘述。需要说明的是,此时没有用户终端参与,可以根据研发人员指定的任意老化状态确定老化工具应对第二终端老化到何种程度,也可以设定最大值的老化状态进行极限测试。

服务器将老化工具安装部署的第二终端上,并运行该工具自动化地完成对第一软件组件的加速老化,达到一定的老化状态。

203、第二终端执行达到所述老化状态的所述第一软件组件对应的功能或执行基于所述第一软件组件实现的功能得到特征信息;

特征信息用于反映激发上述老化问题的方法及老化现象,研发人员通过分析这些信息可修复老化软件组件。

204、所述服务器生成用于解决老化问题的软件包,其中,所述软件包根据第二终端执行达到所述老化状态的所述第一软件组件对应的功能或执行基于所述第一软件组件实现的功能得到的特征信息生成。

本申请实施例中的步骤202至步骤204与上个实施例中的步骤104至步骤106基本类似,具体此处不再赘述。

本申请实施例中,在研发阶段可根据用户指定的老化状态开发老化工具,在短时间内迅速完成对第二终端软件组件的老化,使得第二终端软件组件达到研发人员指定的老化状态。针对研发阶段的软件系统测试方法预估可能产生老化的软件组件,并可任意指定软件组件的老化状态,这样的方式有助于在发布终端产品前找出以后可能会出现的部分老化问题,提前拦截问题,提高产品质量。

下面对本发明中用于系统测试的装置进行详细描述,请参阅图8,本发明实施例中的用于系统测试的装置包括:

确定模块301,用于确定第一终端中处于老化状态的第一软件组件;

交互模块302,用于与第二终端进行交互以实现与所述第一软件组件对应的老化工具在所述第二终端上的安装,以使得所述第二终端运行所述老化工具对所述第二终端的第一软件组件进行老化并达到所述老化状态,所述第二终端的型号及软件系统版本与所述第一终端相同;

推送模块303,用于向所述第一终端推送用于解决老化问题的软件包,其中,所述软件包根据第二终端执行达到所述老化状态的所述第一软件组件对应的功能或执行基于所述第一软件组件实现的功能得到的特征信息生成。

基于上述图8对应的实施例,请参阅图9,所述确定模块301包括:

第一确定单元3011,用于根据所述第一终端发送的第一检测数据或反馈信息确定第一终端中处于老化状态的所述第一软件组件;其中,所述第一检测数据为所述第一终端对所述第一终端中的软件组件进行检测得到的数据,所述第一检测数据包括所述第一终端内每个软件组件的响应时间以及运行所述每个软件组件时的状态和参数,所述反馈信息用于反馈所述第一终端中处于老化状态的第一软件组件。

基于上述图8对应的实施例,请参阅图10,所述确定模块301还包括:

第一获取单元3012,用于获取第二检测数据,所述第二检测数据为第三终端通过系统或检测程序对所述第三终端中的软件组件进行检测得到的数据,所述第二检测数据包括所述第三终端内每个软件组件的响应时间,所述第三终端为与所述第一终端型号、软件系统版本相同的且未进行老化状态的设备;

第二获取单元3013,用于获取第一检测数据;

确定单元3014,用于根据所述第一检测数据和所述第二检测数据确定处于老化状态的所述第一软件组件。

所述确定单元包括:

第一获取单元,用于从所述第一检测数据中获取第一响应时间,所述第一响应时间为所述第一终端执行所述第二软件组件获得;

第二获取单元,用于并从所述第二检测数据组中获取第二响应时间,所述第二响应时间为所述第三终端执行所述第二软件组件获得;

第三获取单元,用于获取第一差值,所述第一差值为所述第一响应时间和所述第二响应时间的时间差值;

第二确定单元,用于当所述第一差值大于预设阈值时,确定所述第二软件组件为处于老化状态的第一软件组件。

基于上述图8对应的实施例,请参阅图11,所述系统测试装置还包括:

发送模块,用于所述确定模块之前向所述第一终端发送授权请求,所述授权请求用于指示数据存储云获取第一检测数据。

下面对本发明中的另一用于系统测试的装置进行详细描述,请参阅图12,本发明实施例中用于系统测试的装置包括:

确定模块401,用于确定需要进行系统测试的软件组件;

修改模块402,用于将所述软件组件存储的数据的存储地址改为不连续的存储地址以达到预定的老化状态;

执行模块403,用于执行达到所述老化状态的所述软件组件对应的功能或者执行基于所述软件组件实现的功能以得到反馈信息。

图13为本申请实施例中服务器的硬件结构示意图。图13所示的服务器1100可以执行上述实施例的方法中服务器执行的相应步骤。

如图13所示,所述服务器1100包括处理器1101、存储器1102、接口1103和总线1104。其中接口1103可以通过无线或有线的方式实现,具体来讲可以是网卡。上述处理器1101、存储器1102和接口1103通过总线1104连接。

所述接口1103具体可以包括发送器和接收器,用于服务器与上述实施例中的终端设备之间收发信息。

所述处理器1101用于执行上述实施例中由服务器进行的处理。例如,所述处理器1101用于经由所述第一链路发送数据流的第一总速率是否大于第一链路的带宽;用于确定第一终端中处于老化状态的第一软件组件;用于与第二终端进行交互以实现与所述第一软件组件对应的老化工具在所述第二终端上的安装,以使得所述第二终端运行所述老化工具对所述第二终端的第一软件组件进行老化并达到所述老化状态,所述第二终端的型号及软件系统版本与所述第一终端相同;用于向所述第一终端推送用于解决老化问题的软件包,其中,所述软件包根据第二终端执行达到所述老化状态的所述第一软件组件对应的功能或执行基于所述第一软件组件实现的功能得到的特征信息生成。和/或用于本文所描述的技术的其他过程。

存储器1102包括操作系统11021和应用程序11022,用于存储程序、代码或指令,当处理器或硬件设备执行这些程序、代码或指令时可以完成方法实施例中涉及服务器的处理过程。可选的,所述存储器1102可以包括只读存储器(英文:read-onlymemory,缩写:rom)和随机存取存储器(英文:randomaccessmemory,缩写:ram)。其中,所述rom包括基本输入/输出系统(英文:basicinput/outputsystem,缩写:bios)或嵌入式系统;所述ram包括应用程序和操作系统。当需要运行服务器1100时,通过固化在rom中的bios或者嵌入式系统中的bootloader引导系统进行启动,引导服务器1100进入正常运行状态。在服务器1100进入正常运行状态后,运行在ram中的应用程序和操作系统,从而,完成方法实施例中涉及第一网络设备的处理过程。

可以理解的是,图13仅仅示出了服务器1100的简化设计。在实际应用中,服务器可以包含任意数量的接口,处理器或者存储器。

另外,本申请实施例提供了一种计算机存储介质,用于储存为上述服务器所用的计算机软件指令,其包含用于执行上述方法实施例所设计的程序。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。

所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriberline,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1