999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

軟件集成測試平臺的研究與設計

2018-08-17 03:18:52
計算機工程與設計 2018年8期

王 影

(中國航發商用航空發動機有限責任公司 設計研發中心控制系統部,上海 201108)

0 引 言

機載軟件適航標準DO-178C定義了基于需求的三級測試:低層測試、軟件集成測試和軟硬件集成測試。其中基于需求的軟件集成測試確保軟件部件之間正確交互,且同時滿足軟件需求和架構。通過持續集成軟件部件,集成測試對象從單一部件、多部件集成到所有部件全集成,不斷擴展測試用例和覆蓋需求的范圍,實現軟件集成測試。在集成測試過程中,測試對象輸入、輸出接口動態變化,軟件集成測試平臺需要針對不同測試對象篩選適用的測試輸入,同時輸出有效測試結果進行記錄和判讀。

目前軟件集成測試技術研究熱點較多地集中在軟件集成測試序列選擇和優化[1-7]、面向行為編程中的集成測試策略[2,8]、集成測試自動化[9]等專題。在軟件集成測試平臺方面,主要側重于構建專用系統的測試平臺;對于建設通用的集成測試平臺面臨的測試對象外部接口動態匹配問題[10],關注相對較少。

1 軟件集成測試概述

軟件集成測試的對象是架構設計的結果,即軟件部件;在軟件架構中,每個部件的輸入、輸出接口相對部件自身而言均為外部接口。如果測試對象包含多個部件,其外部接口不能簡單地等同于各部件輸入、輸出接口的并集,而應將這些部件之間的接口當作內部接口;即使測試用例包含對應內部接口的輸入數據,也不應接收并處理,否則會影響集成測試對象整體功能的正確性。

根據測試對象顆粒不同,軟件集成測試分為三級,其輸入、輸出接口分別定義如下:

(1)部件測試[11]的對象是單個部件,其外部輸入、輸出接口直接由軟件架構設計產生。

(2)多部件局部集成測試的對象是兩個以上部件組合的軟件半成品,部件之間的接口作為其內部接口,應互相采用關聯部件的輸出作為有效輸入;在識別并屏蔽測試對象內部接口后,計算得到多部件局部集成測試對象的外部輸入、輸出接口。

(3)所有部件全集成的配置項測試的對象是完整的軟件產品,其外部接口的計算方法原理上等同于多部件局部集成測試,結果與軟件配置項的外部輸入、輸出接口等價,因此可將“所有部件全集成測試”作為選項提供給測試人員,以消除采用多部件局部集成測試方案時計算測試對象外部接口的時間,提高執行效率。

由于軟件部件集成次序無法預測,因此軟件集成測試需要解決測試對象外部接口動態變化的問題。理想的軟件集成測試平臺應能采用穩定不變的用例格式,利用架構設計定義的單部件輸入輸出接口,自動計算多部件集成測試對象的內、外部接口;然后屏蔽多部件集成測試對象的內部輸入接口,斷開其與測試用例輸入的關聯;選擇性接收測試用例中與測試對象外部輸入接口關聯的數據進行刷新;從測試結果過濾掉測試對象的內部輸出接口,只記錄測試對象外部接口的實際輸出。本文嘗試提出一種滿足以上要求的通用軟件集成測試平臺解決方案。

2 軟件集成測試平臺設計流程

2.1 靜態登記所有全局變量和軟件部件的基本信息

為每個全局變量和軟件部件分別構造變量信息結構體和部件信息結構體:

(1)變量信息結構體由4部分組成,包括①為變量分配的全局唯一的編號;②變量名稱;③變量類型;④與變量實體的關聯(指針、超鏈接)。

(2)部件信息結構體由兩部分組成,包括①為部件分配的全局唯一的編號;②部件名稱。在以上兩種結構體中:①編號是檢索變量/部件的關鍵字;②名稱僅為變量/部件的助記符,無實際意義;③變量類型是將變量綜合結構體與變量實體建立關聯的重要輔助信息;④與變量實體的關聯是為了將被測軟件中定義的全局變量與測試平臺中定義的變量信息結構體建立超鏈接關系,使得測試平臺能夠實時監控和間接獲取軟件執行過程中相應全局變量的刷新。

2.2 為各全局變量自動構造一個專用的變量綜合結構體

變量綜合結構體包括變量信息、是否各部件輸入、是否各部件輸出等內容:

(1)變量信息:由變量信息結構體構成。

(2)是否各部件輸入:為所有部件逐個標記變量綜合結構體所關聯變量是否為該部件輸入接口。

(3)是否各部件輸出:為所有部件逐個標記變量綜合結構體所關聯變量是否為該部件輸出接口。

