UI自动化,你值得拥有

  去年春节联欢晚会,为了那张“敬业福”,全家都卯足了劲儿“咻一咻”,连节目都顾不上看了。当时我就想,要是能自动化该多好,不停点击屏幕,屏幕不疼手还疼呢,何况还不好分心,生怕错过了“敬业福”。玩“咻一咻”,是靠不停点击按钮来检查是否得到“敬业福”,而工作中的UI自动化,大抵也和“咻一咻”差不多,都是通过不断地输入,验证系统的输出是否正确。然而做UI自动化,效果并不好,收益低就算了,执行速度还慢。比如打开一个浏览器,可能就要等3-5秒,如果等浏览器访问网址,返回网页内容,就需要更长的时间。要是遇到问题,还要排除各种干扰才能定位。而要是做接口或者单元测试,不但定位问题范围小,响应也基本都是毫秒级的,即使遇到慢的,差不多1秒钟也能返回结果了。这么一对比,UI自动化就像是一件吃力不讨好的事儿,所以去做UI自动化,大概是因为它独特的角度:从用户体验来验证系统的正确性。
  要做UI自动化,以web方向来说,要是有一个好框架,就方便多了。如果编程基础好,可以自己写框架或者修改现有框架,封装常用业务逻辑和代码,提高测试效率。要是不会编写框架,也可以使用开源的工具,比如Robot Framework,它既支持关键字驱动、数据驱动,也支持接口测试,在官网稍做学习,就能初步使用。要是既不会写框架,也不会用工具,那你也可以看看吴老的《Selenium WebDriver实战宝典》,里面有很多小实例,比如操作下拉框、输入框等等。有了这些小实例,你就可以把它们复制到文档,形成一个有目录的代码库。这样即使你不会封装代码,也能在需要的时候找到它,再修改下常用的参数,就能实现一个简单的自动化测试了。

  挑选UI自动化用例也有讲究,一般都选择比较稳定、重要的功能作为切入点,要是易于编写就更好了。但一提到项目改版,UI经常首当其冲!可能改动特别大,有时候与其维护自动化用例,还不如重新写。遇到这种大刀阔斧地改变,代码库的优势就很明显了,它形式灵活,可以根据需要随时组装,极大地加快了编写速度。并且随着小代码块的积累,组合代码块的经验也不断增长,当尝试去封装函数,进一步提高代码的复用程度时,一些小的框架设计思想也会随之出现。这样循序渐进,在实践中思考总结,不断优化学习,汲取一些先进的实现思想,慢慢地,UI自动化会做的越来越好。
  有朋友说:“手工测试都来不及,哪有时间做自动化?”话虽如此,但抽出时间,做一些局部自动化,提高测试效率,还是很值得的。比如准备测试数据,就要进行大量的重复操作。手工制造上百条数据,可能需要大半天。而使用自动化来实现,在编完代码的那一刻,你就已经解放了!数据源源不断地涌出,只要运行几分钟甚至更短的时间,我们就能完成目标!所以学习UI自动化,总会有用武之地。如果现在还不会,可以慢慢学,千万不要因为现在做的不好,就半途而废了。在工作中,我们可以和同事相互鼓励,一起学习和探讨,甚至带动整个测试团队一起提高,一起进步。希望大家都能使用自动化,为自己争取到更多的福利!

  ---记光荣之路吴老4月9日清晨分享

作者:Flyleaves
出处:http://www.cnblogs.com/Flyleaves/
参考声源:http://m.ximalaya.com/zhubo/44966139
本文版权归作者、微信公众号光荣之路和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

时间: 2024-08-05 05:06:05

UI自动化,你值得拥有的相关文章

The Thinking of AutomaticTest(有关UI自动化的思考)

考虑因素: 容易维护 简洁易懂 代码重用性好 系统的稳定性强 UI自动化: 数据的获取:装载的数据文件类型.数据的形式.数据的解析方法定义. 1.利用Junit单元测试组织用例,明确输入数据.预期结果 2.建一张输入数据参数表,不断循环调用 页面的元素:页面元素的分页.元素的获取方式 .元素的存取方式 1.当页面元素较少时,直接获取元素 2.当页面元素较多时,从配置文件中获取元素 定位页面元素的方法:定义一个统一的方法,比如对点击事件的封装: public static void unifyCl

selenium-java,解决一些加了显性等待和隐性等待都不好使的情况,以及给UI自动化加上暂停功能

