在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等,后續可挖掘出跟環境相關的很多信息:例如部署次數最多的應用;