溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Wings與parasoft c++ test在單元測試用例自動生成能力的比對

發(fā)布時間:2020-09-13 21:51:10 來源:網(wǎng)絡(luò) 閱讀:2711 作者:Q0101 欄目:編程語言

 作為一個軟件測試培訓(xùn)講師,主要側(cè)重在白盒測試培訓(xùn)方面,尤其對C++test比較擅長。最近發(fā)現(xiàn)市面上跳出一款Wings工具,據(jù)說1分鐘可以自動生成100萬行測試代碼,性能方面大大超越C++ test,就想著抽空來實(shí)際的對比看看是不是在吹牛。這兩天索性閉關(guān)好好研究一下。試用下來,發(fā)現(xiàn)Wings的創(chuàng)造團(tuán)隊(duì)真的是非常有才,邏輯非常清楚。我又掐指大致框算一下,整體研發(fā)工作量肯定不小,突破了很多技術(shù)天花板。所以,在開寫之前,首先向Wings創(chuàng)造團(tuán)隊(duì)表達(dá)我真摯的敬意,畢竟在這樣浮躁的社會環(huán)境下,能靜下心來研究創(chuàng)新算法的人太少了。
 
 長話短說,現(xiàn)在把Wings和我熟悉的C++ test做一個對比分析,如果有不對的地方歡迎大家拍磚,也借此機(jī)會轉(zhuǎn)達(dá)想要認(rèn)識Wings開發(fā)團(tuán)隊(duì)的誠懇。
 
 首先Wings與c++ test都是用于生成單元測試驅(qū)動框架的工具。兩者差異在于以下幾點(diǎn):
 
?。?) 基本普通類型,wings與c++ test生成用例大致相同,wings采用隨機(jī)生成一組或者多組數(shù)值,而c++ test依據(jù)臨界值生成固定的隨機(jī)數(shù)。
 
 例如:c++ test:生成五組測試函數(shù),每個測試函數(shù)分別取最大值,最小值,-1,0,1
Wings:從json中取值,json中的值先隨機(jī)生成,也可以用戶自己修改。
 
 例如:
 C++ test針對基本類型:
 Wings與parasoft c++ test在單元測試用例自動生成能力的比對
 
 Wings針對基本類型:
 Wings與parasoft c++ test在單元測試用例自動生成能力的比對
?。?) 數(shù)組類型
 數(shù)組作為函數(shù)參數(shù)使用時,分為固定長度和非固定長度。 
 

  1. 固定長度的數(shù)組
    Wings能夠分析出數(shù)組的長度,通過獲取固定數(shù)組的長度,進(jìn)行拷貝賦值。
    C++ test通過不關(guān)心數(shù)組的具體長度為多少,統(tǒng)一初始化為1、16、256的大小,進(jìn)行賦值。
  2. 非固定長度的數(shù)組
    Wings首先給不定長度的數(shù)組,分配一定的長度,用戶可修改數(shù)組長度的大小wings將依據(jù)具體修改的數(shù)組長度進(jìn)行賦值。
    C++ test通過不關(guān)心數(shù)組的具體長度為多少,統(tǒng)一初始化為1、16、256的大小,進(jìn)行賦值。
    例如:c++ test針對數(shù)組類型:

 Wings與parasoft c++ test在單元測試用例自動生成能力的比對
 
Wings指針數(shù)組類型:
(1)一維數(shù)組類型
Wings與parasoft c++ test在單元測試用例自動生成能力的比對
(2)二維數(shù)組類型
Wings與parasoft c++ test在單元測試用例自動生成能力的比對
(3)三維數(shù)組類型
Wings與parasoft c++ test在單元測試用例自動生成能力的比對
(3) 指針類型
 Wings:json文件生成不定長度的數(shù)組,驅(qū)動運(yùn)行的時候可以根據(jù)文件中用戶設(shè)定的數(shù)組進(jìn)行靈活的取值,二級指針也可以根據(jù)json中數(shù)組的長度進(jìn)行靈活的賦值,三級指針暫時是取的二級指針的地址。
 C++ test:一級指針是生成4種測試函數(shù),前三種賦值長度分別為1,16,256的數(shù)組,最后一種指針賦值0;二級指針三級指針類似,取一級指針,二級指針的地址。
例如:c++ test針對指針類型:
Wings與parasoft c++ test在單元測試用例自動生成能力的比對  
Wings與parasoft c++ test在單元測試用例自動生成能力的比對
Wings與parasoft c++ test在單元測試用例自動生成能力的比對
Wings與parasoft c++ test在單元測試用例自動生成能力的比對
 
