Silverlight/aspx/ajax/mvc的UI自动化测试

web前端的自动化测试,一般要能实现模拟鼠标点击、键盘录入、浏览器页面自动导航等功能,而且关键的是要对整个测试过程能自动录制并回放。

vs2010的SP2已经集成了内置功能,但是目前尚未正式发布,所以本文就不介绍了。有兴趣的同学可参考以下文章:

http://msdn.microsoft.com/zh-cn/library/gg413374

http://www.cnblogs.com/scottxu/archive/2011/02/28/1967112.html

除了微软自家即将推出的vs2010 sp2之外,不少第三方厂家也推出了相应的解决方案,比如Ranorex(园子里有兄弟写过入门文章:http://www.cnblogs.com/chenkai/archive/2010/09/28/1837457.html

而我要介绍的是telerik的Test Studio,下载地址http://www.telerik.com/automated-testing-tools.aspx 之所以选择它,理由很简单:它实在太容易上手了,不管新手老手,保证5分钟就能上手,而且支持几乎所有前端技术,包括ajax/aspx mvc/silverlight/wpf等.

先来体验一把,普通网站的测试:(拿百度开刀)

下载telerik的Test Studio后,它有二种运行方式,一是单独运行,二是以插件形式集成在vs2010中,为了方便起见,以下采用第二种方式

1、打开vs2010 创建一个Test项目

2、开始录制测试过程

默认情况下,新建的项目已经有一个web Test项,而且会自动打开该项,如下:

点击Record按钮(图中红色圈出的部分),默认会启动浏览器,然后在浏览器地址栏里输入http://www.baidu.com/ ,注意一下vs2010中的变化

已经自动记录下了当前动作: Navigate to :'http://www.baidu.com/'。然后我们在浏览器输入框里输入“菩提树下的杨过”,并点击“百度一下”

可以看到,整个键盘录入过程,以及鼠标点击“百度一下”的动作,已经被记录。关掉浏览器,整个录制过程结束。(是不是想起了那句广告语:哪里不会点哪里,so Easy!)

3、测试回放

点击上图中的“绿色按钮”即可回放刚才的测试过程。

silverlight的UI自动化测试与普通网站的测试几乎完全一样,只是要事先配置silverlight的运行方式和起始页。因为SL有二种运行方式,一是浏览器模式运行,二是OOB模式运行,所以要告诉Test Studio,你想怎么玩。

项目右击-->新建项-->Web Test

文件名键入“SilverlightTest.tstest”(当然你可以随便改),然后打开这个文件,如下图 :

点击上图工具栏中红线圈出的按钮进行配置,这次我们拿silverlight的官网来开刀

解释一下:Web Url即为嵌入有Silverlight的网页地址。点击OK关掉窗口,剩下的事情就跟刚才测试百度完全一样

我在页面的ShowCase动画上随便点几个,记录下的结果如下:

够简单吧,OOB的测试跟这个几乎一样,只是配置的时候指定SL应用的快捷方式路径即可。

注意事项:

在Silverlight的测试中,我发现偶尔会出现Test Studio无法连接到Silverlihgt的情况出现,以下是Telerik工程师给出的调试建议:

Known Issues:
-  Automation only supports XAP Silverlight app deployment (the .NET method). XBAP or Javascript Silverlight deployment is not supported.
- Connecting to the Silverlight App via https in Firefox or Safari is currently not supported.
Diagnostic Steps:
1) If the Web and Silverlight app is deployed locally, try adding a period (‘.’) after localhost, as in http://localhost.:
2) Delete the entire cache for the test playback browser
- In IE select: Tools -> Internet Options -> (Under General Tab) Delete -> Choose to delete Temporary Internet Files
- In  Firefox select: Tools -> Clear Recent History -> Select Everything in ‘Time Range to Clear’ drop down menu -> Choose to delete Cache
- In Safari select: Main ToolBar Drop Down Menu -> Reset Safari… -> Choose to ‘Empty the cache’
3) Try increasing the (Settings.) SilverlightConnectTimeout if the Silverlight app has a longer load time
4) Try setting externalAccessfromCrossDomainCallers to script only in your application's AppManifest.xaml file by doing the following in your html page and Silverlight manifest:
a) Example for html page:

