1. 程式人生 > >開發者測試(4)-采用精準測試工具對dubbo微服務應用進行測試

開發者測試(4)-采用精準測試工具對dubbo微服務應用進行測試

缺陷管理 jpg 連接 cad -o 配置過程 bce per 階段

簡介:本文主要目的是把現今主流的Dubbo框架項目和精準測試進行對接,通過精準測試的數據穿透、數據采集、測試用例與代碼的雙向追溯、數據分析等一系列精準測試的特有功能達到對項目質量的保證。
 
本次環境搭建分為基礎環境準備、Dubbo環境搭建、精準測試環境搭建、精準測試與Dubbo環境對接等一整套完整的配置過程,用戶可以通過下圖中的流程圖確認自己所部署過程中進行到的階段點,從而排查部署中可能遇見的問題。
    

 
技術分享圖片
 
 

一 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, 項目:dubbo
11, 服務:zookeeper
項目和微服務下載地址: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的安裝目錄和解密庫的目錄放在catalina.bat文件裏面
 
技術分享圖片

腳本安裝mysql和nodejs(一鍵安裝)
1、 打開TT_Soft文件夾
技術分享圖片
2、以管理員身份運行TeststarsSoftInstall.exe
技術分享圖片
3、等待自動安裝完成,關閉窗口
技術分享圖片
4、使用net start mysql 命令啟動MySQL服務
技術分享圖片
5、使用node –v查看node版本
技術分享圖片

2.2, 安裝Maven

Eclipse本身會帶Maven,但是不如自己安裝的靈活,解壓apache-maven-3.5.4.zip(例如:E:\apache-maven-3.5.4),配置系統變量添加變量名:
MAVEN_HOME變量值= E:\apache-maven-3.5.4,

Path添加變量值= %MAVEN_HOME%\bin,cmd測試用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依賴庫

修改E:\apache-maven-3.5.4\conf\settings.xml,添加如下一行代碼定義,例如:
<localRepository>C:\Users\luxper.m2\repository</localRepository>,C:\Users\luxper.m2\repository是我的本地maven倉庫地址。
Eclipse:Windows-Preferences-Maven-User Settings-Global Settings,Browse= E:\apache-maven-3.5.4\conf\settings.xml,Apply。

2, 項目部署

將Dubbo下載好以後直接放在指定目錄下
技術分享圖片
 
將下載好的dubbo的項目導入到eclipse中
技術分享圖片
 
edu-common-parent:提供
edu-facade-user:公共接口
edu-service-user:服務端(生產者)
edu-web-boss:客戶端(消費者)
將下載好的sql文件正確的導入到數據庫中

二 測試項目

1,下載工具及工具配置

1.1,從官網上下載星雲測試工具:http://www.teststars.cc/

技術分享圖片
下載以後進行配置:

1.2,星雲測試服務端的配置

TTLangage.config配置項說明:
技術分享圖片
1、 運行下的星雲測試server目錄中ThreadingTestServer.exe,在右下的圖表中點註冊信息,查看其時間,星雲測試有兩個月的體驗,若是超過兩個月,發生KEY過期,請聯系星雲測試的工作人員,並提交服務端中的序列碼
技術分享圖片
技術分享圖片
 
2、聯系星雲工作人員獲取當前服務器的key.key文件,替換到星雲的server目錄下;
3、啟動server目錄下的ThreadingTestServer.exe後會自動打開同級目錄下的ThreadingTestServerFront.exe,看到自動彈出下面窗口後,表示連接正常。
技術分享圖片

1.3,星雲測試客戶端的配置

註:星雲測試在線客戶端的連接需要訪問端口17262/17263.登陸之前需要保證網絡連接不存在限制。
打開客戶端之前需要修改TTClient文件夾下的Server.cfg文件,配置localIP項為可以與服務端正常數據通信的本機IP地址。配置這個localIP的原因是,在客戶端需要接收來自服務端傳來的動態數據,配置本地的IP地址服務端才能把數據傳到客戶端中來。
配置IP地址完成後雙擊運行TTClient/TT.exe文件進入星雲測試客戶端。選擇文件->登錄,輸入星雲測試服務端的IP地址以及自己的用戶名和密碼即可登錄。如下圖所示。
技術分享圖片

1.4,星雲測試雲報表平臺服務啟動

1、 運行星雲測試TTWeb目錄下的bin\redis-2.4.5-win32-win64\32bit中的redis-server.exe
技術分享圖片
2、運行星雲測試TTWeb目錄下的startTTwebserver.bat
技術分享圖片
技術分享圖片
訪問網頁報表網頁IP地址:3000

2,創建工程和版本並編譯

1, 登錄客戶端
2, 選中待插裝的空版本,版本處於解鎖狀態(解鎖狀態:右鍵-解鎖狀態)
3, javaForWindows目錄下的Server.cfg配置文件,[SERVER] ip填寫實際ip地址,修改[PROPERTY]字段,與客戶端目錄下的Server.cfg同步
技術分享圖片