Wings針對指針類型:
(1)一級指針
Wings與parasoft c++ test在單元測試用例自動生成能力的比對
(2)二級指針
Wings與parasoft c++ test在單元測試用例自動生成能力的比對
(4) 復(fù)雜類型(結(jié)構(gòu)體類型)
 Wings:對結(jié)構(gòu)體的處理相對比較合理,首先針對復(fù)雜類型,wings首先進(jìn)行展開分析,將復(fù)雜類型分解為最簡單的基本類型,然后依次進(jìn)行賦值操。
 C++ test:對結(jié)構(gòu)體的處理很簡單,就是直接將結(jié)構(gòu)體定義一下,然后就傳進(jìn)去了,結(jié)構(gòu)體指針或者數(shù)組是取上一級的地址或者初始化0。
例如:c++ test針對復(fù)雜類型:
Wings與parasoft c++ test在單元測試用例自動生成能力的比對
 Wings針對復(fù)雜類型:
 將復(fù)雜類型展開分解,依次進(jìn)行賦值操作。
Wings與parasoft c++ test在單元測試用例自動生成能力的比對
(5) 枚舉類型
 Wings:json中隨機(jī)生成枚舉類型里面對應(yīng)的數(shù)值,然后驅(qū)動里面將該數(shù)值轉(zhuǎn)化為枚舉的值賦給函數(shù)參數(shù)。
 C++ test:直接隨機(jī)賦上枚舉類型里面所有可能的情況。
 例如:c++ test針對枚舉類型
 
Wings與parasoft c++ test在單元測試用例自動生成能力的比對
 
 Wings針對枚舉類型:
Wings與parasoft c++ test在單元測試用例自動生成能力的比對
 
(6) 聯(lián)合體類型
 Wings:對聯(lián)合體的每一項(xiàng)都進(jìn)行默認(rèn)順序賦值,用戶可以根據(jù)需要實(shí)際選擇賦值哪一個,聯(lián)合體的值存在json中
 C++ test:聯(lián)合體賦值跟普通類型賦值一樣,聯(lián)合體里面的某一個變量賦值為最大,最小,-1,0,1這五種值,每種都測試一次
 例如:c++ test針對聯(lián)合體類型:
 
Wings與parasoft c++ test在單元測試用例自動生成能力的比對
 
 總結(jié)對比下來的結(jié)果就是這樣:

 

             wings C++test
基本類型 隨機(jī)賦值 最大值,最小值,-1,0,1
數(shù)組類型   固定長度 依據(jù)具體長度賦值 全部按照1、16、256的長度進(jìn)行賦值
       非固定長度 依據(jù)需求動態(tài)賦值 全部按照1、16、256的長度進(jìn)行賦值
指針類型   基本類型 動態(tài)獲取長度,進(jìn)行賦值 全部按照1、16、256的長度進(jìn)行賦值
       復(fù)雜類型 采用常規(guī)賦值方式 全部按照1、16、256的長度進(jìn)行賦值
復(fù)雜類型 Wings首先將復(fù)雜類型分解為簡單的基本類型,然后依次進(jìn)行賦值 不做處理,直接賦值為空
枚舉類型 隨機(jī)賦值 隨機(jī)賦值
聯(lián)合體類型 隨機(jī)賦值 聯(lián)合體里面的某一個變量賦值為最大,最小,-1,0,1這五種值
特殊類型 利用模板方式,特殊進(jìn)行賦值處理 不做處理

 
Wings與c++ test優(yōu)缺點(diǎn)對比:
(1) 從靈活性方面:wings可以依據(jù)需求,修改賦值的次數(shù),c++ test只能夠一次性固定生成幾組值。
 
(2) 從賦值方式:wings的賦值更加合理,c++ test只能夠生成一個簡單的單元框架,具體的賦值方式,大部分需要測試人員手動去修改驅(qū)動賦值,wings基本上不需要測試人員修改驅(qū)動代碼,只需要依據(jù)需求,修改測試數(shù)據(jù)即可。
 
(3) 從企業(yè)適用性方面:企業(yè)應(yīng)用一般軟件復(fù)雜性高,因此c++ test由于無法面對復(fù)雜參數(shù)和復(fù)合類型以及嵌套類型產(chǎn)生用例,因?yàn)槠淦髽I(yè)適用性大打折扣,更多時候是產(chǎn)生了測試驅(qū)動的框架而已,而wings則可以面向任意復(fù)雜的應(yīng)用,可完成全部單元測試用例驅(qū)動代碼的生成。
 
  不比不知道,一比嚇一跳。Parasoft C++是美國廠商的產(chǎn)品,占據(jù)市場好多年,很多都是軍工在用。Wings據(jù)說是全自研的,居然性能表現(xiàn)這么好。創(chuàng)新太難了,我也深有體會。衷心希望這樣優(yōu)秀的產(chǎn)品能有更好突破。畢竟這樣用心和認(rèn)真專研的團(tuán)隊(duì),國內(nèi)太少了。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI