一种程序测试方法及装置与流程

文档序号:14860421发布日期:2018-07-04 06:56阅读:189来源:国知局
一种程序测试方法及装置与流程

本发明实施例涉及移动通信测试技术领域,尤其涉及一种程序测试方法及装置。



背景技术:

目前,软件测试的方式主要是软件压力测试,即通过确定一个系统的瓶颈或者不能接受的性能点来获得系统能提供的最大服务级别。无线移动通信测试中的压力测试通常采用增加迭代次数和运行时间两种方式。

现有技术中,在对无线移动通信的系统进行测试时,基于系统的应用环境和实现的业务完成测试,且按照预先设定的流程进行测试,使得测试覆盖场景范围窄。



技术实现要素:

本发明提供一种程序测试方法及装置,以实现对无线移动通信系统的测试,提高测试的准确性及覆盖场景范围。

第一方面,本发明实施例提供了一种程序测试方法,该程序测试方法包括:

s1.获取终端当前所处的终端状态,将所述终端状态作为目标状态;

s2.根据所述目标状态从待测试程序中确定目标程序集合,所述目标程序集合包括至少一个匹配程序,所述匹配程序对应的执行前状态与所述目标状态相同;

s3.从所述至少一个匹配程序中确定并执行目标程序;

s4.当所述目标程序执行完毕时,判断是否结束测试;

s5.如果测试未结束,则获取所述目标程序对应的执行后状态,并将所述执行后状态作为所述目标状态,返回执行步骤s2,直至判定结束测试。

进一步地,所述判断是否结束测试,包括:

获取所述待测试程序的测试覆盖率;

如果所述测试覆盖率大于预设覆盖率阈值,则判定结束测试。

进一步地,所述获取所述待测试程序的测试覆盖率,包括:

记录已测试的目标程序数量和所述待测试程序总量;

根据所述目标程序数量和所述待测试程序总量,确定测试覆盖率。

进一步地,所述判断是否结束测试,包括:

如果测试总时长达到预设测试时长阈值,则判定结束测试;或者,

获取目标程序的测试总次数,如果所述测试总次数达到预设测试次数阈值,则判定结束测试。

进一步地,在s1获取终端当前所处的终端状态之前,还包括:

获取每个待测试程序对应的执行前状态和执行后状态。

进一步地,在所述终端中配置待测试程序的环境参数。

第二方面,本发明实施例还提供了一种程序测试装置,该程序测试装置包括:

目标状态获取模块,用于获取终端当前所处的终端状态,将所述终端状态作为目标状态;

目标程序集合确定模块,用于根据所述目标状态从待测试程序中确定目标程序集合,所述目标程序集合包括至少一个匹配程序,所述匹配程序对应的执行前状态与所述目标状态相同;

目标程序确定模块,用于从所述至少一个匹配程序中确定并执行目标程序;

结束测试判断模块,用于当所述目标程序执行完毕时,判断是否结束测试;

执行后状态获取模块,用于如果测试未结束,则获取所述目标程序对应的执行后状态,并将所述执行后状态作为所述目标状态。

进一步地,所述结束测试判断模块,包括:

测试覆盖率获取子模块,用于获取所述待测试程序的测试覆盖率;

结束测试子模块,用于如果所述测试覆盖率大于预设覆盖率阈值,则判定结束测试。

进一步地,所述测试覆盖率获取子模块,用于:

记录已测试的目标程序数量和所述待测试程序总量;

根据所述目标程序数量和所述待测试程序总量,确定测试覆盖率。

进一步地,所述结束测试判断模块,用于:

如果测试总时长达到预设测试时长阈值,则判定结束测试;或者,

获取目标程序的测试总次数,如果所述测试总次数达到预设测试次数阈值,则判定结束测试。

