顧濱兵,鄭 梅
(1.中國人民解放軍91413部隊, 河北 秦皇島 066000; 2.燕山大學, 河北 秦皇島 066000)
一種新的基于缺陷的軟件測試描述語言-DBSTDL
顧濱兵1,鄭 梅2
(1.中國人民解放軍91413部隊, 河北 秦皇島 066000; 2.燕山大學, 河北 秦皇島 066000)
缺乏統(tǒng)一的測試描述語言(TDL)已成為提高測試效率和復用程度的瓶頸;以設備、信號等為核心的傳統(tǒng)測試語言不能體現(xiàn)軟件測試的基本思想,不適用于建立軟件測試“共享知識庫”;為實現(xiàn)統(tǒng)一描述標準下的測試知識積累,在軟件測試信息模型基礎上,面向軟件缺陷,采用分類法和因素分解法,圍繞缺陷摘要與被測軟件信息雙重主線,重組軟件測試信息,設計了新的測試描述語言(DBSTDL);該語言共包括6類詞,3大類100多條基本語句, 3組句群, 2種主要的語言組合方式,涵蓋了測試描述語言的框架和基本內(nèi)容;應用DBSTDL語言實現(xiàn)了軟件典型缺陷與測試樣例庫,驗證了利用DBSTDL語言建庫的思想,說明該語言可用于建立統(tǒng)一的軟件測試描述標準,提供了規(guī)范描述手段。
測試描述語言; 測試信息; 軟件缺陷; 結(jié)構(gòu)化表格
測試描述語言是測試人員交流測試信息、共享測試資源的根本,同時也是人與機器互相通信的重要手段,研究測試描述語言是發(fā)展測試技術(shù)的基礎性工作。
軟件測試描述是采用一種語言(包括自然語言)為工具對測試的設計、執(zhí)行,并得到測試結(jié)果的全過程描述。當前軟件測試領域普遍認為,軟件測試的根本目標是“為了發(fā)現(xiàn)盡可能多的缺陷,而不是為了證明軟件沒有缺陷”,軟件缺陷是軟件測試的主要目標,如果脫離了這一目標,軟件測試描述就體現(xiàn)不出測試的設計思想、策略和方法的核心內(nèi)容,測試的復用和共享就沒有了“靈魂”和方向,本文據(jù)此開展相關(guān)研究。
1.1 國外主要的測試描述語言
國外一直視測試描述語言為自動測試的核心,用專業(yè)化的測試描述語言來替代自然語言和早期使用的通用計算機語言(C、Ada等),典型的包括ATLAS-面向測試的通用語言、STD-信號和測試規(guī)范標準、ATML-自動測試標記語言,除此之外還包括美國宇航局使用的GOAL、美國空軍的PALCE、歐洲宇航局的ETOL等。
1.2 國內(nèi)測試描述描述語言研究
國內(nèi)在跟蹤國外測試描述語言的同時,對測試語言的研究取得了較大的進展,開發(fā)出了許多專業(yè)的測試語言,包括中科院的C-Tess語言、北京空間飛行器總體設計部的表格型語言、中科院空間科學與應用研究中心提出的ATLMIC、北京航空航天大學基于UUT的TLBUM語言等。
這些語言在一定范圍和領域內(nèi)解決了測試系統(tǒng)、研發(fā)、使用等之間的信息交流問題,促進測試的共享、重用及自動化。但這些語言多應用硬件設備檢測,偏重于信號、設備和流程,對軟件測試中的一些關(guān)鍵信息缺乏完整的定義和準確的描述。
1.3 測試描述語言在軟件測試中的應用
軟件測試是保證軟件質(zhì)量的關(guān)鍵環(huán)節(jié)和重要手段。當前,在軟件測試領域,迄今為止,還沒有統(tǒng)一的測試描述語言,雖然在一些測試工具中引入了測試用例描述技術(shù),但也是五花八門、各自為政;另外,軟件測試描述主要以測試用例的復用為主要目標,缺乏對軟件測試信息的整體框架分析以及對關(guān)鍵信息的定位和描述手段,面向軟件測試的測試描述語言已成為了提高軟件測試效率和軟件測試復用程度的瓶頸。
2.1 測試信息
信息來源于數(shù)據(jù),是數(shù)據(jù)的抽象表達。一般測試信息是被測件基本信息、資源信息、流程信息、結(jié)果信息的融合。對于軟件測試,由于軟件缺陷是測試的主要目標,在基于軟件缺陷的測試信息中將其獨立出來,缺陷信息是提供能夠讓其它人員復現(xiàn)缺陷的必要信息。
整理測試信息的主要目的是進行共享和復用,用統(tǒng)一的信息模型標準,才能將測試信息進行交互,數(shù)據(jù)才能被共享、融合和復用。
2.2 軟件測試信息模型
信息模型是一系列用于描述軟件測試知識和功能特性的抽象定義,通過測試信息的模型化提供一個用于進行測試共享的信息框架。本文提出了基于軟件缺陷的設計思想,面向發(fā)現(xiàn)及診斷缺陷來組織和整理測試信息。主要思路是:按照發(fā)現(xiàn)缺陷的一般邏輯,即發(fā)現(xiàn)缺陷的過程是對特定被測軟件利用一定的測試資源及采用合適的測試手段方法得到測試結(jié)果的過程,將測試信息劃分為3個獨立的域:被測軟件域、測試域、軟件缺陷域。每個域中都包含大量的相關(guān)信息。圖1為本文關(guān)于軟件測試的信息模型示意圖。
圖1 軟件測試信息模型
2.3 軟件測試描述及軟件測試描述語言
由圖1對于軟件域信息和測試域信息的描述以格式化表格以及表格中的數(shù)據(jù)枚舉為主要格式,而缺陷域信息還包括大量的類自然語言描述方式。設計基于軟件缺陷的測試描述語言(DBSTDL,defaults-based software test describe language)解決不同軟件測試項目之間數(shù)據(jù)交換和信息共享問題。
與以往基于信號或者被測設備的測試描述語言不同,DBSTDL以軟件缺陷為聚焦點的和組織核心。以下用圖2~4來分別表示基于信號、被測設備和軟件缺陷的測試描述語言。
圖2 基于信號的測試描述語言
圖3 基于被測設備的測試描述語言
圖4 基于軟件缺陷的測試描述語言
由圖2~4看出,基于信號和被測設備的描述語言都是圍繞一條主線進行組織的,而基于軟件缺陷的測試描述語言是圍繞軟件缺陷和被測軟件兩條主線進行組織的,并且檢索雖然是雙重主線,但測試復用卻主要圍繞軟件缺陷主線。比如同樣是面向測試過程,面向被測設備的測試描述語言的主要框架是:被測設備準備、測試步驟1、測試步驟2、測試步驟3……、測試結(jié)果;而面向軟件測試的測試描述語言的主要框架是:被測軟件、軟件缺陷1、測試步驟1-1、測試步驟1-2……、測試結(jié)果1、軟件缺陷2、測試步驟2-1、測試步驟2-2……、測試結(jié)果2、……。
4.1 DBSTDL的基本要素和結(jié)構(gòu)
DBSTDL的結(jié)構(gòu)單位為:詞、句子和句群。
4.2 結(jié)構(gòu)化表格在DBSTDL中的定位
DBSTDL中結(jié)構(gòu)化表格是一種按照預定的表格形式組合而成的結(jié)構(gòu)體,包括兩個或兩個以上的詞。被測軟件單元信息如表1所示。
表1 單元信息表
簡單結(jié)構(gòu)化表格可以看作是句子,而對于一些復雜的結(jié)構(gòu)化表格,表格中的內(nèi)容就包括句子,甚至包括句群,比如測試用例表格,把它看作是句群。
一般說來,DBSTDL中的結(jié)構(gòu)單位,詞、句子、句群是按級逐次組合的,但由于這些結(jié)構(gòu)化表格的存在,DBSTDL中的結(jié)構(gòu)單位有時就不是簡單地按級組合在一起,而是多層次地錯綜復雜地組合起來的。
建立測試描述語言的主要目的是實現(xiàn)測試復用,而測試復用的關(guān)鍵就是“測試知識”檢索?;谲浖毕莸腄BSTDL,不但以軟件缺陷的描述為核心,而且為了提高檢索效率,軟件缺陷的描述又圍繞軟件缺陷摘要語句來展開。軟件缺陷摘要語句通過使用關(guān)鍵詞,進行一段簡單、準確、專業(yè)的描述來抓住缺陷的本質(zhì),即對軟件產(chǎn)品預期屬性的偏離情況,同時,軟件缺陷摘要語句又是檢索點的有機組合,通過分類法和因素分解法,本文將該語句進行分解,把其中相同或類似的部分列定為固定參數(shù),其中不同的列定為可變參數(shù),這樣就形成了參數(shù)化軟件缺陷摘要語句。
5.1 軟件缺陷信息描述
5.1.1 軟件缺陷摘要語句
軟件缺陷摘要語句具有形式化的約束,根據(jù)軟件缺陷的種類,分別采取不同的格式。軟件缺陷摘要語句共包括:文檔類缺陷、代碼度量類缺陷、功能類缺陷、性能余量類缺陷、接口類缺陷、人機交互界面類缺陷、安全可靠及其它類缺陷7大類語句。本文從這些基本分類開始,重點采用因素分析方法設計相應的描述語句。以性能余量類缺陷為例,介紹缺陷摘要語句:
軟件的性能余量類缺陷主要是指軟件的實際性能值或相關(guān)的余量值未能達到預期的性能余量的指標要求。軟件的性能指標要求主要來源于兩類,一是從軟件所屬系統(tǒng)的文檔(如研制總要求、研制方案等)給出的戰(zhàn)術(shù)技術(shù)指標中分解或直接引用,二是軟件需求和設計階段根據(jù)軟件的自身任務給出的性能要求。
性能指標分為兩大類:
枚舉類:如軟件能處理的信息文件4類:數(shù)據(jù)文件、文本文件、圖像文件、聲音文件;
數(shù)值類:如軟件的信息處理時間為:<10 s。
對于第一方面的性能指標內(nèi)容一般沒有余量,但對于數(shù)值類性能指標,可分解出余量指標。
按照以上分類,性能余量類軟件缺陷主要分為:
1)軟件的實際數(shù)值類性能值未能達到規(guī)定的指標值;
2)軟件的實際枚舉類性能未能全部實現(xiàn);
3)軟件的實際余量值未能達到規(guī)定的性能指標值或默認的指標值。
5.1.2 基于軟件缺陷的關(guān)鍵詞
DBSTDL基于軟件缺陷,它的描述因素主要考慮軟件缺陷涉及的各個因素,如表2。按照1.2軟件測試信息模型,軟件缺陷涉及的因素包括:測試環(huán)境、測試數(shù)據(jù)、操作、方法以及狀態(tài),還有將這些因素連接起來所必須的連接詞、符號等。在DBSTDL中,定義了環(huán)境設備類、測試數(shù)據(jù)類、操作類、方法類、狀態(tài)類、連接詞共6大類75個關(guān)鍵詞。其中部分關(guān)鍵詞舉例如表3~表5所示。
表2 性能余量類缺陷摘要描述語句表
注:AAA,BBB,CCC為自由變量。
表2 測試數(shù)據(jù)類
表3 方法類
表4 狀態(tài)類
在建立相應的軟件缺陷知識庫時,重點根據(jù)參數(shù)及關(guān)鍵詞就可以實現(xiàn)高效檢索了。
5.1.3 基于軟件缺陷的過程語句
在進行過程描述時,根據(jù)不同的語句分類,在同類語句中采用因素分解法設置一致的格式,完整、前后統(tǒng)一地進行步驟及相關(guān)信息描述。
5.1.3.1 過程語句
過程語句用來對軟件缺陷的發(fā)現(xiàn)過程進行清晰詳細的描述, 測試一般分為白盒、黑盒測試,對于白盒測試,過程語句用軟件缺陷的源代碼(文檔)片段+錯誤描述來替代;對于黑盒測試,軟件缺陷發(fā)現(xiàn)過程的描述一般用前提、操作步驟及輸入數(shù)據(jù)、實際結(jié)果、預期結(jié)果這四部分以及重復這四部分來構(gòu)建的,在測試用例及執(zhí)行結(jié)果中往往制作結(jié)構(gòu)化表格。
1)前提約束語句:主要包括外部軟硬件環(huán)境的約束,以及當前軟件所處的狀態(tài)。對于句法結(jié)構(gòu)來說,軟硬件環(huán)境約束語句以外部硬件項或軟件項為主語進行描述,而軟件當前狀態(tài)以被測軟件為主語進行描述。軟硬件環(huán)境主要體現(xiàn)在本身處在何種狀態(tài)以及對軟件發(fā)送何種信號或數(shù)據(jù),當前軟件狀態(tài)主要包括軟件進入何種界面,接收到了某種數(shù)據(jù),剛剛完成某項前置任務。通過總結(jié)歸納,已整理了8類基本語句可概括當前一般的前提約束情況。如語句“(軟件)XXX配置項YYY軟件單元完成了AAA功能,進入BBB界面”。
2)操作步驟語句:一般的操作步驟是指人對通過I/O硬件對軟件的操作過程,操作步驟語句分為4個部分:主語為測試人員(測試人員間接操縱被測軟件時,被測軟件為主語),操作(如點擊、輸入等),操作對象,操作結(jié)果。已梳理了40余條基本語句來概括主要的操作步驟,包括基本語句,如語句:“測試人員通過AAA(操作對象)BBB(操作),軟件CCC”;異常輸入語句 “測試人員在AAA對話框?qū)BB通過CCC(鍵盤等輸入設備)輸入異常數(shù)據(jù)DDD”。還包括鼠標操作語句、設備操作語句、發(fā)送報文/命令語句、記錄語句等。
操作步驟語句較多,并且它通過多個步驟,以及與預期結(jié)果、實際結(jié)果的結(jié)合迭代,可以表現(xiàn)更為豐富的操作過程。
3)預期結(jié)果語句:軟件應該達到的狀態(tài)。包括軟件進入了某個界面,軟件得到并顯示某個數(shù)據(jù),軟件完成了某項任務。
4)實際結(jié)果語句:軟件實際達到的狀態(tài)描述。
5.2 其它軟件測試信息描述
按照2.2軟件測試信息模型,除了軟件缺陷信息外,軟件測試需要描述的還包括軟件域信息和測試域信息,要對這些信息進行描述,DBSTDL還需要更多的詞、語句并組成相應的句群,對軟件測試信息進行完整、準確的描述,這些詞和語句包括:
5.2.1 DBSTDL的其它詞
除了軟件缺陷描述的相關(guān)詞,DBSTDL包括可枚舉專用、項目專有名詞、簡化名稱詞、通用全局變量、自由變量等6類詞。
5.2.2 DBSTDL的其它語句
5.2.2.1 聲明語句
在DBSTDL中,聲明語句包括測試項目聲明語句、被測軟件聲明語句、測試設備聲明語句、軟件技術(shù)文檔聲明語句、簡化名稱聲明語句5類語句組成。
5.2.2.2 組成語句
在DBSTDL中,組成語句包括:被測軟件組成、配置項組成語句、測試環(huán)境組成語句等4類語句組成。
這些語句大多以格式化表格的形式給出,但對于不同的語句采用不同形式的格式化表格,如測試項目聲明語句采用單行格式化表格的形式,被測軟件聲明語句采用多行三列格式化表格的形式。
5.3 DBSTDL的句群
句群是指若干個句子,圍繞一個中心意思,按照一定的邏輯關(guān)系和結(jié)構(gòu)形式構(gòu)成的語流段。DBSTDL包括測試環(huán)境句群、項目信息句群、測試過程句群。
5.4 以軟件缺陷為焦點,軟件缺陷和被測軟件雙主線的軟件測試描述
軟件測試如圖5所示。
圖5 以軟件缺陷為焦點,軟件缺陷和被測軟件雙主線的軟件測試描述
應用DBSTDL語言可規(guī)范、準確地描述軟件缺陷和測試過程,解決不同軟件測試項目技術(shù)人員之間的交流、共享問題,達到軟件缺陷知識的積累和復用。具體可建立軟件典型缺陷庫來實現(xiàn)。
在建庫過程中如果只按照測試項目進行軟件缺陷進行簡單的組合和聚合,那么很容易得到線性的以測試項目為中心的測試信息系統(tǒng)。而本文設計DBSTDL可以參數(shù)化的軟件缺陷摘要語句為核心進行測試信息的重組,雖然其它信息語句是可迭代、重復的,但在一個缺陷中結(jié)果語句是唯一的??梢詫崿F(xiàn)測試信息從測試項目為中心向軟件缺陷為聚類同質(zhì)群組的中心的轉(zhuǎn)換,提供比較便捷的同類軟件缺陷的查詢和使用。
本文初步建立了基于軟件缺陷的測試描述語言TDSBSD,設計了6類詞, 3大類100多條基本語句, 3組句群,并分析了2種主要的語言組合方式。應用TDSBSD語言實現(xiàn)了軟件典型缺陷與測試樣例庫,驗證了TDSBLD語言和建庫思想,實現(xiàn)了測試技術(shù)、測試經(jīng)驗在統(tǒng)一標準下的持續(xù)積累。
[1] 孫維張,劉富華.語言學概論[M].長春:吉林大學出版社,1999.
[2] 宮云戰(zhàn), 楊朝紅, 金大海,等. 軟件缺陷模式與測試[M]. 北京: 科學出版社,2011.
[3] 賈彥德.漢語語義學[M], 北京:北京大學出版社,1999/2005.
[4] 蔣 嚴,潘海華.形式語義學引論[M],北京:中國社會科學出版社,1998/2005.
[5] 張仕金,尚趙偉. Cppcheck的軟件缺陷模式分析與定位[J]. 計算機工程與應用, 2015,51(3):69-73.
[6] 楊 召,肖明清,胡 斌,等.國外航空自動測試描述語言發(fā)展綜述[J].計算機測量與控制,2013,21(4):833-835.
[7] 胡 璇,劉 斌,陸民燕. 軟件代碼缺陷分類及其應用[J].計算機工程,2009,35(2):30-33.
[8] 楊朝紅,宮云戰(zhàn),肖 慶,等. 基于軟件缺陷模型的測試系統(tǒng)[J].北京郵電大學學報,2008,31(5):1-4.
[9] 梁成才,章代雨, 林海靜. 軟件缺陷的綜合研究[J].計算機工程,2006,32(19):88-90.
[10] 曾福萍,靳慧亮,陸民燕.軟件缺陷模式的研究[J].計算機科學,2011,38(2):127-130.
[11] 劉 海,郝克剛. 軟件缺陷原因分析方法[J].計算機科學,2009,36(1):242-243.
A New Software Description Language Based on Software Defaults-DBSTDL
Gu Binbing1, Zheng Mei2
(1.91413 Unit of PLA, Qinhuangdao 066000, China; 2.Yanshan University, Qinhuangdao 066000, China)
The lack of uniform test description language (TDL) is becoming as the constrain to improving the efficiency and reusing the test cases. The traditional TDL what makes equipment and signal as center can not reflect the basic idea of software testing and is not applicable for building shared knowledge database. Defaults-based software test description language (DBSTDL) is designed for accumulating the test knowledge under the unified description, based on software test information model, by using the classification method and the factor decomposition method. The new TDL is designed around double mainlines software defaults and tested software, containing six types of words, three types or more than 100 sentences, three groups of sentence groups, two types of combination. By DBSTDL, a database of typical software defaults and test cases is created to verifying the thought of establishing database by DBSTDL. The language can be used to establish a unified description standard and provides a standardized means in the field of software testing.
TDL(test description language), test information, software defaults, structured form
2016-10-18;
2016-11-19。
顧濱兵(1978-),男,江蘇啟東市人,碩士研究生,高級工程師,主要從事軟件工程、軟件形式化驗證、容錯計算等方向的研究。
1671-4598(2017)04-0113-04
10.16526/j.cnki.11-4762/tp.2017.04.032
TP31
A