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

上传人:b****3 文档编号:8117437 上传时间:2023-05-10 格式:DOCX 页数:71 大小:920.66KB
下载 相关 举报
VS测试功能之旅编码的UI测试Word格式.docx_第1页
第1页 / 共71页
VS测试功能之旅编码的UI测试Word格式.docx_第2页
第2页 / 共71页
VS测试功能之旅编码的UI测试Word格式.docx_第3页
第3页 / 共71页
VS测试功能之旅编码的UI测试Word格式.docx_第4页
第4页 / 共71页
VS测试功能之旅编码的UI测试Word格式.docx_第5页
第5页 / 共71页
VS测试功能之旅编码的UI测试Word格式.docx_第6页
第6页 / 共71页
VS测试功能之旅编码的UI测试Word格式.docx_第7页
第7页 / 共71页
VS测试功能之旅编码的UI测试Word格式.docx_第8页
第8页 / 共71页
VS测试功能之旅编码的UI测试Word格式.docx_第9页
第9页 / 共71页
VS测试功能之旅编码的UI测试Word格式.docx_第10页
第10页 / 共71页
VS测试功能之旅编码的UI测试Word格式.docx_第11页
第11页 / 共71页
VS测试功能之旅编码的UI测试Word格式.docx_第12页
第12页 / 共71页
VS测试功能之旅编码的UI测试Word格式.docx_第13页
第13页 / 共71页
VS测试功能之旅编码的UI测试Word格式.docx_第14页
第14页 / 共71页
VS测试功能之旅编码的UI测试Word格式.docx_第15页
第15页 / 共71页
VS测试功能之旅编码的UI测试Word格式.docx_第16页
第16页 / 共71页
VS测试功能之旅编码的UI测试Word格式.docx_第17页
第17页 / 共71页
VS测试功能之旅编码的UI测试Word格式.docx_第18页
第18页 / 共71页
VS测试功能之旅编码的UI测试Word格式.docx_第19页
第19页 / 共71页
VS测试功能之旅编码的UI测试Word格式.docx_第20页
第20页 / 共71页
亲,该文档总共71页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

《VS测试功能之旅编码的UI测试Word格式.docx》由会员分享,可在线阅读,更多相关《VS测试功能之旅编码的UI测试Word格式.docx(71页珍藏版)》请在冰点文库上搜索。

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

存放该解决方案中各个测试项目公用的设置

Local.testsetings文件和TraceAndTestImpact.testsettings是对解决方案中的测试进行整体上的设置,这个是建立测试解决方案的时候默认自动建立的两项,一个用于运行,一个用于调试,当然这两项是可以删除的,testsettings类型文件可以通过右击SolutionItems的时候点击添加新建项建立

TestProject1.vsmdi是用于对项目中创建的测试method进行组织和管理,让其能组织成流程线,一个个进行测试

TestProject:

我们刚才建立的测试项目,可以看到刚才建立的UI测试CodedUITest1.cs

二.录制程序并回放

假设我们现在有一个程序(这个示例程序在文章末尾有提供地址),现在我们需要对系统登录的部分进行测试,正确的用户名为”Admin”,密码为”123456”

测试的内容是:

(1).输入错误的用户名或输入错误的密码,检测系统是否提示“用户或密码错误”

(2).输入正确的用户名和正确的密码,检测系统是否提示“登录成功”

程序的截图如下所示:

现在我们可以开始进行录制,将刚才的测试内容录制成实际的操作

点击确定之后,可以看到屏幕的右下角弹出一个UI测试生成器,点击录制之后,就可以进行操作了

4. 

之后首先输入错误的用户名和密码,然后点击登录,之后弹出提示框“用户名和密码错误“

5. 

这个时候我们可以在录制面板点击暂停录制,然后点击”生成代码“,并将刚才的操作放入方法InputErrorUidPwd中(至于生成后的代码被放在了哪,现在可以先不用关心,最后我会进行说明)

6. 

这个时候点击录制面板上的准星(这个时候准星已经Enable了),并一直按住鼠标不放,将鼠标拖到刚才的弹出框上面的文字再松开,然后测试生成器的对象库窗口会自动弹出,VS2010将捕获弹出框上的label对象,如下图所示:

7. 

现在我们要进行第一个验证,就是验证这个弹出框”用户名或密码错误!

”是否弹出来了,如果是,则测试通过,如果不是,则失败,接着先前的步棸,首先要确认左边的列表中“UI用户名或者密码错误Text“对象选中,之后选择右边的列表中的Exists属性(该属性表示label是否存在,存在则是True,不存在则是false),点击添加断言

然后弹出为Exists添加断言的窗口,这里我们需要选择AreEqual,比较值是True,表示我们断言”用户名或密码错误”这个label存在,如果运行测试的时候该label确实存在,则该测试步骤是通过的,否则就是失败

