MSDN: 测试应用程序Test apps early and often ,Improve Code Quality

推荐书: 《Visual Studio 2015高级编程》 《Visual Studio 2012应用生命周期管理高级教程》

推荐资料: DevOpsHub 文档中心

一、UI Test

  这里所讲的UI Test主要是基于MS的Code UI Test和Selenium。

 1.Code UI Test不仅可以给予web browser,还可以基于普通的客户端exe的程序,十分强大,不过它只适用于.net。如果用它来测Web项目,它默认只是基于IE的,其他的浏览器它会当成普通的客户端程序处理。如果需要测其他浏览器需要安装Selenium components for Coded UI Cross Browser Testing,详情可以参考Using Different Web Browsers with Coded UI Tests

参考文献:

  MSDN: Use UI Automation To Test Your Code

  如何使用Coded UI Test对Webpage进行自动化测试

 2.Selenium只适用于web browser,需要各个浏览器的驱动,简单说就是安装个简版的浏览器。它不仅可以用.net,还可以有java,python等等版本。它也可以录屏设置,Selenium1 和Selenium2的区别很大,Api基本不能通用。注意区分。

参考文献:

  MSDN: Get started with Selenium testing in a continuous integration pipeline

  推荐书: 《Selenium自动化测试指南》

  总结:虽然两者都可以通过录屏来编辑,不过推荐还是手动去一个控件一个控件的写,因为录屏的话会多出好多无用的操作步骤,影响我们的测试。UI test的好处可以给到前端开发框架反馈,形成公司通用的前端组件库,有利于前端规范组件化开发,和制定对应的ui test 组件模板。

二、Performance Test

  性能测试和压力测试是不分家,压力测试是基于一组性能测试形成的。与MS的Performance Test对应有Jmeter等,同样,Jmeter也可以做性能测试,不过它的初衷是基于应用的,这点和MS的performance Test很像。

  Performance Test是基于Http协议的,这点也是与UI Test最大的区别,所以它不需要依赖于浏览器,换句话说,就是你前端写的所有JS方法都无关,它只记录Http的请求。除此之外,倒是和UI Test挺相像的,都是基于请求响应,从返回结果中提取验证规则,判断是否成功。这里推荐使用录制生成的图形配置界面去管理,因为它的参数化,数据源等都很到位,加上自定义的validation rule完全可以应付大多数的情况,它还能生存手动的测试代码,最是方便。

  这里需要提一下,Performance的组合测试,试想一下,如果我们有一些通用的步骤,会在多个性能测试中出现,比如说登录,这就很有用了。简单的说就是把一个大的performance拆分成多个小的测试(通过Extract Web Test),来组合成一个大的测试。详情可以参考:演练:创建一个需要登录和注销的 Web 性能测试。大家可能会关系他们之间传参的问题,事实上,他们是通过webTest.Context的上下文对象传递的,就是说我之前在WebTest.Context["state"]赋了值,然后我整个performance都能拿得到这个参数。可以参考:Is it possible to pass parameters between web performance tests in visual studio 2013?

  关于登录功能,比如我需要记住token,然后在每次请求头中都带有这个token值,当然可以用上面的方法,不过还有一个更方便的办法,就是使用自定义插件。因为即使是上面的抽取公共步骤,我们还是会在接下来的每一步都要去设置这个请求头参数,比较麻烦,这时,用上Web性能测试插件就比较完美了。因为它不仅可以通过WebTest.Context获取token值,还可以重写PreRequest、PostRequest、PrePage、PostPage、PreTransaction、PreWebTest等方法。详情可以参考:如何:创建 Web 性能测试插件如何:创建请求级插件.

参考文献:

  MSDN: Performance testing

      使用 Visual Studio Web 性能和负载测试进行性能和压力测试      

      Coding a custom validation rule for a web performance test