4、修改javaForWindows目錄下的ComplierPath.xml配置文件
同一個版本下可添加多個子模塊即proname,proname不能重復,一個子模塊下可以配置多個工程路徑
ProName:子模塊名稱
Project_path:測試程序源碼文件路徑
Class_path:測試程序class文件路徑
技術分享圖片
註意:在進行編譯插裝的時候,編譯插裝的項目是edu-service-user,edu-web-boss這兩個項目
5、修改javaForWindows目錄下tt_windows文件夾下Server.ini配置文件
Ip設置為客戶端的ip地址。
技術分享圖片
6、在命令行運行autoCompiler.jar進行編譯

 jre\bin\java.exe    -jar autoCompile.jar   -e
 D:\J2EE_Enterprise_key_64bit0803\CompileToolsPkg\javaForWindows

註:-e後面的參數為ComplierPath.xml文件的目錄
技術分享圖片
7、在客戶端查看數據,記得必須點擊重新加載文件
技術分享圖片
由於測試的時候需要運行我們插裝後的代碼(編譯完成後會在java目錄同層生成src-instru目錄,src-instru目錄即為編譯插裝後的源碼);
具體操作:先將源碼目錄下未插裝的java目錄重命名為pre_java,再將編譯插裝生成的src-instru目錄命名為java。
並且插樁代碼的運行需要我們的jar包,因此需要修改客戶的pom.xml文件來引入我們的jar服務,加入到兩個<dependencies>之間,加入的代碼如下:
systemPath需要按JavaParser-j2ee.jar
和jeromq-0.3.0-SNAPSHOT.jar的絕對路徑填寫
 

 <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文件修改完成後即可打包發布 

3,打包dubbo的工程例子

1 zookeeper環境搭建
zk解壓到指定目錄下,解壓後,將con文件夾下的zoo_sample.cfg拷貝一份,重命名為zoo.cfg,註意修改cfg的內容如下,根據自己的目錄來修改:
技術分享圖片
技術分享圖片
windows系統下會使用zkServer.cmd開啟,所以在bin目錄下找到zkServer.cmd,雙擊開啟,這個是啟動後的成功的圖
技術分享圖片
 
打開以後就可以進行打包了,在eclipse打然後打包生產者和消費者(打包出來的是war包),將打包好的war包分別放在不同端口的tomcat中。

生產者啟動tomcat:
技術分享圖片
 
生產者在啟動tomcat時,向註冊中心註冊自己提供的服務
消費者啟動tomcat:
技術分享圖片
 
消費者在啟動時,向註冊中心訂閱自己所需的服務,註冊中心返回生產者地址列表給消費者,如果有變更,註冊中心將基於長連接推送變更數據給消費者。消費者將設置的標識通過一系列返回給生產者
打包完成,為使函數覆蓋率可視視圖代碼部分顯示正常,需要手動修改源碼路徑:右鍵版本,點擊修改源碼路徑,選擇到pre_src目錄即可。
技術分享圖片

4,編寫測試用例

技術分享圖片
點擊添加:
技術分享圖片
技術分享圖片
啟動測試用例
技術分享圖片

5,項目測試

1,設置標識

1,項目URL後面加teststars.jsp,訪問teststars.jsp頁面進行標識設置
技術分享圖片
2,點擊set標識進行設置,設置成功頁面如下:
技術分享圖片
註:為了區分測試,我們在設置的用戶姓名與星雲客戶端當前登錄用戶一致,
設置完成後頁面顯示是 
技術分享圖片
消費者通過web頁面設置標識
技術分享圖片
 
生產者:通過穿透將消費者設置的標識值穿透到生產者中
技術分享圖片
頁面點擊登陸進就會有相應的測試數據傳輸過來(具體的展示見後面測試結果的第一個標題:示波器的展示),數據接收完以後點擊停止,本條用例測試完畢
 
3, 生產者和消費者再客戶端的覆蓋率展示:
消費者在客戶端的展示:
技術分享圖片
 
生產者在客戶端的展示:
技術分享圖片
 

三 測試結果

1,示波器波形展示

先選中測試用例,再點擊開始後就可以進行相應的測試工作了,測試的時候示波器可以收到動態數據並以波形圖的方式展示出來。
技術分享圖片
註:采集的動態數據保存在服務端目錄下的VersionData文件夾下

2,缺陷管理

為了讓測式人員更好的對缺陷進行管理,采用測試用例、代碼、BUG相關聯方式,精準測試雲平臺使用了歷史BUG追查功能,這使得在版本叠代過程中,同一個測試用例所有的BUG情況一目了然,避免了因人員變動或版本變動導致的相同的BUG的排查時間,以及重復提交未被解決的BUG。
技術分享圖片
                   圖表 缺陷提交與管理
技術分享圖片
                   圖表 bug信息一目了然

3,覆蓋率

覆蓋率可視化針對函數sc0、True、false 、both、Branch、C/DC 、MC/DC 7種覆蓋率給出可視化展示下面針對每一種覆蓋率展示界面給出說明:(以sc0為例)
sc0為語句塊覆蓋,其顏色區分對象為基本語句塊(包括隱含不可見語句塊)其中綠色標示被覆蓋的語句塊。藍色是未覆蓋到的語句塊。
計算方法為:覆蓋到塊/應統計塊
技術分享圖片
 
