1. 程式人生 > >【星雲測試】開發者測試(2)-採用精準測試工具對J2EE Guns開發框架進行測試

【星雲測試】開發者測試(2)-採用精準測試工具對J2EE Guns開發框架進行測試

配置測試Guns

 Guns簡介    

 Guns是一個近幾年來基於SpringBoot的開源便利且較新的JavaEE專案開發框架,它整合了springmvc + shiro + mybatis-plus + beetl + flowable多項開源技術,致力於讓Java後臺開發更簡潔快速

  一,Guns的環境

Guns 原始碼

  Maven

  Eclipse-Photon

  JDK8

  MySQL

  安裝環境

 注:Eclipse和JDK的安裝和安裝包就用自己現有的就可以,星雲測試將提供MySQL和Nodejs的安裝包,但必須前提是使用者自己的本機上不存在安裝的MySQL和Nodejs

指令碼安裝mysql和nodejs(一鍵安裝)

  1、解壓星雲提供TT_Soft安裝包(例如D盤根目錄,mysql和node的安裝路徑)

  2、開啟TT_Soft資料夾

  3、以管理員身份執行TeststarsSoftInstall.exe

  4、等待自動安裝完成,視窗提示mysql初始化完成,關閉視窗

  5、登出或重啟電腦

  6、使用net start mysql 命令啟動MySQL服務

 

  7、使用node –v檢視node版本

  二,下載guns程式碼

  下載地址:https://gitee.com/naan1993/guns/

 

將下載下來的程式碼進行解壓

 

三,配置Guns

  一, Eclipse匯入Guns專案

 

 點選“Import...”後會出現如下圖的匯入對話方塊,請選擇Maven選項中的“Existing Maven Projects”。

 

 之後,點選“Next”按鈕後,按如下圖的①、②和③的操作選中之前解壓的Guns-master目錄

 匯入成功後如下圖所示,可看見guns-admin、guns-core、guns-generator、guns-parent和guns-rest五個專案。成功將guns專案匯入eclipse

 

guns-admin是Guns管理系統

guns-generator是maven程式碼的生成

guns-core是其他模組提煉出來的公共的程式碼

guns-parent是maven的的父模組,父模組的作用就是管理其它的子模組,可以把我們依賴都提到parent,並且對我們依賴的版本做一個統一的維護。

gun-rest本意是些一個app 服務端,提供rest API服務,許可權和md5加密

  二,配置Guns專案的資料庫

   在匯入成功的“guns-admin”專案中,我們能夠找到“sql”目錄下的guns.sql檔案,如下圖所示,將開啟後的guns.sql中所有的內容複製一下。

 新建資料庫名為guns,點選guns資料庫中的“查詢”後,將上面複製的sql直接執行,出現下面這些表即為正確  

三,修改Guns專案的配置檔案並執行

   在Eclipse中,找到guns-admin專案中的“application.yml”檔案,它在src/main/resource路徑下,並將該檔案中所有的“username和password”部分的password預設的root值改為讀者安裝MySQL時所設定的密碼,該步驟具體如下圖所示:

 修改完此配置檔案後,我們就可以開始執行guns專案了,請找到guns-admin專案中的src/main/java路徑下的,com.style.guns目錄中的GunsApplication.java檔案,它是guns專案的主程式檔案,點選執行

成功執行後,開啟瀏覽器,在瀏覽器的位址列中輸入:http://localhost:8080

 

點選登入後,可進入如下圖介面:

 

Guns已成功部署並執行成功。

  四,測試專案

  1, 下載工具及工具配置

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

 

