linux无UI怎样做自动化测试,UI自动化测试该怎么做?

原标题:UI自动化测试该怎么做?

UI自动化测试一直都是如此的令人纠结,自动化测试初学者总是拿它入门,但有些经验丰富者对其又是毁誉参半,抑或抛出分层自动化测试那个经典的“金字塔”,来说明UI自动化测试还是少做为好。

笔者在从事7年产品研发之后,临危受命转向测试领域,至今又7年有余。期间最关注的一直是UI端/用户端的自动化技术:从Web应用到移动App、从测试到RPA(机器人流程自动化)、从框架研发到应用推广。

本文主要分享为什么要做UI自动化测试、UI自动化测试框架设计要点、团队合作方式、推广注意事项以及其他的心得体会,希望能给各位同行带来思想上的碰撞。

UI 自动化测试要不要做?

如果一个组织真正重视软件质量,UI自动化测试是有必要做。有如下几点理由:

1.任何自动化工具都是在简单、机械、重复的任务场景下最能发挥作用,UI测试非常符合这个特点。

2.对于很多组织来说,UI测试是当前耗费测试团队人力最多的环节,大部分专职测试人员日常工作就是UI测试。“工欲善其事必先利其器”,测试人员也需要自动化工具来提升其日常工作效率。

3.无论后台多复杂、多重要,用户接触的终究还是前端界面。现在的软件除了后台逻辑之外,还有很多前端脚本逻辑和样式,单纯靠后台接口/单元测试,无法证明用户端的可用性。

4.自动化测试确实是要分层的(单元测试、接口测试、UI测试),从测试团队的角度来说,非常希望有足够充分的单元测试和接口测试来保证提测版本的质量,但实际情况往往是开发团队所维护单元测试和接口测试也是非常不充分、甚至几乎没有。

d704fb44f8b7bb49c4c090fedb76b90c.png

所以任何项目中有人拿“分层自动化测试”跟我讲不要做UI自动化测试的时候,我都会先请他们把接口测试和单元测试展示给我看看,然后再跟他们探讨自动化测试的实施策略。但是从实践的角度,为什么很多质疑的声音呢?

归根结底就是三个字“不稳定”!测试环境构建不稳定、被测软件界面不稳定、测试框架运行不稳定。

其实只要适当的过程改善和开发团队配合,这些问题基本都是能够解决或者明显改善的。以测试环境为例,在纯手工测试阶段,有些项目的测试环境可以被随时停止、随意更新。这样对手工测试也是有影响的(工作进度受干扰、测试计划被打乱),但是可以忍受。自动化测试会对测试环境提出更规范的要求,至少不能随时停止,这就需要对研发测试过程进行必要的改善。然而被测软件界面不稳定、测试框架运行不稳定,就没有测试环境不稳定那么容易解决了。这里面主要涉及与开发团队的配合、测试框架的设计。

与开发团队配合提高UI端的可测试性

在分层自动化测试理论中,提到单元测试和接口测试是比较稳定和容易实现的。除了底层代码受用户需求变化影响相对较少、编写自动化用例成本较低之外,其实隐含了一个很少被提及的原因:单元测试和接口测试通常是开发团队内部的工作,当发现一个方法或服务接口设计的不合理导致自动化测试用例编写困难的时候,即便没有直接对应到一个缺陷上,他们也通常会进行调整,使代码设计实现更加优化、更规范。

UI自动化测试需要开发团队配合指的当然不是不允许开发团队随便修改UI实现,指的主要是约定并遵守良好的UI编码规范、及时修正未对应功能缺陷但却影响UI自动化测试的编码问题等。UI自动化测试最关键的步骤是“定位页面对象”,下面举一个具体的例子,说明开发团队一些分内的、简单的配合,对自动化测试是多么的重要。

13abd8b7101d9e8559d7de10ee877ee8.png

以上图界面为例,如果测试脚本想要使用上下文文本定位对象的方法(如下所示),在测试框架中就要解决怎么根据文本准确定位到后面的输入域/下拉框的问题。

3678c9dc3b7b91c299a8a14c8201a148.png

其实只要开发团队遵守HTML的基本标准,规范使用Label标签及for属性(如下所示),测试框架中实现上述效果就会变得很容易的。 如果不遵守基本的UI编码规范,每个开发人员都随意编写前端代码,UI自动化测试的成本和难度就会明显增加。

5a997cfd97bb3a501bebe97713073431.png

匹配开发模式设计自动化测试框架

自动化测试框架的设计方法有很多,笔者这些年一直坚持的自动化测试框架设计核心思想是要“与开发模式匹配”。以Web UI开发为例,现在主要有两类模式:

一是采用统一UI类库

企业或项目组采用统一的前端UI组件库进行开发,如,JQuery。

二是采用统一开发框架

企业采用统一开发框架,包括UI开发工具(甚至采用UI模型驱动开发),在采用统一UI类库的基础上,通过工具或模型来确保UI代码的规范性和一致性。

在这两种模式下由于大量的UI类库,前端会解析出大量的、动态的、机器生成的页面源码,不再适合采用传统的脚本录制和页面对象识别的方式来制作测试脚本。

对应这两种开发模式,笔者经常采用的自动化测试框架设计模式是UI组件封装模式。

PageObject模式是自动化测试最常采用的模式,但是在基于UI类库开发的系统中,页面对象数量太多,而且很多工具识别页面对象也变得更加的不准确和不智能。

所谓UI组件封装模式,指的是根据开发所采用UI类库提供的UI组件类型(比如,input、select、date、button、tree、grid等)对应提供相应的自动化测试控件。

将每类UI控件的定位方式和交互逻辑都封装到对应的自动化测试控件中,测试人员通过简单的DSL语言即可描述测试过程(如下所示),具体的解析执行交给测试框架进行统一处理。

通过这种测试框架设计模式,可以降低脚本编写难度和脚本代码量,提高对象识别和执行稳定性,将UI类库变更带来的影响限制到测试框架中,不往测试脚本中扩散。

f43d2e1779513c665fb44c6add83c057.png

a85adc25c92e56cbc878e72ea8085657.png

开发框架对接模式。当企业采用了统一开发框架,特别是通过工具生成大量UI代码时,我们可以先了解哪些代码是开发人员写的、哪些代码是工具生成的、哪些信息是在开发框架中统一管理的。

在自动化测试框架设计时,充分利用这些资源可以大幅提升框架的易用性。

如下图所示,对接开发框架之后,我们可以轻易的一键获取项目完整菜单结构(作为测试用例大纲),并且准确识别页面对象。

有了完整的测试用例大纲和页面对象之后,测试脚本的编写就会更加容易。另外,当未来项目版本升级之后,可以通过再次探测对比,识别页面对象的变更及影响的测试脚本,进而提醒测试人员批量修改脚本。降低在回归测试过程中发现脚本执行不过,带来的反复修改、反复回归验证的成本。

转载:https://weibo.com/ttarticle/p/show?id=2309404190239705954162返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值