基于持續(xù)集成技術的集成測試平臺研究與實現(xiàn)

作者:李瀟 吳松華 魏偉波 發(fā)布日期:2019/01/08

摘要集成測試平臺通過建設基于持續(xù)集成框架的基礎架構平臺,實現(xiàn)代碼托管、版本控制、持續(xù)集成、靜態(tài)分析、動態(tài)測試、自動化測試、缺陷管理功能,將當前的傳統(tǒng)軟件測試工具遷移到集成測試平臺,達到提高測試資源利用率、降低測試成本、加強測試質量的目的。

關鍵字:持續(xù)集成;集成測試;版本控制;本地工具遷移;自動化測試

 

1  引言

隨著信息技術的快速發(fā)展,用戶對便捷、可靠、安全的應用系統(tǒng)需求越來越高。與此同時,對于軟件測試的要求也日漸提高,軟件的安全性、可靠性更是至關重要。但是當前企業(yè)的研發(fā)測試工具相對落后,彼此間的閑置測試資源不能跨越融合,導致大量的測試資源浪費。對于當前亟待提高的軟件測試能力與資源配置能力,基于持續(xù)集成框架的軟件集成測試平臺能夠較好解決這些問題。集成測試平臺具備節(jié)約成本、按需提供、早期測試以及自動化測試的優(yōu)點,能夠幫助軟件企業(yè)實現(xiàn)軟件質量控制以及節(jié)約測試成本的目的。

2  技術研究理論概述

根據(jù)基于持續(xù)集成框架的軟件集成測試平臺的研究目標,以業(yè)務需求、安全可靠、經(jīng)濟適用、可擴展性強、規(guī)范標準化為原則,擬搭建一個具有代碼托管、版本控制、項目持續(xù)集成、多測試工具輔助集成、自動化測試、缺陷管理、軟件質量度量以及用戶/任務管理功能的集成測試平臺。集成測試平臺的功能結構圖如下圖所示:

 

圖片1.png

1 集成測試平臺功能結構圖

  2.1基于持續(xù)集成框架的集成測試平臺架構

集成測試平臺通過建設以持續(xù)集成框架為基礎的架構平臺,構建版本控制、代碼托管、持續(xù)集成、自動化測試與測試管理功能,同時實現(xiàn)將當前的傳統(tǒng)桌面測試工具遷移到集成平臺進行集中管理。

  2.2集成測試平臺代碼托管與版本控制功能

代碼托管與版本控制模塊為開發(fā)人員提供在線的源代碼管理功能,具體包括代碼推送、代碼推送、分支合并、沖突解決等功能。

  2.3集成測試平臺持續(xù)集成功能

持續(xù)集成是頻繁、持續(xù)的在多個團隊成員的工作中進行集成、測試,并且給予反饋的能力,是集成測試平臺的核心功能部分。該模塊主要包括檢出代碼、編譯構建、運行測試、結果記錄、測試統(tǒng)計功能。

  2.4集成測試平臺測試工具遷移

解決本地測試工具(TestbedKlocwork、C++Test等)遷移到集成測試平臺服務器端的兼容性與接口問題,在集成測試平臺對多個項目任務實現(xiàn)自動排隊,調用測試工具按照一定順序對提交的任務進行分析測試,并將測試結果反饋給相關開發(fā)測試人員,防止用戶集中調用測試工具引起的資源沖突。

  2.5集成測試平臺自動化測試功能

定期或者由事件觸發(fā)進行軟件測試,在非工作時間進行重復性較大的靜態(tài)分析與回歸測試工作,實現(xiàn)對軟件的自動化測試,減少大量重復、枯燥的人力測試工作。包括自動化靜態(tài)分析功能開發(fā)與自動化動態(tài)測試功能開發(fā)。

  2.6集成測試平臺缺陷管理以及軟件質量度量功能