之后点击录制面板的生成代码,为刚才添加的断言生成方法AssertErrorWindow()(至于生成后的代码被放在了哪,现在可以先不用关心,最后我会进行说明)

8. 

然后我们继续开始录制,录制开启后,首先点击“用户名或密码错误“弹出框的确定,然后用上面介绍的同样的方法,输入正确的用户名和密码,判断弹出框是否为”登录成功”,分别添加InputRightUidPwd()操作方法和AssertRightWinow()断言方法,最后便可以录制结束

9. 

之后我们可以点击运行来进行测试

之后VS2010会自动操作刚才演示的程序的登录窗口,然后报告测试结果

三.如果现在程序发生异常

假设现在刚才的示例程序,本来输入错误的用户名或密码,应该弹出提示“用户名或密码错误”,现在因为开发人员一时疏忽,不慎将提示改成了乱码“咪asd阿什顿”,那么是否刚才录制的测试能够把这个测试出来呢?

我们现在可以试试(这个错误的示例程序在文章最后也提供下载)

开始运行测试

最终不负我们所望,错误还是被测试出来了

四.录制生成的代码被放在了哪里?

首先我们再看看项目的文件结构

可以发现刚才录制之后,VS2010自动生成了UIMap.uitest文件,我们自动生成的代码就放在UIMap.Designer.cs中

进入去查看,可以看到刚才录制为我们自动生成的四个方法InputErrorUidPwd(),AssertErrorWinow(),InputRightUidPwd(),AssertRightWinow(),展开之后可以看到详细操作

而在CodeUITest1.cs文件中,也自动添加了几句代码,调用UIMap中录制的测试操作

编码的UI测试

(2)-操作动作的录制原理(上)

VS2010测试功能之旅

——编码的UI测试系列之二:

操作动作的录制原理(上)

RealZhao,2011年2月18日

回顾

在之前我们介绍了如何用VS2010的UI测试功能创建一个简单的示例,大致描述了如何使用编码的UI测试进行录制和回放,在这章会着重描述VS2010是如何录制操作,并且生成代码,以及初步介绍如何通过自己写代码的方式进行测试。

内容简介

在上一章我们已经介绍过,建立一个编码的UI测试CodedUITest1.cs,录制完成之后,会自动生成一个UIMap1.uitest文件

图1:

录制完成后自动生成的UIMap1.uitest文件

事实上,在录制过程中起着关键作用的并非是CodedUITest1.cs,而是UIMap1.uitest,在录制过程中的所有代码都是生成在UIMap1.uitest,所有对于界面的操作,测试的判断也是在UIMap1.uitest文件完成,CodedUITest1.cs仅仅只是调用UIMap1.uitest中的方法(换言之只是个躯壳,编码的UI测试的灵魂还是在UIMap1.uitest)

明白此点之后,接下来我们只需着重研究研究UIMap1.uitest即可,看看他是如何录制并生成代码的

注:

这一章的内容可能较之第一章比较难,在阅读的时候可尽量使用VS2010进行操作,便于理解。

由于本章内容较长,分为两个部分,上部分介绍原理,下部分介绍通过修改UIMap1.uitest控制操作步骤代码的生成,预计在周六或者周日发出

UIMap的录制与生成

首先我们新建一个测试项目

图2:

新建项目

建成之后,(可以看到系统自动默认生成了一个UnitTest.cs,我们可以先将它删除),右击该项目,选择添加添加新项(注意,不是添加测试,是添加新项),在新项中选择CodedUITestMap(编码的UI测试映射)

图3:

添加编码的UI测试映射

现在我们建立了一个UIMap1.uitest(可以看到这个UIMap1.uitest还没有生成UIMap1.cs和UIMap1.Designer.cs)

图4:

UIMap1.uitest

可以双击打开UIMap1.uitest,文件里面没有什么特殊的内容

<

?

xmlversion="

1.0"

>

UITestxmlns:

xsi="

http:

//www.w3.org/2001/XMLSchema-instance"

xmlns:

xsd="

//www.w3.org/2001/XMLSchema"

Name="

"

Id="

3efe829a-76df-439e-af0d-8d5c62727a1e"

AssemblyVersion="

10.0.21008.0"

Version="

xmlns="

/UITest>

右击该UIMap1.uitest,选则EditWithCodedUITestBuilder(使用编码的UI测试生成器进行编辑),接下来会弹出录制操作用的生成器

图5:

EditWithCodedUITestBuilder

