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