其他测试框架 自动化测试之根据需求自动生成自动化测试代码

hello · 2016年05月05日 · 最后由 hello 回复于 2016年05月07日 · 3360 次阅读

1.功能介绍

该轮子的核心基于 Selenium2.0,testNg 二次开发的关键字驱动的测试框架。开发初衷是公司为了发现发掘想了解自动化,有志于自动化的测试同事,培养提升功能测试的自动化能力,领一个原因就是有些重复的测试用例比较简单,每次手写代码比较烦躁。针对不同能力的测试人员提供两种脚本设计方式,一种为通过选择页面元素及对应操作来完成测试步骤的设计,“无码” 方式,根据不同的关键字定义的元素操作以及设计好的测试步骤等自然语言描述,转化为 java 测试方法;另外一种为通过编写代码完成测试脚本设计,“有码” 方式,用户直接提交自动化 java 代码。代码提交后驱动远程测试机器去执行该用例,返回测试报告。


(特别声明:本模块设计灵感偷师某宝的 AutoRobot 设计,但是某宝的 Chrome 元素拾取插件,本屌丝不会开发,而且在各个功能细节上也 low 很多很多档次,各位大大勿怪勿笑。本工具设计灵感所有权归某宝设计团队,使用权归各个仿造改善的个人。‘拾他山之玉,偷师夷长技’,所以不要太期待别人开源什么的,别人题典一下设计理念思路已是恩赐,自己动手造自己轮子才是最符合自己公司需求的。)发贴出来也是想和大家分享一下个人解决遇到实际问题的方法,另也想抛砖引玉,我是刚入的小白,行请各位大神不吝赐教,使得这个模块功能更完善。

2.整体架构

如下图:

  • 无码模式

  • 用户在功能测试用例的详情页面,用户可以根据功能测试用例来设计自动化代码生成步骤(在下图的步骤设计区域,增加步骤流程顺序,输入定位方式以及各个参数)。
  • 步骤提交后,框架根据关键字解析步骤,转换成 java 代码,保存步骤,发送测试任务请求。 -远程机更新代码,打包执行该用例解析生成的 java 代码并返回结果。
  • 画面现在生成的代码,和执行后的测试结果
  • 使用局限性,用户得了解 Xpath 定位,步骤顺序必须设计好,关键字必须选择好。

  • 有码模式

  • 用户可以用无码模式生成一个大致模板,或者大致的代码。再自己手敲代码。
  • 也可以全部手敲代码,提交
  • 远程机更新代码,打包执行。
  • 画面现在生成的代码,和执行后的测试结果
  • 使用局限性,代码敲错,编译异常无法执行。

3. 界面
如下图:

4. 优缺点
作为自动化平台的一部分,满足了,功能测试用户写用例的需求,也满足了开发测试用户写代码的需求。有码无码自由选择。
缺点自动步骤设计只能适应简单的用例场景,页面切换,N 个页面之间的验证,复杂的非一条线走下去的流程无法界面无码模式实现。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 35 条回复 时间 点赞

感觉有点像录制回放呢。

#1 楼 @jamesparagon 不是的,这个要在界面输入 xpath 等,选择相关操作。不支持录制

我的理解,你的无码是不是类似于关键字驱动的填表格?

#4 楼 @success ok,明白了。

为何不直接用开源的 robot framework 呢?

hello #30 · 2016年05月05日 Author

#3 楼 @chenhengjie123 某宝的无码是利用谷歌插件,画面拾取关键字,这个臣妾做不到,只能画面选择输入关键字。

#6 楼 @success 我说的不是 AutoRobot ,是 robot framework 。

我的意思是自己造这个轮子是为了满足什么 robot framework 满足不了的特殊需要?

#5 楼 @chenhengjie123 链接发一下,研究研究,我们这个主要还是为了集成在平台上去管理。再说也是测试开发的一个工作业绩,不然绩效怎么弄啊。哈哈。。

#8 楼 @success robot framework 链接:http://robotframework.org/

如果想集成到平台管理,只要平台能导出成 robot framework 的用例就好了。

hello #10 · 2016年05月05日 Author

#9 楼 @chenhengjie123 恩恩,多谢,我学习学习这个 obot framework

