【星雲測試】開發者測試-採用精準測試工具對Spring Boot應用進行測試
簡介:本文主要介紹把現今主流的 s pringboot 框架專案和精準測試工具進行結合和應用,透過精準測試的資料穿透、資料採集、測試用例與程式碼的雙向追溯、資料分析等一系列精準測試的特有功能,達到對專案質量的保證。
本次環境搭建分為基礎環境準備、 s pringboot 環境搭建、精準測試環境搭建、精準測試與 s pringboot 環境對接等一整套完整的配置過程,使用者可以透過下圖中的流程圖確認自己所部署過程中進行到的階段點,從而排查部署中可能遇見的問題。
一, Spring Boot 配置流程
1 ,使用工具
1, Eclipse Java Photon
2, Spring Boot
3, JDK 1.8
4, MySQL 5.7
5, Navicat for MySQL
6, apache-maven-3.5.4
7, zoa -agent-1.6.2
8, J2EE_Enterprise_key_64bit0614
9, 專案: Moxi( )
1, 配置所需的安裝
1 ,安裝 Eclipse 、 JDK 、 MySQL 、 Nodejs
注: Eclipse和JDK的安裝和安裝包就用自己現有的就可以,星雲測試將提供MySQL和Nodejs的安裝包,但必須前提是使用者自己的本機上不存在安裝的MySQL和Nodejs
指令碼安裝 mysql 和 nodejs
1、解壓星雲提供的 mysql-5.7.16-winx64 安裝包和 nodejs安裝包到伺服器根目錄中(例如D盤根目錄)。
2、右鍵 以管理員身份執行 星雲提供的自動化安裝工具 mysql_nodejs_install .exe
3、輸入nodejs的目錄,回車。如下圖所示:
4、輸入mysql的絕對路徑(到bin),然後回車。等程式執行完畢,mysql的root密碼被修改成root就可以手動關閉程式。
2 ,安裝 Spring Boot 外掛
Eclipse安裝Spring Boot外掛,Help-Eclipse Marketplace,搜尋Spring Tools安裝STS,如圖:
也可以透過 下載地址: 進行下載, 下載以後 安裝, Eclipse——Help——Install new Sofware,下一步、下一步安裝即可。
3, 安裝 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如下即安裝成功。
1, Eclipse替換自帶為本地Maven
Windows-Preferences-Maven-Installations-Add,路徑指向
E:\apache-maven-3.5.4 ,載入完成後勾選新的 apache-maven-3.5.4,Apply。
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,Bro wse= E:\apache-maven-3.5.4\conf\settings.xml , Apply。
3 ,新建工程和執行工程
選擇 Spring Starter Project
工程名字,定義為 moxi, 工 程選擇 Web下面的Web,然後Finesh,接下來會初始化下載Maven管理的相關jar包。
工程結構 大致 如下:
工程 ——右鍵——Run As——Spring Boot App
新增除錯:
為了解決
每次修改程式碼還要重新啟動工程,
工程
——右鍵——Spring Tools——Add Boot Devtools,那麼每次修改類檔案就會自動編譯了。
4 ,整合 Mybatis
剛才已經下載好了 MySQL,現在我們新增pom.xml檔案
b uild標籤加一行 <defaultGoal>compile</defaultGoal> 如下
然後是 mybatis 和 mysql :
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.2.0</version>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
在 application.properties檔案中新增資料來源配置:、
Navicat連線本地mysql,新建資料庫moxi,查詢執行專案git頁面列出來的sql語句自動建立該專案需要的資料庫內容。
可以透過建立 Model、Service和Controller 驗證資料庫是否連線成功
5 ,整合 thymeleaf
新增 thymeleaf依賴
配置 application.properties
引入檔案:如圖,引入相應的樣式、圖片和 js檔案,引入頁面檔案:
引入 html:注demo和news裡面也是html檔案
6 ,執行程式
E clipse環境執行: Run As——Spring Boot App
打包執行:右鍵專案 Maven-Maven install,專案目錄target資料夾生成jar包,cmd執行。專案初次執行會下載所需依賴庫,消耗時間較長。
在 E clipse環境執行成功以後介面是這樣的:
二,測試專案
1, 下載工具及工具配置
下載以後進行配置:
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 不能重複 ,一個子模組下可以配置多個工程路徑
P ro Name :子模組名稱
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 檔案內容如下:
s tate=1
IP=(IP值寫星雲測試服務端 IP ,注意要大寫)
( 如果釋出環境是 windows環境 , 需要在 C盤根目錄下 配置上述檔案)
2 , agent 啟動專案
cmd輸入命令:
j ava -javaagent:E:\ zoa -agent-1.6.2\ zoa - agent -1.6.2.jar
-jar E:\ moxi-0.0.1-SNAPSHOT.jar
E:\ zoa -agent-1.6.2\ zoa - agent -1.6.2.jar =agent路徑
E:\ moxi-0.0.1-SNAPSHOT.jar =專案路徑
出現這樣的介面表示執行成功:
3 ,設定 cookie
1,專案URL後面加teststars.jsp,訪問teststars.jsp頁面進行cookie設定
2,點選setcookie進行設定,設定成功頁面如下:
注:為了區分測試,我們在設定的使用者姓名與 星雲客戶端當前登入使用者 一致,
4 ,編寫測試用例
點選新增:
5 ,專案測試
訪問地址 :
頁面登陸進去以後,假如測試內容管理的文章管理的 測試用例, 則選擇內容管理的文章管理的用例,點選 開始, 在頁面上點選內容管理的文章管理,就會有相應的測試資料傳輸過來(具體的展示見後面測試結果的第一個標題:示波器的展示),資料接收完以後點選停止,本條用力測試完畢
三,測試結果
1 ,示波器波形展示
先選中測試用例,再點選開始後就可以進行相應的測試工作了,測試的時候示波器可以收到動態資料並以波形圖的方式展示出來。
注 :採集的動態資料儲存在服務端目錄下的 VersionData資料夾下 , 對應版本的 動態 資料儲存在相應的版本號目錄下 (版本 號可在 資料庫 management表的version表中檢視)
2 ,缺陷管理
為了讓測式人員更好的對缺陷進行管理,採用測試用例、程式碼、 BUG相關聯方式,精準測試雲平臺使用了歷史BUG追查功能,這使得在版本迭代過程中,同一個測試用例所有的BUG情況一目瞭然,避免了因人員變動或版本變動導致的相同的BUG的排查時間,以及重複提交未被解決的BUG。
圖表 缺陷提交與管理
圖表 bug 資訊 一目瞭然
3 ,覆蓋率
覆蓋率視覺化針對函式 sc0、 T rue、false 、both、 B ranch、C/DC 、MC/DC 7 種覆蓋率給出視覺化展示下面針對每一種覆蓋率展示介面給出說明:(以 sc0為例 )
sc0為語句塊覆蓋,其顏色區分物件為基本語句塊(包括隱含不可見語句塊)其中綠色標示被覆蓋的語句塊。藍色是未覆蓋到的語句塊。
計算方法為:覆蓋到塊 /應統計塊
用紅色的標出來的表示 sc0 覆蓋率,函式列表右方為覆蓋率的展示:
4 ,雙向 追溯
雙向追溯是指透過執行測試用例,實現測試用例與被測原始碼間相互追溯。根據測試用、
檢視相關被測原始碼為正向追溯,根據被測原始碼檢視相關測試用例為逆向追溯。在測試用例列表中選擇測試用例,可以追溯到該測試用例的內容描述資訊,在模組呼叫圖中顯示被測試到的函式;也可以在模組呼叫圖中,點選相關的函式,也可以追溯到相關的測試用例。該追溯技術方便了使用者檢視和設計測試用例。
雙向追溯功能可以執行的前提是 , 測試用例已經被執行過 , 並且示波器收到了波形 採集到了
動態資料。
1 , 正向追溯
正向追溯是指:將測試用例和海量的程式碼執行資訊自動關聯,可精確到函式級別及程式碼塊級別;透過正向追溯可直接在程式碼級定位測試現場故障和缺陷邏輯,並提供最後執行的時序資料;透過正向追溯自動記錄產生功能對應的詳細設計實現,輔助軟體解耦和架構分析。
正向追溯的優勢是:迅速定位缺陷對應的程式碼執行邏輯,幫助開發快速修復缺陷,可追蹤難復現缺陷;精確、詳盡的記錄測試用例執行的情況,為精準軟體測試提供大量原生分析性資料;可以進行事後的缺陷分析、追蹤,輔助開發進行功能實現確認。
如圖:點選測試用例追溯到這個成而是用例執行過得函式,選中一個函式,追溯到這個函式執行過得控制流程圖的邏輯分支
以下是正向追溯到程式碼和函式呼叫圖:
2 , 反向追溯
反向追溯是指:分析程式碼關聯的功能,為研發分析系統和進行一致性修改以及迴歸測試分析提供精確資料。
反向追溯過程:點選需要檢視的函式或函式中的某行程式碼,自動列出可以測試到該函式或者程式分支的測試用例
選擇函式 追溯到執行過該函式的測試用例,檢視該函式的控制流程圖和程式碼
點選程式碼, 追溯到執行過該程式碼的測試用例
5 ,簡 易流程圖的展示
前置 條件:版本 有 資料 , 關聯原始碼可在程式碼檢視有顯示 原始碼 ,並且在 簡易 控制 流
程 圖的分支塊有具體語句顯示,有覆蓋率資料,可在 簡易 控制流程圖顯示當前覆蓋到的 塊資訊
簡易控制流程圖功能,以 語句塊的形式 清晰的展示函式內部的控制邏輯,介面上可以直觀的看出控制流各節點的測試覆蓋情況,在展示 中, 簡易控制流程圖還可以透過顏色對每個程式塊進行覆蓋率標識,在縮圖中整個模組的覆蓋率非常直觀。(背景 色為綠色表示有測試用例覆蓋到 該 塊:以 SC0 覆蓋 為參考標準 )
6 , 報表的展示
選擇客戶端所編譯的專案和版本:
顯示所選取編譯專案的一些基本資訊,包括 :
專案 指標資訊、 專案資訊、版本資訊、測試彙總資訊、測試過程監控趨勢圖、測試裝置組成和分佈圖、版本覆蓋率彙總圖、複雜度統計圖
專案彙總:
包含專案資訊:專案的詳情資訊
版本資訊:版本的詳情資訊
測試彙總資訊: 測試用例透過率:無 BUG的測試用例
BUG累計:測試用例執行完畢後提交的BUG數
當前版本覆蓋率 (SC0): (執行過可見段數/可見段數) *100% 的比例
覆蓋率增長: 相比前一天的 SC0增長差值
高複雜度預警函式個數: 高複雜度的函式個數
測試用例列表:
顯示製作的測試用例的詳細資訊,包括測試用例的名稱、建立時間、執行時間、關聯函式、覆蓋率佔比、執行狀態、測試人員等
覆蓋率按日增長曲線圖:
覆蓋率按日增長曲線圖 ,讓管理者更好的把握測試過程
測試漏洞 列表 :
在一個程式中,往往有成百上千的函式,這些函式有的是關聯整個程式核心、有的則是開發人員棄而不用,但一直保留遲遲不肯刪除的,針對這些大量的函式, “ 精準測試 ” 採用透過靜態、動態指標的綜合分析,在大量的程式函式中,透過計算直接篩選潛在的高危的測試漏洞,透過報表給予展示。
n 透過複雜度和覆蓋率進行計算
n 透過函式呼叫上下文和覆蓋率進行計算
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31547070/viewspace-2213528/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 開發者測試-採用精準測試工具對Spring Boot應用進行測試Spring Boot
- 【星雲測試】開發者測試-採用精準測試工具對SpringBoot應用進行測試Spring Boot
- 【星雲測試】開發者測試(3)-採用精準測試工具對springcloud微服務應用進行穿透測試SpringGCCloud微服務穿透
- 開發者測試(4)-採用精準測試工具對dubbo微服務應用進行測試微服務
- 【星雲測試】開發者測試(2)-採用精準測試工具對J2EE Guns開發框架進行測試框架
- 開發者測試(3)-採用精準測試工具對springcloud微服務應用進行穿透測試SpringGCCloud微服務穿透
- 開發者測試(2)-採用精準測試工具對J2EE Guns開發框架進行測試框架
- 星雲精準測試對安卓底層驅動程式碼的測試案例分析安卓
- 測試測試測試測試測試測試
- 測試面試-測試用例面試
- 如何測試 Flutter 應用? ー 單元測試Flutter
- JavaScript 測試教程-part 1:用 Jest 進行單元測試JavaScript
- 精準測試實踐
- 使用 Spring Boot 進行單元測試Spring Boot
- 【星雲測試】Devops微服務架構下具有程式碼級穿透能力的精準測試dev微服務架構穿透
- Spring、Spring Boot和TestNG測試指南 – 共享測試配置Spring Boot
- 用mysqlslap對MySQL進行壓力測試MySql
- Mokito 單元測試與 Spring-Boot 整合測試Springboot
- spring boot 整合測試Spring Boot
- Flutter應用進行自動化測試Flutter
- 使用混沌候攻擊測試Spring Boot應用Spring Boot
- junit測試工具運用
- Angular單元測試如何只執行指定的測試用例,提高測試速度Angular
- 移動應用的測試策略與測試架構架構
- postman工具進行介面測試Postman
- 測試用例
- [測試]Sprint Bootboot
- 測試管理及測試工具盒集
- 【轉】測試用例編寫(功能測試框架)框架
- Spring Boot 單元測試Spring Boot
- Spring Boot 中測試 CORSSpring BootCORS
- 移動測試基礎 Android 應用測試總結Android
- Android應用程式測試-Alltesting|澤眾雲測試Android
- 移動應用app測試怎麼進行?APP
- Web應用掃描測試工具VegaWeb
- 專案中測試工具的應用
- [測試工具]
- teprunner測試平臺測試計劃批量執行用例