最近在UI自动化时遇到了,上一步成功操作后没有响应的情况(动画加载和浏览器加载导致实际没有问题),导致下一步无法成功操作,所有想在尝试2次操作后再次进行上一步操作解决这种情况导致的错误(其实是不想每一次有问题都要手动加线程沉睡) 1.java应用程序,暂停/开始按钮 import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionL

【Android测试】UI自动化代码优化之路(临时发布)

关于UI自动化的抱怨 听过不少人这样讲 "UI自动化非常不稳定,需求一改,界面一遍,全部都费了".我相信做过的人可能也会有同感.既然这个问题一直都是存在的,那么为什么没有人仔细分析原因呢? 我的老板georgeliao举了这样一个例子:每当需求变化的时候,开发没有跳起来,反而是测试跳了起来.然后不断的抱怨,界面元素全都改了,我的自动化的用例全部都要废弃掉了.那么我们是否想过,为什么开发可以从容不破的应对产品不断变化的需求?而我们却不能呢? 业内不少人也都放弃了UI自动化,觉得接口测试才

Robot FrameWork UI自动化脚本稳定性与原生关键字

在执行robotframework  的用例时,经常会出现稳定性差的问题.用例执行第一次成功,执行第二次就可能报错.自己对这个问题挠头很久,不知道怎么解决.今天在浏览网页的时候发现了一个不错的帖子,好像能够解决这个稳定性的问题.然后就把贴子搬了过来,为自己做一下备份(看了人家的帖子后,发现原来还是自己对robotframework的关键字用的不够熟悉造成的?(????ω????)?). 众所周知,在UI自动化在运行时,时常会收到来自各方的挑战:开发会说,你的自动化不稳定,又误报了:测试会说,这个

接口自动化与UI自动化两者的可行性

1.首先接口测试是跳过前端界面对服务端的测试,UI测试是对前端界面的测试,从分层测试的角度考虑,两者不应该是可以互相取代的关系. 2.从公司开展自动化的的角度考虑,可以重点关注这个项目开展接口自动化和UI自动化的分别需要的时间消耗.自动化测试人员成本.项目开展自动化测试的可行性.接口自动化和UI自动化的投入产出比,最终来确定开展接口自动化和UI自动化的比重. 3.从自动化测试覆盖率和难易程度来考虑,一般来说,系统中可测试的接口数量要比前端界面的功能点要少,并且接口的改动频率比前端界面改动频率低,

pywinauto处理UI自动化

之前一个项目的特殊性, 以及一些操作权限上的问题,不能使用现有工具进行UI自动化. 在一些资深tester建议下决定采用Python的pywinauto模块来处理Windows控件的UI操作. 1. 首先搭建pywinauto环境. 1). 可以参考vncdotool - A command line VNC client 安装python2.7.5, Twisted 和PIL. 2). 安装elementtree(elementtree-1.2.7-20070827-preview.win32

[python]RobotFramework自定义库实现UI自动化

1.安装教程 环境搭建不多说,网上资料一大堆,可参考https://www.cnblogs.com/puresoul/p/3854963.html,写的比较详细,值得推荐.目前python3是不支持ride的所以,用python2 2.创建一个工程 &工程下有哪些目录,这样放文件比较明确,如下 &创建好,这时候就得写脚本主题是UI自动化,所以用selenium库,还有其他得辅助库 ,cd c:\Python27\Scripts\,执行easy_install pip, 安装好pip后dos

关于UI自动化代码的优化

最近对UI自动化有很深的兴趣,所以拿出了昨天的代码继续进行修改. 首先是引入了unittest框架来使用例更加规范化, 但是遇到问题:用例运行完整,但是unittest框架会报错ResourceWarning.暂时并未找到具体报错的原因. 查询资料也只找到了一个治标不治本的办法就是引入warning框架来忽略掉报错. 第二就是利用HtmlTestRunner生成测试报告,一直无法生成. 然后发现,pycharm不就有现成的生成报告的按钮么,一点就可以建立且界面也更加美观.所以暂时先抛弃使用htm

appium Ui自动化调起应用点击

appium Ui自动化调起微信并点击登录按钮的java代码(对的,就这么一丢丢). public class testWX { public static void main(String[] args) throws Exception { AndroidDriver driver; //DesiredCapabilities 负责启动服务端时的参数设置. DesiredCapabilities cap = new DesiredCapabilities(); cap.setCapabili