qconsh-顺势而为的weB自动化测试.pdf

上传人:来看看 文档编号:3330872 上传时间:2019-08-13 格式:PDF 页数:37 大小:5.78MB
返回 下载 相关 举报
qconsh-顺势而为的weB自动化测试.pdf_第1页
第1页 / 共37页
qconsh-顺势而为的weB自动化测试.pdf_第2页
第2页 / 共37页
qconsh-顺势而为的weB自动化测试.pdf_第3页
第3页 / 共37页
qconsh-顺势而为的weB自动化测试.pdf_第4页
第4页 / 共37页
qconsh-顺势而为的weB自动化测试.pdf_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《qconsh-顺势而为的weB自动化测试.pdf》由会员分享,可在线阅读,更多相关《qconsh-顺势而为的weB自动化测试.pdf(37页珍藏版)》请在三一文库上搜索。

1、此处填写密级标识 QCon北京2014大会 4月25日27日 此处填写密级标识 InfoQ infoqchina 此处填写密级标识 特别感谢 QCon上海合作伙伴 顺势而为的顺势而为的WebWeb自动化测试自动化测试 东软集团 殷坤 13年11月27日Wednesday 技术发展对自动化测试的挑战 技术发展对自动化测试的挑战 提高用户界面测试的敏捷程度提高用户界面测试的敏捷程度 测试用例的高复用与自动装配测试用例的高复用与自动装配 云计算助力测试环境高效管理云计算助力测试环境高效管理 此处填写密级标识 Web应用开发常用技术 应用开发常用技术 WebWeb应用开发从架构设计应用开发从架构设计、

2、开发到部署目前都有非常成熟的技术 开发到部署目前都有非常成熟的技术 架构设计 编码实现 应用部署 开发过程 RIA框架 组件化 云计算 敏捷 此处填写密级标识 对自动化测试应该引发的思考 对自动化测试应该引发的思考 技术的发展使开发效率逐步提高技术的发展使开发效率逐步提高、交付周期逐渐缩短交付周期逐渐缩短,而我们的自动化测试呢而我们的自动化测试呢? 测试用例 稳定性 页面布局或样式发生调整后,测试用例还能运行么? UI框架更换或升级版本后,测试用例还能运行么? 浏览器更换或升级版本后,测试用例还能运行么? 测试用例 复用度 测试脚本按照什么粒度划分既便于复用又便于组织? 测试数据如何管理才能实

3、现与测试脚本的灵活搭配? 如何根据组件装配变化自动组织可执行的测试用例? 测试环境 管理效率 是否可以不安装相关工具,就能够快速运行测试用例? 如何快速搭建各种测试环境,并提高资源使用效率? 如何快速把环境恢复到历史状态,以便重现特定问题? 技术发展对自动化测试的挑战 技术发展对自动化测试的挑战 提高用户界面测试的敏捷程度提高用户界面测试的敏捷程度 测试用例的高复用与自动装配测试用例的高复用与自动装配 云计算助力测试环境高效管理云计算助力测试环境高效管理 此处填写密级标识 敏捷的瓶颈 敏捷的瓶颈 采用Scrum每日站会就够了吗? 能快速响应用户需求就够了么? 界面设计可以及时与用户确认就够了么

4、? 系统有可扩展的架构就够了么? 有合适的快速开发工具就够了么? 充分复用已有的技术/业务组件就够了么? 每天坚持构建版本就够了么? 采用自动化回归测试就够了么? 自动化测试用例都能在当天的版本上运行么? 敏捷需要自动化测试敏捷需要自动化测试,但自动化测试本身够敏捷么但自动化测试本身够敏捷么? 对于敏捷而言 需求 需求 测试 测试 设计 设计 开发 开发 交交 付付? 此处填写密级标识 艰辛的自动化测试之路 艰辛的自动化测试之路 学习成本高 工具的操作使用、相关的脚本语言、测试过程的调试分析,是压在广大技术比较薄弱的测试人员身上的三座大山! 测试脚本维护困难 业界的测试工具本质上还都是针对页面

5、源码来编写(或生成)脚本的,与页面源码高度耦合、可读性差。 页面的任何变化都极有可能导致测试脚本不可用,即使提供脚本录制工具,我们能做往往也是重新录制。 断言机制繁琐呆板 测试脚本中的“断言”依赖手工插入。页面上蕴含大量的信息,潜在的断言对象如此之多、预期结果时常变化(甚至 是动态的)、UI样式或UI逻辑(比如,翻页图标灰显)也很可能出现错误。因此,“断言”可谓是测试人员的“ 噩梦”! 自定义扩展难度大 测试是个系统的工程,自动化测试是中间的一个执行环节。与之关联的工作还有测试场景设计、测试结果分析、持续 集成、版本控制、测试用例覆盖率统计、测试环境搭建,等等。 自动化测试工具在扩展方面的局限

