自动化测试UI Test, Performance Test, Load Test 总结整理
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.
- Run WF.msc
- Enable the Performance Logs & Alerts firewall exception
- On Vista, enable the File and Printer Sharing firewall exception
- Run lusrmgr.msc
- Add the user to the Performance Log Users, Performance Monitor Users, or Administrators group.
- Add the user to the Event Log Readers group
- Run services.msc
- Set the Performance Logs & Alerts service to autorun
- Set the Remote Registry service to autorun
- Run secpol.msc to assign the Log on as a Batch User privilege to Performance Log Users and Performance Monitor Users group:
- In Local Security Policy navigate to Local Policies -> User Right Assignment
- Double-click on “Log on as batch job”
- Add Performance Log Users group
- 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) 簡介
大家如果想获得更多的控制能力,可以参考为负载测试创建自定义代码和插件,或者直接调用Visual Studio ALM 测试工具的 API
源码:http://pan.baidu.com/s/1mh7v3ks(涉及公司项目,就不公开了)
自动化测试UI Test, Performance Test, Load Test 总结整理的更多相关文章
- Difference Between Performance Testing, Load Testing and Stress Testing
http://www.softwaretestinghelp.com/what-is-performance-testing-load-testing-stress-testing/ Differen ...
- (办公)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 ...
- Web Performance and Load Test Project错误集
当我们创建Web Performance and Load Test Project时,经常会遇到下面这些问题: 1. 当点击Add Recording时, 左边的record tree没有出现: 解 ...
- eclipse中无法新建Android工程 出现问题:Plug-in org.eclipse.ajdt.ui was unable to load
转自:http://www.bubuko.com/infodetail-757338.html eclipse中打开后新建Android项目区仍无法创建,出现下列提示对话框: Plug-in org. ...
- 错误: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 ...
- 自动化测试 | UI Automator 入门指南
自动化测试的定义,这里先引用一段维基百科的定义: 在软件测试中,测试自动化(英语:Test automation)是一种测试方法,使用特定的软件,去控制测试流程,并比较实际的结果与预期结果之间的差异. ...
- 自动化测试 | UI Automator 进阶指南
UI Automator 相关介绍: 跨应用的用户界面自动化测试 包含在 AndroidX Test(https://developer.android.com/training/testing) 中 ...
- Abp的swagger UI 出现Failed to load API definition.
Abp 出现Failed to load API definition.如下图: 原因:本次出现的原因是Api里面的方法重名了(只是方法的参数不一样)(可能是controller中的auction上面 ...
- 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 ...
随机推荐
- AOJ 740 求和
链接:http://icpc.ahu.edu.cn/OJ/Problem.aspx?id=740 Description 对于正整数n,k,我们定义这样一个函数f,它满足如下规律f(n,k=1 ...
- C++ 基础笔记(一)
解释型和编译型 解释型: 边解释边执行,翻译成机器代码后就执行. 编译型: 整篇代码编译成机器码后,保存在可执行文件中,然后启动该程序文件,运行获得结果. Hello World #include & ...
- js定时器的一些小问题
1 js中定时器分为两种:setInterval和setTimeout, 但是在代码的执行中,定时器的优先级最低,系统里其他不在执行的时候,它才开始.例子如下: 2 3 <script> ...
- HTML5-WebSocket技术学习(2)
上一篇介绍了websocket的基本用法.这篇介绍websocket的一个框架: socket.io socket.io是一个既可以用在客户端又可以用在服务器端的框架. 本篇介绍socket.io在客 ...
- 整理MAC下Eclipse的常用快捷键
整理Eclipse常用快捷键 开发环境切换到Mac下后原来Window下的快捷键很大一部分是不相容的,习惯了快捷键的生活忽然哪天快捷键不起作用了,跟着的就是开发效率明显降低,频繁录入错误的快捷键让Ec ...
- Verilog学习笔记基本语法篇(九)········ 任务和函数
task 和 function 说明语句分别用来定义任务和函数,利用任务和函数可以把函数模块分成许多小的任务和函数便于理解和调试.任务和函数往往还是大的程序模块在不同地点多次用到的相同的程序段.输入. ...
- es安装
1,安装java(至少1.8) yum install -y java java -version 在/etc/profile追加: JAVA_HOME=/usr/java/jdk1..0_45 PA ...
- HTTP协议简介1
概念 HTTP协议:超文本传输协议,用于服务端传输超文本到客户端的传输协议.是一个应用层协议. 工作流程 一次http请求就是一个事务.过程可分为四步: 1.客户端与服务器建立链接.页面上单击某个链接 ...
- caffe windows学习:第一个测试程序
caffe windows编译成功后,就可以开始进行测试了.如果还没有编译成功的,请参考:caffe windows 学习第一步:编译和安装(vs2012+win 64) 一般第一个测试都是建议对手写 ...
- Tomcat简易安装指南
由于要学习activiti的使用,而activiti依赖于tomcat,所以下载了一个tomcat 7 的binary包,然后按照running.TXT中的描述来手动安装,下文主要是记录了在阅读run ...