三、Load Test

  压力测试主要是通过模拟请求来测试服务器的相应情况,还能监控服务器的各项性能指标。不过对于大量用户而言,单机不足以模拟大量用户,visual studio 2012还有一个限制,开发环境最多模拟250个用户。需要大量用户的话,Visual Studio支持分布式环境下的负载测试,需要安装控制器和代理服务。(P478)(使用测试控制器和测试代理在多台测试计算机之间分发负载测试运行)

  当然还有一个重点要提一下,通常在开发环境下,你可以在即装sql server,也部署服务站点,通过本机的visual studio来模拟测试。但为了更好的模仿真实环境,比较通常服务器都是分开部署的(数据库和应用站点,当然还有可能有缓存服务器,负载均衡和集群等),所以我们要有对远程服务器监控的能力。

  Visual Studio的Load Test当然只能针对于windows的服务器,关于Load Test的配置比较简单,只需在counter中添加计算机并设置监控参数(在这里提一下,默认的“ASP.NET”、“Application”、“.NET Application”、“IIS”、“SQL”等都是vs默认指派好的监控项,里面复选可能会有一些监控指标重复,当然也可以自定义),计算机可以是局域网内的计算机名,也可以是IP地址,详情可以参照如何:使用负载测试编辑器管理计数器集

  远程服务器也需要配,笔者也是试了很多次,主要是关闭防火墙(或者开发端口LoadTestCounterCategoryNotFoundException),添加测试用户账号并给予监控或管理员权限,开启监控服务器的监控进程等,详情可以参考Reading Performance Counters on Vista and Server 2008 Machines(第四步看不懂可以不用)。

原文摘录:

In order to allow remote performance counter collection for a machine, you need to follow these steps on the machine you are collecting from. Note if you are using a test controller, the user account is the account the controller service is running as. If you are running load tests locally, the counters are collected using your user credentials.

    1. Run WF.msc 
      1. Enable the Performance Logs & Alerts firewall exception
      2. On Vista, enable the File and Printer Sharing firewall exception
    2. Run lusrmgr.msc
      1. Add the user to the Performance Log Users, Performance Monitor Users, or Administrators group.
      2. Add the user to the Event Log Readers group
    3. Run services.msc 
      1. Set the Performance Logs & Alerts service to autorun
      2. Set the Remote Registry service to autorun
    4. Run secpol.msc to assign the Log on as a Batch User privilege to Performance Log Users and Performance Monitor Users group:
      1. In Local Security Policy navigate to Local Policies -> User Right Assignment
      2. Double-click on “Log on as batch job”
      3. Add Performance Log Users group
      4. Add Performance Monitor Users group

Open a command prompt and rebuild all counters on the machine by running

lodctr /r

参考文献:

  MSDN:使用 Visual Studio Web 性能和负载测试进行性能和压力测试      

      在负载测试分析器的表视图中分析负载测试结果和错误      

      如何:使用负载测试编辑器管理计数器集

      最省錢及省時的負載壓力測試怎麼做? Visual Studio Online 雲端壓力測試 (Cloud Load Test) 簡介

  Performance Monitor

  磁盘性能计数器的使用方法

大家如果想获得更多的控制能力,可以参考为负载测试创建自定义代码和插件,或者直接调用Visual Studio ALM 测试工具的 API

源码:http://pan.baidu.com/s/1mh7v3ks(涉及公司项目,就不公开了)