缺陷管理功能包括缺陷生命周期管理功能與缺陷統(tǒng)計功能。軟件質量度量能力包括SLOC(源代碼行數(shù))統(tǒng)計、單位缺陷數(shù)、代碼覆蓋率、設計開發(fā)約束、圈復雜度功能開發(fā)。

  2.7集成測試平臺用戶管理、任務管理功能

提供用戶管理服務與任務管理服務。用戶管理包括用戶注冊、用戶登錄、角色/權限管理、用戶分組等功能;任務管理包括任務創(chuàng)建、任務分配、任務追蹤、任務刪除以及任務信息展示等功能。

3  研究方案與技術路徑

根據(jù)平臺搭建的技術標準,研究集成測試平臺的整體架構與具體實現(xiàn),通過集成各種工具實現(xiàn)平臺的各種集成測試功能。

  3.1集成測試平臺架構

集成測試平臺的基本架構圖與組成原理圖如下圖所示。

圖片2.png

2 集成測試平臺組成原理圖

集成測試平臺通過持續(xù)集成服務作為中心節(jié)點,連接版本控制與代碼托管服務、靜態(tài)分析與動態(tài)測試服務、缺陷管理服務、軟件質量度量服務所在節(jié)點,對各服務節(jié)點進行統(tǒng)一調度管理。

代碼托管與版本控制服務獲取源碼信息,同時將源碼信息推送到持續(xù)集成服務端。持續(xù)集成平臺服務端按照項目對源碼信息進行編譯構建,并調用平臺測試工具對構建后項目進行靜態(tài)分析、動態(tài)測試等測試工作,測試工具在對項目進行軟件測試與質量度量后,將產(chǎn)生的測試結果與度量結果推送到缺陷管理工具,同時平臺對測試結果報告進行顯示。

  3.2集成測試平臺代碼托管與版本控制功能

代碼托管與版本控制工具分為服務器端工具與客戶端工具,本系統(tǒng)采用的代碼托管與版本控制工具的服務器端工具采用gitlab,客戶端工具采用git以及turtoise。

本方案將Gitlab工具部署在服務器端。Gitlab安裝設置完成后,啟動相關服務,通過瀏覽器登錄gitlab服務端,為用戶項目新建一個項目,為用戶提供在線代碼倉庫,使用戶可以通過客戶端工具將本地代碼提交到服務器端。

為了實現(xiàn)客戶的本地計算機與服務器端代碼倉庫的交互,需要安裝本地git客戶端,為客戶提供拉取、推送、確認、克隆等代碼管理服務。在安裝客戶端時,需要為用戶指定服務器的代碼倉庫地址以及對應的用戶及項目,同時用戶在客戶端需要建立本地代碼版本庫,與服務端倉庫進行同步。

為了向用戶提供更加友好的版本控制工具界面,本方案使用TortoiseGit作為Git 圖形界面操作工具,可以為不熟悉linux shell腳本或者命令行的新手用戶提供快速上手的可能,降低用戶的學習成本的使用阻力。

  3.3集成測試平臺持續(xù)集成功能

本方案采用jenkins作為持續(xù)集成的實現(xiàn)工具,典型的集成如下圖所示。

圖片3.png

3 持續(xù)集成的典型流程

首先,將jenkins持續(xù)集成服務從gitlab版本控制中心/代碼倉庫獲取最新的源程序代碼,隨后從測試參數(shù)配置界面讀取用戶設置的測試參數(shù),并通過批處理命令調用測試工具對獲取到的源程序進行測試,最后通過發(fā)布插件將測試結果反饋給用戶,用戶根據(jù)結果測試問題更改代碼,再次提交代碼到gitlab版本控制中心/代碼倉庫。整個流程形成閉環(huán),持續(xù)集成促進代碼質量提升。

  3.4集成測試平臺測試工具遷移

在本地測試工具的遷移過程中,需要研究集成測試平臺軟件對本地測試工具的支持情況與插件開發(fā)情況,將當前擁有的商用測試工具遷移到集成測試平臺中,為集成測試平臺提供測試服務與測試結果信息,需要遷移的工具包括Testbed、KlocworkC++test,同時為增加軟件測試工具的豐富程度,引入cppcheck工具作為程序靜態(tài)分析工具的補充。

