1 狀態(tài)轉(zhuǎn)換測試簡介
- 嵌入式系統(tǒng)有些表現(xiàn)出基于狀態(tài)的行為,設(shè)計此系統(tǒng)可使用基于狀態(tài)的建模;
- 在設(shè)計過程中,創(chuàng)建的模型可作為測試設(shè)計的基礎(chǔ);
- 以下將描述基于狀態(tài)的模型來導(dǎo)出測試用例的技術(shù)。
1.1 基于狀態(tài)的測試設(shè)計技術(shù)
- 此技術(shù)目標是:驗證事件、動作、行為與轉(zhuǎn)臺轉(zhuǎn)換之間的關(guān)系;
- 通過此技術(shù),可判定系統(tǒng)基于狀態(tài)的行為是否滿足系統(tǒng)的規(guī)范集合。
1.2 系統(tǒng)行為
分三種類型:
- 簡單行為;
- 連續(xù)行為;
- 基于狀態(tài)的行為。
2 故障類別
基于狀態(tài)的行為出現(xiàn)錯誤的三種原因:
- 狀態(tài)圖無法表示系統(tǒng)功能規(guī)范的正確轉(zhuǎn)換;
- 狀態(tài)去的語法不一致或不正確;
- 從狀態(tài)圖到代碼的轉(zhuǎn)換。
以下是狀態(tài)圖和軟件中可能發(fā)生的故障。文章來源:http://www.zghlxwxcb.cn/news/detail-582282.html
2.1 狀態(tài)
- 沒有進入轉(zhuǎn)換的狀態(tài);
- 遺漏初始狀態(tài),需定義狀態(tài)圖中的所有路徑;
- 額外狀態(tài)(系統(tǒng)生成比狀態(tài)圖中多的狀態(tài));
- 遺漏狀態(tài)(系統(tǒng)中沒有給出狀態(tài)圖中給出的狀態(tài));
- 破壞性生態(tài)(轉(zhuǎn)換到無效狀態(tài)而導(dǎo)致系統(tǒng)崩潰)。
2.2 防護
- 防護必須指向轉(zhuǎn)換而不是狀態(tài);
- 完成事件轉(zhuǎn)換上的防護;
- 初始轉(zhuǎn)換上的防護;
- 重疊防護;
- 防護為false但仍有轉(zhuǎn)換發(fā)生;
- 錯誤的防護實現(xiàn)。
2.3 轉(zhuǎn)換
- 必須有一個接收狀態(tài)與一個最終狀態(tài);
- 相互矛盾的轉(zhuǎn)換;
- 遺漏或錯誤轉(zhuǎn)換;
- 遺漏或錯誤動作。
2.4 事件
- 遺漏事件;
- 隱含路徑;
- 一個沒有定義的事件做出響應(yīng)。
2.5 其它
- 在正交區(qū)域使用同步;
- 規(guī)范故障可使用審查清單進行覆蓋,如下:
3 狀態(tài)轉(zhuǎn)換測試技術(shù)
3.1 編寫狀態(tài)-事件表
- 狀態(tài)圖是編寫狀態(tài)-事件表的起點;
- 編寫狀態(tài)-事件表給出狀態(tài)與事件的關(guān)系;
- 如下是一個簡化的錄音機(VCR)狀態(tài)圖:
- 由上述狀態(tài)圖可編寫出狀態(tài)-事件表:
3.2 編寫轉(zhuǎn)換樹
- 狀態(tài)-事件表被用于編寫轉(zhuǎn)換樹;
- 初始狀態(tài)為轉(zhuǎn)換樹的根;
- 以下為VCR的轉(zhuǎn)換樹:
3.3 編寫合法測試用例的測試腳本
- 借助以上轉(zhuǎn)換樹和狀態(tài)-事件表可編寫合法測試用例的測試腳本;
- 轉(zhuǎn)換樹中每一條路徑是一個測試用例;
- 如下是部分從VCR狀態(tài)圖導(dǎo)出的測試用例:
3.4 編寫非法測試用例的測試腳本
- 可從狀態(tài)-事件中得到非法的狀態(tài)-事件組合;
- 非法的狀態(tài)-事件是指在該特定狀態(tài)時,系統(tǒng)沒有指定要對該事件做出響應(yīng);
- 部分非法測試用例的測試腳本如下:
3.5 編寫測試腳本防護
- 以下為防護編寫的測試用例的測試腳本:
4 廣泛性和實用性
4.1 廣泛性
- 測試深度被用于計算測試覆蓋率;
- 有關(guān)公式如下:
n:表示轉(zhuǎn)換次數(shù)(也用于測試深度)
1次轉(zhuǎn)換覆蓋率/0次切換覆蓋率 = 執(zhí)行的轉(zhuǎn)換數(shù)/狀態(tài)模型中的轉(zhuǎn)換總數(shù)
2次轉(zhuǎn)換覆蓋率/1次切換覆蓋率 = 執(zhí)行的兩次轉(zhuǎn)換的序列數(shù)/狀態(tài)模型中兩次轉(zhuǎn)換的序列總數(shù)
狀態(tài)-事件覆蓋程度 = (狀態(tài)數(shù)-執(zhí)行的事件對)/(狀態(tài)數(shù)*事件數(shù))
4.2 故障檢測
- 測試深度是指測試基于狀態(tài)的行為所需的最少工作;
- 測試效果與故障檢測的關(guān)系:
故障類別 | 合法測試用例 | 非法測試用例 | 邊界值分析 | 更深層次的測試 |
---|---|---|---|---|
額外狀態(tài) | + | + | + | + |
遺漏狀態(tài) | + | - | - | - |
破壞性狀態(tài)* | - | +/- | +/- | + |
重復(fù)防護 | - | - | +/- | - |
防護為false的轉(zhuǎn)換 | - | - | + | - |
相互矛盾的轉(zhuǎn)換 | + | - | - | - |
遺漏或錯誤轉(zhuǎn)換 | + | + | + | +/- |
遺漏或錯誤動作 | + | - | - | +/- |
遺落或錯誤事件 | + | - | - | +/- |
隱含路徑 | - | + | + | +/- |
-:檢測出故障的希望很渺茫
+:檢測出故障的概率很大
+-:檢測出故障的概率很小
*:進行更深層次的測試可能不足以檢測出破壞性狀態(tài)
4.3 實用性和可用性
- 影響實用性的因素:
步進方式;
重置選項;
狀態(tài)設(shè)置;
狀態(tài)、轉(zhuǎn)換、輸入、輸出與事件進行唯一性編碼;
轉(zhuǎn)換跟蹤。文章來源地址http://www.zghlxwxcb.cn/news/detail-582282.html
到了這里,關(guān)于嵌入式軟件測試筆記12 | 什么是狀態(tài)轉(zhuǎn)換測試?如何開展?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!