簡介:本文主要介紹把現今主流的springboot框架項目和精準測試工具進行結合和應用,經過精準測試的數據穿透、數據採集、測試用例與代碼的雙向追溯、數據分析等一系列精準測試的特有功能,達到對項目質量的保證。 html
本次環境搭建分爲基礎環境準備、springboot環境搭建、精準測試環境搭建、精準測試與springboot環境對接等一整套完整的配置過程,用戶能夠經過下圖中的流程圖確認本身所部署過程當中進行到的階段點,從而排查部署中可能碰見的問題。java
一,Spring Boot配置流程node
1,使用工具mysql
1, Eclipse Java Photongit
2, Spring Bootgithub
3, JDK 1.8web
4, MySQL 5.7redis
5, Navicat for MySQLspring
6, apache-maven-3.5.4sql
7, zoa-agent-1.6.2
8, J2EE_Enterprise_key_64bit0614
9, 項目:Moxi(https://github.com/daleiwang/moxi)
2, 配置所需的安裝
1,安裝Eclipse、JDK、MySQL、Nodejs
注:Eclipse和JDK的安裝和安裝包就用本身現有的就能夠,星雲測試將提供MySQL和Nodejs的安裝包,但必須前提是用戶本身的本機上 不存在安裝的MySQL和Nodejs
腳本安裝mysql和nodejs
一、解壓星雲提供的mysql-5.7.16-winx64安裝包和nodejs安裝包到服務器根目錄中(例如D盤根目錄)。
二、右鍵以管理員身份運行星雲提供的自動化安裝工具mysql_nodejs_install.exe
三、輸入nodejs的目錄,回車。以下圖所示:
四、輸入mysql的絕對路徑(到bin),而後回車。等程序運行完畢,mysql的root密碼被修改爲root就能夠手動關閉程序。
2,安裝Spring Boot插件
Eclipse安裝Spring Boot插件,Help-Eclipse Marketplace,搜索Spring Tools安裝STS,如圖:
也能夠經過 下載地址:https://spring.io/tools/sts/all 進行下載,
下載之後安裝,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,Browse= 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文件 build標籤加一行<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,運行程序
Eclipse環境運行:Run As——Spring Boot App
打包運行:右鍵項目Maven-Maven install,項目目錄target文件夾生成jar包,cmd運行。項目初次運行會下載所需依賴庫,消耗時間較長。
在Eclipse環境運行成功之後界面是這樣的:
二,測試項目
1, 下載工具及工具配置
2, 從官網上下載星雲測試工具:http://www.teststars.cc/
下載之後進行配置:
2,星雲測試服務端的配置
TTLangage.config配置項說明:
一、 運行下的星雲測試server目錄中ThreadingTestServer.exe,在右下的圖表中點註冊信息,查看其時間,星雲測試有兩個月的體驗,如果超過兩個月,發生KEY過時,請聯繫星雲測試的工做人員,並提交服務端中的序列碼
二、聯繫星雲工做人員獲取當前服務器的key.key文件,替換到星雲的server目錄下;
三、啓動server目錄下的ThreadingTestServer.exe後會自動打開同級目錄下的ThreadingTestServerFront.exe,看到自動彈出下面窗口後,表示鏈接正常。
3,星雲測試客戶端的配置
注:星雲測試在線客戶端的鏈接須要訪問端口17262/17263.登錄以前須要保證網絡鏈接不存在限制。
打開客戶端以前須要修改TTClient文件夾下的Server.cfg文件,配置localIP項爲能夠與服務端正常數據通訊的本機IP地址。配置這個localIP的緣由是,在客戶端須要接收來自服務端傳來的動態數據,配置本地的IP地址服務端才能把數據傳到客戶端中來。
配置IP地址完成後雙擊運行TTClient/TT.exe文件進入星雲測試客戶端。選擇文件->登陸,輸入星雲測試服務端的IP地址以及本身的用戶名和密碼便可登陸。以下圖所示。
4,星雲測試雲報表平臺服務啓動
一、 運行星雲測試TTWeb目錄下的bin\redis-2.4.5-win32-win64\32bit中的redis-server.exe
二、運行星雲測試TTWeb目錄下的startTTwebserver.bat
訪問網頁報表網頁IP地址:3000
2,建立工程和版本並編譯
1, 登陸客戶端
2, 選中待插裝的空版本,版本處於解鎖狀態(解鎖狀態:右鍵-解鎖狀態)
3, javaForWindows目錄下的Server.cfg配置文件,[SERVER] ip填寫實際ip地址,修改[PROPERTY]字段,與客戶端目錄下的Server.cfg同步
四、修改javaForWindows目錄下的ComplierPath.xml配置文件
同一個版本下可添加多個子模塊即proname,proname不能重複,一個子模塊下能夠配置多個工程路徑
ProName:子模塊名稱
Project_path:測試程序源碼文件路徑
Class_path:測試程序class文件路徑
五、修改javaForWindows目錄下tt_windows文件夾下Server.ini配置文件 Ip設置爲客戶端的ip地址。
六、在命令行運行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,測試前準備
一、添加數據傳輸配置文件
數據傳輸配置文件是保證運行的數據能夠回傳到星雲服務器的。配置方法是在具體的客戶測試環境下的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 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,項目測試
訪問地址:http://localhost:8080/admin/login
頁面登錄進去之後,假如測試內容管理的文章管理的測試用例,則選擇內容管理的文章管理的用例,點擊開始,在頁面上點擊內容管理的文章管理,就會有相應的測試數據傳輸過來(具體的展現見後面測試結果的第一個標題:示波器的展現),數據接收完之後點擊中止,本條用力測試完畢
三,測試結果
1,示波器波形展現
先選中測試用例,再點擊開始後就能夠進行相應的測試工做了,測試的時候示波器能夠收到動態數據並以波形圖的方式展現出來。
注:採集的動態數據保存在服務端目錄下的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增加差值
高複雜度預警函數個數:高複雜度的函數個數
測試用例列表:
顯示製做的測試用例的詳細信息,包括測試用例的名稱、建立時間、執行時間、關聯函數、覆蓋率佔比、運行狀態、測試人員等
覆蓋率按日增加曲線圖:
覆蓋率按日增加曲線圖,讓管理者更好的把握測試過程
測試漏洞列表:
在一個程序中,每每有成百上千的函數,這些函數有的是關聯整個程序核心、有的則是開發人員棄而不用,但一直保留遲遲不願刪除的,針對這些大量的函數,「精準測試」採用經過靜態、動態指標的綜合分析,在大量的程序函數中,經過計算直接篩選潛在的高危的測試漏洞,經過報表給予展現。
經過複雜度和覆蓋率進行計算
經過函數調用上下文和覆蓋率進行計算