hello #11 · 2016年05月05日 Author

#9 楼 @chenhengjie123 全英文,啊啊啊。渣英语 4 级都还给老师了。。。。得慢慢啃了。

#11 楼 @success 你可以找中文的,我只是把官方链接给你了。。。这个框架还是比较流行的,中文资料也不少。

hello #13 · 2016年05月05日 Author

#12 楼 @chenhengjie123 恩恩,好的,多谢了。

#11 楼 @success 另外,你的标题迷惑性有点强。。。我还以为是能通过需求什么的自动生成用例。。。

hello #15 · 2016年05月05日 Author

#14 楼 @chenhengjie123 那我修改一下标题。

#15 楼 @success 所以不要太期待别人开源什么的,别人题典一下设计理念思路已是恩赐 严重赞同你这句~有时候真是思路与灵感被别的文章或别人的一句话给点透了,然后埋头码代码,就出东西了~

hello #19 · 2016年05月05日 Author

#16 楼 @sigma 对的。开源思想已经很难得了,很多时候一个产品的精髓就在于一个想法一个好的创意。

是不是等于关键字解析 ,翻译成脚本文件。前提还是要自己选择一些关键字,参数?

hello #19 · 2016年05月05日 Author

#18 楼 @pacerron 对的。就是关键字解析,提供了伪脱离 Eclipse 开发工具,在页面上操作而已。

#19 楼 @success 直接在脚本上写关键字,然后工具解析。也挺方便的啊,你这样等于是用另外一个工具把关键字翻译成测试脚本。然后测试工具在执行测试脚本?我理解有错?

hello #21 · 2016年05月05日 Author

#20 楼 @pacerron 理解完美。用户界面选择输入关键字====》平台解析关键字====》远程机器执行并返回执行结果。

#21 楼 @success 开源就好了,呵呵。

hello #23 · 2016年05月05日 Author

#22 楼 @pacerron 我们也是参考某宝自己做的轮子,他们的更强大,利用浏览器插件直接在页面上拾取关键元素。另,这是公司的内部的东西,我写出来只能是给大家提供一个思路,开源不了,非常抱歉。

开头的声明很赞. 不过对细节描述的太少.

hello #25 · 2016年05月05日 Author

#24 楼 @seveniruby 确实有点表述不清。有点表述不到位,关键是偷师别人的。写的太多,怕被笑话。。。。。

#25 楼 @success 偷师是一种能力. 这是进步和进化的能力. 也是对别人的致敬. 既然写了就写的认真点呗.

#26 楼 @seveniruby 嗯,最近稍微闲了点,打算把平台的各个模块大致设计思路都分享到 Testhome 中来。相关详细内容再慢慢补充完善吧。

RobotFramework 就是干这个的,而且已经相当成熟了,支持 selenium 等很多测试工具,支持写循环和 if else 逻辑判断,log 和 report 也非常强大。而且提供很灵活的编程接口,可以根据需要自己扩展比如定时跑,多进程跑,发送邮件报告,保存结果到 db 等等,编程语言是 python

hello #29 · 2016年05月05日 Author

#28 楼 @chrischjh python 不会很麻烦,chenhengjie123 大神也提到过。看了一下,确实不错,感觉很强大,可惜就是看不懂,英文文档又是 python。

RobotFramework 不支持 python3.x 这也是我一直不入手 rf 的原因

#30 楼 @lose 你现在用的什么框架呢

#28 楼 @chrischjh 刚看到公司有功能测试同事用 robotFramework 了,感觉不错,就是不会 Python。。。

#32 楼 @success 如果只是使用 RF 不需要会 python,要基于它进行扩展就必须会了,不过 python 本身挺容易上手的,学了不吃亏

@lose https://github.com/robotframework/robotframework/blob/master/INSTALL.rst#python-2-vs-python-3

Robot Framework 3.0 supports Python 2.6, 2.7, 3.3 and newer, but the plan is to drop Python 2.6 support in RF 3.1. If you need to use older versions, Robot Framework 2.5-2.8 support Python 2.5 and Robot Framework 2.0-2.1 support Python 2.3 and 2.4.

hello #35 · 2016年05月07日 Author

#33 楼 @chrischjh 确实,多学点总归是好的

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册