下載以後進行配置:

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

  TTLangage.config配置項說明:

 

 1、 執行下的星雲測試server目錄中ThreadingTestServer.exe,在右下的圖表中點註冊資訊,檢視其時間,星雲測試有兩個月的體驗,若是超過兩個月,發生KEY過期,請聯絡星雲測試的工作人員,並提交服務端中的序列碼

 

 2、聯絡星雲工作人員獲取當前伺服器的key.key檔案,替換到星雲的server目錄下;

 3、啟動server目錄下的ThreadingTestServer.exe後會自動開啟同級目錄下的ThreadingTestServerFront.exe,看到自動彈出下面視窗後,表示連線正常。

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

    注:星雲測試線上客戶端的連線需要訪問埠17262/17263.登陸之前需要保證網路連線不存在限制。

 開啟客戶端之前需要修改TTClient資料夾下的Server.cfg檔案,配置localIP項為可以與服務端正常資料通訊的本機IP地址。配置這個localIP的原因是,在客戶端需要接收來自服務端傳來的動態資料,配置本地的IP地址服務端才能把資料傳到客戶端中來。

 配置IP地址完成後雙擊執行TTClient/TT.exe檔案進入星雲測試客戶端。選擇檔案->登入,輸入星雲測試服務端的IP地址以及自己的使用者名稱和密碼即可登入。如下圖所示。  

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檔案路徑

因為專案是四個子專案,所以,必須得有四個模組,如下圖:

 

   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檔案修改完成後即可打包釋出

 編譯以後打包成jar包(具體的打包方法參考6,執行專案)

 打包完成,為使函式覆蓋率可視檢視程式碼部分顯示正常,需要手動修改原始碼路徑:右鍵版本,點選修改原始碼路徑,選擇到pre_java目錄即可。

 

 3,測試前準備

  1、新增資料傳輸配置檔案

 資料傳輸配置檔案是保證執行的資料可以回傳到星雲伺服器的。配置方法是在具體的客戶測試環境下的usr/local/bin資料夾下新建配置檔案config.cfg 檔案內容如下:

state=1

IP=(IP值寫星雲測試服務端IP,注意要大寫)

(如果釋出環境是windows環境,需要在C盤根目錄下配置上述檔案)

 2,agent啟動專案

cmd輸入命令:

java -javaagent:E:\zoa-agent-1.6.2\zoa-agent-1.6.2.jar -jar

G: \naan1993-guns-master\guns-admin\target\ guns-admin-1.0.0.jar

  E:\zoa-agent-1.6.2\zoa-agent-1.6.2.jar =agent路徑

G: \naan1993-guns-master\guns-admin\target\ guns-admin-1.0.0.jar =專案路徑

出現這樣的介面表示執行成功:

 

   3,設定cookie

 1,專案URL後面加teststars.jsp,訪問teststars.jsp頁面進行cookie設定

 

   2,點選setcookie進行設定,設定成功頁面如下:

 

注:為了區分測試,我們在設定的使用者姓名與星雲客戶端當前登入使用者一致,

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

   1、 執行星雲測試TTWeb目錄下的bin\redis-2.4.5-win32-win64\32bit中的redis-server.exe

 

 2、執行星雲測試TTWeb目錄下的startTTwebserver.bat

   

 訪問網頁報表網頁IP地址:3000

  4,編寫測試用例

 

點選新增:

 

 

5,專案測試

  訪問地址:http://localhost:8080/login  

   

 頁面登陸進去以後,假如測試內容管理的文章管理的測試用例,則選擇內容管理的文章管理的用例,點選開始,在頁面上點選內容管理的文章管理,就會有相應的測試資料傳輸過來(具體的展示見後面測試結果的第一個標題:示波器的展示),資料接收完以後點選停止,本條用例測試完畢

  五**,測試結果**

 1,示波器波形展示  先選中測試用例,再點選開始後就可以進行相應的測試工作了,測試的時候示波器可以收到動態資料並以波形圖的方式展示出來。

   注:採集的動態資料儲存在服務端目錄下的VersionData資料夾下,對應版本的動態資料注:採集的動態資料儲存在服務端目錄下的VersionData資料夾下,對應版本的動態資料儲存在相應的版本號目錄下(版本號可在資料庫management表的version表中檢視)

   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增長差值

  高複雜度預警函式個數:高複雜度的函式個數

  測試用例列表:

 

 顯示製作的測試用例的詳細資訊,包括測試用例的名稱、建立時間、執行時間、關聯函式、覆蓋率佔比、執行狀態、測試人員等

  覆蓋率按日增長曲線圖:

 

覆蓋率按日增長曲線圖,讓管理者更好的把握測試過程

  測試漏洞列表:

 

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

  • 通過複雜度和覆蓋率進行計算
  • 通過函式呼叫上下文和覆蓋率進行計算