米乐M6

行业新闻

M6 米乐UI自动化的选型

  当前一切UI自动化都是建立在selenium2的API基础上的,最底层都是调用的模式。

  UI自动化主要的体现应该在易用性、稳定性、可读性、可维护性、可扩展性当中。

  Robot Framework是验收测试和验收测试驱动开发(ATDD)的通用测试自动化框架。它具有易于使用的表格测试数据语法,并使用关键字驱动的测试方法。其测试功能可以通过用Python或Java实现的测试库来扩展,用户可以使用与创建测试用例相同的语法从现有的关键字创建新的高级关键字。

  Robot Framework是基于python的测试框架,基本上python能做到的事情它都能做到,既然如此为什么我们不直接使用python呢? 因为ATDD主要主角是没有技术经验的用户,怎么利用好懂的自然语言让用户可以参与到测试流程之中就是Robot Framework 的一大卖点。

  这个UI自动化框架应该说是市面上使用的最广泛的了,又有别称为“关键字”框架,因为其上手简单,只需要封装好关键字,使得不懂代码的人也可以快速写出用例,采用的是BDD设计思想。

  核心层:提供了 setUp,tearDown 方法,并有合适并足够的断言功能和异常捕获功能。

  工具层:具有众多的 Library 可供选择,可以结合不同的工具测试各种领域的软件。

  由于框架本身的强大扩展性,可以使得进行二次开发来完成符合自身业务的特性,而且自带的报告也非常好看。

  提供一个简单的库API,用于创建自定义测试库,可以使用Python或Java本机实现。

  提供命令行界面和基于XML的[输出文件,以便集成到现有构建基础架构(持续集成系统)中。

  为Selenium提供Web测试,Java GUI测试,运行进程,Telnet,SSH等支持。

  实现与源代码控制的轻松集成:测试套件只是可以使用生产代码进行版本控制的文件和目录。

  Robot Framework是一个通用的,应用程序和技术独立的框架。它具有高度模块化的架构,如下图所示。

  该测试数据是简单,易于编辑表格格式。启动Robot Framework时,它会处理测试数据,执行测试用例并生成日志和报告。核心框架对测试中的目标一无所知,与它的交互由测试库处理。库可以直接使用应用程序接口,也可以使用低级测试工具作为驱动程序。

  Robot Framework框架本身自带报告非常齐全,运行、截图、report 都不错。

  output.xml记录的测试结果是 XML 文件。根据特定的需要可以编写脚本读取 XML 文件并生成特定的测试报告。

  log.html会记录 Robot Framework 运行的每一步操作,主要用于编写测试脚本的过程中查看。

  如果,业务特殊(特定组件,xpath都识别不了的控件)或者有强大的资源来进行支持的话,是可以直接采用代码方式来调用底层的webdriver的API来进行框架自己研发,这样的话就可以对业务进行定制,封装。国外使用的比较多的是UI自动化测试工具--Selenide

  这是一个比较新的工具,国内应该还没有多少人用它(资料也比较少)。如果需要使用需要去阅读英文文档。

  使用Selenium无需考虑怎样关闭浏览器、处理超时和StaleElement异常、搜索相关的日志信息以及调试测试代码。只需要关心业务逻辑,剩下的交给Selenide完成就好!

  Selenide的团队自诩它是一个测试工具而不是一个测试框架。因为它只是webdriver的一个封装,只是他们封装了更好用的API,更稳定的控件搜索机制,更好的异常处理机制等等。底层的实现还是webdriver。所以他们认为并没有伟大到开发了一个测试框架,而仅仅是个测试工具(很谦虚的说~)。所以一切webdriver能做的selenide都能做。当然也可以扩展到只使用webdriver的API

  光有测试工具还不行,一般还需要TestNG这样的测试框架来执行,还有断言框架assertJ,报告框架Allure

  或者其他的,把它们组合起来使用,才是最有效果的,不过这样的话,上手难度可能会非常大。

  如上图的导航,二级导航以及页面辅助功能都会在不同的主页面上出现。为几乎所有页面 一级导航都会用到, 二级导航为该模块下所有页面会用到。 页面辅助功能为不同的页面会用到不同的页面辅助功能。这些跨页面都会使用到的功能,我们进行封装。哪个页面需要用到就去调用。以此来达到代码复用的目的。

  page类遵循一个原则---- 产品UI上这个页面能做什么, 这个page就只能做什么。 不准许跨页面逻辑合并在一个中实现(页面可以有跨页面和模块级功能,但是具体每个页面的逻辑必须由每个页面自己实现)。 出现多个页面共用的功能参考上一条规则将其抽离为共用的模块封装。

  页面的命名规则需要以Page为结尾。 封装层(共用逻辑)不得使用Page结尾

  每个页面以封装业务逻辑为主,通过参数控制调用不同的业务逻辑。 无特殊情况下不要让外界知道控件的信息。

  当一个页面中的功能模块之间有数据依赖的时候。每个模块自己负责提供对外接口。

  比如测试模型中心或者预估服务的时候,首先必须要有模型事先产出。而产出一个模型需要在模型IDE中执行很复杂的步骤,跳转多个页面。 那么模型IDE负责对外提供一个封装了所有逻辑的简单接口对外使用。 调用方只需要传递一个模型训练算法的默认配置就可以产出相应算法的模型出来。 至于里面如何创建project和dag, 使用什么数据,怎么抽取特征等等都不是调用方关心的。 他们只要一个模型出来,至于这个模型怎么出来的逻辑,不要暴露给调用方。

  case中涉及UI上创建的实体名称,比如项目,数据,模型,用户等都需要使用随机名称。 不能使用固定名称。 以防一个环境多次运行的时候因为名称冲突而失败

  case中不准许出现页面元素信息,所有页面元素的封装和业务逻辑的封装要写在page层中

  在这样的划分当中所以,脚本在做什么一目了然。这就是可读性,我们做的事情跟之前没什么分别,但是我们把责任划分的更详细,脚本中只剩下业务逻辑。我们有一个原则就是脚本中只有业务逻辑。其他一切不相关的要不交给框架,要不交给其他层的模块。

  Macaca是一套完整的自动化测试解决方案,基于node.js开发。由阿里巴巴公司开源:

  Macaca 是一套面向用户端软件的测试解决方案,提供了自动化驱动,环境配套,周边工具,集成方案,旨在解决终端上的测试、自动化、性能等方面的问题。

  随着移动时代和智能终端时代的到来,为给用户带来更优质、完整的体验,我们的产品已经遍布各终端,同时单一的运行时架构往往不能满足工程的需要。Macaca 支持主流的移动技术平台 iOS,Android,以及两大平台的混合运行时Webview,也支持以往的桌面端浏览器。

  Macaca 的底层设计便于端的横向扩展,会根据开发平台提供的测试驱动及时调整集成方案。

  Macaca 提供了标准化的驱动层,消除了各技术平台测试技术栈的差异。用户只需要遵从W3C webdriver 标准即可多端无忧,理解成本降低。

  Macaca 提供 Node.js, Java, Python 三大主流的语言栈,方便工程师和所在团队选择合适的开发语言。由于 Macaca 的工具链基于 Node.js,这个因素使得 Node.js 技术栈提供的支持和周边工具会相对多。Java 与 Python 有大量用实践,社区共享与贡献较多,也是很好的选择。

  Macaca 提供了多种持续集成方案和功能模块,方便集成到研发和测试的各个环节。

  Macaca 拥有庞大的用户群,自我生长的开源形态和优质的中文社区环境,更多请见帮助支持。

  从UI自动化的价值来看,整个UI测试应该是测试金字塔中,最上层建筑,维护成本和执行成本也是最大的。

  兼容性测试价值:没有UI自动化测试,最起码兼容性测试是不可能做好的。所以当你没有UI测试的时候,你只能祈祷你们的研发队伍很给力。本质只是看这几十万是怎么花的,要么是研发凭能力省下来、要么是测试凭能力省下来,要么是第三方公司凭能力挣的,要么是用户体验受损导致公司损失掉的。

  非功能测试:内存泄漏、页面性能、弱网都需要对具体页面的访问,人手是否可以足够快的可以重复的在各种不同场景下巡回测试,或者有理由不测试,比如AB测试或者质量监控很好。

  持续集成/持续交付:研发平均每几个小时就会打出来他觉得有信心的测试包,你如何快速的做出质量反馈。

  政治价值观:你如何应对CXO们对测试团队执行效率的吐槽?减少承接的需求、降低公司的发展速度、加人、找外包还是提高手速?你需要有应对的策略。

  你的产品单元测试、接口测试非常成熟,而前端团队很给力,基本不出UI问题,有靠谱的研发团队在为质量兜底

  你的自动化水平很差,搞自动化非但不成功还让公司损失惨重,你用血一般的教训成功让领导接纳了UI自动化测试无用论。

  你的公司2个月发布一个大版本,你有为期2周以上的测试时间可以充分的奢华浪费

  你的工作国企铁饭碗,即使用户骂娘你仍然可以高枕无忧,比如1230x(已经改版了)

  虽然会使用Macaca来做,也同时会采用分层模式的思想Page Object来进行。对于这样的结合,会对我们有着相当大的启发,使得项目更加容易进行维护。符合UI自动化的原则思想。

  RF是一款非常不错的框架,在UI方面也有非常多公司采用,如果采用RF框架,我们将要做非常多的扩展,比如基础的功能遍历,更好的断言机制,支持Ajax等等,毕竟Selenium2library的API已经封装了很久了,现在的前端技术也是日新月异,如果需要二次开发这么久,也会非常消耗时间,并且做出来的成果也不见得会有多好。关于再次封装都可以选Selenide了。还不需要我们做这么多事情。这样会需要有更高的代码基础。不符合UI自动化测试的原则。

  在如今的电商时代,京东作为国内最大的综合性电商平台之一,受到了广大消费者的喜爱。除了提供便捷的购物体验外,京东还为...

  随着电商市场的不断发展,优惠券返利平台app也越来越多,让消费者眼花缭乱。在这些app中,哪个最好用呢?本文将从佣...

  高仿古驰包包质量如何,不同品牌高仿包包的价位不同,高仿品当中一比一与超A货是算好些的,这两种高仿价格就稍高些了,几...

  麦吉丽总共有几个等级,麦吉丽总共分为四个等级,包含一级的代理和市级的代理,还有分销商,以及特约的经销商。由于每个等...

  淘宝是一家以优惠券为主要营销手段的电商平台,通过发放优惠券来吸引消费者购买商品,同时也能帮助商家提高销售量和知名度...

  拼多多在一些人眼里即使消费平台,也是赚钱平台的。可能就有人问了,普通群众用拼多多怎么返佣赚钱,其实拼多多也是有返佣...

  高仿劳力士日志是近年来市场上备受瞩目的一种产品。它作为一款仿制的腕表,外观几乎与原版劳力士日志无异,但价格相对低廉...

  在现如今移动互联网时代,app已经成为人们生活中不可或缺的一部分,而app的成功离不开它强大的用户群体。因此,当我...

  剧本《踏南天》是一款架空情感机制开放进阶类型的剧本游戏,由Dr工作室发行。游戏需要6名参与者,游戏时间大约为6...

  短视频时代,刷视频成为了一种不需要太多本钱的创业方式。如果掌握正确的方法和技巧,每天挣取300元并不是一件难事。下...

  Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...

  用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...

  1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...

  草莓青枯病 草莓青枯病是由青枯假单胞菌引起的一种季节性较强的细菌性病害,多见于夏季高温时节,一般在草莓育苗圃及定植...

  就这么一幅图,它里面包含了很多信息元素。有人从中看到了又一个超级经济体的诞生,有人只是看到了一幅图,更有人不...米乐 M6米乐 M6