本发明实施例,通过获取终端当前所处的终端状态,将终端状态作为目标状态,然后根据目标状态从待测试程序中确定目标程序集合,目标程序集合包括至少一个匹配程序,匹配程序对应的执行前状态与所述目标状态相同,然后从至少一个匹配程序中确定并执行目标程序,当目标程序执行完毕时,判断是否结束测试,如果测试未结束,则获取目标程序对应的执行后状态,并将执行后状态作为所述目标状态,直至判定结束测试。现有技术中,在对无线移动通信的系统进行测试时,基于系统的应用环境和实现的业务完成测试,且按照预先设定的流程进行测试,使得测试覆盖场景范围窄。本申请中,各个程序间通过状态进行随机衔接,使程序在状态逻辑上遍历,不是传统的预先设定场景或业务,提高测试的准确性及覆盖场景范围。

附图说明

图1是本发明实施例一中的一种程序测试方法的流程图;

图2是本发明实施例二中的一种程序测试方法的流程图;

图3是本发明实施例三中的一种程序测试方法的流程图;

图4是本发明实施例三中的一种程序测试方法的流程图;

图5是本发明实施例四中的一种程序测试方法的流程图;

图6是本发明实施例五中的一种程序测试装置的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1为本发明实施例一提供的一种程序测试方法的流程图,本实施例可适用于在虚拟的网络环境下对移动通信网络子系统进行测试的场景,该方法可以由终端来执行,该终端可以是台式机或笔记本电脑等。如图1所示,该程序测试方法具体包括如下步骤:

步骤1,获取终端当前所处的终端状态,将终端状态作为目标状态。

其中,终端状态可以是由终端的驻留状态、协议状态和网络环境等组成的状态集合。驻留状态可以包括正常状态、紧急状态等;协议状态可以包括专用信道(dedicatedchannel,dch)态、前向接入信道(forwardaccesschannel,fach)态、寻呼信道(pagingchannel,pch)态和随机接入信道(randomaccesschannel,rach)态等。示例性的,状态集合可以是驻留gsmcell1、idle态、cs注册成功、ps注册成功和pdp未激活这些状态元素组成的一个集合,或者是驻留tdcell1、idle、cs注册成功、ps注册成功和pdp激活这些状态元素组成的另一集合。

在本应用场景下,当测试开始后,测试脚本通过模拟移动通信网络环境发送at命令控制移动通信协议栈开机,使终端进入到某一状态,并把终端此时所处的状态作为目标状态。

步骤2,根据目标状态从待测试程序中确定目标程序集合,目标程序集合包括至少一个匹配程序,匹配程序对应的执行前状态与目标状态相同。

其中,待测试程序可以是待测脚本中包含的所有测试用例或者被测流程,其数量至少为1个,待测试程序可以具有两个属性:执行前状态和执行后状态。目标程序集合可以是由执行前状态与目标状态相同的待测试程序组成的,目标程序集合的元素个数可以1个或多个。

在本应用场景下,根据目标状态从待测试程序中确定目标程序集合的方法可以是,在所有待测试程序中查找执行前状态与目标状态相同的匹配程序,并把查找到的匹配程序组成目标程序集合。

步骤3,从至少一个匹配程序中确定并执行目标程序。

在本应用场景下,当目标程序集合中只包括一个匹配程序时,则将该匹配程序确定为目标程序,并执行该目标程序;当目标程序集合中包括多个匹配程序时,在这多个匹配程序中随机选取一个确定为目标程序,并执行该目标程序。

步骤4,当目标程序执行完毕时,判断是否结束测试。

在本应用场景下,判断是否结束测试的方法可以是,根据待测试程序的测试覆盖率判断是否结束测试,如果测试覆盖率大于预设覆盖率阈值,则判定结束测试;根据测试总时长判断是否结束测试,如果测试总时长达到预设时长阈值,则判定结束测试;或者根据目标程序的测试总次数判断是否结束测试,如果测试总次数达到预设测试次数阈值,则判定结束测试。可选的,判断是否结束测试的方法还可以是,在执行目标程序时出现异常时结束测试,出现异常的情况可以是目标程序在执行时陷入死循环或者目标程序中出现漏洞导致目标程序无法执行下去。

