Selenium 想了解下大家的 Web 自动化功能测试是怎么开展的

兔白小 · 2017年12月28日 · 最后由 zhaoxunshuo1 回复于 2019年12月16日 · 1996 次阅读

如题。
希望了解下各位同行的做法。我们公司的 Web 自动化功能测试用 Selenium 开展。即对手工测试用例进行自动化脚本覆盖,分布式的在多台机器多个浏览器上执行。每个版本迭代更新时,根据执行结果情况维护调整用例脚本,最终把测试回归情况告知相关人员。我们的自动化覆盖率达到 95% 以上,即基本上手工测试用例都会覆盖到,要执行的用例数达到 2000 多,而自动化执行时间在半个小时左右。看起来很完美,但是自动化测试人员的工作量挺大,每个版本都需要维护那么多的用例脚本,而且业务上也没有提升。
在此情况下,为了释放自动化测试人员的工作,公司希望能够更进一步做自动化的工作,即二次开发自动化工具,使得手工测试人员能够通过简单的输入如通过功能界面操作然后生成自动化脚本再执行。听起来像 Selenium 的 IDE 工具,但大家都知道这个工具生成的脚本常常是无法执行的,很多元素的定位不唯一,需要修改。而我们要求输入的操作,自动生成的脚本中对类似元素定位这样的情况一定是唯一的,为此打算通过扫描 Web 页面的方法,不管是通过 id,xpath 定位,得出的结果都是唯一的情况。但是 Web 页面千差万别,有些页面并不是标准的 dom 结构,导致目前技术上比较难解决。
在此,想了解下各位测试大咖的做法,相互比较下 优劣情况。并且对目前我们二次开发工具的做法遇到的 技术问题有没有好的技术方案。

共收到 11 条回复 时间 点赞

用 Uirecoder,百度一下或http://uirecorder.com/

谢谢 terrychow 的回复建议,先去参考下。

可以利用框架把 UI 元素提取到一个 class 中,维护是只维护这个 class 就行了(个人意见本人菜鸟一个)

少元素,除了目前 PO 模式以外,我的一些做法是把一些元素 list 化,很多 page 会有类似的功能,重复定义元素没有什么意义,徒增后期的维护成本。
展开来说的话,目前大家也都很熟悉 PO 的概念了,那么在 case 变动不大的情况下,尽量保持元素也不受影响,或者说即使前端变化了也不用管元素那么就很完美了。所以我习惯减少一些不同页面的重复元素,子类继承父类的情况下,再减少元素依赖的方式。

另外 95% 也太高了,给测试增加太多精力在维护脚本上了,从个人观点来看,很多缺陷还是通过探索测试来发现的,自动化还是作为辅助。

@alexchn ·
95% 的覆盖率,第一是因为有专门做自动化测试的成员,即手工测试和自动化测试分工很明确;第二是因为业务系统比较复杂,但是很多功能又都重要,要求回归比较细致。所以要求比较高。

兔白小 回复

如果已经分工,那就写吧😀

是现在写的脚本改起来太烦了吗。。

菜逼一直 所有操作全写一个 testcase 里.suit.class 运行一个业务.
登录频繁使用操作的封装一个方法,目前只做回归测试,部属个测试服务的重复性操作

简直跟我现在状态一样……只不过我是做 app 端的

小乐 回复

你说的应该是类似 pageobject 的思路,如果项目的 UI 或功能,不会频繁变动,在设计完脚本后,一般不会有什么太多的修改;但是如果业务逻辑、UI 或功能,出现频繁修改的情况,即使把容易变动的部分抽离出来,修改脚本的成本也是有点高的。

95% 你闹着玩尼

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