淘宝网 持续集成的 尝试(2)

发表于:2012-05-03来源:Taobao QA Team作者:heyun点击数: 标签:持续集成
在depend的数据类中定义全局静态数据载体属性,这是一个ThreadLocal对象,能进行线程安全的数据存储操作。 在被测试应用所有方法入口处插入以下代码,可

  在depend的数据类中定义全局静态数据载体属性,这是一个ThreadLocal对象,能进行线程安全的数据存储操作。

  在被测试应用所有方法入口处插入以下代码,可以取得整个调用链中所有类与方法名,并将此信息存入全局数据载体中。

  StackTraceElement[] stackTrace = new Throwable().getStackTrace();

  stackTrace[1].getClassName());

  stackTrace[1].getMethodName();

  根据各种类型应用预先设置好入口类,入口类中插入特定代码以取回URL、特定参数值(如tair的名字空间),下面以webx应用为例说明:

  Webx应用的入口类名为com.xxx.xxxx.xxxx.WebxFrameworkFilter,入口方法为doFilter(request,response,chain),要在此方法的第一行插入如下指令以从request对象中取回URL,并将此URL和上述信息存放在一起,最终传回服务器进行分析处理。

  aload_1

  invokestatic com.taobao.depend.InfoPicker.getUrl(javax.servlet.http.HttpServletRequest)

  取tair的名称空间以及其他的值,都是需要依赖特定的API的。

  在服务器端,将所有的URL、方法调用链信息去重后存入数据库,即完成依赖关系收集。

  从SVN取回某个变更了的方法名,取回所有受到影响的方法列表

  实现方法:使用HttpClient开源组件发送请求到URL:

  http://XXXX:8080/depend/rest.do,同时带上如下参数:

  名称 类型 必选 描述 示例值

  api String 是 method.previousMethod.get

  v String 是 API版本号,请设置成0.1 0.1

  app_name String 是 应用名称 xxxx

  class_name String 是 类名称 com.xxx.xxx.xxxxx. xxxxxx

  method_name String 是 方法名称 xxx

  ivk_type Integer 是 调用方式。0为全部,1为本地调用,2为远程调用。 0

  valid_day Integer 否 有效日志天数。查询时只使用有效天数之内的日志。默认值为30天 7

  format String 否 返回的数据格式,前期支持json json

  请求的返回值为json格式:

  {

  “app_name”: “xxxx”,

  “class_name”: “com.taobao.xxx.xxx.xxx”,

  “method_name”: “xxxx”,

  “methods”:

  [{

  “app_name”:”xxxx”,

  “class_name”: “com.taobao.xxx.xxx.xxx”,

  “method_name”: “xxxxx”,

  “ivk_count”: 105

  },{

  “app_name”:”xxxx”,

  “class_name”: “com.taobao.xxxxx”,

  “method_name”: “xxx”,

  “ivk_count”: 13048

  }]

  }

  其中[ ]中的内容即为受影响的方法列表(包含类名)。

  其他API的调用方法相同,参数请参照原文档。

  对于测试类里面的方法,可以通过解析获取到一个测试类里面的方法所直接调用的方法列表。

  4. 用例来源与组织

  来源: Web UI; API; Android; IOS;

  组织:

  业务线回归(on time): P0,P1,P2,P3;

  公司级回归(on demand): P0, P1;

  精准回归(on event): P0,P1,P2,P3;

  通过用例的逻辑操作,可自由加入回归实验室;

  5. 时间分析

  WebUI脚本Profiler

  现状:WebUI脚本执行时间长,7000个TC,在70台机器执行需要3小时;而测试人员并不能分析出其中的性能瓶颈:automan框架引起的、脚本编写、或者是被测系统响应慢;

  办法:提供WebUI脚本的运行各环节的时间消耗,以及脚本中各个step的时间消耗,推送到kelude平台汇总分析;

  WebUI脚本的执行给出硬性规定,5分钟算超时,10分钟回归系统强行结束;

  从近2周的数据,我们已经准确的分析出了automan平台的瓶颈,以及 淘宝被测系统的瓶颈,运行最慢的脚本等;

  例如:3.6分析了最近7天,平均访问超过 5S 的10次的URL 共有50+个;

  价值:直接给测试员提供性能瓶颈;分析出淘宝的性能瓶颈URL;

  2012.3.14的回归时间:

  l

  6. 环境部署

  Daily下应用的部署

  现状:目前主站应用数大致为 800多个,应用的daily环境为 1120多个(虚机)。

  基本的部署过程: build.sh先更新代码和配置项打包后进入以下过程

  部署方式

  目前部署已经实现web化操作 daily环境的建立和维护人为scm,开发、测试、scm都可以有权限来进行部署

  在scm.taobao.net平台中申请环境部署权限,可以通过页面实现以下部署

  今年daily环境将要进行的工作:

  1.daily主要应用梳理,备机方式

  解决问题:应用部署时,对测试的影响

  应用出现问题,可以切换到备机

  2.二套标准环境推广

  项目、沙箱或者开发环境可以绑定二套标准环境,提升环境的稳定性

  7. 测试环境(daily 环境)稳定

  Daily下应用部署的监控

  现状:对于daily下应用的部署情况只有片面、粗略的了解,没有办法基于数据做一些分析

  办法:收集daily下所有应用的部署事件:svn, ip, app等,后续可挖掘出跟环境相关的很多信息:例如部署次数最多的应用;

原文转自:http://www.ltesting.net