[发明专利]一种自动化测试方法有效
申请号: | 201910255942.7 | 申请日: | 2019-04-01 |
公开(公告)号: | CN109977020B | 公开(公告)日: | 2022-02-22 |
发明(设计)人: | 李大鹏;王冠男;邹建伟;祁鲁鲁;尹孟磊 | 申请(专利权)人: | 山东威尔数据股份有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 烟台双联专利事务所(普通合伙) 37225 | 代理人: | 申国栋 |
地址: | 264003 *** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 自动化 测试 方法 | ||
1.一种自动化测试方法,其特征在于:编写测试脚本和JAVA模板文件;所述测试脚本通过调用JAVA模板文件中的API方法进行测试;所述测试脚本中还定义有用于测试的全局变量;
编写测试脚本时,使用预设的关键字标示变量、所要执行的代码块以及代码块中所调用的API方法;
测试脚本通过脚本解释器执行,所述脚本解释器基于JAVA开发,执行步骤为:
(1)解释所述测试脚本:通过检测关键字识别出脚本中的变量、代码块和代码块中调用的API方法;并且,建立变量栈和类栈;
(2)在内存池中为脚本中的变量分配内存并赋值,获取变量的内存地址压入到变量栈中;并且,将脚本中的代码块作为类分配内存,获取代码块的内存地址压入到类栈中,类栈中每个代码块还分别对应一个链表,链表中的元素与该链表所对应的代码块中的API方法一一对应,链表的顺序与代码块中API方法的执行顺序一致;所述链表的元素中存放了执行所对应的API方法时所需要的信息,该信息包括调用API方法时需要访问的变量的内存地址;
(3)类栈中的各代码块依次出栈,各代码块出栈时根据所述链表依次通过JAVA反射机制调用JAVA模板文件中调用的API方法,并在执行API方法时通过对应的链表元素中的变量内存地址访问变量。
2.如权利要求1所述的自动化测试方法,其特征在于:所述JAVA模板文件包括本地模板文件和用户自定义模板文件;所述本地模板文件被包含在脚本解释器项目内部;
如果测试脚本需要调用用户自定义模板文件中的API方法,则:通过JAVAC编译器对用户自定义模板文件中的API方法进行编译,获取编译后的CLASS字节码,再将CLASS字节码中类索引对应的常量池位置中的类完全限定名修改为虚构的脚本解释器内部文件路径,以使JVM加载器将用户自定义的API方法识别为脚本解释器项目内部的API方法从而实现正常加载;将修改后的CLASS字节码压入JVM虚拟机,获取对应的CLASS对象,再将CLASS对象放入全局缓存中;步骤(3)中调用API方法时,通过反射机制扫描本地模板文件和上述全局缓存中的CLASS对象,找到相应的API方法进行动态执行。
3.如权利要求1或2所述的自动化测试方法,其特征在于通过关键字进行识别的步骤为:
对于某一关键字,首先,将该关键字的信息载入内存,所述关键字的信息包括关键字值W和该关键字的长度L,同时定义一个初始值为0的整数T用于记录当前已检测出的、与该关键字的值W相连续符合的字符的长度;
然后,在顺序读取测试脚本时,每读取一个字节的ASCII码,针对该关键字进行如下判断:根据T计算关键字中当前待检测的字符的位置F,然后取出关键字值W中F所指向的待检测字母X,判断当前读取到的ASCII码与字母X的值是否相等:如果不相等则将T重置为0,然后读取下一个字节的ASCII码进行验证;如果相等则将T的二进制值中为0的最低位设置为1,并判断T的二进制中为1的位数与L是否相等,如果相等则判断检测到关键字,如果不相等则继续读取下一个字节的ASCII码进行判断;
检测到关键字后,依据关键字在测试脚本中的位置以及预设的标示格式获取该关键字所标示的信息。
4.如权利要求3所述的自动化测试方法,其特征在于根据T计算关键字中当前待检测的字符的位置F的具体方法为:F=(int)(Math.log(T+1)/Math.log(2))。
5.如权利要求3所述的自动化测试方法,其特征在于所述取出关键字值W中F所指向的待检测字母X的具体方式为:根据F对关键字值W进行移位操作、将待检测字母X移至最低位,然后将移位后的W与0xff做与运算,得到F所指向的待检测字母X。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东威尔数据股份有限公司,未经山东威尔数据股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910255942.7/1.html,转载请声明来源钻瓜专利网。