我们还是按照上一章中使用的示例程序和操作步骤进行录制四个方法InputErrorUidPwd()、AssertErrorWinow()、InputRightUidPwd()、AssertRightWinow(),(可再添加一个方法CloseWindow(),关闭这个示例程序,上一章没有提到)操作完毕之后,生成代码,我们可以看到UIMap1.cs和UIMap1.Designer.cs已经自动生成,而实际有生成代码的文件为UIMap1.uitest和UIMap1.Designer.cs,UIMap1.cs则为空

现在可以一个个进去看看生成的代码(注:

由于录制过程中的操作步骤每个人都可能有细微差别,例如点击坐标,这里我录的示例和大家实验的时候自己录的可能存在一些区别,你懂的)

首先是UIMap1.uitest,大家可以看到这里的代码实在是多得看不清,如果觉得阅读比较困难,可以跳过此段,先看看解释说明,然后再回来看

UIMap.uitest

其实UIMap1.uitest这个XML的文件结构如下

UITest>

  <

Configuration>

…<

/Configuration>

InitializeActions>

…<

/InitializeActions>

ExecuteActions>

/ExecuteActions>

CleanupActions>

/CleanupActions>

OnErrorActions>

/OnErrorActions>

Maps>

/Maps>

ValueMap>

/ValueMap>

这里做一个简单的说明:

Configuration:

是对环境进行一个描述和配置,对测试几乎没有影响,可以忽略

InitializeActions,ExecuteActions,CleanupActions,OnErrorAction:

其中InitializeActions指初始化需要执行的操作,ExecuteActions指测试过程中的操作(目前我们所通过录制所生成的操作都默认放在ExecuteActions,大家现在可以回过去仔细看看ExecuteActions节点的内容),CleanupActions指测试完毕需要清理资源的Actions,而OnErrorAction则指代异常处理Actions

Maps:

是我们需要关注的对象库,我们操作过程中所识别的所有控件都是会存放到这里的,对象识别我会在第三章的时候提及

ValueMap:

是值映射,类似于参数记载,实际功能也不是特别大

在这些节点中,真正起到实际作用的是Actions和Maps

之后我们再来查看UIMap1.Designer.cs,同样,觉得会看晕的可直接跳过,之后回来再看

UIMap1.Designer.cs

UIMap1.Designer.cs这个文件结构如下

图6:

UIMap1.Designer.cs

我们可以用UIMap1.uitest上的内容和UIMap1.Designer.cs上的内容做个对比,可以明显的发现他们之间有一定的对应性,那么疑问就产生了,我们在录制的时候,究竟先生成UIMap1.uitest还是UIMap1.Designer.cs?

在对界面操作的代码中,他们哪个起作用?

为了说明这个,就得提到编码的UI测试操作步骤的录制原理,这里会按步骤说明:

(1) 

首先我们打开了录制生成器

(2) 

使用录制生成器录制操作,对于每一个操作动作,录制生成器会根据你所进行的操作,解析被操作的对象(控件),并分析操作动作,并将对象(控件)的关键标识属性和操作动作按录制顺序存放在内存中

(3) 

停止录制

(4) 

点击“生成代码”按钮,录制生成器会读取之前放在内存中的对象(控件)的关键标识属性和操作动作按XML的形式存放在UIMap1.uitest里

(5) 

之后代码生成器通过解析UIMap1.uitest,再生成UIMap1.Designer.cs

然后进行回放的时候,真正在起作用其实的是UIMap1.Designer.cs,UIMap1.uitest的作用仅仅是用于生成UIMap1.Designer.cs

我想介绍到这里很多曾经使用过VS2010编码UI测试的朋友应该明白了,为什么自己在UIMap1.Designer.cs添加或者删除的代码,在打开录制生成器之后,重新点击“生成代码”,之前的修改就消失了,原因就是因为UIMap1.Designer.cs里面的代码是根据UIMap1.uitest生成的

因此,如果要想编写自定义代码,可以通过两种途径

(1)通过修改UIMap1.uitest来控制UIMap1.Designer.cs代码的生成

(2)将代码写到非UIMap1.Designer.cs文件的其他地方

在本章的第二部分,将介绍如何通过修改UIMap1.uitest来控制UIMap1.Designer.cs代码的生成,预计可能在本周六或者周日发布,敬请关注~

PS:

如何调用UIMap1.Designer.cs中的方法,这个时候可以新建一个CodedUItest.cs,取消录制,写一个这样的调用即可

[TestMethod]

publicvoidCodedUITestMethod1()

{

UIMap1Classes.UIMap1uimap1=newUIMap1Classes.UIMap1();

uimap1.InputErrorUidPwd();

uimap1.AssertErrorWinow();

uimap1.InputRightUidPwd();

uimap1.AssertRightWinow();

uimap1.CloseWindow();

}

编码的UI测试

(2)-操作动作的录制原理(下)

操作动作的录制原理(下)