2.3 為每個軟件部件自動構造一個專用的部件綜合結構體

部件綜合結構體包括部件信息、部件輸入集、部件輸出集等內容:

(1)部件信息:由部件信息結構體構成。

(2)部件輸入集PARTiSET(IN):通過遍歷所有全局變量對應的變量綜合結構體,為所有部件篩選出隸屬于該部件的原始輸入接口,以變量信息結構體表示。

(3)部件輸出集PARTiSET(OUT):通過遍歷所有全局變量對應的變量綜合結構體,為所有部件篩選出隸屬于該部件的原始輸出接口,以變量信息結構體表示。

2.4 確定各部件輸入接口的刷新準則

將所有軟件部件劃分為測試對象和非測試對象兩類,然后以單個部件為調度單位,在部件被調度前根據該部件①是否屬于被測試對象;②是否單部件測試對象;③是否多部件集成測試對象等因素,確定是否刷新、如何刷新每個部件的輸入接口:

(1)對于非測試對象的部件,不以測試用例數據刷新其輸入接口,直接采用關聯部件運行的相關輸出作為其輸入。

(2)對于單部件測試對象,直接以測試用例數據使用軟件架構設計的部件外部接口刷新控制測試用例輸入和測試結果輸出,刷新該部件的所有輸入接口。

(3)對于多部件集成測試對象,首先動態識別多部件集成時部件之間的內部接口,內部接口所對應的輸入不通過測試用例進行刷新,而通過與其直連的被測部件實時計算得到的相關輸出接口數據進行刷新,實現關聯多部件的集成效果;然后通過排除法計算得出每個被測部件相對于整個測試對象的外部輸入接口,通過測試用例的輸入數據進行刷新。

3 軟件集成測試平臺詳細設計

為便于說明問題且不失一般性,假設軟件架構設計定義4個部件A、B、C、D,部件之間及其與外部輸入、輸出數據源的數據交互關系如圖1所示。

義,要在軟件集成測試中間接計算其輸入、輸出接口。如果手工計算,可能需要對軟件集成測試平臺修改10次以上,才能動態適應測試對象輸入、輸出接口的變化。

以圖1部件A、C集成測試為例,測試對象輸入為a,輸出為c、f。d雖是部件A的輸出、C的輸入,但部件A、C同屬測試對象,d為內部接口,應將部件A的計算結果通過變量d傳給部件C,而不應通過測試用例給部件C注入數據d;在軟件集成測試過程中如未正確屏蔽該變量的外部輸入,會影響部件A、C集成測試結果的正確性。

針對軟件集成測試對象動態變化導致測試輸入、輸出接口伴隨性變化的問題,本文提出一種根據測試對象的部件組成自動篩選有效外部接口的解決方案。

3.1 建立各部件輸入輸出接口與軟件變量之間的關聯

首先,依據軟件架構的定義,對變量統一編號,作為變量檢索的關鍵字。本文將部件間接口統一以全局變量來簡化描述,建立全局變量與各部件輸入輸出接口之間的從屬關系見表1。

然后,對部件統一編號,作為部件檢索的關鍵字。以部件為中心,通過檢索“變量與部件接口的從屬關系表”,得到各部件包含的原始輸入集PARTiSET(IN)和原始輸出集PARTiSET(OUT),其中i代表部件編號,自動建立各部件輸入輸出接口與全局變量之間的關系見表2。

表1 變量與部件接口的從屬關系

表2 部件接口與全局變量的關系

3.2 計算測試對象中所有部件輸入、輸出變量集的并集

計算測試對象中所有軟件部件輸入集PARTiSET(IN)的并集PARTSUNION(IN)和輸出變量集PARTiSET(OUT)的并集PARTSUNION(OUT)。PARTSUNION(IN)和PARTSUNION(OUT)中不允許存在重復變量,二者的計算方法相同,以PARTSUNION(IN)為例進行說明,如圖2所示。

圖2 計算測試對象輸入集并集的算法

3.3 計算測試對象各部件輸入集與其它部件輸出集的交集

為簡化描述,假設各部件自身的輸入集變量與輸出集變量完全無交集。計算測試對象內部各部件輸入集與其它部件輸出集交集PARTINTERSEC(IN-OUT)的方法為:循環判斷測試對象中一個部件輸入集中的變量是否同時存在于其它部件的輸出集中,即從測試對象中輪流取出一個部件X,如果部件X輸入集中某變量w同時存在于測試對象中其它任意部件的輸出集中,則將w加入結果集PARTINTERSEC(IN-OUT)。計算過程如圖3所示。

圖3 計算測試對象所有部件輸入輸出變量集交集的算法