用紅色的標出來的表示sc0覆蓋率,函數列表右方為覆蓋率的展示:
技術分享圖片

4,雙向追溯

雙向追溯是指通過運行測試用例,實現測試用例與被測源碼間相互追溯。根據測試用、
查看相關被測源碼為正向追溯,根據被測源碼查看相關測試用例為逆向追溯。在測試用例列表中選擇測試用例,可以追溯到該測試用例的內容描述信息,在模塊調用圖中顯示被測試到的函數;也可以在模塊調用圖中,點擊相關的函數,也可以追溯到相關的測試用例。該追溯技術方便了用戶查看和設計測試用例。

雙向追溯功能可以運行的前提是,測試用例已經被運行過,並且示波器收到了波形采集到了
動態數據。

1,正向追溯

正向追溯是指:將測試用例和海量的代碼執行信息自動關聯,可精確到函數級別及代碼塊級別;通過正向追溯可直接在代碼級定位測試現場故障和缺陷邏輯,並提供最後運行的時序數據;通過正向追溯自動記錄產生功能對應的詳細設計實現,輔助軟件解耦和架構分析。
正向追溯的優勢是:迅速定位缺陷對應的代碼執行邏輯,幫助開發快速修復缺陷,可追蹤難復現缺陷;精確、詳盡的記錄測試用例運行的情況,為精準軟件測試提供大量原生分析性數據;可以進行事後的缺陷分析、追蹤,輔助開發進行功能實現確認。
生產者的正向追溯:
技術分享圖片
 
消費者的正向追溯:
技術分享圖片
如圖:點擊測試用例追溯到這個用例運行過得函數,選中一個函數,追溯到這個函數運行過得控制流程圖的邏輯分支

以下是正向追溯到代碼和函數調用圖:
技術分享圖片
技術分享圖片

2,反向追溯

反向追溯是指:分析代碼關聯的功能,為研發分析系統和進行一致性修改以及回歸測試分析提供精確數據。
反向追溯過程:點擊需要查看的函數或函數中的某行代碼,自動列出可以測試到該函數或者程序分支的測試用例
生產者的反向追溯:
技術分享圖片
 
消費者的反向追溯:
技術分享圖片

選擇函數追溯到運行過該函數的測試用例,查看該函數的控制流程圖和代碼
技術分享圖片
點擊代碼,追溯到運行過該代碼的測試用例
 

5,簡易流程圖的展示

前置條件:版本有數據,關聯源碼可在代碼視圖有顯示源碼,並且在簡易控制流

程圖的分支塊有具體語句顯示,有覆蓋率數據,可在簡易控制流程圖顯示當前覆蓋到的塊信息
簡易控制流程圖功能,以語句塊的形式清晰的展示函數內部的控制邏輯,界面上可以直觀的看出控制流各節點的測試覆蓋情況,在展示中,簡易控制流程圖還可以通過顏色對每個程序塊進行覆蓋率標識,在縮略圖中整個模塊的覆蓋率非常直觀。(背景色為綠色表示有測試用例覆蓋到該塊:以SC0覆蓋為參考標準)
技術分享圖片
 

6,報表的展示

選擇客戶端所編譯的項目和版本:
顯示所選取編譯項目的一些基本信息,包括:
項目指標信息、項目信息、版本信息、測試匯總信息、測試過程監控趨勢圖、測試設備組成和分布圖、版本覆蓋率匯總圖、復雜度統計圖
項目匯總:
技術分享圖片
 
包含項目信息:項目的詳情信息
版本信息:版本的詳情信息
測試匯總信息:測試用例通過率:無BUG的測試用例
      BUG累計:測試用例運行完畢後提交的BUG數
      當前版本覆蓋率(SC0):(執行過可見段數/可見段數)*100%的比例
      覆蓋率增長:相比前一天的SC0增長差值
      高復雜度預警函數個數:高復雜度的函數個數
 
測試用例列表:
技術分享圖片
顯示制作的測試用例的詳細信息,包括測試用例的名稱、創建時間、執行時間、關聯函數、覆蓋率占比、運行狀態、測試人員等
覆蓋率按日增長曲線圖:
技術分享圖片
          覆蓋率按日增長曲線圖,讓管理者更好的把握測試過程

 測試漏洞列表:
技術分享圖片
 
在一個程序中,往往有成百上千的函數,這些函數有的是關聯整個程序核心、有的則是開發人員棄而不用,但一直保留遲遲不肯刪除的,針對這些大量的函數,“精準測試”采用通過靜態、動態指標的綜合分析,在大量的程序函數中,通過計算直接篩選潛在的高危的測試漏洞,通過報表給予展示。
 
  

  • 通過復雜度和覆蓋率進行計算
  • 通過函數調用上下文和覆蓋率進行計算

開發者測試(4)-采用精準測試工具對dubbo微服務應用進行測試