RealZhao,2011年2月23日

在本章上部分介绍了操作动作的录制原理,描述了操作动作是如何录制,UIMap.uitest和UIMap.Designer.cs的代码如何生成,以及他们的结构。

在这个部分,将着重说明如何通过修改UIMap1.uitest文件的操作动作部分的代码来控制UIMap1.Designer.cs操作动作部分代码的生成,实现第一种方式的自定义编码。

在上个部分,已经说明了UIMap.uitest文件的结构如下

其中InitializeActions,ExecuteActions,CleanupActions,OnErrorAction都是对于操作动作的描述:

InitializeActions:

指初始化需要执行的操作动作

ExecuteActions:

指测试过程中的操作动作(通过录制所生成的操作都默认放在ExecuteActions)

CleanupActions:

指测试完毕需要清理资源的操作动作

OnErrorAction:

指代异常处理的操作动作

他们都对UIMap1.Designer.cs操作动作部分代码的生成和参数的生成有直接的影响。

严格的说,放在InitializeActions下的操作动作和放在ExecuteActions,CleanupActions,OnErrorAction的动作没有任何本质上的区别,仅仅只是从一个代码可读性上的考虑

编码的UI测试所支持的Actions

如果我们仔细观察过ExecuteActions录制所生成的代码,可以发现有一个共同特点,ExecuteActions的子节点都是以<

Action>

结尾形式的标签,那么编码的UI测试一共支持多少种的Action呢?

这里我整理了一个列表,简单的介绍了测试所支持的Action和功能简介

说明

AggregatedAction

为可以完成几种任务中任何一种的所有操作提供基类。

AssertAction

表示要包含在测试中其他两个操作之间的断言。

BrowserAction

表示可以完成几种浏览器任务中的任何一种的测试操作。

DelayAction

指定执行用户界面(UI)测试中的后续操作后的时间延迟。

DragAction

表示鼠标拖动操作。

DragDropAction

表示鼠标拖放操作。

ErrorAction

表示一个操作,测试记录器使用该操作报告它无法记录某一操作。

InputAction

表示所有基于文本的操作的基类。

KeyboardAction

表示单个的键盘用户操作。

LaunchApplicationAction

表示启动一个应用程序的UI测试操作。

MarkerAction

提供一种在操作序列中插入标记而不会在播放过程中导致任何操作的方法。

MouseAction

表示关于鼠标操作的信息。

NavigateToUrlAction

表示移动到某一URL的操作。

NoOperationAction

表示不执行任何操作的用户界面(UI)测试操作。

RemoveKeysAction

提供有关聚合测试操作声明,从测试结果中移除此操作及之前的所有匹配键操作。

SendKeysAction

表示发送文本或键数组的测试操作。

SetBaseAction

为设置值或设置状态的测试操作提供基类。

SetStateAction

表示一个设置关联元素状态的测试操作。

SetValueAction

表示用于设置值的测试操作。

SharedStepsReferenceAction

为当前测试提供对一组共享步骤的引用。

StringAssertAction

表示一个字符串断言。

TestStepMarkerAction

表示测试操作序列中的一个标记,将记录该标记,但播放框架不使用该标记。

UITestAction

为用于用户界面(UI)测试的测试操作提供基类。

ValidationAction

表示一个验证属性值的操作。

VerifyConfigurationAction

表示一个验证配置的操作。

WarningAction

表示一个操作,UI记录器使用该操作报告它无法正确录制某一操作。

WebDialogAction

表示一个报告Web对话框的操作。

在这里将抽取几个主要的ACTION进行介绍.

通过编写UIMap.uitest文件控制UIMap.designer.cs代码的生成

1.首先我们还是通过添加新项的方式建立一个新的CodedUITestMap(编码的UI测试映射)

2.之后,直接进入UIMap1.uitest文件,可以发现代码如下

xml 

version="

UITest 

xmlns:

Name="

Id="

AssemblyVersion="

Version="

xmlns="

3.关闭录制生成器(注:

一定要先关闭才能修改,以后也是一样),编码初始化代码InitializeActions

我们还是先使用第一章提到的示例程序下载点我

假设现在如果要操作它,首先需要将其打开,在之前已经简单介绍过编码的UI测试支持的Action,可以把打开这个程序的操作作为InitializeActions(初始化操作)的一员,并为其生成一个方法,那么按照这个思路,在参照前面的Actions列表,可以发现需要两个Action

a. 

LaunchApplicationAction打开应用程序

b. 

TestStepMarkerAction为该步骤生成一个方法

现在我们开始编写代码,将其直接插入UITest节点内

!

—打开示例文件,文件路径按实际情况填写-->

LaunchApplicationAction>

FileName>

D:

\RightDemo

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2