ImageVerifierCode 换一换
格式:DOCX , 页数:71 ,大小:920.66KB ,
资源ID:11796992      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11796992.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(VS测试功能之旅编码的UI测试.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

VS测试功能之旅编码的UI测试.docx

1、VS测试功能之旅编码的UI测试VS2010测试功能之旅:编码的UI测试(1)VS2010测试功能之旅编码的UI测试系列之一RealZhao,2011年2月14日前言研究VS2010的自动化测试有一段时间了,在研究的过程中,发现网上的VS2010相关的测试资料十分稀少,这给学习带来比较大的困难。幸运的是,自己因为常用QuickTest Professional做自动化测试,并且对.Net代码比较了解,使得在学习的过程中并不是特别困难,对UI CODED TEST也已经有一定了解。本着与大家交流,共同进步的想法,思考之后,决定写这些随笔,来对VS2010的测试功能做一些探索和总结。希望大家能够多多

2、指教!自动化测试自动化测试指软件测试的自动化,软件测试就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。自 动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测 试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。VS2010编码的UI测试,属于自动化测试中的一种,它可测试应用程序的用户界面是否功能正常。 编码的 UI 测试对应用程序的用户界面控件执行操作,并验证是否以正确的值显示了正确的控件。一个简单的示例

3、在上面对于自动化测试的介绍中已经提到,编码的UI测试将对应用程序的用户界面进行操作之后进行验证,对于界面的操作,我们需要预先录制或者直接编写(日后会介绍直接编写的方式),在这个简单的实例中,我们将先使用录制进行操作,录制完毕之后,使用回放功能进行回放(类似于录音机,录制之后再播放)一新建测试项目1. 首先打开VS2010,选择测试新建测试2. 选择编码的UI测试,简历一个UI测试,名称为CodedUITest1.cs3. 创建完成,我们可以看到创建之后,项目的目录结构如下下面做一个简单的介绍Solution Items:存放该解决方案中各个测试项目公用的设置Local.testsetings文

4、件和TraceAndTestImpact.testsettings是对解决方案中的测试进行整体上的设置,这个是建立测试解决方案的时候默认自动建立的两项,一个用于运行,一个用于调试,当然这两项是可以删除的,testsettings类型文件可以通过右击Solution Items的时候点击添加新建项建立TestProject1.vsmdi是用于对项目中创建的测试method进行组织和管理,让其能组织成流程线,一个个进行测试TestProject:我们刚才建立的测试项目,可以看到刚才建立的UI测试CodedUITest1.cs二录制程序并回放1. 假设我们现在有一个程序(这个示例程序在文章末尾有提供

5、地址),现在我们需要对系统登录的部分进行测试,正确的用户名为”Admin”,密码为”123456”测试的内容是:(1).输入错误的用户名或输入错误的密码,检测系统是否提示“用户或密码错误”(2).输入正确的用户名和正确的密码,检测系统是否提示“登录成功”程序的截图如下所示:2. 现在我们可以开始进行录制,将刚才的测试内容录制成实际的操作3. 点击确定之后,可以看到屏幕的右下角弹出一个UI测试生成器,点击录制之后,就可以进行操作了4. 之后首先输入错误的用户名和密码,然后点击登录,之后弹出提示框“用户名和密码错误“5. 这个时候我们可以在录制面板点击暂停录制,然后点击”生成代码“,并将刚才的操作

6、放入方法InputErrorUidPwd中(至于生成后的代码被放在了哪,现在可以先不用关心,最后我会进行说明)6. 这个时候点击录制面板上的准星(这个时候准星已经Enable了),并一直按住鼠标不放,将鼠标拖到刚才的弹出框上面的文字再松开,然后测试生成器的对象库窗口会自动弹出,VS2010将捕获弹出框上的label对象,如下图所示:7. 现在我们要进行第一个验证,就是验证这个弹出框”用户名或密码错误!”是否弹出来了,如果是,则测试通过,如果不是,则失败,接着先前的步棸,首先要确认左边的列表中“UI用户名或者密码错误Text“对象选中,之后选择右边的列表中的Exists属性(该属性表示label

7、是否存在,存在则是True,不存在则是false),点击添加断言 然后弹出为Exists添加断言的窗口,这里我们需要选择AreEqual,比较值是True,表示我们断言”用户名或密码错误”这个label存在,如果运行测试的时候该label确实存在,则该测试步骤是通过的,否则就是失败 之后点击录制面板的生成代码,为刚才添加的断言生成方法AssertErrorWindow()(至于生成后的代码被放在了哪,现在可以先不用关心,最后我会进行说明)8. 然后我们继续开始录制,录制开启后,首先点击“用户名或密码错误“弹出框的确定,然后用上面介绍的同样的方法,输入正确的用户名和密码,判断弹出框是否为”登录成

8、功”,分别添加InputRightUidPwd()操作方法和AssertRightWinow()断言方法,最后便可以录制结束9. 之后我们可以点击运行来进行测试之后VS2010会自动操作刚才演示的程序的登录窗口,然后报告测试结果三如果现在程序发生异常假设现在刚才的示例程序,本来输入错误的用户名或密码,应该弹出提示“用户名或密码错误”,现在因为开发人员一时疏忽,不慎将提示改成了乱码“咪asd阿什顿”,那么是否刚才录制的测试能够把这个测试出来呢?我们现在可以试试(这个错误的示例程序在文章最后也提供下载)开始运行测试最终不负我们所望,错误还是被测试出来了四录制生成的代码被放在了哪里? 首先我们再看看

9、项目的文件结构 可以发现刚才录制之后,VS2010自动生成了UIMap.uitest文件,我们自动生成的代码就放在UIMap.Designer.cs中 进入去查看,可以看到刚才录制为我们自动生成的四个方法InputErrorUidPwd(),AssertErrorWinow(),InputRightUidPwd(),AssertRightWinow(),展开之后可以看到详细操作 而在CodeUITest1.cs文件中,也自动添加了几句代码,调用UIMap中录制的测试操作VS2010测试功能之旅:编码的UI测试(2)-操作动作的录制原理(上)VS2010测试功能之旅编码的UI测试系列之二:操作动

10、作的录制原理(上)RealZhao,2011年2月18日回顾在之前我们介绍了如何用VS2010的UI测试功能创建一个简单的示例,大致描述了如何使用编码的UI测试进行录制和回放,在这章会着重描述VS2010是如何录制操作,并且生成代码,以及初步介绍如何通过自己写代码的方式进行测试。内容简介在上一章我们已经介绍过,建立一个编码的UI测试CodedUITest1.cs,录制完成之后,会自动生成一个UIMap1.uitest文件图1:录制完成后自动生成的UIMap1.uitest文件事实上,在录制过程中起着关键作用的并非是CodedUITest1.cs,而是UIMap1.uitest,在录制过程中的所

11、有代码都是生成在UIMap1.uitest,所有对于界面的操作,测试的判断也是在UIMap1.uitest文件完成,CodedUITest1.cs仅仅只是调用UIMap1.uitest中的方法(换言之只是个躯壳,编码的UI测试的灵魂还是在UIMap1.uitest)明白此点之后,接下来我们只需着重研究研究UIMap1.uitest即可,看看他是如何录制并生成代码的注:这一章的内容可能较之第一章比较难,在阅读的时候可尽量使用VS2010进行操作,便于理解。由于本章内容较长,分为两个部分,上部分介绍原理,下部分介绍通过修改UIMap1.uitest控制操作步骤代码的生成,预计在周六或者周日发出UI

12、Map的录制与生成首先我们新建一个测试项目图2:新建项目建成之后,(可以看到系统自动默认生成了一个UnitTest.cs,我们可以先将它删除),右击该项目,选择添加添加新项(注意,不是添加测试,是添加新项),在新项中选择Coded UI Test Map(编码的UI测试映射)图3:添加编码的UI测试映射现在我们建立了一个UIMap1.uitest(可以看到这个UIMap1.uitest还没有生成UIMap1.cs和UIMap1.Designer.cs)图4:UIMap1.uitest可以双击打开UIMap1.uitest,文件里面没有什么特殊的内容UITest xmlns:xsi=http:/

13、www.w3.org/2001/XMLSchema-instance xmlns:xsd=http:/www.w3.org/2001/XMLSchema Name= Id=3efe829a-76df-439e-af0d-8d5c62727a1e AssemblyVersion=10.0.21008.0 Version=1.0 xmlns=右击该UIMap1.uitest,选则Edit With Coded UI Test Builder(使用编码的UI测试生成器进行编辑),接下来会弹出录制操作用的生成器图5:Edit With Coded UI Test Builder我们还是按照上一章中使用

14、的示例程序和操作步骤进行录制四个方法InputErrorUidPwd()、AssertErrorWinow()、InputRightUidPwd()、AssertRightWinow(),(可再添加一个方法CloseWindow(),关闭这个示例程序,上一章没有提到)操作完毕之后,生成代码,我们可以看到UIMap1.cs和UIMap1.Designer.cs已经自动生成,而实际有生成代码的文件为UIMap1.uitest和UIMap1.Designer.cs,UIMap1.cs则为空现在可以一个个进去看看生成的代码(注:由于录制过程中的操作步骤每个人都可能有细微差别,例如点击坐标,这里我录的示

15、例和大家实验的时候自己录的可能存在一些区别,你懂的)首先是UIMap1.uitest,大家可以看到这里的代码实在是多得看不清,如果觉得阅读比较困难,可以跳过此段,先看看解释说明,然后再回来看UIMap.uitest 其实UIMap1.uitest这个XML的文件结构如下 这里做一个简单的说明:Configuration:是对环境进行一个描述和配置,对测试几乎没有影响,可以忽略InitializeActions,ExecuteActions,CleanupActions,OnErrorAction:其中InitializeActions指初始化需要执行的操作,ExecuteActions指测试过

16、程中的操作(目前我们所通过录制所生成的操作都默认放在ExecuteActions,大家现在可以回过去仔细看看ExecuteActions节点的内容),CleanupActions指测试完毕需要清理资源的Actions,而OnErrorAction则指代异常处理Actions Maps:是我们需要关注的对象库,我们操作过程中所识别的所有控件都是会存放到这里的,对象识别我会在第三章的时候提及ValueMap:是值映射,类似于参数记载,实际功能也不是特别大在这些节点中,真正起到实际作用的是Actions和Maps之后我们再来查看UIMap1.Designer.cs,同样,觉得会看晕的可直接跳过,之后

17、回来再看UIMap1.Designer.cs UIMap1.Designer.cs这个文件结构如下图6:UIMap1.Designer.cs我们可以用UIMap1.uitest上的内容和UIMap1.Designer.cs上的内容做个对比,可以明显的发现他们之间有一定的对应性,那么疑问就产生了,我们在录制的时候,究竟先生成UIMap1.uitest还是UIMap1.Designer.cs?在对界面操作的代码中,他们哪个起作用?为了说明这个,就得提到编码的UI测试操作步骤的录制原理,这里会按步骤说明:() 首先我们打开了录制生成器() 使用录制生成器录制操作,对于每一个操作动作,录制生成器会根据

18、你所进行的操作,解析被操作的对象(控件),并分析操作动作,并将对象(控件)的关键标识属性和操作动作按录制顺序存放在内存中() 停止录制() 点击“生成代码”按钮,录制生成器会读取之前放在内存中的对象(控件)的关键标识属性和操作动作按XML的形式存放在UIMap1.uitest里() 之后代码生成器通过解析UIMap1.uitest,再生成UIMap1.Designer.cs然后进行回放的时候,真正在起作用其实的是UIMap1.Designer.cs,UIMap1.uitest的作用仅仅是用于生成UIMap1.Designer.cs我想介绍到这里很多曾经使用过VS2010编码UI测试的朋友应该明

19、白了,为什么自己在UIMap1.Designer.cs添加或者删除的代码,在打开录制生成器之后,重新点击“生成代码”,之前的修改就消失了,原因就是因为UIMap1.Designer.cs里面的代码是根据UIMap1.uitest生成的因此,如果要想编写自定义代码,可以通过两种途径(1)通过修改UIMap1.uitest来控制UIMap1.Designer.cs代码的生成(2)将代码写到非UIMap1.Designer.cs文件的其他地方在本章的第二部分,将介绍如何通过修改UIMap1.uitest来控制UIMap1.Designer.cs代码的生成,预计可能在本周六或者周日发布,敬请关注PS:

20、如何调用UIMap1.Designer.cs中的方法,这个时候可以新建一个CodedUItest.cs,取消录制,写一个这样的调用即可 TestMethod public void CodedUITestMethod1() UIMap1Classes.UIMap1 uimap1 = new UIMap1Classes.UIMap1(); uimap1.InputErrorUidPwd(); uimap1.AssertErrorWinow(); uimap1.InputRightUidPwd(); uimap1.AssertRightWinow(); uimap1.CloseWindow();

21、VS2010测试功能之旅:编码的UI测试(2)-操作动作的录制原理(下)VS2010测试功能之旅编码的UI测试系列之二:操作动作的录制原理(下)RealZhao,2011年2月23日回顾在本章上部分介绍了操作动作的录制原理,描述了操作动作是如何录制,UIMap.uitest和UIMap.Designer.cs的代码如何生成,以及他们的结构。在这个部分,将着重说明如何通过修改UIMap1.uitest文件的操作动作部分的代码来控制UIMap1.Designer.cs操作动作部分代码的生成,实现第一种方式的自定义编码。内容简介在上个部分,已经说明了UIMap.uitest文件的结构如下其中Init

22、ializeActions,ExecuteActions,CleanupActions,OnErrorAction都是对于操作动作的描述:InitializeActions:指初始化需要执行的操作动作ExecuteActions:指测试过程中的操作动作(通过录制所生成的操作都默认放在ExecuteActions)CleanupActions:指测试完毕需要清理资源的操作动作OnErrorAction:指代异常处理的操作动作他们都对UIMap1.Designer.cs操作动作部分代码的生成和参数的生成有直接的影响。严格的说,放在InitializeActions下的操作动作和放在ExecuteA

23、ctions,CleanupActions,OnErrorAction的动作没有任何本质上的区别,仅仅只是从一个代码可读性上的考虑编码的UI测试所支持的Actions如果我们仔细观察过ExecuteActions录制所生成的代码,可以发现有一个共同特点,ExecuteActions的子节点都是以结尾形式的标签,那么编码的UI测试一共支持多少种的Action呢?这里我整理了一个列表,简单的介绍了测试所支持的Action和功能简介类说明AggregatedAction 为可以完成几种任务中任何一种的所有操作提供基类。 AssertAction 表示要包含在测试中其他两个操作之间的断言。 Brows

24、erAction 表示可以完成几种浏览器任务中的任何一种的测试操作。 DelayAction 指定执行用户界面 (UI) 测试中的后续操作后的时间延迟。 DragAction 表示鼠标拖动操作。 DragDropAction 表示鼠标拖放操作。 ErrorAction 表示一个操作,测试记录器使用该操作报告它无法记录某一操作。 InputAction 表示所有基于文本的操作的基类。 KeyboardAction 表示单个的键盘用户操作。 LaunchApplicationAction 表示启动一个应用程序的 UI 测试操作。 MarkerAction 提供一种在操作序列中插入标记而不会在播放过

25、程中导致任何操作的方法。 MouseAction 表示关于鼠标操作的信息。 NavigateToUrlAction 表示移动到某一 URL 的操作。 NoOperationAction 表示不执行任何操作的用户界面 (UI) 测试操作。 RemoveKeysAction 提供有关聚合测试操作声明,从测试结果中移除此操作及之前的所有匹配键操作。 SendKeysAction 表示发送文本或键数组的测试操作。 SetBaseAction 为设置值或设置状态的测试操作提供基类。 SetStateAction 表示一个设置关联元素状态的测试操作。 SetValueAction 表示用于设置值的测试操作

26、。 SharedStepsReferenceAction 为当前测试提供对一组共享步骤的引用。 StringAssertAction 表示一个字符串断言。 TestStepMarkerAction 表示测试操作序列中的一个标记,将记录该标记,但播放框架不使用该标记。 UITestAction 为用于用户界面 (UI) 测试的测试操作提供基类。 ValidationAction 表示一个验证属性值的操作。 VerifyConfigurationAction 表示一个验证配置的操作。 WarningAction 表示一个操作,UI 记录器使用该操作报告它无法正确录制某一操作。 WebDialogA

27、ction 表示一个报告 Web 对话框的操作。 在这里将抽取几个主要的ACTION进行介绍.通过编写UIMap.uitest文件控制UIMap.designer.cs代码的生成1.首先我们还是通过添加新项的方式建立一个新的Coded UI Test Map(编码的UI测试映射)2.之后,直接进入UIMap1.uitest文件,可以发现代码如下123UITestxmlns:xsi=http:/www.w3.org/2001/XMLSchema-instancexmlns:xsd=http:/www.w3.org/2001/XMLSchemaName=Id=3efe829a-76df-439e-

28、af0d-8d5c62727a1eAssemblyVersion=10.0.21008.0Version=1.0xmlns=45673. 关闭录制生成器(注:一定要先关闭才能修改,以后也是一样),编码初始化代码InitializeActions我们还是先使用第一章提到的示例程序 下载点我假设现在如果要操作它,首先需要将其打开,在之前已经简单介绍过编码的UI测试支持的Action,可以把打开这个程序的操作作为InitializeActions(初始化操作)的一员,并为其生成一个方法,那么按照这个思路,在参照前面的Actions列表,可以发现需要两个Actiona. LaunchApplicationAction 打开应用程序b. TestStepMarkerAction 为该步骤生成一个方法现在我们开始编写代码,将其直接插入UITest节点内1234567D:RightDemo

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1