步骤5,如果测试未结束,则获取所述目标程序对应的执行后状态,并将所述执行后状态作为所述目标状态,返回执行步骤2,直至判定结束测试。

在本应用场景下,当目标函数被成功执行,且未满足结束测试的条件,则将目标程序的执行后状态作为新的目标状态,利用新的目标状态继续查找目标程序集合,如此循环进行测试,直到判定结束测试。

优选的,在步骤1之前,包括:获取每个待测试程序对应的执行前状态和执行后状态。

在本应用场景下,每个待测试程序都有执行前状态和执行后状态两个属性,获取每个待测试程序对应的执行前状态和执行后状态,有利于根据目标状态确定目标程序集合,可提高测试效率。

本实施例提供的技术方案,通过获取终端当前所处的终端状态,将终端状态作为目标状态,然后根据目标状态从待测试程序中确定目标程序集合,目标程序集合包括至少一个匹配程序,匹配程序对应的执行前状态与所述目标状态相同,然后从至少一个匹配程序中确定并执行目标程序,当目标程序执行完毕时,判断是否结束测试,如果测试未结束,则获取目标程序对应的执行后状态,并将执行后状态作为所述目标状态,直至判定结束测试。现有技术中,在对无线移动通信的系统进行测试时,基于系统的应用环境和实现的业务完成测试,且按照预先设定的流程进行测试,使得测试覆盖场景范围窄。本申请中,各个程序间通过状态进行随机衔接,使程序在状态逻辑上遍历,不是传统的预先设定场景或业务,提高测试的准确性及覆盖场景范围。

实施例二

图2为本发明实施例二提供的一种程序测试方法的流程图,以上述实施例为基础,如图2所示,步骤4包括:

步骤401,获取所述待测试程序的测试覆盖率。

优选的,步骤401包括:记录已测试的目标程序数量和所述待测试程序总量,根据目标程序数量和所述待测试程序总量,确定测试覆盖率。

其中,测试覆盖率可以是已经执行过的目标程序数量占所有待测试程序总数量的比例,示例性的,假设待测试程序的总数量为90,已经被执行过的目标程序数量为50,则测试覆盖率为50除以90得到55.5%。

步骤402,如果测试覆盖率大于预设覆盖率阈值,则测试结束。

其中,预设覆盖率阈值可以根据实际的测试精度确定,例如可以是80%-100%之间的任意百分数。示例性的,假设预设覆盖率阈值设置为90%,终端在执行完一个目标程序后,计算从测试开始到执行完该目标程序这一过程中的测试覆盖率,若覆盖率为90.2%,则结束测试,若覆盖率为80%,则继续测试。

本实施例提供的技术方案,获取待测试程序的测试覆盖率,如果测试覆盖率大于预设覆盖率阈值,则判定测试结束。将测试覆盖率作为结束测试条件,可使测试满足精度的基础上,节省资源。

实施例三

图3为本发明实施例三提供的一种程序测试方法的流程图,以上述实施例为基础,如图3所示,步骤4包括:

步骤403,测试总时长。

步骤404,如果测试总时长达到预设测试时长阈值,则判定结束测试。

其中,测试总时长可以是从测试开始到最近执行完一个目标程序所用的总的时间,预设测试时长阈值可以根据测试经验值确定,可以是任意的时间长度,例如3小时、5小时等等。

图4为本发明实施例三提供的一种程序测试方法的流程图,如图4所示,步骤4还包括:

步骤405,获取目标程序的测试总次数。

步骤406如果测试总次数达到预设测试次数阈值,则判定结束测试。

