作者 | 李偉 上海控安安全測評部總監(jiān)
來源 |鑒源實驗室
社群 | 添加微信號“TICPShanghai”加入“上海控安51fusa安全社區(qū)”
在ISO 26262-6-2018 標(biāo)準(zhǔn)規(guī)范中給出了單元、集成、系統(tǒng)測試各階段的建議測試使用方法,設(shè)計生成測試用例的建議方法包括需求分析、等價類的生成和分析、邊界值分析、基于已有經(jīng)驗和知識的錯誤推測等等,從本篇開始我們對測試用例設(shè)計生成的方法進行介紹。
01
開始于需求分析
無論使用哪種方法設(shè)計測試用例,首先都需要對需求進行分析,根據(jù)需求規(guī)格說明書逐條對需求進行分解,需求的分解必須要確保能夠完整地覆蓋整條需求被全面的測試,同時需求分解的粗細程度需要有恰當(dāng)?shù)念w粒度。
需求分解的步驟通常分為兩步,首先對一條需求設(shè)計中的功能抽象,用功能抽象法把單條需求分解為多個功能單元,即把單條復(fù)雜的需求分解為多個子單元需求;其次針對已分解的子功能單元或子單元需求使用數(shù)據(jù)抽象方法,設(shè)計測試每個功能單元的數(shù)據(jù)。
功能抽象中程序需求被看成一種抽象的功能層次,每個層次可標(biāo)識被測試的功能,層次結(jié)構(gòu)中的某一功能有由其下一層功能定義。按照功能層次進行分解,可以得到眾多的最低層次的子功能,以這些子功能為對象,進行測試用例設(shè)計。
數(shù)據(jù)抽象中,數(shù)據(jù)結(jié)構(gòu)可以由抽象數(shù)據(jù)類型的層次圖來描述,每個抽象數(shù)據(jù)類型有其取值集合。程序的每一個輸入和輸出量的取值集合用數(shù)據(jù)抽象來描述。
02
等價類的分析和劃分
等價類的分析和劃分方法在很多文檔中均可以查詢到,我們引用全國計算機技術(shù)與軟件專業(yè)技術(shù)資格軟件評測師教程中的定義。等價類劃分的辦法是把程序的輸入域劃分成若干部分,然后從每個部分中選取少數(shù)代表性數(shù)據(jù)作為測試用例。每一類代表性數(shù)據(jù)在測試中的作用等價于這一類中的其他值。
使用等價類劃分方法時,應(yīng)同時包括有效等價類和無效等價類,有效等價類是設(shè)計中合理,正確或有效用的輸入集,無效等價類是設(shè)計中不合理,不正確或失效的輸入集。
根據(jù)遇到的使用場景不同,在不同的場景情況下通常等價類劃分按照下面的情況進行:
(1)在輸入條件規(guī)定了取值范圍或值的個數(shù)的情況下,可以確立一個有效等價類和兩個無效等價類。
(2)在輸入條件規(guī)定了輸入值的集合或者規(guī)定了“必須如何”的條件的情況下,可以確立一個有效等價類和一個無效等價類。
(3)在輸入條件是一個布爾量的情況下,可確定一個有效等價類和一個無效等價類。
(4)在規(guī)定了輸入數(shù)據(jù)的一組值(假定n個),并且程序要對每一個輸入值分別處理的情況下,可確立n個有效等價類和一個無效等價類。
(5)在規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則的情況下,可確立一個有效等價類(符合規(guī)則)和若干個無效等價類(從不同角度違反規(guī)則)。
(6)在確知已劃分的等價類中,各元素在程序處理中的方式不同的情況下,則應(yīng)再將該等價類進一步地劃分為更小的等價類。
03
單元測試中的使用
等價類劃分在功能和接口測試中的使用相對比較簡單,上一章節(jié)以及很多其他文檔中都多有說明。我們會從代碼測試的角度對等價類的劃分進行介紹。等價類劃分通常會跟邊界值結(jié)合起來使用,邊界值我們會在下一篇文章進行介紹。
在執(zhí)行代碼單元的結(jié)構(gòu)化覆蓋度測試時,會要求設(shè)計測試用例對代碼進行動態(tài)測試,測試用例的設(shè)計在標(biāo)準(zhǔn)規(guī)范中同樣推薦使用等價類、邊界值等方法。我們將通過一段代碼來分析等價類的在代碼測試中的劃分。
示例代碼如下:
代碼定義了vehicle_temperature_inside 為車內(nèi)的溫度,實際中該值通常是調(diào)用溫度傳感器讀值,本示例中簡單將溫度傳感器接口讀值寫成了全局變量Sensor_temperature ;AC_switch 空調(diào)壓縮機開關(guān),0為關(guān),1為開;Fan_swtch 風(fēng)扇開關(guān),0為關(guān),1為開;Fan_speed 1為微風(fēng)檔,2為中風(fēng)檔,3為高風(fēng)檔;Fan_temp 風(fēng)扇冷熱0為冷風(fēng),1為熱風(fēng)。
代碼要實現(xiàn)的邏輯是根據(jù)獲得的傳感器溫度,在車內(nèi)溫度超過25攝氏度時打開空調(diào),此時風(fēng)扇啟動吹冷風(fēng),空調(diào)壓縮機啟動,風(fēng)扇中檔風(fēng),返回“空調(diào)制冷啟動”;在車內(nèi)溫度低于15攝氏度時打開空調(diào),此時風(fēng)扇啟動吹熱風(fēng),空調(diào)壓縮機不啟動,風(fēng)扇中檔風(fēng),返回“空調(diào)加熱啟動”。
從功能需求描述和代碼我們可以得知,空調(diào)控制的邏輯結(jié)果均是基于車內(nèi)溫度這個輸入指標(biāo)來得出的,參數(shù)vehicle_temperature_inside > 25時啟動冷空調(diào),vehicle_temperature_inside < 15時啟動熱空調(diào)。這里有兩個有效的取值范圍,根據(jù)上一章節(jié)我們可以得出適用于第4種情況,有2個有效等價類,和1個無效等價類。有效等價類集合是(25,+∞)、(-∞,15),無效等價類為[15,25]。
有效等價類中取vehicle_temperature_inside 參數(shù)輸入值26時,測試用例如下:
有效等價類中取vehicle_temperature_inside 參數(shù)輸入值0時,測試用例如下:
無效等價類取值25測試用例如下:
測試完成后檢查控制流圖如下,所有路徑均已設(shè)計測試用例覆蓋。
04
測試小結(jié)
在執(zhí)行代碼的測試設(shè)計中使用等價類方法有如下建議:
1. 等價類生成與分析不僅僅在黑盒測試設(shè)計中使用,在白盒代碼測試中也是常見的測試方法。
2. 代碼測試用例設(shè)計時無效等價類取值的設(shè)計,取值通常跟有效等價類值是數(shù)據(jù)類型相同,但范圍限定在無效范圍內(nèi),即測試的形參是整數(shù)型,不管有效等價類或是無效等價類均是整數(shù)型,不存在有效等價類是整數(shù)型,無效等價類是浮點數(shù)型。
3. 代碼設(shè)計的等價類和邊界值可以結(jié)合使用,也推薦結(jié)合使用。
4. 功能安全等級的不同和測試設(shè)計時對等價類邊界值取值數(shù)量的要求需要根據(jù)實際項目情況來,通常安全等級越高,要求取值測試數(shù)量就多。
參考文獻:
1. 全國計算機技術(shù)與軟件專業(yè)技術(shù)資格考試指定用書 – 軟件評測師教程.
審核編輯 黃宇
-
測試
+關(guān)注
關(guān)注
8文章
5375瀏覽量
127053 -
ISO
+關(guān)注
關(guān)注
0文章
265瀏覽量
39668 -
代碼
+關(guān)注
關(guān)注
30文章
4825瀏覽量
69035
發(fā)布評論請先 登錄
相關(guān)推薦
評論