以上算法消除了PARTINTERSEC(IN-OUT)中可能存在的重復變量,提高了后續步驟的算法的效率。

3.4 計算測試對象整體輸入、輸出變量集

將測試對象作為整體,其外部輸入變量集SET(IN)和外部輸出變量集SET(OUT)的計算方法為:從測試對象輸入集并集PARTSUNION(IN)和測試對象輸出集并集PARTSUNION(OUT)中,分別減去被測部件之間輸入輸出變量集的交集PARTSINTERSEC(IN-OUT),即可得到測試對象整體的輸入變量集SET(IN)和輸出變量集SET(OUT)。測試對象外部輸入接口對應為SET(IN)=PARTSUNION(IN)-PARTSINTERSEC(IN-OUT),外部輸出接口對應為SET(OUT)=PARTSUNION(OUT)-PARTSINTERSEC(IN-OUT)。SET(IN)和SET(OUT)的計算方法相同,以SET(IN)為例進行說明,如圖4所示。

圖4 計算測試對象外部輸入集的算法

在明確測試范圍中包含的部件之后,測試平臺將測試對象的外部輸入接口SET(IN)和外部輸出接口SET(OUT)計算結果通過控制臺(屏幕)反饋給測試人員,以提醒其按照測試對象的外部輸入接口正確地注入測試用例,高效地判讀測試結果。

3.5 計算被測部件的外部輸入變量集

測試對象中各被測部件的有效外部輸入變量集REALSET(IN)的計算方法為:從被測部件輸入集PARTiSET(IN)中,減去所有被測部件之間輸入輸出變量集的交集PARTSINTERSEC(IN-OUT),即可得到被測部件的有效外部輸入變量集REALSET(IN)=PARTiSET(IN)-PARTSINTERSEC(IN-OUT)。計算方法如圖5所示。

圖5 計算被測部件同步測試的輸入集REALSET(IN)算法

測試對象中每個軟件部件被調度執行前,通過測試用例中的輸入數據保持或刷新部件有效外部輸入接口REAL-SET(IN)中的所有變量;測試對象內部接口對應的變量不處理,直接使用關聯部件的輸出值進行刷新。

4 集成測試應用說明

參照本文的軟件集成測試平臺通用設計方案,在完成軟件架構設計后即可搭建軟件集成測試平臺:

(1)在軟件部件未完成設計前,以軟件架構定義的部件原型構建占位的樁函數,形成被測軟件初始框架,構建完整的軟件集成測試平臺(含測試對象內部、外部接口識別算法);

(2)當啟動軟件集成測試時,以真實的軟件部件陸續取代占位的樁函數,重新編譯測試平臺,即可執行軟件集成測試。隨著軟件集成的深入,軟件集成測試顆粒度、測試對象不斷變化;但對集成測試環境而言,除了直接以軟件部件替換樁函數外,絲毫不必做其它改動。

如果軟件配置項的所有部件已集成為一體,則可基于軟件配置項直接構建軟件集成測試環境。此環境不做任何修改,即可支持從單部件、多部件局部集成到軟件產品全集成的測試活動,測試人員只須選擇測試對象、注入測試用例,不須關注測試對象外部接口的任何變化,即可得到測試對象的準確執行結果。

5 實例分析

某型號航空發動機健康監視裝置(EMU)軟件包含“模式選擇”和“指示”等功能部件,其中模式選擇部件根據輸入條件(模式選擇開關組合 “S4 S3 S2 S1”)來判斷并輸出EMU設備的工作模式,其輸入、輸出接口的映射關系見表3。

表3 模式選擇部件輸入輸出映射

上表中S1~S4為組合中的位,其中每位取值為“1”或“0”,X代表“1”或“0”。

指示功能工作在模式3下,軟件在EMU工作的全部時間內向試車臺發送“振動速度等級”數據用于指示,其取值范圍見表4。

表4 指示信息取值范圍

指示部件輸入、輸出接口的映射關系見表5。

如果只考慮“模式選擇”和“指示”這兩個功能部件,測試用例為兩個部件輸入接口的并集,見表6。

5.1 模式選擇部件測試

針對模式選擇部件進行單部件測試,設計并執行測試用例見表7。

表5 指示部件輸入輸出映射

表6 測試用例輸入接口

表7 模式選擇部件測試輸入與實測輸出對照

以上測試用例輸入的“EMU工作模式”值3并未影響到實測按照模式選擇開關組合“S4 S3 S2 S1”計算輸出的“EMU工作模式”數值0,結果正確。

5.2 指示部件測試

針對指示部件進行單部件測試,設計并執行測試用例見表8。

