簡(jiǎn)介:本文主要目的是把現(xiàn)今主流的Dubbo框架項(xiàng)目和精準(zhǔn)測(cè)試進(jìn)行對(duì)接迎吵,通過(guò)精準(zhǔn)測(cè)試的數(shù)據(jù)穿透、數(shù)據(jù)采集烘嘱、測(cè)試用例與代碼的雙向追溯赚导、數(shù)據(jù)分析等一系列精準(zhǔn)測(cè)試的特有功能達(dá)到對(duì)項(xiàng)目質(zhì)量的保證。
本次環(huán)境搭建分為基礎(chǔ)環(huán)境準(zhǔn)備、Dubbo環(huán)境搭建衫仑、精準(zhǔn)測(cè)試環(huán)境搭建梨与、精準(zhǔn)測(cè)試與Dubbo環(huán)境對(duì)接等一整套完整的配置過(guò)程,用戶可以通過(guò)下圖中的流程圖確認(rèn)自己所部署過(guò)程中進(jìn)行到的階段點(diǎn)文狱,從而排查部署中可能遇見的問(wèn)題粥鞋。
一 dubbo的工具配置流程
1,使用工具
1瞄崇, Eclipse Java Photon
2呻粹, JDK 1.8
3, MySQL 5.7
4苏研, Navicat for MySQL
5等浊, Nodejs
6, apache-maven-3.5.4
7摹蘑, zoa-agent-1.6.2
8凿掂, apache-tomcat-8.0.47
9, J2EE_Enterprise_key_64bit0614
10纹蝴, 項(xiàng)目:dubbo
11庄萎, 服務(wù):zookeeper
項(xiàng)目和微服務(wù)下載地址:https://pan.baidu.com/s/1JBKJBVhm0XQT0VmWacD3wQ
提取碼: nr9t
2 ,配置所需的安裝
2.1塘安,安裝Eclipse糠涛、JDK,tomcat,MySQL兼犯、Nodejs
正常安裝Eclipse忍捡,jdk和tomcat,比且需要在tomcat中配置agent切黔,具體的配置是:
找到tomcat的G:\apache-tomcat-8.0.47\bin目錄catalina.bat文件
打開以后將agent的安裝目錄和解密庫(kù)的目錄放在catalina.bat文件里面
腳本安裝mysql和nodejs(一鍵安裝)
1砸脊、 打開TT_Soft文件夾
2、以管理員身份運(yùn)行TeststarsSoftInstall.exe
3纬霞、等待自動(dòng)安裝完成凌埂,關(guān)閉窗口
4、使用net start mysql 命令啟動(dòng)MySQL服務(wù)
5诗芜、使用node –v查看node版本
2.2, 安裝Maven
Eclipse本身會(huì)帶Maven瞳抓,但是不如自己安裝的靈活,解壓apache-maven-3.5.4.zip(例如:E:\apache-maven-3.5.4)伏恐,配置系統(tǒng)變量添加變量名:
MAVEN_HOME變量值= E:\apache-maven-3.5.4孩哑,
Path添加變量值= %MAVEN_HOME%\bin,cmd測(cè)試用mvn -v如下即安裝成功翠桦。
2.2.1横蜒,Eclipse替換自帶為本地Maven
Windows-Preferences-Maven-Installations-Add,路徑指向
E:\apache-maven-3.5.4,加載完成后勾選新的apache-maven-3.5.4丛晌,Apply鹰霍。
2.2.2,定義本地Maven依賴庫(kù)
修改E:\apache-maven-3.5.4\conf\settings.xml茵乱,添加如下一行代碼定義茂洒,例如:
<localRepository>C:\Users\luxper.m2\repository</localRepository>,C:\Users\luxper.m2\repository是我的本地maven倉(cāng)庫(kù)地址瓶竭。
Eclipse:Windows-Preferences-Maven-User Settings-Global Settings督勺,Browse= E:\apache-maven-3.5.4\conf\settings.xml,Apply斤贰。
2智哀, 項(xiàng)目部署
將Dubbo下載好以后直接放在指定目錄下
將下載好的dubbo的項(xiàng)目導(dǎo)入到eclipse中
edu-common-parent:提供
edu-facade-user:公共接口
edu-service-user:服務(wù)端(生產(chǎn)者)
edu-web-boss:客戶端(消費(fèi)者)
將下載好的sql文件正確的導(dǎo)入到數(shù)據(jù)庫(kù)中
二 測(cè)試項(xiàng)目
1,下載工具及工具配置
1.1荧恍,從官網(wǎng)上下載星云測(cè)試工具:http://www.teststars.cc/
下載以后進(jìn)行配置:
1.2瓷叫,星云測(cè)試服務(wù)端的配置
TTLangage.config配置項(xiàng)說(shuō)明:
1、 運(yùn)行下的星云測(cè)試server目錄中ThreadingTestServer.exe送巡,在右下的圖表中點(diǎn)注冊(cè)信息摹菠,查看其時(shí)間,星云測(cè)試有兩個(gè)月的體驗(yàn)骗爆,若是超過(guò)兩個(gè)月次氨,發(fā)生KEY過(guò)期,請(qǐng)聯(lián)系星云測(cè)試的工作人員摘投,并提交服務(wù)端中的序列碼
2煮寡、聯(lián)系星云工作人員獲取當(dāng)前服務(wù)器的key.key文件,替換到星云的server目錄下犀呼;
3幸撕、啟動(dòng)server目錄下的ThreadingTestServer.exe后會(huì)自動(dòng)打開同級(jí)目錄下的ThreadingTestServerFront.exe,看到自動(dòng)彈出下面窗口后外臂,表示連接正常坐儿。
1.3,星云測(cè)試客戶端的配置
注:星云測(cè)試在線客戶端的連接需要訪問(wèn)端口17262/17263.登陸之前需要保證網(wǎng)絡(luò)連接不存在限制专钉。
打開客戶端之前需要修改TTClient文件夾下的Server.cfg文件挑童,配置localIP項(xiàng)為可以與服務(wù)端正常數(shù)據(jù)通信的本機(jī)IP地址。配置這個(gè)localIP的原因是跃须,在客戶端需要接收來(lái)自服務(wù)端傳來(lái)的動(dòng)態(tài)數(shù)據(jù),配置本地的IP地址服務(wù)端才能把數(shù)據(jù)傳到客戶端中來(lái)娃兽。
配置IP地址完成后雙擊運(yùn)行TTClient/TT.exe文件進(jìn)入星云測(cè)試客戶端菇民。選擇文件->登錄,輸入星云測(cè)試服務(wù)端的IP地址以及自己的用戶名和密碼即可登錄。如下圖所示第练。
1.4阔馋,星云測(cè)試云報(bào)表平臺(tái)服務(wù)啟動(dòng)
1、 運(yùn)行星云測(cè)試TTWeb目錄下的bin\redis-2.4.5-win32-win64\32bit中的redis-server.exe
2娇掏、運(yùn)行星云測(cè)試TTWeb目錄下的startTTwebserver.bat
訪問(wèn)網(wǎng)頁(yè)報(bào)表網(wǎng)頁(yè)IP地址:3000
2呕寝,創(chuàng)建工程和版本并編譯
1, 登錄客戶端
2婴梧, 選中待插裝的空版本下梢,版本處于解鎖狀態(tài)(解鎖狀態(tài):右鍵-解鎖狀態(tài))
3, javaForWindows目錄下的Server.cfg配置文件塞蹭,[SERVER] ip填寫實(shí)際ip地址孽江,修改[PROPERTY]字段,與客戶端目錄下的Server.cfg同步
4番电、修改javaForWindows目錄下的ComplierPath.xml配置文件
同一個(gè)版本下可添加多個(gè)子模塊即proname岗屏,proname不能重復(fù),一個(gè)子模塊下可以配置多個(gè)工程路徑
ProName:子模塊名稱
Project_path:測(cè)試程序源碼文件路徑
Class_path:測(cè)試程序class文件路徑
注意:在進(jìn)行編譯插裝的時(shí)候漱办,編譯插裝的項(xiàng)目是edu-service-user这刷,edu-web-boss這兩個(gè)項(xiàng)目
5、修改javaForWindows目錄下tt_windows文件夾下Server.ini配置文件
Ip設(shè)置為客戶端的ip地址娩井。
6崭歧、在命令行運(yùn)行autoCompiler.jar進(jìn)行編譯
jre\bin\java.exe -jar autoCompile.jar -e
D:\J2EE_Enterprise_key_64bit0803\CompileToolsPkg\javaForWindows
注:-e后面的參數(shù)為ComplierPath.xml文件的目錄
7、在客戶端查看數(shù)據(jù),記得必須點(diǎn)擊重新加載文件
由于測(cè)試的時(shí)候需要運(yùn)行我們插裝后的代碼(編譯完成后會(huì)在java目錄同層生成src-instru目錄撞牢,src-instru目錄即為編譯插裝后的源碼);
具體操作:先將源碼目錄下未插裝的java目錄重命名為pre_java率碾,再將編譯插裝生成的src-instru目錄命名為java。
并且插樁代碼的運(yùn)行需要我們的jar包屋彪,因此需要修改客戶的pom.xml文件來(lái)引入我們的jar服務(wù)所宰,加入到兩個(gè)<dependencies>之間,加入的代碼如下:
systemPath需要按JavaParser-j2ee.jar
和jeromq-0.3.0-SNAPSHOT.jar的絕對(duì)路徑填寫
<dependency>
<groupId>com.zoa</groupId>
<artifactId>JavaParser-ZMQ</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>/D:/J2EE/client/MQ/JavaParser-J2EE.jar</systemPath>
</dependency>
<dependency>
<groupId>com.zoa</groupId>
<artifactId>jeromq</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>/D:/J2EE/client/MQ/jeromq-0.3.0-SNAPSHOT.jar</systemPath></dependency>
在pom文件修改完成后即可打包發(fā)布
3畜挥,打包dubbo的工程例子
1 zookeeper環(huán)境搭建
zk解壓到指定目錄下仔粥,解壓后,將con文件夾下的zoo_sample.cfg拷貝一份,重命名為zoo.cfg,注意修改cfg的內(nèi)容如下蟹但,根據(jù)自己的目錄來(lái)修改:
windows系統(tǒng)下會(huì)使用zkServer.cmd開啟,所以在bin目錄下找到zkServer.cmd,雙擊開啟,這個(gè)是啟動(dòng)后的成功的圖
打開以后就可以進(jìn)行打包了躯泰,在eclipse打然后打包生產(chǎn)者和消費(fèi)者(打包出來(lái)的是war包),將打包好的war包分別放在不同端口的tomcat中华糖。
生產(chǎn)者啟動(dòng)tomcat:
生產(chǎn)者在啟動(dòng)tomcat時(shí)麦向,向注冊(cè)中心注冊(cè)自己提供的服務(wù)
消費(fèi)者啟動(dòng)tomcat:
消費(fèi)者在啟動(dòng)時(shí),向注冊(cè)中心訂閱自己所需的服務(wù)客叉,注冊(cè)中心返回生產(chǎn)者地址列表給消費(fèi)者诵竭,如果有變更阅签,注冊(cè)中心將基于長(zhǎng)連接推送變更數(shù)據(jù)給消費(fèi)者汗销。消費(fèi)者將設(shè)置的標(biāo)識(shí)通過(guò)一系列返回給生產(chǎn)者
打包完成膨俐,為使函數(shù)覆蓋率可視視圖代碼部分顯示正常榴芳,需要手動(dòng)修改源碼路徑:右鍵版本,點(diǎn)擊修改源碼路徑裳朋,選擇到pre_src目錄即可病线。
4,編寫測(cè)試用例
點(diǎn)擊添加:
啟動(dòng)測(cè)試用例
5鲤嫡,項(xiàng)目測(cè)試
1送挑,設(shè)置標(biāo)識(shí)
1,項(xiàng)目URL后面加teststars.jsp,訪問(wèn)teststars.jsp頁(yè)面進(jìn)行標(biāo)識(shí)設(shè)置
2,點(diǎn)擊set標(biāo)識(shí)進(jìn)行設(shè)置泛范,設(shè)置成功頁(yè)面如下:
注:為了區(qū)分測(cè)試让虐,我們?cè)谠O(shè)置的用戶姓名與星云客戶端當(dāng)前登錄用戶一致,
設(shè)置完成后頁(yè)面顯示是
消費(fèi)者通過(guò)web頁(yè)面設(shè)置標(biāo)識(shí)
生產(chǎn)者:通過(guò)穿透將消費(fèi)者設(shè)置的標(biāo)識(shí)值穿透到生產(chǎn)者中
頁(yè)面點(diǎn)擊登陸進(jìn)就會(huì)有相應(yīng)的測(cè)試數(shù)據(jù)傳輸過(guò)來(lái)(具體的展示見后面測(cè)試結(jié)果的第一個(gè)標(biāo)題:示波器的展示)罢荡,數(shù)據(jù)接收完以后點(diǎn)擊停止赡突,本條用例測(cè)試完畢
3, 生產(chǎn)者和消費(fèi)者再客戶端的覆蓋率展示:
消費(fèi)者在客戶端的展示:
生產(chǎn)者在客戶端的展示:
三 測(cè)試結(jié)果
1区赵,示波器波形展示
先選中測(cè)試用例惭缰,再點(diǎn)擊開始后就可以進(jìn)行相應(yīng)的測(cè)試工作了,測(cè)試的時(shí)候示波器可以收到動(dòng)態(tài)數(shù)據(jù)并以波形圖的方式展示出來(lái)笼才。
注:采集的動(dòng)態(tài)數(shù)據(jù)保存在服務(wù)端目錄下的VersionData文件夾下
2漱受,缺陷管理
為了讓測(cè)式人員更好的對(duì)缺陷進(jìn)行管理,采用測(cè)試用例骡送、代碼昂羡、BUG相關(guān)聯(lián)方式,精準(zhǔn)測(cè)試云平臺(tái)使用了歷史BUG追查功能摔踱,這使得在版本迭代過(guò)程中虐先,同一個(gè)測(cè)試用例所有的BUG情況一目了然,避免了因人員變動(dòng)或版本變動(dòng)導(dǎo)致的相同的BUG的排查時(shí)間派敷,以及重復(fù)提交未被解決的BUG蛹批。
圖表 缺陷提交與管理
圖表 bug信息一目了然
3,覆蓋率
覆蓋率可視化針對(duì)函數(shù)sc0篮愉、True腐芍、false 、both试躏、Branch猪勇、C/DC 、MC/DC 7種覆蓋率給出可視化展示下面針對(duì)每一種覆蓋率展示界面給出說(shuō)明:(以sc0為例)
sc0為語(yǔ)句塊覆蓋冗酿,其顏色區(qū)分對(duì)象為基本語(yǔ)句塊(包括隱含不可見語(yǔ)句塊)其中綠色標(biāo)示被覆蓋的語(yǔ)句塊埠对。藍(lán)色是未覆蓋到的語(yǔ)句塊络断。
計(jì)算方法為:覆蓋到塊/應(yīng)統(tǒng)計(jì)塊
用紅色的標(biāo)出來(lái)的表示sc0覆蓋率裁替,函數(shù)列表右方為覆蓋率的展示:
4项玛,雙向追溯
雙向追溯是指通過(guò)運(yùn)行測(cè)試用例,實(shí)現(xiàn)測(cè)試用例與被測(cè)源碼間相互追溯弱判。根據(jù)測(cè)試用襟沮、
查看相關(guān)被測(cè)源碼為正向追溯,根據(jù)被測(cè)源碼查看相關(guān)測(cè)試用例為逆向追溯昌腰。在測(cè)試用例列表中選擇測(cè)試用例开伏,可以追溯到該測(cè)試用例的內(nèi)容描述信息,在模塊調(diào)用圖中顯示被測(cè)試到的函數(shù)遭商;也可以在模塊調(diào)用圖中固灵,點(diǎn)擊相關(guān)的函數(shù),也可以追溯到相關(guān)的測(cè)試用例劫流。該追溯技術(shù)方便了用戶查看和設(shè)計(jì)測(cè)試用例巫玻。
雙向追溯功能可以運(yùn)行的前提是,測(cè)試用例已經(jīng)被運(yùn)行過(guò)祠汇,并且示波器收到了波形采集到了
動(dòng)態(tài)數(shù)據(jù)仍秤。
1,正向追溯
正向追溯是指:將測(cè)試用例和海量的代碼執(zhí)行信息自動(dòng)關(guān)聯(lián)可很,可精確到函數(shù)級(jí)別及代碼塊級(jí)別诗力;通過(guò)正向追溯可直接在代碼級(jí)定位測(cè)試現(xiàn)場(chǎng)故障和缺陷邏輯,并提供最后運(yùn)行的時(shí)序數(shù)據(jù)我抠;通過(guò)正向追溯自動(dòng)記錄產(chǎn)生功能對(duì)應(yīng)的詳細(xì)設(shè)計(jì)實(shí)現(xiàn)苇本,輔助軟件解耦和架構(gòu)分析。
正向追溯的優(yōu)勢(shì)是:迅速定位缺陷對(duì)應(yīng)的代碼執(zhí)行邏輯菜拓,幫助開發(fā)快速修復(fù)缺陷瓣窄,可追蹤難復(fù)現(xiàn)缺陷;精確尘惧、詳盡的記錄測(cè)試用例運(yùn)行的情況康栈,為精準(zhǔn)軟件測(cè)試提供大量原生分析性數(shù)據(jù);可以進(jìn)行事后的缺陷分析喷橙、追蹤啥么,輔助開發(fā)進(jìn)行功能實(shí)現(xiàn)確認(rèn)。
生產(chǎn)者的正向追溯:
消費(fèi)者的正向追溯:
如圖:點(diǎn)擊測(cè)試用例追溯到這個(gè)用例運(yùn)行過(guò)得函數(shù)贰逾,選中一個(gè)函數(shù)悬荣,追溯到這個(gè)函數(shù)運(yùn)行過(guò)得控制流程圖的邏輯分支
以下是正向追溯到代碼和函數(shù)調(diào)用圖:
2,反向追溯
反向追溯是指:分析代碼關(guān)聯(lián)的功能疙剑,為研發(fā)分析系統(tǒng)和進(jìn)行一致性修改以及回歸測(cè)試分析提供精確數(shù)據(jù)氯迂。
反向追溯過(guò)程:點(diǎn)擊需要查看的函數(shù)或函數(shù)中的某行代碼践叠,自動(dòng)列出可以測(cè)試到該函數(shù)或者程序分支的測(cè)試用例
生產(chǎn)者的反向追溯:
消費(fèi)者的反向追溯:
選擇函數(shù)追溯到運(yùn)行過(guò)該函數(shù)的測(cè)試用例,查看該函數(shù)的控制流程圖和代碼
點(diǎn)擊代碼嚼蚀,追溯到運(yùn)行過(guò)該代碼的測(cè)試用例
5禁灼,簡(jiǎn)易流程圖的展示
前置條件:版本有數(shù)據(jù),關(guān)聯(lián)源碼可在代碼視圖有顯示源碼轿曙,并且在簡(jiǎn)易控制流
程圖的分支塊有具體語(yǔ)句顯示弄捕,有覆蓋率數(shù)據(jù),可在簡(jiǎn)易控制流程圖顯示當(dāng)前覆蓋到的塊信息
簡(jiǎn)易控制流程圖功能导帝,以語(yǔ)句塊的形式清晰的展示函數(shù)內(nèi)部的控制邏輯守谓,界面上可以直觀的看出控制流各節(jié)點(diǎn)的測(cè)試覆蓋情況,在展示中您单,簡(jiǎn)易控制流程圖還可以通過(guò)顏色對(duì)每個(gè)程序塊進(jìn)行覆蓋率標(biāo)識(shí)斋荞,在縮略圖中整個(gè)模塊的覆蓋率非常直觀。(背景色為綠色表示有測(cè)試用例覆蓋到該塊:以SC0覆蓋為參考標(biāo)準(zhǔn))
6虐秦,報(bào)表的展示
選擇客戶端所編譯的項(xiàng)目和版本:
顯示所選取編譯項(xiàng)目的一些基本信息平酿,包括:
項(xiàng)目指標(biāo)信息、項(xiàng)目信息羡疗、版本信息染服、測(cè)試匯總信息、測(cè)試過(guò)程監(jiān)控趨勢(shì)圖叨恨、測(cè)試設(shè)備組成和分布圖柳刮、版本覆蓋率匯總圖、復(fù)雜度統(tǒng)計(jì)圖
項(xiàng)目匯總:
包含項(xiàng)目信息:項(xiàng)目的詳情信息
版本信息:版本的詳情信息
測(cè)試匯總信息:測(cè)試用例通過(guò)率:無(wú)BUG的測(cè)試用例
BUG累計(jì):測(cè)試用例運(yùn)行完畢后提交的BUG數(shù)
當(dāng)前版本覆蓋率(SC0):(執(zhí)行過(guò)可見段數(shù)/可見段數(shù))100%的比例
覆蓋率增長(zhǎng):相比前一天的SC0增長(zhǎng)差值
高復(fù)雜度預(yù)警函數(shù)個(gè)數(shù):高復(fù)雜度的函數(shù)個(gè)數(shù)
測(cè)試用例列表:
顯示制作的測(cè)試用例的詳細(xì)信息痒钝,包括測(cè)試用例的名稱秉颗、創(chuàng)建時(shí)間、執(zhí)行時(shí)間送矩、關(guān)聯(lián)函數(shù)蚕甥、覆蓋率占比、運(yùn)行狀態(tài)栋荸、測(cè)試人員等
覆蓋率按日增長(zhǎng)曲線圖:
覆蓋率按日增長(zhǎng)曲線圖,讓管理者更好的把握測(cè)試過(guò)程*
測(cè)試漏洞列表:
在一個(gè)程序中菇怀,往往有成百上千的函數(shù),這些函數(shù)有的是關(guān)聯(lián)整個(gè)程序核心晌块、有的則是開發(fā)人員棄而不用爱沟,但一直保留遲遲不肯刪除的,針對(duì)這些大量的函數(shù)匆背,“精準(zhǔn)測(cè)試”采用通過(guò)靜態(tài)呼伸、動(dòng)態(tài)指標(biāo)的綜合分析,在大量的程序函數(shù)中钝尸,通過(guò)計(jì)算直接篩選潛在的高危的測(cè)試漏洞括享,通過(guò)報(bào)表給予展示搂根。
- 通過(guò)復(fù)雜度和覆蓋率進(jìn)行計(jì)算
- 通過(guò)函數(shù)調(diào)用上下文和覆蓋率進(jìn)行計(jì)算