C++test工具的遷移思路是,將整個測試流程作為一個命令行/SHELL實現(xiàn)。在整個測試流程中,包括待測試源程序拷貝到測試工作空間、選擇合適的測試策略或者分析準則、啟動測試工具以及最終生成測試報告。

C++TEST工具的腳本執(zhí)行流程如下圖所示。

圖片4.png

4 C++test工具的集成測試流程

Testbed、klocwork、Cppcheck等其他工具的遷移過程與c++Test工具類似,通過命令行對工具進行調用,最終通過生成需要的測試報告。

  3.5集成測試平臺自動化測試功能

自動化測試是把以人為驅動的測試行為轉化為機器執(zhí)行的過程。集成測試平臺自動化測試服務提供自動化靜態(tài)分析、自動化動態(tài)測試功能。

自動化靜態(tài)分析,提供定期或者由事件觸發(fā)進行靜態(tài)分析功能,在非工作時間進的靜態(tài)分析工作,其主要工作原理如下圖所示。

圖片5.png

5 自動化靜態(tài)分析原理圖

在持續(xù)集成服務器中配置版本控制服務器與靜態(tài)分析工具運行服務器,在構建設置中設置靜態(tài)分析任務的觸發(fā)條件或者觸發(fā)時間,設置測試結果/報告的推送端口/人員。

自動化動態(tài)測試,提供定期或者由事件觸發(fā)進行動態(tài)測試功能,在非工作時間進的動態(tài)測試工作,其主要工作原理如下圖所示。

圖片6.png

6 自動化動態(tài)測試原理圖

在持續(xù)集成服務器中配置版本控制、測試用例/樁函數(shù)服務器與動態(tài)測試工具運行服務器,在構建設置中設置動態(tài)測試任務的觸發(fā)條件或者觸發(fā)時間,設置測試結果/報告的推送端口/人員。

  3.6集成測試平臺缺陷管理以及軟件質量度量功能

集成測試平臺缺陷管理服務包括缺陷生命周期管理、缺陷統(tǒng)計服務。缺陷生命周期管理包括缺陷產(chǎn)生、缺陷分派、缺陷修復、缺陷檢查、缺陷管理、缺陷再開等多個步驟,追蹤缺陷從產(chǎn)生到修復/關閉的整個流程,提供缺陷等級、缺陷類型等多維度的劃分服務;缺陷統(tǒng)計提供缺陷匯總統(tǒng)計展示功能,將項目各個階段甚至整個研發(fā)過程的缺陷動態(tài)通過不同的可視化工具統(tǒng)計展示,為相關人員提供度量參考。

集成測試平臺的缺陷管理工具主要通過集成jira工具來實現(xiàn)缺陷管理。缺陷管理具備缺陷屬性設置與缺陷流轉的功能。缺陷的主要屬性包括缺陷名稱、缺陷描述、缺陷等級等信息,測試人員可以在開啟缺陷時設置缺陷屬性與缺陷信息。缺陷流轉功能主要是通過缺陷在各個用戶之間流轉達到修復缺陷的目的,一般情況下參與缺陷流轉的需要測試人員、管理人員、開發(fā)人員,測試人員負責開啟缺陷與回歸缺陷,管理人員負責確認缺陷,開發(fā)人員負責修復缺陷。

在軟件開發(fā)中,軟件質量是衡量軟件是否符合需求、標準的重要體現(xiàn)。除了代碼質量外,影響軟件整體質量的因素還有很多。因此,要明確軟件的整體質量,就需要在各個環(huán)節(jié)嚴格控制。軟件質量度量服務主要包括一下功能:SLOC(源代碼行數(shù))統(tǒng)計、代碼覆蓋率、設計開發(fā)約束、圈復雜度。

