【译】浅谈微软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 ...
随机推荐
- Facebook发布C++ HTTP框架Proxygen
Facebook 宣布发布C++ HTTP 框架 Proxygen,其中包括了一个 HTTP server.Proxygen 是 oxygen 的谐音,支持 SPDY/3 和 SPDY/3.1,未来还 ...
- 更改linux系统提示信息
一个好的习惯会让人终生受益,当然我们做运维也是如此,比如我们在前期维护系统时修改或者删除掉/etc/issue /etc/issue.net这两个文件. 修改和删除的目的是屏蔽系统版本信息,这样是为了 ...
- JavaScript计算加减乘除
//加法函数 function jiafa(a,b){ var a=parseInt(document.getElementById("number1").value); //pa ...
- 使用PDO执行SQL语句exec()、query()
在PHP脚本中,通过PDO执行SQL查询与数据库进行交互,可以分为三种不同的策略,使用哪一种方法取决于你要做什么操作. 1.使用PDO::exec()方法 当执行INSERT.UPDATE和DELET ...
- 通过读取excel数据和mysql数据库数据做对比(一)-win环境准备
要想操作excel和mysql首先需要安装python,然后是安装excel和mysql插件: 第一步安装python: 直接百度搜索,下载安装就可以了. 第二步安装excel插件: 首先到这个htt ...
- 只有电信3G是公网ip。
只有电信3G是公网ip,其它网络拿到是内部网.
- Linux运维不可不知的性能监控和调试工具
Linux运维不可不知的性能监控和调试工具 1 nagios Nagios是一个开源监控解决方案,我觉得他可以监控一切 ,可以看一下我以前的文章:NAGIOS 2 ps #用来查看程序的运行情况 ps ...
- 【Python】iichats —— 命令行下的局域网聊天程序
转载请声明出处:http://www.cnblogs.com/kevince/p/3941728.html ——By Kevince ii系列工具第三弹,命令行下的局域网聊天程序 原理: 程序启动 ...
- AndroidUI 侧滑菜单 DrawerLayout的使用
直接上代码: activity_main.xml: <android.support.v4.widget.DrawerLayout xmlns:android="http://sche ...
- HealthKit框架参考(转)
来自:http://www.cocoachina.com/ios/20140915/9624.html 本文由CocoaChina翻译组成员 唧唧歪歪(微博) 翻译自苹果官方文档:The Health ...