在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等,后续可挖掘出跟环境相关的很多信息:例如部署次数最多的应用;