6、性,破坏了测试管理的整体性和一致性。 业界有很多优秀的测试工具 分类 分类 商业 商业 开源 开源 功能测试 功能测试 QTP、Rational Robot Selenium Webdriver、RobotFramework 性能测试 性能测试 LoadRunner、Rational Robot JMeter 它们都有各自的优点,但也普遍存在的一些问题,让我们举步维艰 此处填写密级标识 艰辛的自动化测试之路 艰辛的自动化测试之路 优秀UI框架/工具的采用大大降低了开发成本和难度 测试脚本则要面对UI框架生成的海量源码 用例回放的有效性大幅降低,自动化测试变得雪上加霜 页面DOM结构非常复杂所录

7、制/编写脚本的复杂度变的更大、可读性变得更差; 即使页面代码没有任何变化,UI框架的升级也会导致DOM结构的变化脚本无效的风险变得更大; 控件ID是自动生成的,甚至可能随机变化导致根据ID定位控件的策略无效; 为了在不同浏览器下“看着一样”,实际的DOM结构有时也可能不同测试脚本的兼容性差; 此处填写密级标识 Web应用的稳定及不稳定因素 应用的稳定及不稳定因素 稳定因素 用户需求、软件特性 不稳定因素 页面布局、页面样式、用户数据、UI框架及版本 此处填写密级标识 像用户一样“测试像用户一样“测试”软件 软件 用户操作时只关注页面上能“看”到的,而不用“查看页面源码”; 用户会更关注整体业务

8、的正确性、稳定性,而不仅仅是每个孤立页面的功能正确性; 用户对页面样式、浏览器兼容性要求越来越高; 根据界面快速编写测试用例敏捷应对需求的变化; 隔离对技术实现(UI框架、页面样式/布局)的依赖敏捷应对设计/开发的变化; 支持跨浏览器稳定回放敏捷应对环境的变化; “用户使用软件”与“自动化测试软件”之间目前存在一些重要差异 如果能像用户使用软件一样进行自动化测试,我们会变得更敏捷 敏捷的核心是响应变化, 因此开发和测试都需要快速响应需求的变化; 而测试额外还需要快速响应开发的变化; 此处填写密级标识 聆听自己内心的声音 聆听自己内心的声音 当你在上述界面上进行操作时,你心里是否会默念: “账号

9、”输入*、“密码”输入*、“姓名”输入*、“性别”选择*、“生日”输入*、 “国籍”选择*,点击“保存”按钮。 类似的,当我们日常使用各种系统时,心里还会默念: “展开/收拢”树(Tree)的某个节点、关闭某个Tab页、 数据表格(Grid)的下一页/上一页、 选中数据表格(Grid)的某一行 如果测试脚本就像这个样子,大家觉得怎样? 此处填写密级标识 用户化的测试脚本 用户化的测试脚本 基于界面上可以“看”到的内容定位对象,对象的操作按照用户习惯命名。 对象类型 脚本示意 操作定义 此处填写密级标识 用户化的测试脚本 用户化的测试脚本 基于界面上可以“看”到的内容定位对象,对象的操作按照用户

10、习惯命名。 对象类型 操作定义 脚本示意 此处填写密级标识 用户化的测试脚本用户化的测试脚本 基于界面上可以“看”到的内容定位对象,对象的操作按照用户习惯命名。 操作定义 对象类型 脚本示意 此处填写密级标识 用户化的测试脚本用户化的测试脚本实例实例 结合“角色创建及授权”功能,看一下其对应的用户化测试脚本实例: 点击“业务角色列表”上的“新增”按钮 输入“名称”和“描述信息”后点击“保存” 选中“业务角色列表”中“QCconTest”对应的行 右侧切换到“应用菜单授权”Tab页 展开“管理控制台”和“组织机构”树节点 选中“用户管理”树节点 点击“应用菜单授权”上的“保存”按钮 此处填写密级