自动化测试UI Test, Performance Test, Load Test 总结整理的更多相关文章

  1. Difference Between Performance Testing, Load Testing and Stress Testing

    http://www.softwaretestinghelp.com/what-is-performance-testing-load-testing-stress-testing/ Differen ...

  2. (办公)plug-in org.eclipse.jdt.ui was unable to load class org.eclipse.jdt.internal

    今天上午开发环境遇到这个问题,解决方案如下,(解决了之后,项目并没有丢失.) 因为Eclipse的这个plug-in org.eclipse.jdt.ui was unable to load cla ...

  3. Web Performance and Load Test Project错误集

    当我们创建Web Performance and Load Test Project时,经常会遇到下面这些问题: 1. 当点击Add Recording时, 左边的record tree没有出现: 解 ...

  4. eclipse中无法新建Android工程 出现问题:Plug-in org.eclipse.ajdt.ui was unable to load

    转自:http://www.bubuko.com/infodetail-757338.html eclipse中打开后新建Android项目区仍无法创建,出现下列提示对话框: Plug-in org. ...

  5. 错误:The selected wizard could not be started Plug-in com.genuitec.eclipse.j2ee.ui was unable to load class com.genuitec.eclipse.j2ee.ui.wizard.WebProjectWizard

    错误:The selected wizard could not be started Plug-in com.genuitec.eclipse.j2ee.ui was unable to load ...

  6. 自动化测试 | UI Automator 入门指南

    自动化测试的定义,这里先引用一段维基百科的定义: 在软件测试中,测试自动化(英语:Test automation)是一种测试方法,使用特定的软件,去控制测试流程,并比较实际的结果与预期结果之间的差异. ...

  7. 自动化测试 | UI Automator 进阶指南

    UI Automator 相关介绍: 跨应用的用户界面自动化测试 包含在 AndroidX Test(https://developer.android.com/training/testing) 中 ...

  8. Abp的swagger UI 出现Failed to load API definition.

    Abp 出现Failed to load API definition.如下图: 原因:本次出现的原因是Api里面的方法重名了(只是方法的参数不一样)(可能是controller中的auction上面 ...

  9. Eclipse:Could not create the view: Plug-in org.eclipse.jdt.ui was unable to load class org.eclipse.

    今天电脑死机了2次,重启电脑开eclipse后,发现项目环境坏了.百度后得到的答案是删除.metadata目录.但觉得麻烦,后在stackoverflow发现最佳的方式是 把 .metadata/.p ...

随机推荐

  1. IOS Orientation, 想怎么转就怎么转~~~

    此博文主要针对IOS应用, 是屏幕旋转相关问题的一个总结. 主要内容有: IOS5,6,7不同版的适配. 强制旋转和自动旋转. 博客: http://www.cnblogs.com/jhzhu 邮箱: ...

  2. 算法最坏,平均和最佳情况(Worst, Average and Best Cases)-------geeksforgeeks 翻译

    最坏,平均和最佳运行时间(Worst, Average and Best Cases) 在上一篇文章中,我们讨论到了渐进分析可以解决分析算法的问题,那么在这一篇中,我们用线性搜索来举例说明一下如何用渐 ...

  3. 数据结构Java实现02----线性表与顺序表

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  4. java 12-3 StringBuffer的添加和删除功能

    1. StringBuffer的添加功能: public StringBuffer append(String str):可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身 public ...

  5. C#带cookie Post和Get方式发送数据,保持cookie

    在实际编程中,可能需要读取特定网页的信息,但很多网站需要用户登录后,才能够获取相关的页面内容,这就需要编程者先临时存储当前的cookie,在C#中可以使用CookieContainer 对象来保存登录 ...

  6. ArcGis 计算线段长度

            void CalcLength(string tmpshp)         {             var expression = "float(!SHAPE.LEN ...

  7. VS的代码分析工具

    来自:[译]Visual Studio 2008 Code Metrics http://www.cnblogs.com/live41/archive/2010/02/08/1665627.html ...

  8. Linux 信号捕捉

    pause函数 pause函数挂起调用它的进程,直到有任何消息到达. 调用进程必须有能力处理送达的信号,否则信号的默认部署就会发生. int pause(void); 只有进程捕获到一个信号的时候pa ...

  9. 将matlab中数据输出保存为txt或dat格式

    :FID= FOPEN(filename,permission) 用指定的方式打开文件 FID=+N(N是正整数):表示文件打开成功,文件代号是N. FID=-1            : 表示文件打 ...

  10. 简单通用JDBC辅助类封装

    哎,最近很好久没在博客园写点东西了,由于工作的原因,接触公司自己研发的底层orm框架,偶然发现该框架在调用jdbc操作的时候参考的是hibernate 里面的SimpleJdbcTemplate,这里 ...