简化脚本编写并提高脚本可读性的方法

文档序号:7995423阅读:218来源:国知局
专利名称:简化脚本编写并提高脚本可读性的方法
技术领域
本发明涉及通信领域的基于脚本的测试技术,具体地说,是一种在脚本的编写过程中,简化脚本编写并提高脚本可读性的方法。
二次拨号的具体过程如下例如用户拨打IP卡电话先拨“17909”,这是一次拨号,听见电话里响起“中文请按1键,英文请按2键”,这时用户按“1”,就是二次拨号。如果用户拨“1”后电话里响起“请输入您的密码,按#号确认”,在一般情况下就测试成功了,但在较复杂的测试中,有时会需要测试二次拨号的首位超时、位间超时、总长超时、最大收号长度、最小收号长度等情况。
其中,首位超时是指用户听到提示音“请输入您的密码,按#号确认”结束到按“1”键之间的间隔时间,如交换机端设置的该最大允许首位超时太短,用户来不及按键,就没有达到让用户正常使用的目的;如果太长,又影响线路的效率,所以在交换机端要设置一段时间的区间,首位超时测试就是对该区间的范围是否达到标准进行测试,当然这不是必须进行的,而是可选的。
位间超时是在比如用二次拨号时输入的不是1位,而是若干位时,位和位之间最大允许的空隙的时间,一旦位和位之间超出该空隙时间就挂断,否则影响线路的效率,它是为了防止用户无限制地占用线路的情况。对位间超时进行测试,就是测试位间超时是否符合规定的标准。
总长超时是检测用户输入所有的位后共占用的时间是否超过规定的时间,如超过则挂断,防止用户无限制地占用时间。对总长超时进行测试,就是测试总长超时是否符合规定的标准。
最大收号长度比如听到“请输入您的密码”,规定密码是8位,假设最大收号长度设置为9,一旦用户输入9位密码时立即收号、挂断,最大收号长度的测试就是测试该最大收号长度是否符合规定的标准。
最小收号长度的情况与此类似。这些都不是必须要测试的,都是可选的。然而在现有技术中,即使不测试这些内容,在编写脚本的时候仍然要给出一个特定的值,否则无法测试。
在现有技术中,二次拨号测试的脚本的通常格式如下Redial-encriptionKey redailnumber headx midx tolx minxmaxx varRET其中Redial是拨号命令名称,-encriptionKey和redailnumber是常用参数,head、mid、tol、min、max、var是不常用参数。其中,-encriptionKey表示发送的二次拨号是加密的拨号,并且加密的密钥为Key,如果没有加密,则这项可以省略;redailnumber是二次拨号拨打的电话号码字符串,即准备拨打的二次拨号号码;Head代表首位超时时长(毫秒);mid代表位间超时时长(毫秒);tol代表总长超时时长(毫秒);min代表最小收号长度;max代表最大收号长度;var是指定一个变量用于返回实际的拨号长度。
按照上面的格式,一个具体的脚本可写编写成如下形式Redial l head5000 mid2000 tol10000 min6 max8 varret。
上面的脚本中,二次拨打的内容为1,该拨号没有加密,还要测试的参数有首位超时不能超过5000毫秒,位间超时不能超过2000毫秒,总长超时不能超过10000毫秒,最小收号长度为6位,最大收号长度为8位。
当测试者需要对二次拨号进行测试时,编写上述的测试脚本,测试脚本中只需写出命令的名称和需要测试的参数就可以,但具体如何结合这些参数进行测试,以及如何判断测试的结果是否符合要求,则是通过解释器里的解释程序进行的。也就是说,脚本和解释程序是配套的,一种脚本格式,必须有其对应的解释程序才能执行,但本发明主要着眼于脚本的编写。
从上面的格式可以看出,无论上面所述的首位超时、位间超时、总长超时、最小收号长度、最大收号长度等参数是否需要测试,都要在脚本中写出其参数值来。而实际上,在测试中大多数情况下都不需要进行测试这些参数,而在编写脚本时必须写出来。这样,编写测试脚本时就势必要关注这些在大多数情况下用不上的参数处理上,这会使脚本编写非常繁琐,并且可读性差,缺乏灵活性,难以维护。对于这种情况的另一种处理办法就是,减小脚本命令的封装粒度,即将这种复杂的命令分解成多个简单的命令,分别处理不同的情况,如上面二次拨号(Redial)可分解成二次拨号(Redial)、特殊二次拨号(RedialSpecial)二次拨号的格式是Redial-encriptionKey redailnumber;特殊二次拨号的格式是RedialSpecial-encriptionKey redailnumber headx midxtolx minx maxx varRET上述现有技术中的特殊二次拨号(RedialSpecial)专门用于处理二次拨号的特殊情况。这样做使脚本命令简单了,但其缺点是脚本命令过多,使测试脚本复杂化、不直观,从而大大降低了可重用性和可维护性。
为实现上述目的,本发明的简化脚本编写并提高脚本可读性的方法,包括将脚本命今中的不常用参数分离出来,封装到命令标签中;脚本编写时如需要测试不常用参数,引入命令标签,如不需要测试不常用参数,直接引用脚本命令。
本发明通过引入标签,将脚本命令中不常用的功能参数部分分离出来,封装到命令标签当中去。脚本命令的标签化在不降低命令功能要求的情况下,灵活地对复杂命令实施“裁剪”,在一般情况下减少了命令的参数个数,而在比较复杂的测试中,又可以方便地将标签引进来,降低了脚本的复杂程度,提高了脚本的可读性,提高了测试用例的可重用性与可维护性,同时避免了脚本命令的封装粒度过小,使脚本过于繁琐,难于维护的缺陷。
测试脚本中的脚本命令(如前面所述的Redial命令)是针对具体业务功能的抽象。脚本命令中用到的参数分为常用参数和不常用参数。象前面例子里的二次拨号拨打的电话号码字符串是每次测试中都必须用到的,就属于常用参数,而首位超时、位间超时、总长超时、最大收号长度、最小收号长度则不是每次测试必须要测的内容,就属于不常用参数。本发明将这些不常用参数分离出来,封装到命令标签中,当作命令的可选部分,其具体的过程是建立由标签开始标记、不常用参数列表、标签结束标记组成的命令标签,作为脚本命令的可选部分,将抽象的不常用参数放到不常用参数列表中,作为每次脚本编写时的参考模式,同时在脚本解释器中创建解释该命令标签的每一组成部分的解释程序。脚本编写时如需要测试不常用参数,为脚本命令引入命令标签,如不需要测试不常用参数,直接引用脚本命令。一般测试脚本中对不常用参数不予关注。引入命令标签具体的过程是对于不常用参数列表中的抽象的不常用参数,根据实际情况赋予具体的值,加上标签开始标记和标签结束标记后,作为命今标签引入,而对于脚本命令中的抽象的常用参数,此时也根据实际情况赋予具体的值。当该脚本命令执行时,由解释器对脚本命令的每一组成部分(包括命令标签的每一组成部分)按前面过程中提到的已经建立好的事先创建在解释器中的模式,进行识别和解释、执行。当然解释器这一部分的内容则是属于底层的支持功能,且是本领域技术人员都非常了解且很容易实现的内容,在这里则不进行赘述。
带有标签脚本命令的形式与格式定义一般要从脚本的易用性、可读性等方面来考虑,一般可定义为I、 标签开始标记+不常用参数列表II、 命令名称+常用参数列表III、标签结束标记I、III为命令标签部分,是脚本命令的可选部分,用于实现脚本命令某些特殊情况下的功能,它由标签开始标记、不常用参数列表和标签结束标记组成。编写脚本时标签一般是不需要手工加入的,可通过脚本命令向导(ScriptWizard)自动生成加入。II为脚本命令,它由命令名称和常用参数列表组成,是脚本的主体。
本发明的实施例使用脚本模拟用户操作进行测试,它使用协议测试卡接入信令网,使用TCL作为脚本语言。从用户端切入,摘机、拨号、听语音完全模拟真实的用户打电话的动作,将拨打测试中的用户行为抽象为以下命令拨号(Dial)在话路尚未建立时,用电话/手机拨号。包括呼叫请求发出到通话建立或者被拒绝过程中的所有信令交互过程;收听语音(Listen)用电话/手机接收话路中的语音。包括开始听语音到语音结束并识别语音内容的过程;二次拨号(Redial)话路建立以后,用电话/手机拨号;挂机(Onhook)电话/手机结束通话后挂机,包括发出挂机请求并收到响应;以及其它的一些命令......其中收听语音(Listen)、二次拨号(Redial)等命令就应用了标签方法,下面就以收听语音(Listen)、二次拨号(Redial)命令为例对脚本的标签化方法进行说明。
实施例1二次拨号命令(Redial)话路建立以后,模拟用户端的电话/手机二次拨号,测试交换机端的反应是否正常。
该测试中有时会测试二次拨号的首位超时、位间超时、总长超时、最大收号长度、最小收号长度等,为了简化这些脚本的编写,可为二次拨号命令加上标签,把这些参数放到标签中,标签的作用就是指定这些参数;而如果不需要测试这些特性时,就不需要加上标签。
命令格式是#{{SOFTPHONE_REDIAL(headx midx tolx minx maxx varRET)Redial-encriptionKey redailnumber#}}SOFTPHONE_REDIAL其中Redial是拨号命令名称,-encriptionKey和redailnumber是常用参数,head、mid、tol、min、max、var是不常用参数。
-encriptionKey表示发送的二次拨号是加密的拨号,并且加密的密钥为Key,如果没有加密,则这项可以省略;redailnumber是二次拨号拨打的电话号码字符串,即准备拨打的二次拨号号码;head代表首位超时时长(毫秒);mid代表位间超时时长(毫秒);tol代表总长超时时长(毫秒);min代表最小收号长度;max代表最大收号长度;var是指定一个变量用于返回实际的拨号长度。
在具体编写脚本时,对于不常用参数列表和常用参数列表中的抽象的不常用参数,根据实际情况赋予具体的值,如上述redailnumber此时可赋为1,代表二次拨号拨打的电话号码字符串是1。
这样,在一般情况下只需编写脚本Redial 1。
还以上述拨打IP卡电话“17909”为例,相当于模拟用户端的手机或电话听到“中文请按1键,英文请按2键”后向交换机拨打“1”,而且也不需要加密,如听到“请输入您的密码”则测试出交换机端没有问题,如未听到该内容则检测出交换机端有问题。
在需要测试不常用参数时,编写脚本#{{SOFTPHONE_REDIAL(head5000 mid2000 tol10000 min6 max8varret)Redial 1#}}SOFTPHONE_REDIAL上面的脚本中,二次拨打的内容为1,抽象的不常用参数head、mid、tol、min、max分别被赋为具体的值5000、2000、10000、6、8。表明还节要测试的参数有首位超时不能超过5000毫秒,位间超时不能超过2000毫秒,总长超时不能超过10000毫秒,最小收号长度为6位,最大收号长度为8位。还以上述拨打IP卡电话“17909”为例,相当于模拟用户端的手机或电话听到“中文请按1键,英文请按2键”后向交换机拨打“1”,不但要测试是否听到“请输入您的密码”,还要测试其能够接受的首位超时、位间超时、总长超时、最大收号长度、最小收号长度等是否符合要求。
当测试者需要对二次拨号进行测试时,编写上述的测试脚本,但具体如何结合这些参数进行测试,以及如何判断测试的结果是否符合要求,则是通过解释器里的解释程序进行的。本发明主要着眼于脚本的编写,对解释程序不作讨论,这是由于本实施例的解释程序实际上与现有技术中将常用参数和不常用参数合在一起的情形的解释程序其实没有什么大的区别,都必须含有测试每一个参数的解释和执行程序,本领域技术人员是不难实现的。
实施例2收听语音命令(Listen)模拟用户端的电话/手机接收话路中的语音。包括开始听语音到语音结束并识别语音内容的过程。
测试中一般只测试开始听语音到语音结束并识别语音内容,如果识别出语音的内容与规定的内容一致,则说明交换机端工作良好。但有时也会测试某些语音是否允许被打断,为了简化这类脚本的编写,可为收听语音命令加上标签,在标签部分实现收听语音命令测试某些语音是否允许被打断的功能。当然,如果不需要测试语音是否可中断时,收听语音命令也就不带标签。
命令格式如下#{{SOFTPHONE_LISTEN(interruptpl|p2|p3 varRET)Listen-ttimeout-oresultResultVarName Pairs of voice codeand description#}}SOFTPHONE_LISTENLsten是命令名称,-ttimeout,-oresultResultVarName,Pairs of voice code and description是常用参数;interrupt、var是不常用参数。
interrupt二次拨号点(语音被打断点),后面的参数是用‘|’分隔的二次拨号时间点,即语音开始后几毫秒后拨号。系统最多支持20个二次拨号点。
var指定一个变量用于返回,当前二次拨号点是否在可中断语音内。如果在可中断语音内,此变量返回1;否则返回0。
-ttimeout从收听语音命令开始执行到发现语音头点之间的超时,单位为毫秒,缺省为5000毫秒。如果在该时间内已经检测到语音头点,超时即使到了,仍然要识别完才返回,如果检测不到,则超时返回。
-oresultResultVarName输出识别出来的结果字符串,该串的格式与本命令必选项的语音对字符串格式相同,该项是可缺省的。
Pairs of voice code and description语音编码和内容组成的对的串,根据语音顺序列出的多个语音编码加语音实际字符串描述的字符串对。(如06800002″请您输入帐号或缩位帐号,按#号结束,按0#进入主叫绑定业务。″)在一般情况下编写脚本Listen-t5000 06800002″请您输入帐号或缩位帐号,按#号结束,按0#进入主叫绑定业务。″在执行这个脚本时,模拟用户端的电话/手机向交换机拨号,检测从收听语音命令开始执行5000ms的时间内是否出现语音头点,如果有语音,是否是06800002编码对应的″请您输入帐号或缩位帐号,按#号结束,按0#进入主叫绑定业务。″。如果在规定的时间内语音未出现,或语音的内容与上述不一致,则说明没有通过测试。本例中的参数-oresultResultVarName是缺省的。
如果需要测试可中断音的情况,编写带有标签的脚本#{{SOFTPHONE_LISTEN(interrupt1000|2000 varret)Listen-t5000 06800002″请您输入帐号或缩位帐号,按#号结束,按0#进入主叫绑定业务。″#}}SOFTPHONE_LISTEN在执行这个脚本时,模拟用户端的电话/手机向交换机拨号,除了检测从收听语音命令开始执行5000ms的时间内是否出现语音,如果有语音,是否是06800002编码对应的″请您输入帐号或缩位帐号,按#号结束,按0#进入主叫绑定业务。″以外,还要检测在语音开始后1000毫秒和2000毫秒两个点向交换机拨号时,语音是否允许被打断,如果在1000毫秒和2000毫秒两个点是可中断的,则通过检测。
当测试者需要对收听语音的内容进行测试时,编写上述的测试脚本。但具体如何结合进行测试,以及如何判断测试的结果是否符合要求,即上述脚本的执行过程,则是通过解释器里的解释程序进行的。本发明主要着眼于脚本的编写,对解释程序不作讨论,这是由于本实施例的解释程序实际上与现有技术中将常用参数和不常用参数合在一起的情形的解释程序其实没有什么大的区别,都必须含有测试每一个参数的解释和执行程序,本领域技术人员是不难实现的。
权利要求
1.一种简化脚本编写并提高脚本可读性的方法,其特征在于它包括以下步骤a、将脚本命令中的不常用参数分离出来,封装到命令标签中;b、脚本编写时如需要测试不常用参数,引入命令标签,如不需要测试不常用参数,直接引用脚本命令。
2.根据权利要求1所述的简化脚本编写并提高脚本可读性的方法,其特征在于,步骤a中,所述的将不常用参数封装到命令标签中的具体过程如下建立由标签开始标记、不常用参数列表、标签结束标记组成的作为脚本命令的可选部分的命令标签,然后将这些抽象的不常用参数放到不常用参数列表中,作为每次脚本编写时的参考模式,同时在脚本解释器中创建解释该命令标签的每一组成部分的解释程序。
3.根据权利要求1所述的简化脚本编写并提高脚本可读性的方法,其特征在于,步骤b中,所述的引入命令标签具体的过程是对于不常用参数列表中的抽象的不常用参数,是在根据实际情况赋予具体的值,加上标签开始标记和标签结束标记后,作为命令标签引入的,而对于脚本命令中抽象的常用参数,此时也根据实际情况赋予具体的值。
4.根据权利要求1或3所述的简化脚本编写并提高脚本可读性的方法,其特征在于,步骤b中,引入命今标签通过以下的格式I、标签开始标记+不常用参数;II、命令名称+常用参数;III、标签结束标记,其中,I和III是命令标签部分,这里的常用参数和不常用参数是具体的值。
5.根据权利要求1所述的简化脚本编写并提高脚本可读性的方法,其特征在于步骤b中,直接引用脚本命令的格式为命令名称+常用参数,其中,常用参数是具体的值。
6.根据权利要求1或3所述的简化脚本编写并提高脚本可读性的方法,其特征在于步骤b中,引入命令标签是通过脚本命令向导加入的。
全文摘要
一种简化脚本编写并提高脚本可读性的方法,它是将脚本命令中的不常用参数分离出来,封装到命令标签中;脚本编写时如需要测试不常用参数,引入命令标签,如不需要测试不常用参数,直接引用脚本命令。它降低了脚本的复杂程度,提高了脚本的可读性,提高了可重用性与可维护性,同时避免了脚本命令的封装粒度过小,使脚本过于繁琐,难于维护的缺陷。
文档编号H04M3/22GK1472925SQ02128330
公开日2004年2月4日 申请日期2002年7月30日 优先权日2002年7月30日
发明者戎兵, 冯敬涛, 杨晓慧, 陈家, 戎 兵 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1