<param value="true" name="enableHtmlAccess"/>
<div id="silverlightControlHost">
<object height="300" width="300" type="application/x-silverlight-2" data="data:application/x-silverlight-2,">
<param value="http://a-remote-domain.com/ClientBin/SilverlightClient.xap" name="source"/>
<param value="white" name="background"/>
<param value="3.0.40723.0" name="minRuntimeVersion"/>
<param value="true" name="enableHtmlAccess"/>
<param value="visOnly=true" name="initParams"/>
<a style="text-decoration: none;" href="http://go.microsoft.com/fwlink/?LinkID=149156">
<img style="border-style: none; width: 400px; height: 200px;" alt="Install Microsoft Silverlight" src="http://storage.timheuer.com/sl4wp-ph.png"/></a></object>
<iframe style="border: 0px none ; visibility: hidden; height: 0pt; width: 0pt;"/></div>

Example for SL Manifest:

  <Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
  2:         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  3:             ExternalCallersFromCrossDomain="ScriptableOnly"
  4: >
  5:     <Deployment.Parts>
  6:     </Deployment.Parts>
  7: </Deployment>

(see this Microsoft forum thread for more information: http://forums.silverlight.net/forums/p/101955/340407.aspx)

4

) Try setting the "windowless" property for your Silverlight app as "false"
Example (similar to Step 3 html example):
<object id="xamlHost0" width="900" height="412" type="application/x-silverlight">
    <param value="transparent" name="background"/>
    <param value="true" name="windowless"/>
    <!-- a bunch of other params go here -->
</object>

5) Check the headers your server is sending for the Silverlight Page by:
- Install/Run Fiddler and load your Silverlight page.
- Click the response for the .xap file.
- Click Inspectors -> Headers.
There should be an entry: Content-Type:application/x-silverlight-app
This must be in the response in order for the WebAii Framework, Design Canvas, or WebUI Test Studio to detect the Silverlight App.

虽然是英文,但是并不复杂,只要对照红色标出部分一般都能解决。

最后,我提供一个小技巧,也有助于解决这个问题,测试Silverlight录制时,如果启动录制后浏览器无法自动跳转到指定的Web Url,可以手动在浏览器里输入网址,一般情况下Test Studio就能识别出当前页面有Silverlight。

时间: 2024-11-15 23:30:24

Silverlight/aspx/ajax/mvc的UI自动化测试的相关文章

谈 Dojo 应用的 UI 自动化测试

本文首先列举了 Dojo 应用 UI 自动化测试所面临的挑战,进而引出设计 Dojo 应用 UI 自动化测试的框架时应考虑的一些原则.对于正从事 Web UI 自动化测试工作的读者(即便所测试的应用不是 Dojo 应用)或者对这方面感兴趣的读者,本文都有一定的参考价值. 随着富 Internet 应用(RIA)的不断兴起,各种 JavaScript 开发工具包的功能也在不断增强,Dojo 正是其中的佼佼者.Dojo 提供了一套完整的开发解决方案,包括核心的 JavaScript 库.简单易用的小

1000分奉上:如何对linux上的Java swing的UI自动化测试

问题描述 前提条件javaswing的app运行在远程的linux上要求:越前面的优先级越高1.是否有现成的工具能对这个app的UI进行自动化测试?2.如果没有现成的工具,我想用java来实现这个功能,请给个思路.3.无论是工具还是自己写程序,都是要通过VNC来对远程linux上的app进行操作.请最好回复到我的邮箱xizhousheng@hotmail.com因为我看网页不方便多谢 解决方案 解决方案二:JUnit可以完成代码的单元测试.配合Ant,或者自定义代码,可以完成JUnit对代码的自

jQuery同步Ajax带来的UI线程阻塞问题及解决办法