其中,测试总次数可以是执行的所有目标程序的次数,示例性的,从测试开始到当前时间,测试过程执行了程序a为3次、程序b为2次、程序c为5次、程序d为1次、程序h为4次,则目标程序的测试总次数为15。预设测试次数阈值可以根据实际测试规模来确定,例如可以设置为1万次。

本实施例提供的技术方案,如果测试总时长达到预设测试时长阈值,则判定结束测试,或者获取目标程序的测试总次数,如果测试总次数达到预设测试次数阈值,则判定结束测试。将测试总时长作为结束测试的条件,可使测试满足精度的基础上,节省时间,将测试总次数作为结束测试的条件,即可满足测试需要的规模,由可提高测试精度。

优选的,在终端中配置待测试程序的环境参数,可应用于实施例一、二和三提供的程序测试方法。

在本应用场景下,当需要模拟网络侧的环境时,将终端自身的环境参数配成与网络侧相同的环境变量,再自适应的选择测试场景。示例性的,若需测试网络节点中路由器的通信场景,将终端的环境参数配置成与路由器相同的环境参数后进行测试,可实现对路由器的环境测试,而不需要一个真正的路由器来完测试。

本实施例的技术方案,可在模拟网络侧的环境下自适应选择测试场景,流程随机,实现了测试深度的复杂性和测试广度的多样性。

实施例四

图5为本发明实施例四提供的一种程序测试方法的流程图,以上述实施例为基础,如图5所示,该程序测试方法包括:

步骤410,获取终端当前所处的终端状态,将终端状态作为目标状态。

步骤420,根据目标状态从待测试程序中确定目标程序集合,目标程序集合包括至少一个匹配程序,匹配程序对应的执行前状态与目标状态相同。

步骤430,从至少一个匹配程序中确定并执行目标程序。

步骤440,判断是否正常完成测试。

步骤450,若正常完成测试,则判断测试覆盖率是否大于预设覆盖率阈值。

步骤460,若测试覆盖率小于等于预设覆盖率阈值,则判断测试总时长是否达到预设测试时长阈值。

步骤470,若测试总时长未达到预设测试时长阈值,则判断测试总次数是否达到预设测试次数阈值。

步骤480,当测试出现异常或测试覆盖率大于预设覆盖率阈值或测试总时长达到预设测试时长阈值或测试总次数达到预设测试次数阈值,结束测试。

实施例五

图6为本发明实施例五提供的一种程序测试装置的结构示意图,如图6所示,该程序测试装置包括:目标状态获取模块510,目标程序集合确定模块520,目标程序确定模块530,结束测试判断模块540,执行后状态获取模块550,测试覆盖率获取子模块541和结束测试子模块542。

目标状态获取模块510,用于获取终端当前所处的终端状态,将终端状态作为目标状态;

目标程序集合确定模块520,用于根据目标状态从待测试程序中确定目标程序集合,目标程序集合包括至少一个匹配程序,匹配程序对应的执行前状态与目标状态相同;

目标程序确定模块530,用于从至少一个匹配程序中确定并执行目标程序;

结束测试判断模块540,用于当目标程序执行完毕时,判断是否结束测试;

执行后状态获取模块550,用于如果测试未结束,则获取目标程序对应的执行后状态,并将执行后状态作为目标状态。

优选的,结束测试判断模块540,包括:

测试覆盖率获取子模块541,用于获取待测试程序的测试覆盖率;

结束测试子模块542,用于如果测试覆盖率大于预设覆盖率阈值,则判定结束测试。

优选的,测试覆盖率获取子模块541,用于:

记录已测试的目标程序数量和待测试程序总量;

根据目标程序数量和待测试程序总量,确定测试覆盖率。

优选的,结束测试判断模块540,用于:

如果测试总时长达到预设测试时长阈值,则判定结束测试;或者,

获取目标程序的测试总次数,如果测试总次数达到预设测试次数阈值,则判定结束测试。

上述装置可执行本发明前述所有实施例所提供的方法,具备执行上述方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明前述所有实施例所提供的方法。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

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