11、标识 用户化的测试脚本用户化的测试脚本实现 实现 “树节点展开”就是对指定节点前面的第一个“展开”图标的“点击”操作。 通过复杂XPath可以定位指定节点前面的“展开”图标: 用户化的测试脚本中包含了XPath中所有可能变化的信息, 其它信息都可以由UI框架封装的DOM结构决定。 /tdcontains(class,treecolumn)/*text()=Remodel Project/imgcontains(class,tree-expander)? 接下来,就是解析XML,然后翻译成XPath了 以树节点展开为例,分析用户化测试脚本的实现原理 RIA框架的采用生成了海量的前端源码,导致We

12、b UI自动化测试难度加剧; 但也正是由于RIA框架的采用,让前端代码结构变得一致、规范,为测试脚本封装提供可能性。 败也“萧何败也“萧何”,”,成也“萧何成也“萧何” 此处填写密级标识 敏捷中的敏捷中的UI自动化测试实施要点自动化测试实施要点 Automated user interface testing is placed at the top of the test automation pyramid because we want to do as little of it as possible. We want this because user interface tests

13、 often have the following negative Attributes: Brittle. A small change in the user interface can break many tests Expensive to write. A quick capture-and-playback approach to recording user interface tests can work, but tests recorded this way are usually the most brittle. Writing a good user interf

14、ace test that will remain useful and valid takes time. Time consuming. Tests run through the user interface often take a long time to run? But dont we need to do some user interface testing? Absolutely we no longer need to run all tests through the user interface. Instead, we run the majority of tes

15、ts through the service layer To do this we need a much smaller set of tests to run through the user interface layer. 此处填写密级标识 敏捷中的敏捷中的UI自动化测试实施要点自动化测试实施要点 Automated user interface testing is placed at the top of the test automation pyramid because we want to do as little of it as possible. We want t

16、his because user interface tests often have the following negative Attributes: Brittle. A small change in the user interface can break many tests Expensive to write. A quick capture-and-playback approach to recording user interface tests can work, but tests recorded this way are usually the most bri

17、ttle. Writing a good user interface test that will remain useful and valid takes time. Time consuming. Tests run through the user interface often take a long time to run? But dont we need to do some user interface testing? Absolutely we no longer need to run all tests through the user interface. Ins

18、tead, we run the majority of tests through the service layer To do this we need a much smaller set of tests to run through the user interface layer. 如何改善UI自动化测试过程中的 不利因素,提高稳定性、降低维 护成本? 从而使各层面的自动化测试能够 密切配合、相辅相成。 积极改善的想法 积极改善的想法 UI自动化测试成本高、稳定性差, 并且专家推荐尽量少做,那我们 干脆就不做了吧。 敏捷主要还是依赖单元测试,那 就是开发人员的职责了。 逻辑错误的

19、想法 逻辑错误的想法 基于业务测试框架开展自动化测试,提高UI自动化用例的稳定性,并降低其维护成本; UI自动化用例覆盖基本业务流程(不做异常条件和边界值测试),对前端校验编写独立测试用例; 测试团队同时也参与服务层的自动化测试,并与UI层自动化测试统一管理、相互补充; 测试团队从UI层入手开展自动化测试,培养每日构建文化,进而带动开发人员单元测试的积极性; 我们的实践 我们的实践 技术发展对自动化测试的挑战 技术发展对自动化测试的挑战 提高用户界面测试的敏捷程度提高用户界面测试的敏捷程度 测试用例的高复用与自动装配测试用例的高复用与自动装配 云计算助力测试环境高效管理云计算助力测试环境高效管

20、理 此处填写密级标识 测试数据参数化测试数据参数化测试用例与数据解耦 测试用例与数据解耦 测试用例中的输入数据发生变化的可能性很大,并且用例中不 同位置输入的数据是相同的。 因此需要把测试数据以参数的形式提取出去。 业务场景 脚本示例 此处填写密级标识 测试数据参数化测试数据参数化参数动态赋值 参数动态赋值 新增“单位参保登记”时,“单位编号”是系统自动分配的; 修改“单位参保信息”时,需要根据“单位编号”进行查询; 业务场景 脚本示例 此处填写密级标识 测试数据参数化测试数据参数化参数支持分组 参数支持分组 先用管理员登录,创建一个用户,并为其授权; 再换由新增的用户登录,进行后续业务操作;

21、 业务场景 脚本示例 测试场景定义?测试场景定义? 测试用例定义?测试用例定义? 此处填写密级标识 测试数据参数化测试数据参数化根据参数值微调脚本行为 根据参数值微调脚本行为 “新增用户”和“修改用户”是复用同一个页面,在实际操 作时,新增用户会录入比较完整的信息,而修改用户时往往只 涉及其中个别字段。 业务场景 脚本示例 测试场景定义?测试场景定义? 测试用例定义?测试用例定义? 此处填写密级标识 测试场景定义测试场景定义支持指定要执行的测试方法支持指定要执行的测试方法 一个页面上通常会包含多种操作,不同操作之间往往存在大量 重复的前置动作(比如,点击菜单、选择记录)或后置动作 (比如,修改

22、输入项)。 业务场景 Web应用中最直观的组织单元是“菜单”,所以测试用例也可以以“菜单”为粒度进行设计。 即,每个菜单对应一个测试用例文件,每个测试用例文件包含多个测试方法(method), 通过“测试数据参数化”和“测试场景中支持配置测试方法”使测试用例被更大程度的复用。 UIUI自动化测试用例的设计粒度 自动化测试用例的设计粒度 脚本示例 测试场景定义?测试场景定义? 测试用例定义?测试用例定义? 此处填写密级标识 测试用例组织测试用例组织支持根据组件依赖关系自动装配 支持根据组件依赖关系自动装配 在组件化开发模式下(比如,利用OSGi技术),当组件被停 止/移除之后,该组件对应的功能不

23、是简单的从页面上隐藏, 而是从ClassLoader或部署目录中被彻底删除。 由于大部分组件都包含服务端、客户端、数据库端资源,所以 在开发过程中很难保证所有资源都严格遵守设计时的依赖关系, 因此部分组件移除后,系统其它组件的功能会存在一定的风险。 业务场景 此处填写密级标识 1 测试用例组织测试用例组织支持根据组件依赖关系自动装配 支持根据组件依赖关系自动装配 场景示例 2 3 4 没有组件被移除时,全局资源搜索功能会从所有类型数 据库中检索结果、数据库类型包含Mysql; 移除Mysql组件; 全局资源搜索、数据库类型列表中均不包含Mysql类型; Oracle等其它类型资源的各种功能应该

24、不受任何影响; ? 此处填写密级标识 测试用例组织测试用例组织支持根据组件依赖关系自动装配 支持根据组件依赖关系自动装配 脚本示例 理论上可以自动获取所有组件的依赖关系,然后穷举启停组合,进行自动装配测试,但要求测试用例 的模块化程度非常高,并且执行耗时太长。 目前建议预设一些常用的装配组合进行日常自动化测试,并且根据客户需求随时补充装配组合。 用例装配范围 以参数化的形式定义几组需要被移除的组件,在用例执行之前用管理员登录停止这些组件; 在测试场景定义文件可以为测试用例指定所对应的组件,当对应的组件未被启动时,相应的用例不执行; 在测试用例定义文件可以为测试方法指定与测试用例不同的组件,当对

25、应的组件未被启动时,相应的方法不执行; 技术发展对自动化测试的挑战 技术发展对自动化测试的挑战 提高用户界面测试的敏捷程度提高用户界面测试的敏捷程度 测试用例的高复用与自动装配测试用例的高复用与自动装配 云计算助力测试环境高效管理云计算助力测试环境高效管理 此处填写密级标识 测试脚本 测试脚本 服务器 服务器 客户端 客户端 云测试之我见 云测试之我见 Web自动化测试三要素 WebWeb自动化自动化 测试 测试 云测试 是云计算技术在自动化测试领域的应用 ,主要目的是为了提升测试脚本、测试 环境(客户端、服务器等)的管理效率 ,降低总拥有成本。 此处填写密级标识 云测试云测试测试脚本管理 测

26、试脚本管理 本 地 测 试 工 程 中 的 脚 本 可 在 线 执 行 的 测 试 脚 本 把稳定、常用的测试脚本部署到远程云测试 平台上,用户无需下载任何测试脚本、无需 安装任何测试工具,即可将选择的脚本在指 定的待测应用上执行。 通过把测试脚本变成“服务”,便于除测试 之外的其他团队复用,充分发挥自动化测试 的附加价值。 此处填写密级标识 云测试云测试客户端管理 客户端管理 由于本地计算机能安装的浏览器类型有 限,所以在对Web应用进行浏览器兼容 性测试时,往往需要创建多个虚拟机用 以安装各种浏览器。 出于对网络连通性和数据安全性等因素 的考虑,对于有大量浏览器兼容性测试 需求的企业,建议

27、搭建企业私有云测试 平台来提升这方面的管理效率。 国内一些主要提供移动终端设备的 云测试产品也属于此类应用。 此处填写密级标识 云测试云测试服务器管理 服务器管理 设 备 利 用 率 低 管 理 效 率 低 云 测 试 环 境 管 理 平 台 资源申请、审批、分配、变更、回收; 支持虚拟机创建及模板转换; 支持多租户管理; 支持对资源利用率的实时监控与多维分析; 支持对计算、存储及网络资源统一管理; 【注】虚拟机若用于性能测试,务必确认能 够已独占方式分配计算资源。 云测试环境管理平台关键特性 云测试环境管理平台关键特性 此处填写密级标识 回顾回顾 自动化测试成败的关键在测试脚本的维护成本和运行效率 自动化测试成败的关键在测试脚本的维护成本和运行效率 更适合敏捷 用户化的脚本语法,符合行为习惯、 隔离对页面源码的依赖。 更便于复用 测试数据参数化,并支持分组和动态赋值; 测试用例组件化,并支持灵活、自动装配; 更简化运行 降低测试脚本、测试环境的获取及维护成本。 此处填写密级标识 Copyright 2011 by Neusoft Corporation. All rights reserved.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/环境 > 装饰装潢


经营许可证编号:宁ICP备18001539号-1