一种webUI自动测试用例集的推荐方法与流程

文档序号:37159547发布日期:2024-02-26 17:26阅读:22来源:国知局

本发明涉及软件测试研究领域,具体涉及webui自动测试领域。


背景技术:

1、自动测试中,取得当前任务所需要执行的测试用例有主要两种,一是逐条手动指定,二是在某些测试框架提供的批量选择,这两种方式都存在用例数量超过实际需要覆盖的功能范围,并且在版本测试时间较短,或者本次测试任务需要覆盖功能较多时,就会导致任务未能如期完成的问题。

2、此外,在实际开发中,开发人员常因调试方便而注释代码,但实际转测的版本中忘记取消注释,或者本次修改影响到了本次版本外的其他功能模块,而这些类似情况通常开发人员不能正确评估出来并告知测试人员,导致测试人员也缺少对这部分功能的覆盖,从而引发测试泄露,甚至给用户带来损失。


技术实现思路

1、为了克服现有技术的不足,本发明提供了一种webui自动测试用例集的推荐方法,解决了现有自动测试中手动选择用例产生的过多无效用例以及针对开发意外修改带来的实际未覆盖的问题,技术方案如下:

2、一种webui自动测试用例集的推荐方法,包含以下步骤:

3、步骤1,将每个用例脚本中需要保存的待操作的所有元素对象设为元素集合,所述元素对象包含type属性和path属性,type属性取值包含xpath、css selector、classname,path属性是type属性对应的元素页面路径;

4、步骤2,遍历所有测试脚本,将所述元素集合中每个元素对象的path属性以及该path属性对应的用例id存入哈希表中,哈希表记录所述元素对象涉及的测试用例脚本,生成用例集映射关系;

5、步骤3,利用crawl函数生成待测版本的虚拟dom对象vd1,同时对上一次测试版本创建虚拟dom对象vd2;

6、步骤4,将生成的所述虚拟dom对象vd1、vd2进行差异比较,对于vd1,vd2中的每一层应用diff函数进行差异比较,比较完vd1,vd2中所有层,即得出差异集g={g1,g2,…,gi},其中gi ={vn1, vn2,..,vni},gi表示在i层,vd1,vd2存在vn1,vn2,…,vni个差异节点;

7、步骤5,依次遍历生成的所述差异集合g,对于差异集合中的每个元素a,取出a中的path值与步骤1哈希表中记录的path属性进行比较,若哈希表中存在元素b,使a.path=b.path成立,则元素b的path属性对应的用例id即为推荐用例id,将该用例id存入推荐用例集合c,即c = {b1.id,…,bn.id};

8、遍历差异集合g结束后,集合c即为最终推荐用例集。

9、与现有技术相比,本发明的有益效果为:本方法可以探测待测版本的虚拟dom的变化,自动推荐相关用例,从而达到用例最小化,以及发现潜在的测试点,避免测试泄露风险。

10、实施方式

11、为了阐明本发明的技术方案和工作原理,下面将对本公开实施方式做进一步的详细描述。上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。

12、本技术的说明书和权利要求书中的术语“步骤1”、“步骤2”、“步骤3”等类似描述是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里描述的那些以外的顺序实施。

13、本公开实施例提供了一种webui自动测试用例集的推荐方法,具体包括以下步骤:

14、步骤1:将每个用例脚本中需要保存的待操作的n个元素对象设为集合e={e1,e2,…en},其中e1至en为描述页面元素的element对象,element至少包含type和path属性,type属性取值包含xpath、css selector、classname等,path是type属性对应的元素页面路径。

15、步骤2,遍历所有测试脚本,将所述集合e中每个元素对象的path属性以及该path属性对应的用例id存入哈希表h中,h={path1:[id1,id2,…,idj],…,pathn:[id1,id2,…,idk]},即哈希表h记录了元素所涉及的测试用例脚本,生成用例集映射关系。

16、步骤3:利用crawl函数生成待测版本的虚拟dom vd1,同时对上一次测试版本创建虚拟dom vd2,crawl函数功能如下:

17、首先创建主页面根元素对应对象vd1,其中vd1包含以下属性:tagname为节点tag名称,value为节点属性值,attrs为用于保存节点属性值,path为保存当前节点基于xpath、css selector、classname或id类型的路径,children为保存当前节点的子节点,属性值同上描述,类型记为n。

18、crawl首先完成同层节点爬取并创建对应的n,然后对同层节点依次获取子节点并重复上述操作,完成完整的vd1,vd2对象。

19、步骤4:将步骤3生成的虚拟dom对象vd1、vd2进行差异比较,具体地,对于vd1,vd2中的每一层应用gi=diff(vd1, vd2),其中gi ={vn1, vn2,..,vni},gi表示在i层,vd1,vd2存在vn1,vn2,…,vni个差异节点,

20、diff函数具体操作如下:在i层,定义p1,p2指向vd1的头元素和尾元素,定义q1,q2指向vd2的头元素和尾元素,若vd1[p1]vd2[q1]或vd1[p2]vd2[q2],即对应步骤3中定义的n属性值相等,此时元素相等,p1,q1递增或p2,q2递减;

21、若vd1中p1,p2重合,而vd2中此时q1,q2不等,则代表vd2中q1至q2区间的元素为新增元素,将新增元素作为差异元素记录至gi中,即gi={vd2[q1],…vd2[q2]};

22、若vd2中q1,q2重合,而vd1中此时p1,p2不等,代表vd1中p1,p2区间元素在vd2中被删除,将此删除元素作为差异元素记录至gi中,即gi={vd1[p1],…,vd1[p2]};

23、若vd1中p1,p2重合,同时vd2中q1,q2重合,则代表无新增或删除元素。

24、比较完vd1,vd2中所有层,即得出差异集g={g1,g2,…,gi}。

25、步骤5:依次遍历步骤4生成的差异集合g,对于a€g,取出a中的path值与步骤1中h集合元素进行比较,若存在b€h,使a.path=b.path成立,则b.id即为推荐用例id,将id存入推荐用例集合c,即c = {b1.id,…,bn.id}。

26、遍历差异集合g结束后,集合c即为最终推荐用例集。

27、以上对本发明进行了示例性描述,显然,本发明具体实现并不受上述方式的限制,凡是采用了本发明的方法构思和技术方案进行的各种非实质性的改进;或者未经改进、等同替换,将本发明的上述构思和技术方案直接应用于其他场合的,均在本发明的保护范围之内。

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