多客户端UI自动化测试架构设计

对自动化测试接触不深的同学,往往会认为自动化测试只是简单的手工测试步骤的脚本翻译过程,其实不然,如果真这样操作,往往后期的维护成本会很高。在互联网,特别是移动互联网盛行的当下,一款受欢迎的产品,多半会部署Android,iOS,PC等多个版本的客户端。本文中根据一个真实的自动化测试项目的实现抽象出如下的测试架构图,以此解决自动化测试会遇到的以下几个难点问题:

1. 测试业务抽象:从业务测试需求描述(What,即做什么)的抽象层面讲,在多个客户端上是基本一致的,比如挖财这款记帐软件的绝大部分功能需求,在Android,iOS客户端上抽象出来是一致的,不同的无非是控件的布局,以及操作流程稍有差别。我们采用RobotFramework(以下简称RF)中文描述测试需求,然后在多个客户端上尽可能最大粒度的复用这份测试需求,这样在新的端接入的时候,只要实现下层的驱动层和测试逻辑层面即可。在敏捷测试领域中推崇的”活的文档“这一概念,大体上也是这个意思。

2. 多自动化测试框架的适配:现如今,对于Web端的自动化测试,Selenium基本上是一统天下的局面,但是对于Android和iOS移动端来讲,自动化测试框架呈现的基本是日新月异的现状,就Android来讲,现如今比较出名的有Robotium,UIAutomator,Appium等,新框架总有其更有优势的地方,在传统实现来讲,如果替换自动化测试框架,所消耗的成本和重新所有测试用例区别不大。从传统软件设计的理念上来讲,要尽可能减少软件本身对第三方库API的直接依赖,以避免库升级或变更导致API的变化所带来的产品代码变更。自动化测试对第三方测试框架的依赖也是同样道理,所以在第三方测试框架上层加了一层ExternalApiWrapper,以此屏蔽掉干扰。

3. 业务操作的多用途复用:举个简单的例子,拿登录这个功能的测试来讲,作为测试本体,会有常规的数据驱动测试;作为测试辅助体,它又是很多业务流程测试的准备条件,所以对于登录这个业务操作,要能满足一处实现,多处复用。同样我们还需要它来辅助进行基于模型的探索性测试,关于这点在下面来介绍。

4. 基于模型的探索性测试:传统自动化测试脚本在编写调试完成后,在很长的一段时间内执行的顺序都是固定不变的,能发现的bug大多在调试自动化脚本的开始阶段就已经被发现了,后期不断执行的过程中就少有bug发现了,我们称这类自动化脚本为静态自动化测试,这种自动化测试方式存在的最大问题,就是杀虫剂效应。这种类型的自动化测试偏向用于持续集成中保证产品功能没有被破坏的验证。在敏捷测试中,除了这类测试之外,一般也会引入手工的探索性测试,用于发现杀虫剂效应之外那些没有被发现的缺陷。如果利用自动化测试来尝试探索性测试这个领域,是自动化测试面临的一个挑战,也是展现其重要价值的一个突出的亮点。反思我们测试人员了解产品的过程就会发现,随着对产品的不断熟悉,业务的不断了解,慢慢地在我们的大脑中建立起了这个产品的业务模型,这个模型就是辅助我们做手工探索性测试的基础。如何将我们大脑中已存储的产品业务模型用测试代码来实现,是关键的难点。在实践过程中,我们将此类测试分成两类:单点功能利用有限状态机实现探索性测试(通过这种在状态节点间轮循的方式发现了一个经过四五十步发现的缺陷);整体业务逻辑的模型探索性测试,这种探索性测试的难点是构建Activity/页面节点的路径图、节点之间步进方路径法实现,步进方式分为最短路径和多路径随机等多种方式。

在以后的博文中,会逐渐将整个测试架构中涉及的一些关键点的代码贴上来。

自动化架构图

转载于:https://www.cnblogs.com/elevenchan/p/3675333.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dagger是网易杭州研究院QA团队开发的一个轻量级、运行稳定的WebUI自动化测试框架,主要基于Selenium及TestNg可以认为是对Selenium进行二次封装的一个框架(俗称 造轮子 )。之所以把这个轮子开源出来,主要在于经过了公司内部多个项目的实践,也取得了不错的成效,因此,希望开源以后可以对大家有所帮助及参考。 设计理念 Dagger首先是一个WebUI自动化框架,提供了赖以操纵浏览器的一些API。API数量不多,少于20个,但从实践上,已经基本涵盖95%的应用场景了(其余5%比较 个性 的自动化操作一般是封装在业务逻辑层面,有时候甚至会须要hack) Dagger其次是一个测试框架,使用TestNg管理和运行用例,TestNg相关断言内嵌于上述API中。因此,在我们的测试用例里面不应该看到单独的TestNg断言的 Dagger还是一种设计风格:简约。无论是Dagger框架本身还是基于Dagger编写的测试用例,都是十分light及straightforward的,以至于会让人感觉有点土。但实践中,这两者确保了低成本、易用性、可维护性 WebUI自动化从业界看,难推进,易烂尾,原因基本在于:维护成本高、运行速度慢、稳定性差 Dagger专注于WebUI自动化,从技术上克服了速度与稳定问题(见下文)。只封装够用的浏览器操作为API,并充分简化/强化这些API,以简约的风格去降低自动化的学习及使用成本。同时,在实践中,我们主要使用Dagger编写冒烟用例、其次是主干用例,少写逻辑复杂功能,不写边边角角功能,让用例也保持清爽(在整个自动化实施过程中,会定期进行用例Review),同样易于后期维护 主要特性 API极少,易于上手,详见这里. 提供比较完备的文档,便于快速入门,详见这里. 支持单机多浏览器并发执行,大大缩短用例执行时间,详见这里 通过修改TestNg源码实现失败用例自动重运行(详见这里)由此几乎消除WebUI自动化中常见的虚假失败 默认使用Chrome浏览器,原因详见这里 失败用例自动截屏 后续工作 加入Flex/Flash自动化支持 如何使用 Dagger十分适合中小型团队从零开始WebUI自动化,这样的话,只须要直接下载整个Dagger代码就行了,Dagger本身都已经配置好了,下载后看一下使用文档就可以直接开始写用例了 也可以把Dagger打成Jar包,导入已有的自动化框架中,详见这里 标签:Dagger  自动化测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值