遇到了同步Ajax引起的UI线程阻塞问题,在此记录一下. 事情起因是这样的,因为页面上有多个相似的异步请求动作,本着提高代码可重用性的原则,我封装了一个名为getData的函数,它接收不同参数,只负责获取数据,然后把数据return.基本的逻辑剥离出来是这样的: function getData1(){         var result;         $.ajax({             url : "p.php",             async : false,  

求推荐,不用写代码,易操作的UI自动化测试工具

问题描述 求推荐,不用写代码,易操作的UI自动化测试工具 求推荐,不用写代码的,不用搭建框架,易操作,维护成本较低的UI自动化测试工具,除了qtp ,selenium.非常感谢! 解决方案 开发者眼中最好的 22 款 GUI 测试工具 http://www.oschina.net/news/52531/22-gui-testing-tools

利用Ajax和jQuery UI创建具有各种定制功能的高度可定制UI

如今,网站比以往更具17813.html">可定制性,http://www.aliyun.com/zixun/aggregation/18736.html">允许用户更改其空间,根据自己的喜好对其进行个性化.个性化的主页或仪表板页面(例如 iGoogle.MyYahoo! 和 MyAOL)日渐普及,大多数 Web 应用程序内甚至也整合了类似的功能.jQuery 库简化了此类复杂 JavaScript 交互的编写,随着 jQuery UI 的引入,这项功能得到了进一步的简化,

搭建 WPF 上的 UI 自动化测试框架

   OEA 1.0-2.0 框架中,界面都是以 WPF 技术作为基础平台开发的.我们需要对开发出来的系统进行自动化测试,而 .NET 平台的自动化测试平台在公司内部还没有其它部门完成,所以我们在 2010 年的时候使用 Ruby + VS UIUnitTest 开发了一个 UI 自动化(UI Automation,以下简称为UIA)框架,估且称其为 UIA 1.0.UIA 1.0 完全由周金根搭建,相关的内容,大家可以参考他写的这几篇文章: <使用VS2010的CodedUI来做自己的自动化测

小谈UI自动化测试

我发现很多人,包括论坛上的网友,还有很多身边的同事都对UI自动化充满了一些恐惧感,从而不敢触及它.当然也有一定的原因是觉得UI自动化没太深的技术含量,这也是我讨厌UI自动化的唯一原因.但是,一旦让这些人去做UI自动化的话,是很难做好的,因为UI自动化需要一定的经验,而我个人认为一年的经验,一个正规的项目应该都能具备编写良好UI自动化测试的能力.因此,对于后来的人,我想把UI自动化关键的几条再谈一谈,UI自动化确实没什么技术含量,你掌握了以下几点也能成为一个小专家了. 1. 用高级语言编写自动化程

c语言-Silverlight项目笔记1:UI控件与布局、MVVM、数据绑定

问题描述 Silverlight项目笔记1:UI控件与布局.MVVM.数据绑定 Silverlight项目笔记1:UI控件与布局.MVVM.数据绑定.await/async.Linq查询.WCF RIA Services.序列化.委托与事件 最近从技术支持转到开发岗,做Silverlight部分的开发,用的Prism+MVVM,框架由同事搭好,目前做的主要是功能实现,用到了一些东西,侧重于如何使用,总结如下: 1.UI控件与布局 2.MVVM 3.数据绑定 4.await/async 5.Lin

借鉴ASP.NET的控件模型辅助UI自动化测试

概述 在敏捷测试中UI的自动化测试(一般我们也称这层测试为功能测试或验收测试,本文单指Web UI的自动化测试)虽然没有单元测试那么广为提及,但因为其与最终用户最近,所以基于用户场景的UI自动化测试还是有其重要的意义的.使用UI自动化测试对产品的关键功能路径进行验证及回归,比起传统的QA手工执行Test case可以更快地得到反馈,也让发布变得更有信心. 理想状况下,我们应该将所有可以固化下来的Test case都自动化起来,而让我们的测试人员进行更有挑战性的探索性测试活动.让机器做已知领域的事