表8 指示部件測試輸入與實測輸出對照

以上測試用例輸入的“EMU工作模式”值3直接影響到實測“振動速度等級”的輸出,模式選擇開關組合“S4 S3 S2 S1”并未影響“EMU工作模式”數值,結果正確。

5.3 模式選擇與指示部件集成測試

針對模式選擇和指示部件進行多部件集成測試,設計并執行測試用例(該用例執行的前提條件是振動速度等級輸出值=5)見表9。

表9 指示部件測試輸入與實測輸出對照

在模式選擇和指示部件集成后,“EMU工作模式”成為部件集成后的被測對象的內部接口,測試用例輸入的“EMU工作模式”值3被軟件集成測試平臺屏蔽,通過計算模式選擇開關組合“S4 S3 S2 S1”得到的“EMU工作模式”值0,作為指示部件的輸入來控制其執行,結果實測“振動速度等級”的輸出保持前值5,未按照當前用例輸入值7誤刷新,結果正確。

6 結束語

為了解決軟件測試對象持續集成誘發外部接口變化而對測試環境提出的動態匹配問題,本文提出了一種軟件集成測試平臺通用設計方案。基于軟件架構對各部件接口的定義,統一采用所有部件輸入接口的并集作為測試用例輸入接口。在軟件部件集成測試過程中,根據測試對象的動態變化,輪流計算測試對象中每個部件輸入接口與其它被測部件輸出接口的交集,匯總得到測試對象的內部接口;然后計算測試對象中所有部件輸入接口和輸出接口的并集,分別從中去除測試對象的內部接口,得到測試對象的外部輸入、輸出接口。測試對象內部接口視同非被測部件的外部接口,從測試的視角進行屏蔽;測試對象外部接口作為軟件集成測試的控制主體,其輸入接口實時接收測試用例中的關聯數據進行刷新,其輸出接口作為判讀測試結果正確性的數據源進行記錄和分析。該方案支持測試對象從單部件、多部件集成到整個軟件產品配置項的動態持續集成。軟件集成測試過程中測試環境維護成本可基本消除,提高了集成測試的整體效率。

主站蜘蛛池模板: 美女内射视频WWW网站午夜 | 农村乱人伦一区二区| a级高清毛片| 91成人在线观看| av在线人妻熟妇| 狠狠色丁香婷婷| 最新日韩AV网址在线观看| 91欧美在线| 就去吻亚洲精品国产欧美| 国产成人精彩在线视频50| 久久夜色精品| 国产精品香蕉| 3344在线观看无码| 国产区在线观看视频| 日本成人一区| 日本少妇又色又爽又高潮| 色婷婷综合在线| 香蕉eeww99国产在线观看| 国产不卡一级毛片视频| 国产成人高清精品免费软件| 91精品网站| 国产一区自拍视频| 午夜无码一区二区三区在线app| 亚洲丝袜第一页| 国内精品自在自线视频香蕉| 青草娱乐极品免费视频| 日本黄色a视频| 这里只有精品免费视频| yjizz国产在线视频网| 97视频免费在线观看| 日韩成人午夜| 久久国产免费观看| 午夜啪啪网| 国产成人亚洲综合a∨婷婷| 日韩专区第一页| 国产在线视频欧美亚综合| 91毛片网| 91无码人妻精品一区| 国产在线观看91精品亚瑟| 亚洲人成影视在线观看| 久久一日本道色综合久久| 国产电话自拍伊人| 亚洲成肉网| 伊人中文网| 精品无码视频在线观看| 福利一区在线| 在线a网站| 福利一区在线| 国产日韩欧美一区二区三区在线 | 亚洲美女高潮久久久久久久| 亚洲天堂在线视频| 欧美精品一二三区| 久久久久九九精品影院| 午夜视频免费一区二区在线看| 国产无套粉嫩白浆| 国产黄网永久免费| 亚洲国产看片基地久久1024| 在线国产综合一区二区三区| 欧美日韩国产在线观看一区二区三区 | 色婷婷成人| 亚洲日韩高清在线亚洲专区| 久久一本精品久久久ー99| 5555国产在线观看| 亚洲中文在线看视频一区| 国产三级精品三级在线观看| 精品91自产拍在线| 亚洲色图狠狠干| 色婷婷在线影院| 欧美在线观看不卡| 亚洲美女AV免费一区| 日韩欧美国产精品| 一本综合久久| 一级一级特黄女人精品毛片| 国产乱子伦精品视频| 激情综合网址| 青青草一区二区免费精品| 熟女成人国产精品视频| 亚洲天堂777| 日韩毛片基地| 国产打屁股免费区网站| 亚洲精品图区| 国产精品视频导航|