平臺的源代碼行數(shù)統(tǒng)計通過集成第三方工具實現(xiàn),本平臺當前依賴的第三方代碼行數(shù)統(tǒng)計工具為testbed工具與Cpp NCSS工具。

代碼覆蓋率主要用于衡量單元測試用例的設計好壞程度,設計良好的單元測試用例能夠利用最少的用例達到最大的覆蓋率,同時覆蓋率也用于衡量軟件測試的充分程度。本平臺的代碼覆蓋率功能由cpptest工具的單元測試部分提供,每次執(zhí)行完單元測試后根據(jù)用例執(zhí)行情況生成單元測試的代碼覆蓋率情況,具體的實現(xiàn)情況與自動單元測試模塊的實現(xiàn)功能一致。

本平臺的設計開發(fā)約束內(nèi)容主要包括:方法/函數(shù)個數(shù)、類/方法的長度、類中方法/屬性的個數(shù)幾項,度量的方法采用cpp ncss工具與testbed工具進行度量。

本平臺的圈復雜度度量的方法采用Cpp NCSS工具與testbed工具進行度量。

  3.7集成測試平臺用戶管理、任務管理功能

集成測試平臺提供基本的用戶管理功能。用戶管理包括用戶注冊、用戶信息變更、用戶登錄、角色/權限管理、用戶分組等功能。

項目管理包括項目創(chuàng)建、項目配置、項目刪除以及項目信息展示等功能。

4  試用效果評估

為評估該平臺在實際應用的效果與能力,現(xiàn)已將該平臺部署到測試部門與開發(fā)部門,為相關部門提供了集成測試服務。

在測試部門部署后,提升了測試人員的靜態(tài)分析效率,解決了原先測試工具LICENSE的沖突問題,當前基本上已經(jīng)不存在由于LICENSE搶占而導致的靜態(tài)分析工作拖后的情況,比如:某部門利用該工具開展了某雷達軟件15萬行的代碼多版本跟蹤靜態(tài)分析工作,將原先需要一周才能完成的靜態(tài)工具分析工作壓縮到兩天內(nèi)完成,使評測工作的效率得到了較大的提升;在開發(fā)部門部署后,為開發(fā)部門提供C/C++代碼編碼規(guī)則檢查/運行錯誤檢查等錯誤,將軟件測試集成與編碼的每個階段,降低了軟件在前期引入缺陷與錯誤的風險,同時平臺提供的自動靜態(tài)分析功能容許開發(fā)人員在非工作時間進行批量代碼的靜態(tài)分析,保證了代碼集成的安全性。

5  結論

本文根據(jù)軟件測試中的實際需求,對基于持續(xù)集成框架的集成測試平臺進行了研究,并對其關鍵技術進行了深入的研究,結合當前測試實際情況提出了平臺的機構以及具體功能的實現(xiàn)方法,同時選取測試部門與開發(fā)部門進行部署,驗證集成測試平臺在測試與開發(fā)過程中的提質增效能力。通過對基于持續(xù)集成技術的集成測試平臺研究與實現(xiàn),降低了軟件測試成本,前移了軟件測試工作、精簡了測試工具數(shù)量、提高了軟件測試效率,解決了當前測試過程中面臨的諸多能力,為測試能力提升與建設提供了良好的思路。

 

 

  參考文獻

[1趙亞楠. 基于Jenkins的企業(yè)持續(xù)集成系統(tǒng)的設計與實現(xiàn)[D].西安電子科技大學, 2013

[2]朱侃逸. 基于Jenkins持續(xù)集成平臺的畢業(yè)論文選題系統(tǒng)設計與實現(xiàn) [D]. 復旦大學, 2014


關于我們 網(wǎng)站地圖 版權聲明 聯(lián)系我們

中國質量協(xié)會 版權所有 未經(jīng)授權請勿轉載任何圖文或建立鏡像
郵箱:info@caq.org.cn
Copyright?2003-2008 All rights reserved 京ICP備16067923號-3 京公網(wǎng)安備 110102000185