左萬(wàn)娟,虞礪琨,王小麗,董 燕
(1.北京控制工程研究所,北京 100190;2.北京軒宇信息技術(shù)有限公司,北京 100190)
隨著中國(guó)航天事業(yè)的高速發(fā)展,航天發(fā)射任務(wù)越來(lái)越密集,航天軟件測(cè)試強(qiáng)度不斷增大,作為軟件質(zhì)量和可靠性的重要保證手段,如何在提高測(cè)試效率的同時(shí)確保軟件測(cè)試的充分性和有效性,成為航天軟件測(cè)試的新課題。
自動(dòng)化測(cè)試已經(jīng)成為當(dāng)前軟件測(cè)試發(fā)展的趨勢(shì),可以有效地縮短測(cè)試時(shí)間和減少成本,同時(shí)也可減少手動(dòng)產(chǎn)生的失誤[1]。
測(cè)試用例設(shè)計(jì)是軟件測(cè)試的核心、關(guān)鍵要素。測(cè)試用例自動(dòng)生成是自動(dòng)化測(cè)試的關(guān)鍵環(huán)節(jié),也是當(dāng)前的研究熱點(diǎn)。目前,自動(dòng)生成測(cè)試用例的設(shè)計(jì)方法主要有兩種[2]:基于代碼的測(cè)試用例設(shè)計(jì)方法和基于需求的測(cè)試用例設(shè)計(jì)方法。其中,基于代碼的測(cè)試用例設(shè)計(jì),其實(shí)質(zhì)是基于路徑覆蓋或基于MC/DC覆蓋,常用算法有遺傳算法[3-4]、粒子群算法[5]、蟻群算法[6-7]、果蠅算法[8]等,但是,采用該方法生成的測(cè)試用例,只能判定代碼是否被執(zhí)行,至于軟件實(shí)現(xiàn)是否滿足需求是無(wú)法度量的[9]。而設(shè)計(jì)測(cè)試用例的關(guān)鍵在于準(zhǔn)確理解客戶的需求,只有圍繞測(cè)試需求設(shè)計(jì)出來(lái)的測(cè)試用例才能真正地測(cè)試出該軟件是否合格[10-11]?;谛枨蟮臏y(cè)試,其實(shí)質(zhì)是基于模型的測(cè)試[12-14],首先需要對(duì)需求建模[15]、驗(yàn)證模型的正確性[16],其方法本身對(duì)模型的要求很高,在航天軟件有限的測(cè)試時(shí)間內(nèi),很難完成繁瑣的建模工作,建模被認(rèn)為是基于模型測(cè)試技術(shù)難以推廣的最大障礙[17]。而且,基于需求建模的測(cè)試用例自動(dòng)生成,很容易產(chǎn)生測(cè)試集爆炸的問(wèn)題。
為了在提高測(cè)試效率的同時(shí)確保測(cè)試質(zhì)量,通過(guò)對(duì)大量航天軟件測(cè)試實(shí)踐的研究,提出了一種基于共性需求的軟件通用自動(dòng)化測(cè)試方案,針對(duì)航天軟件中的共性需求,開(kāi)展通用自動(dòng)化測(cè)試設(shè)計(jì),并在航天軟件測(cè)試實(shí)踐中推廣應(yīng)用,從而為基于需求的自動(dòng)化測(cè)試提供一條可持續(xù)發(fā)展的研究路線。
對(duì)文中用到的名詞解釋如下:
測(cè)試設(shè)計(jì):通過(guò)需求分析,設(shè)計(jì)和得到測(cè)試用例的過(guò)程,稱為測(cè)試設(shè)計(jì)。
CAN:Controller Area Network,控制器局域網(wǎng)絡(luò)。
仲裁場(chǎng):CAN總線通訊格式中的特定字段,一般為數(shù)據(jù)幀的第一字節(jié)。
控制場(chǎng):CAN總線通訊格式中的特定字段,一般為數(shù)據(jù)幀的第二字節(jié)。
幀序號(hào):CAN總線通訊格式中的特定字段,一般為多幀數(shù)據(jù)幀的第三字節(jié)。
DLC長(zhǎng)度:CAN總線通訊格式中的控制場(chǎng)的低4位。
通用測(cè)試設(shè)計(jì)方案分為兩個(gè)階段:前期一次性研發(fā)階段、后期重復(fù)性測(cè)試應(yīng)用階段,如圖1所示。
其中,前期研發(fā)階段承擔(dān)了90%以上的工作量,且這部分工作投入是一次性的。后期測(cè)試應(yīng)用階段僅需要完成簡(jiǎn)單的個(gè)性化配置,即可使用。
(a)共性需求分析。
研究航天嵌入式軟件需求,從眾多軟件需求中提煉出通用性強(qiáng)、適用范圍廣的共性需求,開(kāi)展需求分析,確保需求分析的全面性、有效性。典型的航天嵌入式軟件共性需求包括CAN總線通訊、1553通訊、AD采集、自檢、三取二等等。
圖1 通用測(cè)試設(shè)計(jì)方案
(b)通用測(cè)試設(shè)計(jì)。
針對(duì)共性需求分析,開(kāi)展測(cè)試設(shè)計(jì)研究,形成通用性強(qiáng)、適用范圍廣、覆蓋充分的通用測(cè)試設(shè)計(jì)。
(c)自動(dòng)化測(cè)試工具研發(fā)需求。
針對(duì)通用測(cè)試設(shè)計(jì),開(kāi)展自動(dòng)化測(cè)試工具研究,提出工具研發(fā)需求,利用工具實(shí)現(xiàn)測(cè)試用例和測(cè)試腳本的自動(dòng)生成,支持一鍵測(cè)試。
(d)專家評(píng)審。
針對(duì)共性需求分析、通用測(cè)試設(shè)計(jì)、自動(dòng)化測(cè)試工具研發(fā)需求,開(kāi)展專家評(píng)審,根據(jù)評(píng)審意見(jiàn)完善前期研究成果,形成最優(yōu)的共性需求分析、通用測(cè)試設(shè)計(jì)、工具研發(fā)需求。
(e)自動(dòng)化測(cè)試工具研發(fā)。
根據(jù)自動(dòng)化測(cè)試工具研發(fā)需求,開(kāi)展自動(dòng)化測(cè)試工具研發(fā)。
(f)自動(dòng)化測(cè)試工具驗(yàn)收。
針對(duì)自動(dòng)化測(cè)試工具,組織驗(yàn)收。通過(guò)驗(yàn)收的工具,方可提交后期測(cè)試應(yīng)用。
(a)工具配置。
在自動(dòng)化測(cè)試工具默認(rèn)配置的基礎(chǔ)上,通過(guò)少量的手工配置,使其與特定被測(cè)件相匹配。
(b)一鍵測(cè)試。
一鍵生成測(cè)試用例、測(cè)試腳本,并支持一鍵測(cè)試。
下面,以航天嵌入式軟件常見(jiàn)的CAN總線通訊接口測(cè)試為例,對(duì)通用測(cè)試設(shè)計(jì)方案中的重點(diǎn)環(huán)節(jié)予以說(shuō)明。
3.1.1 選取分析
CAN總線是航天嵌入式軟件常用總線之一,作為嵌入式軟件對(duì)外輸入輸出的門戶,其相關(guān)接口設(shè)計(jì)的正確性對(duì)航天器正常在軌運(yùn)行起著至關(guān)重要的作用,因此,對(duì)CAN總線通訊接口測(cè)試提出了更高的要求。
根據(jù)各個(gè)航天器所承載任務(wù)的不同,CAN總線接口輸入流種類繁多、通訊格式各有不同,導(dǎo)致CAN總線通訊接口設(shè)計(jì)分支復(fù)雜,進(jìn)而導(dǎo)致CAN總線通訊接口測(cè)試需要涵蓋的測(cè)試點(diǎn)多、測(cè)試復(fù)雜、測(cè)試腳本編輯量大,耗費(fèi)工期較長(zhǎng)。
通過(guò)對(duì)大量CAN總線通訊接口測(cè)試的研究發(fā)現(xiàn),針對(duì)不同軟件而言,盡管其CAN總線接口設(shè)計(jì)各有不同,但是,CAN總線通訊接口的測(cè)試方法、測(cè)試內(nèi)容是基本相同的。然而,截至目前為止,針對(duì)CAN總線通訊接口測(cè)試,始終缺乏一定的測(cè)試規(guī)范。測(cè)試人員僅僅是依靠一些已經(jīng)達(dá)成的共識(shí)或憑借個(gè)人經(jīng)驗(yàn)開(kāi)展測(cè)試需求分析和測(cè)試設(shè)計(jì),導(dǎo)致測(cè)試設(shè)計(jì)過(guò)于依賴測(cè)試人員的經(jīng)驗(yàn),測(cè)試缺乏統(tǒng)一的規(guī)范和標(biāo)準(zhǔn),時(shí)有人為錯(cuò)誤的發(fā)生,使得測(cè)試有效性和全面性得不到有效的保證。
綜合上述分析,將CAN總線通訊接口測(cè)試作為共性需求,通過(guò)通用測(cè)試設(shè)計(jì)的研究,加強(qiáng)其測(cè)試規(guī)范性,從而確保測(cè)試有效性,是非常必要的。
3.1.2 需求分析
通過(guò)對(duì)大量航天嵌入式軟件的CAN總線接口設(shè)計(jì)的研究,CAN總線通訊接口的通用測(cè)試需求主要包含以下三個(gè)方面:
(a)合法/非法輸入的校驗(yàn)與處理。
TR-JK-001:接收并校驗(yàn)CAN總線數(shù)據(jù)幀。校驗(yàn)內(nèi)容包括:仲裁場(chǎng)、控制場(chǎng)、幀序號(hào)(針對(duì)多幀輸入流,幀序號(hào)應(yīng)從0開(kāi)始連續(xù)計(jì)數(shù))、LENGTH、TITLE、校驗(yàn)和。軟件僅處理合法數(shù)據(jù)幀,非法數(shù)據(jù)幀不予處理。
(b)CANA、CANB總線的輸入與處理。
TR-JK-002:針對(duì)CANA、CANB總線輸入,軟件均應(yīng)按照TR-JK-001進(jìn)行處理。
(c)應(yīng)答輸出的總線選取原則。
TR-JK-003:針對(duì)需要應(yīng)答的輸入,如果是CANA總線輸入,則軟件應(yīng)從CANA總線輸出應(yīng)答;如果是CANB總線輸入,則軟件應(yīng)從CANB總線輸出應(yīng)答。
通過(guò)對(duì)大量航天嵌入式軟件的CAN總線通訊接口測(cè)試的研究,CAN總線通訊接口測(cè)試的核心內(nèi)容是確認(rèn)總線上的數(shù)據(jù)傳輸是否符合接口控制文檔(interface control document,ICD)的規(guī)定,對(duì)符合規(guī)定的合法輸入流應(yīng)予以正確的響應(yīng)及處理,對(duì)不符合規(guī)定的非法輸入流應(yīng)予以屏蔽。因此,CAN總線通訊接口的通用測(cè)試設(shè)計(jì)應(yīng)覆蓋如下情況:
3.2.1 合法輸入流的覆蓋性測(cè)試
測(cè)試應(yīng)覆蓋所有的合法輸入流,并將不同長(zhǎng)度的輸入流均作為獨(dú)立的輸入流,予以覆蓋。
以數(shù)據(jù)塊為例,輸入流包含15、25、35三種不同長(zhǎng)度的數(shù)據(jù)塊,則測(cè)試應(yīng)覆蓋三種長(zhǎng)度的數(shù)據(jù)塊,而不能僅覆蓋其中一種長(zhǎng)度的數(shù)據(jù)塊,從而確保測(cè)試覆蓋性。
3.2.2 非法輸入流的覆蓋性測(cè)試
測(cè)試應(yīng)覆蓋所有的非法輸入流,即,覆蓋每個(gè)輸入流的所有異常情況。
典型的非法輸入情況包括:仲裁場(chǎng)錯(cuò)、控制場(chǎng)錯(cuò)、幀序號(hào)錯(cuò)、LENGTH錯(cuò)、TITLE錯(cuò)、校驗(yàn)和錯(cuò)。
3.2.3 多幀輸入流的非法情況測(cè)試
相比單幀輸入流,多幀輸入流有一些特殊情況,需要在測(cè)試設(shè)計(jì)時(shí),予以特別的關(guān)注。
(a)針對(duì)多幀輸入流的仲裁場(chǎng)錯(cuò)、控制場(chǎng)錯(cuò)、幀序號(hào)錯(cuò),應(yīng)分別考慮首幀、尾幀、中間幀錯(cuò)誤的故障模式。
(b)針對(duì)多幀輸入流,應(yīng)考慮多幀接收不完整的故障模式,包括未收到首幀、未收到中間幀、未收到尾幀、未收到后N幀(N<多幀的總幀數(shù))的情況。并在該故障多幀輸入流之后分別輸入正確的單幀、多幀輸入流,以考察該故障多幀對(duì)后續(xù)正確輸入的影響。針對(duì)故障多幀,軟件應(yīng)不予處理;針對(duì)其后的正確的單幀或多幀輸入,軟件應(yīng)正確處理。即,當(dāng)前故障輸入流,不能影響后續(xù)正確輸入流的接收與處理。
(c)針對(duì)多幀輸入流,應(yīng)考慮首幀、尾幀、中間幀的DLC長(zhǎng)度小于實(shí)際長(zhǎng)度的情況。
3.2.4 合法、非法輸入穿插測(cè)試
測(cè)試過(guò)程中,設(shè)置非法輸入,執(zhí)行格式非法指令測(cè)試,首先是為了驗(yàn)證軟件對(duì)非法輸入的屏蔽情況,即,軟件不應(yīng)響應(yīng)非法輸入;其次是為了驗(yàn)證軟件對(duì)非法輸入的處理是否會(huì)影響其后續(xù)對(duì)合法輸入的正常響應(yīng)處理。因此,應(yīng)進(jìn)行合法與非法輸入的穿插測(cè)試。
3.2.5 CANA、CANB總線測(cè)試
針對(duì)CANA、CANB總線應(yīng)分別設(shè)計(jì)并執(zhí)行兩套用例。
共性需求分析和通用測(cè)試設(shè)計(jì)研究,為CAN總線通訊接口通用測(cè)試奠定了夯實(shí)的基礎(chǔ),有效保證了CAN總線通訊接口測(cè)試的有效性和全面性。
為進(jìn)一步提升效率,減輕測(cè)試人員工作量,避免因人為因素而引入的測(cè)試不充分問(wèn)題,針對(duì)通用測(cè)試開(kāi)展自動(dòng)化測(cè)試工具研發(fā),充分利用工具的高效性、固定性,是非常有必要的。
3.3.1 需求概述
通過(guò)少量的手工配置操作,使基于共性需求分析的通用測(cè)試設(shè)計(jì)與具體被測(cè)件相匹配,實(shí)現(xiàn)一鍵生成全部測(cè)試用例、測(cè)試腳本,支持一鍵測(cè)試,同時(shí)實(shí)現(xiàn)測(cè)試結(jié)果的自動(dòng)比對(duì)。
3.3.2 具體需求
工具應(yīng)支持如下配置:
(a)硬件屏蔽碼。
硬件屏蔽碼,用于CAN總線接口芯片自動(dòng)屏蔽非法輸入,由被測(cè)軟件在CAN總線初始化時(shí)設(shè)置。設(shè)置內(nèi)容示例如表1所示。
表1 CAN總線硬件屏蔽碼初始化設(shè)置示例
該項(xiàng)配置,在工具自動(dòng)生成非法輸入時(shí)需使用,避免工具產(chǎn)生的非法輸入被硬件屏蔽掉而導(dǎo)致軟件中的合法性判斷設(shè)計(jì)未經(jīng)測(cè)試驗(yàn)證,從而確保軟件中的判斷分支可以執(zhí)行,軟件設(shè)計(jì)得到充分的驗(yàn)證。
(b)合法輸入流。
工具支持測(cè)試人員編寫或?qū)胨械暮戏ㄝ斎肓?。輸入流格式示例如?和表3所示。
表2 單幀輸入流格式示例
表3 多幀輸入流格式示例
格式說(shuō)明如下:
固定數(shù)字:相應(yīng)合法輸入流的相應(yīng)字段,始終是固定值。
XX:相應(yīng)輸入流的相應(yīng)字段,可以是隨機(jī)值。
SUM:相應(yīng)輸入流的相應(yīng)字段,為校驗(yàn)和,由工具根據(jù)指定的校驗(yàn)規(guī)則自動(dòng)生成,默認(rèn)為TITLE和“XX”字段的字節(jié)累加和。工具支持可配置修改。
INDEX:幀序號(hào)。
(c)非法輸入流。
非法輸入流由工具在合法輸入流基礎(chǔ)上,按照配置覆蓋的非法輸入情況,自動(dòng)生成。其中,所有默認(rèn)配置,均支持手工修改。
針對(duì)所有輸入流,默認(rèn)非法情況包括:仲裁場(chǎng)錯(cuò)、控制場(chǎng)錯(cuò)、幀序號(hào)錯(cuò)、LENGTH錯(cuò)、TITLE錯(cuò)、校驗(yàn)和錯(cuò)。
針對(duì)所有字節(jié)均為固定數(shù)字的單幀輸入流,默認(rèn)非法情況包括:任意字節(jié)錯(cuò)誤。
針對(duì)多幀輸入流的仲裁場(chǎng)錯(cuò)、控制場(chǎng)錯(cuò)、幀序號(hào)錯(cuò),默認(rèn)非法情況包括:首幀、中間幀、尾幀錯(cuò)誤。(即,仲裁場(chǎng)錯(cuò)可配置出3種非法輸入,控制場(chǎng)錯(cuò)、幀序號(hào)錯(cuò)也一樣)
針對(duì)多幀輸入流的丟幀錯(cuò)誤,默認(rèn)非法情況包括:首幀丟失、中間幀丟失、尾幀丟失、后續(xù)幀丟失。
針對(duì)多幀輸入流的DLC錯(cuò),默認(rèn)非法情況包括:首幀、尾幀、中間幀的DLC長(zhǎng)度小于實(shí)際長(zhǎng)度的情況。
(d)錯(cuò)誤值生成原則。
針對(duì)仲裁場(chǎng)錯(cuò),工具自動(dòng)生成的錯(cuò)誤值應(yīng)能通過(guò)硬件屏蔽(即,確保該故障輸入不被硬件自動(dòng)屏蔽掉)、且不能與所有輸入流的合法仲裁場(chǎng)值相同。
針對(duì)其余字節(jié)錯(cuò),無(wú)特殊限制。
(e)輸入間隔。
可由測(cè)試人員配置輸入間隔,默認(rèn)間隔5 s。
(f)用例生成原則。
用例生成時(shí),自動(dòng)實(shí)現(xiàn)合法/非法輸入流的穿插。
3.3.3 自動(dòng)比對(duì)需求
針對(duì)固定搭配的輸入與應(yīng)答,工具提供可配置接口,并在測(cè)試執(zhí)行時(shí),自動(dòng)進(jìn)行結(jié)果比對(duì)。
另外,輸入與輸出總線的匹配性,由工具進(jìn)行自動(dòng)比對(duì)確認(rèn)。
為確保前期一次性研發(fā)工作的有效性,需要組織專家集體評(píng)審,重點(diǎn)對(duì)以下環(huán)節(jié)予以確認(rèn):
(a)共性需求的通用性。
共性需求的通用性,是通用測(cè)試設(shè)計(jì)可以推廣使用的前提條件。通用性不足,將導(dǎo)致后期無(wú)法推廣使用,從而導(dǎo)致前期研發(fā)投入的浪費(fèi)。
(b)需求分析的充分性和正確性。
需求分析的充分性和正確性,是確保軟件測(cè)試充分性和有效性的前提。通過(guò)專家評(píng)審的方式,修正不合理的需求、補(bǔ)充不完善的需求,是很有必要的。
(c)用例設(shè)計(jì)的全面性和有效性。
用例設(shè)計(jì)的全面性和有效性,是確保軟件測(cè)試充分性和有效性的核心。通用測(cè)試設(shè)計(jì)不到位,將引發(fā)批次性的不良后果。
(d)工具需求的完備性和易用性。
工具需求的完備性和易用性,是軟件測(cè)試充分性和高效性的有力保障。
文中所提出的基于共性需求的航天嵌入式軟件通用測(cè)試方案,已在空間飛行器軟件檢測(cè)站全面推廣應(yīng)用。
應(yīng)用前和應(yīng)用后的測(cè)試人員承擔(dān)工作的對(duì)比分析如表4所示。
表4 應(yīng)用前后測(cè)試工作量對(duì)比分析
注:“-”表示測(cè)試人員無(wú)需承擔(dān)相應(yīng)的工作。
可見(jiàn),通用測(cè)試方案應(yīng)用后,測(cè)試人員承擔(dān)工作量得到了大幅減少。
通用測(cè)試方案應(yīng)用后,有如下優(yōu)勢(shì):
(a)實(shí)現(xiàn)了共性需求測(cè)試的規(guī)范化、標(biāo)準(zhǔn)化,解決了部分測(cè)試人員經(jīng)驗(yàn)不足的問(wèn)題,有效提升并保證了全員的測(cè)試質(zhì)量。
(b)通過(guò)工具自動(dòng)化,有效避免人為原因帶來(lái)的各種不確定因素,減少人為因素導(dǎo)致的測(cè)試缺陷,確保測(cè)試有效性。
(c)測(cè)試人員工作量大幅減少,有效提升了測(cè)試效率,縮短測(cè)試周期,降低測(cè)試成本。
(d)測(cè)試設(shè)計(jì)經(jīng)過(guò)專家評(píng)審,相比完全自動(dòng)化的測(cè)試設(shè)計(jì),其有效性和全面性得以更好地保證,有利于充分暴露軟件潛在設(shè)計(jì)缺陷,且測(cè)試覆蓋率得以保證。
(e)實(shí)現(xiàn)了基于需求的測(cè)試自動(dòng)化,相比面向路徑覆蓋的測(cè)試自動(dòng)化,測(cè)試效果更佳。
(f)通過(guò)共性需求提取和通用測(cè)試設(shè)計(jì),滿足不同航天器的測(cè)試要求,推動(dòng)航天軟件測(cè)試向著通用化和標(biāo)準(zhǔn)化的方向發(fā)展。
基于共性需求分析的通用測(cè)試方案推廣應(yīng)用后,以CAN總線通訊接口測(cè)試為例,取得了如下成效:
(a)CAN總線通訊接口測(cè)試的耗時(shí)由之前的1~2周縮短至1~2天。
(b)CAN總線通訊接口設(shè)計(jì)的測(cè)試覆蓋率達(dá)到95%以上。
(c)CAN總線通訊接口正常/異常處理相關(guān)缺陷,均能有效檢出。
自動(dòng)化測(cè)試是軟件測(cè)試未來(lái)的發(fā)展方向[18-19],航天軟件的自動(dòng)化測(cè)試,更是勢(shì)在必行。從工程實(shí)踐的角度,基于需求的自動(dòng)化測(cè)試,對(duì)軟件的驗(yàn)證更加充分,建議作為優(yōu)選方案。
文中的研究成果,為基于需求的自動(dòng)化測(cè)試提供了一條可持續(xù)發(fā)展的研究路線。通過(guò)共性需求提取、分析以及針對(duì)共性需求的通用測(cè)試設(shè)計(jì),逐步推動(dòng)航天軟件測(cè)試向著通用化和標(biāo)準(zhǔn)化的方向發(fā)展,再輔以工具自動(dòng)化手段,最終實(shí)現(xiàn)測(cè)試質(zhì)量和測(cè)試效率的雙贏。該方案可作為共性化需求的測(cè)試優(yōu)選方案。
針對(duì)基于需求建模的測(cè)試用例自動(dòng)生成,應(yīng)著力加強(qiáng)對(duì)需求建模工具的研究。只有解決了需求建模的便利性問(wèn)題,才能真正推動(dòng)該項(xiàng)技術(shù)在工程實(shí)踐中的應(yīng)用。該方案可作為個(gè)性化需求的測(cè)試優(yōu)選方案。
另外,在測(cè)試結(jié)果自動(dòng)判讀方面,尤其是通用化的基于智能判讀算法的復(fù)雜判斷[20],也應(yīng)加強(qiáng)研究投入。
總之,針對(duì)航天嵌入式軟件的自動(dòng)化測(cè)試,不應(yīng)拘泥于某一種方案,應(yīng)該結(jié)合軟件自身特點(diǎn),綜合各種方案的優(yōu)點(diǎn),通過(guò)優(yōu)勢(shì)互補(bǔ)、取長(zhǎng)補(bǔ)短,實(shí)現(xiàn)測(cè)試質(zhì)量和效率的共同提升。