【译】浅谈微软OneNote的自动化测试工具
当我们向人们介绍OneNote的自动化时,有一个问题被相当频繁地提到,担忧我们的自动化框架中UI层面测试偏少。
我不喜欢基于UI的自动化。我知道在市场上有许多的自动化系统都是基于UI的自动化(点击按钮以及类似的),甚至在我们自己的办公室中,我们也有几个相似功能的工具在维护。我了解这些工具的优势,因为它们让自动化更准确地模拟真实用户的行为。但在这种自动化运行时,我总觉得似乎太不可靠 - 有可能是一个窗口突然冒出来再干扰到焦点;有一些工具自身的缺陷,会导致Windows消息丢失。你可以想像每天都有成千上万的测试运行,自动化系统的间歇性缺陷所造成“烦人”的失败,会使我们依赖的自动化系统不再可靠。此外,这些工具都需要考虑时间因素 - 可以执行测试之前,整个UI都需要重新渲染。如果测试的目的是为了验证一些并不需要UI正常工作的场景(文件IO或同步就是和很好的例子),甚至不需要UI 。
所以我们在OneNote中大致是这么做的:
- 启动OneNote
- 加载onmain.dll到内存中
- 加载我们的测试系统 / 工具(Load our test harness)
- 我们的测试工具通过.NET的反射加载onmain.dll,并引用方法(reference the actions)。说得非常简约,但只能是这种程度的讨论。
- 现在把onmain.dll中所有的方法(the actions within the onmain.dll)都暴露给我们测试工具。
- 最后,我们可以从我们测试工具里调用我们想调用的任何方法。
换句话说,如果我想模拟用户单击"粗体(Bold)"按钮,使文字变成粗体,我并不需要"粗体"按钮是可见的。我就可以调用"粗体"按钮事件(click event),立即运行代码。
这种方式还是有些不足。首先,任何UI测试所覆盖的可能会丢失。例如,假设有一个缺陷 - 粗体按钮一直都是不可用的。我的自动化测试将发现不了这个缺陷。第二,我必须要小心上下文。虽然我可以调用当用户点击粗体按钮后运行的代码,我需要确保在调用之前,让光标放在一个页面上。
但是,因为我们使用这种方式,使得我们的自动化系统变得更加可靠,与此同时当我们测试人员学习使用这套系统之后,我们得到更高的覆盖率。
一往如旧地欢迎各位的问题,意见,疑虑和批评。
John
原文地址:http://blogs.msdn.com/b/johnguin/archive/2013/09/10/a-little-about-our-ui-less-test-harness.aspx
【译】浅谈微软OneNote的自动化测试工具的更多相关文章
- 微软抛弃微软.Net了吗?Net技术的未来在哪里-浅谈微软技术路线
winform:优点是简单易学,缺点是界面做不好看,界面适应能力很差. wpf:微软结合了显卡渲染技术推出的界面设计方式,模仿html推出了自己的xaml,winform能实现的wpf都能实现,因为w ...
- 浅谈前端常用脚手架cli工具及案例
前端常用脚手架工具 前端有很多特定的脚手架工具大多都是为了特定的项目类型服务的,比如react项目中的reate-react-app,vue项目中的vue-cli,angular 项目中的angula ...
- 老李分享:android app自动化测试工具合集
老李分享:android app自动化测试工具合集 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨 ...
- 【转载】浅谈游戏开发之2D手游工具
浅谈游戏开发之2D手游工具 来源:http://www.gameres.com/459713.html 游戏程序 平台类型: iOS Android 程序设计: 其它 编程语言: 引擎/SDK ...
- 浅谈OCR之Onenote 2010
原文:浅谈OCR之Onenote 2010 上一次我们讨论了Tesseract OCR引擎的用法,作为一款老牌的OCR引擎,目前已经开源,最新版本3.0中更是加入了中文OCR功能,再加上Google的 ...
- [原创]浅谈Web UI自动化测试
[原创]浅谈Web UI自动化测试 Web UI自动化测试相信大家都不陌生,今天来谈谈这个,我最早接触自动化测试时大约是在2004年,2006年当时在腾讯财付通算是开始正式接触自动化测试,之所以是正式 ...
- 【转】.NET(C#):浅谈程序集清单资源和RESX资源 关于单元测试的思考--Asp.Net Core单元测试最佳实践 封装自己的dapper lambda扩展-设计篇 编写自己的dapper lambda扩展-使用篇 正确理解CAP定理 Quartz.NET的使用(附源码) 整理自己的.net工具库 GC的前世与今生 Visual Studio Package 插件开发之自动生
[转].NET(C#):浅谈程序集清单资源和RESX资源 目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceM ...
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...
- Linux的文本处理工具浅谈-awk sed grep
Linux的文本处理工具浅谈 awk 老大 [功能说明] 用于文本处理的语言(取行,过滤),支持正则 NR代表行数,$n取某一列,$NF最后一列 NR==20,NR==30 从20行到30行 FS ...
随机推荐
- (转载)iscroll.js的使用
入门 Scroll是一个类,每个需要使用滚动功能的区域均要进行初始化.每个页面上的iScroll实例数目在设备的CPU和内存能承受的范围内是没有限制的. 尽可能保持DOM结构的简洁.iScroll使用 ...
- Handle 消息机制
android中Handle类的主要作用: 1.在新启动的线程中发送给消息 2.在主线程获取.处理消息 为什么要用Handle这样的一个机制: 因为在Android系统中UI操作并不是线程安全的,如果 ...
- [LeetCode]题解(python):004-Median of Two Sorted Arrays
题目来源: https://leetcode.com/problems/median-of-two-sorted-arrays/ 题意分析: 这道题目是输入两个已经排好序的数组(长度为m,n),将这两 ...
- 打造完美的go开发环境
这篇原来是给公司里使用go开发的交流用的,主要是工具的安装,用markdown写的,发布了内部gitlab上,仓促发布到blog上面,也没改啥格式,现在整理一下,然后增加一点说明 基础开发工具 sub ...
- Oracle EBS-SQL (PO-7):检查异常-非批准的供应商设置供货比例.sql
select distinct msr.sourcing_rule_name 名称,msi.description 说明,msi ...
- JS中如何使用Cookie
1.关于JS设置Cookie的说明 在Javascript脚本里,一个cookie 实际就是一个字符串属性.当你读取cookie的值时,就得到一个字符串,里面当前WEB页使用的所有cookies的名称 ...
- CSS左中右布局,规范案例
html部分 <body> <form id="form1" runat="server"> <div id="wrap ...
- LDA(latent dirichlet allocation)
1.LDA介绍 LDA假设生成一份文档的步骤如下: 模型表示: 单词w:词典的长度为v,则单词为长度为v的,只有一个分量是1,其他分量为0的向量 $(0,0,...,0,1,0,... ...
- Python学习入门基础教程(learning Python)--8.3 字典常用的方法函数介绍
本节的主要讨论内容是有关dict字典的一些常用的方法函数的使用和范例展示. 1. clear清除字典数据 语法结构如下: dict_obj.clear() 示例代码如下: dict1 = {'web' ...
- 当PullToRefreshScrollView里面嵌套ListView
当PullToRefreshScrollView里面嵌套ListView,ListView上面还是有内容的,当下拉刷新的 时候,数据填充完成之后ListView就会往上面滑动,导致ListView上面 ...