999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于帕累托法則的軟件測試策略優化

2008-04-12 00:00:00黃茂生楊春暉
現代電子技術 2008年24期

摘 要:通過分析軟件測試故障的分布特性,研究故障發現、分布與測試用例設計、測試人員等的相關性,提出一種基于帕累托法則的測試策略優化改進方法,在測試設計方法的應用、人員的任務分配、測試重點等方面進行有效的優化,并介紹該方法的具體應用步驟。最后,通過幾個項目的應用結果表明:該方法簡單、實用,可以有效地提高測試效率和暴露軟件缺陷的概率。

關鍵詞:軟件測試;故障數據分析;帕累托;策略優化

中圖分類號:TP311文獻標識碼:B

文章編號:1004-373X(2008)24-089-04

Optimization of Software Testing Strategy Based on Pareto

HUANG Maosheng,YANG Chunhui

(Software Quality Engineering Research Center,The 5th Electronics Research Institute of MII,Guangzhou,510610,China)

Abstract:This paper analyses the distribution of bugs and studies the relation between bugs and the method of uncovering them,then proposes a method to optimize the strategy of software testing based on Pareto,the method introduces how to assign the method of test case design,test engineer and function point.The paper also introduces how to apply the method.Finally,the result of using this method in several projects shows that the method is simple and useful,it can improve the efficiency of software testing and the possibility of uncovering bug.

Keywords:software testing;analysis of fault data;Pareto;strategy;optimization

1 引 言

軟件測試策略是在一定的軟件測試標準、測試規范的指導下,依據測試項目的特定環境約束而規定的軟件測試的原則、方式、方法的集合。依據軟件本身性質、規模和應用場合等的不同,選擇不同測試方案,以最少的軟硬件、人力資源投入得到最佳的測試效果,這是測試策略的目標所在[1]。按照當前的技術發展趨勢,軟件規模和復雜程度急劇地提高,在軟件測試工作需要更多時間的同時,項目周期卻比以前大大縮短,如何在有限的時間內,利用有限的資源完成軟件測試工作,盡最大的可能暴露軟件中隱含的缺陷,實施高效的軟件測試,是軟件測試工作中亟待解決的問題。

針對這一問題,對軟件測試故障特性進行分析,根據被測軟件中故障的分布特性,對測試方法、人員等資源進行優化配置,進行測試過程進行改進是一種有效的途徑。Myers 曾在其經典著作《The Art of Software Testing》中說到“研究軟件錯誤對改進將來的設計和測試過程有無法估量的意義”[2],但對軟件故障分析的內容、方法研究,以及如何利用故障分析結果改進測試過程是目前工程實踐中亟待解決的問題。

本文分析了軟件故障與帕累托法則的相關性,并基于帕累托法則,統計分析軟件故障的分布特性,研究故障發現與測試用例設計、測試人員等的相關性,結合測試項目實踐,提出基于帕累托(Pareto)法則的測試策略優化方法,并給出具體應用的步驟,介紹實際應用效果。

2 軟件故障分布與帕累托法則的相關性

帕累托法則是由19世紀末和20世紀初意大利經濟學家及社會學家帕累托研究國民收入的差異時提出,又稱2/8定則。帕累托分布的分布函數為P{X>t}=(-a),其中t>1,a>0,帕累托分布在自然界的廣泛存在是由以下定理保證的:

定理1:獨立同分布的隨機量之和服從stable分布(正態分布只是stable分布的一個特例,中心極限定理也是本定理的特例)。

定理2:當x→無窮時,stable分布近似于Pareto分布(Pareto分布是大樣本情況下stable分布的近似)。

Mller早在1984年就報道這樣一個分布規律:45%的錯誤集中在10%代碼,而最后的50%代碼包含只有10%的錯誤,IBM等公司的統計數據也表明:80%的缺陷是在20%的模塊中發現的,由此可見,軟件故障是有類聚性的[3],遵循帕累托分布規律,即20%的模塊包含了80%的錯誤。此外,開發人員的思維定勢也會造成同樣的錯誤在其編寫的代碼中一再重復出現,而測試工作由于人員和設計方法的不同,也使其發現的故障呈現一定的分布規律。由此可見軟件故障在模塊、人員、測試設計方法等方面,遵循帕累托分布規律。

3 基于帕累托法則的故障分布特性分析及測試優化策略

3.1 針對故障類型與模塊分布特性的測試策略優化

(1) 違反編碼規則和度量指標的問題分布。

根據對多個測試項目的測試結果分析表明:靜態分析發現問題較多的模塊,在動態測試中也會出現較多的缺陷,靜態分析結果與動態問題數有一定的關聯性;缺陷的密度分布與子系統的復雜程度有關,如一些圈復雜度較高的代碼,其出現問題的可能性較高。因此,靜態分析結果可以用來指導動態測試的測試用例設計,進行的測試用例時,針對程序最容易出現的故障的地方有所側重和重點關注,可以提高測試用例發現故障的概率,進一步提高測試效能。

在具體應用上,可以利用測試工具進行靜態分析和人工評估分析來實現分布特性分析。靜態分析包括代碼檢查、控制流分析、數據流分析、表達式分析和靜態度量指標分析等項目。檢查的規則和度量指標值根據一些統計數據(即經驗數據)來確定,也可以依據一些國際上常用的標準,如歐洲防務標準和汽車工業標準等。測試工具分析后的數據再進行人工分析定位、統計、評估,形成被測試軟件的編碼規則和度量指標的問題分布表,并用來指導動態測試用例的設計。

(2) 故障在各個模塊中的分布。

IBM等公司的統計數據表明:80%的缺陷是在20%的模塊中發現的,而這20%易出錯的模塊,基本上對開發人員來說是新技術或者難度高、技術含量高的部分。在軟件測試中應把握這一規律,對軟件開發人員以前未曾開發過或未接觸過的、對軟件運行起到關鍵作用的模塊和代碼尤其注意,對其進行充分的測試以發現更多的錯誤[4]

因此,在用例執行過程中對發現的故障,進行初步的統計分類,計算其在不同軟件功能模塊中的分布(即軟件故障的區域分布),根據軟件缺陷的類聚性,“發現的軟件缺陷越多,表明未發現軟件缺陷越多” [3],對發現較多缺陷的模塊增加針對性測試用例,盡可能暴露更多的軟件缺陷,可以有效提高測試用例的故障發現率。

(3) 故障類型的分布。

一個錯誤往往是由類似的同一原因引起的更多錯誤的征兆,這些錯誤往往會在同一個人或同一團體已經完成的工作中被找到。通過分析故障類型的分布,得出出現較多的典型錯誤,對分析的結果可以馬上應用于開發一個更有效的檢查單和測試用例,選擇更重要的回歸測試,發現更多的同一類型錯誤或由同一原因引起的錯誤。

3.2 針對故障與人員相關性的測試策略優化

(1) 不同開發人員編寫的代碼中故障數據分布。

每個人都有其固定的思維特點和偏好,程序員往往會犯相同的錯誤,同一個開發人員在其開發的程序中常會反復犯其容易犯的錯誤。通過對發現的故障數據進行分析,統計故障數和故障類型在不同開發人員開發的程序中的分布情況,對發現較多故障的模塊(代碼),確定其開發者,然后對其開發的其他模塊(代碼)加強測試,在測試用例的設計上,也要側重于其所引入的故障類型,使測試用例能達到較高的缺陷發現率。

(2) 不同研制單位的故障數據分布。

軟件的開發人員及研制單位都常會犯一些相同的錯誤,導致一些典型的軟件缺陷。通過對發現的故障數據分析,可以設法找到一個軟件研制單位所常犯的典型錯誤,這些典型錯誤通常是由于欠缺規范(或標準)、配置管理、設計訓練或單元測試,或其他原因而引起的。通過統計分析不同單位開發軟件的測試故障數據發現,一個單位開發軟件出現的較多的某種錯誤類型,在另外一個單位開發的軟件中卻很少或幾乎不會出現,而另一種錯誤類型的出現情況則相反。

(3) 不同測試人員發現故障的特點分析。

測試人員與開發人員同樣具有其固定的思維特點和偏好,這些特點和偏好往往有助于其去發現某些特定類型的軟件缺陷,卻不利于其發現另外一些類型的軟件缺陷,這個特性在使用猜錯法進行測試和進行代碼走查時尤其明顯。對不同測試人員發現故障類型的分類和特點分析,其目的就是對測試組內不同的測試工程師的優缺點進行分析,在測試工作中用其所長,避其所短,提高測試發現缺陷的效率,也為對測試人員進行合理的調配,組建高效率測試組提供有益的借鑒。

不同測試人員發現故障的分類及其特點分析主要統計所有發現缺陷,進行故障分類;并將這些分類與測試工程師進行關聯分析,查找每個測試工程師在發現缺陷方面的特點;然后利用這些特點,在組建測試組和進行測試組內工作分工時將這些因素和特點考慮進去,則可以有效地提高測試組發現軟件缺陷的效率。

3.3 針對各研發階段的故障分布的測試策略優化

“什么時候出的錯?是最難回答的一個問題,但也是最有價值的問題”[2],通過查閱設計文件和設計的歷史資料查找和分析直接導致故障出現的原因根源,其可能是需求中的一個二義性語句、修改先前的錯誤所造成的或沒有考慮非法輸入導致的,用故障分析去確定每個故障是什么時候和誰造成的還遠遠不夠,還要確定到底為什么出錯[5],如果找出一個錯誤的問題根源,就能用同樣的方法發現更多同類性質的錯誤。

3.4 針對故障類型與用例設計方法相關性的測試策略優化

故障分析還要回答一個問題“用例是怎樣發現錯誤的?”[5],如果一個測試用例成功地發現了一個故障,就要對這一用例的設計方法和輸入的測試數據進行分析“為什么這個測試用例成功?”[5]。對于其他測試用例能否從這得到有益的借鑒,使本次測試、也使將來的測試有所改進。進行故障類型與用例設計方法之間關聯分析,才能利用成功的測試經驗來改進檢查和測試過程,以便在將來的設計中更好地發現這一類型的錯誤。

4 應用步驟和實踐

4.1 步驟

(1) 收集故障數據。

在測試過程中,對每一個用例的實際輸出和故障現象進行詳細的記錄,形成測試問題報告單,然后按故障分析對象和分析內容,分類收集測試故障數據。

(2) 計算整理。

對收集來的數據資料進行整理和加工,并按不同分析類型要求進行分類(如模塊分布、類型分布等),計算故障數,故障數占總數的百分比,如表1所示。

(3) 數據分類排序。

根據選擇定的分析類型要求(如模塊分布)對計算整理后的數據進行從大到小的排序,然后計算故障累計比率,并將計算結果填寫在表格最右邊一列,如表1所示。

表1 故障數據表

模塊代號故障數故障比例累計故障比例模塊代號故障數故障比例累計故障比例

M12526.9%26.9%M1511.1%96.8%

M22122.6%49.5%M1611.1%97.8%

M31314.0%63.4%M1711.1%98.9%

M466.5%69.9%M1811.1%100.0%

M555.4%75.3%M1900.0%100.0%

M655.4%80.6%M2000.0%100.0%

M744.3%84.9%M2100.0%100.0%

M833.2%88.2%M2200.0%100.0%

M911.1%89.2%M2300.0%100.0%

M1022.2%91.4%M2400.0%100.0%

M1111.1%92.5%M2500.0%100.0%

M1211.1%93.5%M2600.0%100.0%

M1311.1%94.6%M2700.0%100.0%

M1411.1%95.7%M2800.0%100.0%

(4) 繪制帕累托圖。

用表1所列數據繪制雙坐標圖,首先以模塊代號為橫坐標,模塊故障數為縱坐標,繪制直方圖,從大到小顯示不同模塊的故障數,然后再以累計故障比例為縱坐標,繪制折線圖。

(5) 提出測試側重點,優化測試策略。

根據帕累托圖,查找故障累計達到80%之前的模塊代號,在圖1中為M1~M6。在補充和選取回歸測試用例時,側重性地針對這幾個模塊補充和選取測試用例。

同樣道理,在補充測試用例時,所使用的設計方法也應是基于帕累托法則分析所得到的20%最有效的設計方法。

圖1 帕累托圖

4.2 應用實踐

(1) 故障在模塊中的分布特性分析及測試策略優化。

根據在裝備軟件第三方測試工作中的嘗試,根據帕累托法則對測試進行優化,改進測試重點和測試設計方法,提高了缺陷的發現率和測試用例的效率,取得了比較明顯的效果,見表2所示。項目1中提高了11.7%的缺陷數,而項目2則提高了15.6%,其他項目也普遍占10%以上。在測試用例的效率上,項目1和項目2在優化前分別為25和16.9個測試用例發現1個軟件故障,而經過優化后增加的測試用例則分別為7.7和14個測試用例發現1個軟件故障。

表2 測試策略優化應用效果統計表

項目名

項目基本情況測試策略優化后

總用例數總缺陷數增加用例數新發現缺陷數占總缺陷數比例

項目11 02145 46613.3%

項目226416 28212.5%

(2) 測試人員發現故障的特點分析。

首先,對3個裝備軟件測試項目的代碼檢查數據進行統計分類后,剔除測試工具發現的問題,不列入故障數據統計范圍。項目1和項目2由A,B,C三位測試工程師參加代碼走查,項目3由A,B,C,D四個測試工程師進行代碼走查,對每個測試人員代碼走查發現問題數轉換成其占該類問題的百分比,見表3所示,然后通過比較發現以下規律:

①測試工程A在3個項目中,發現的“指針內存”和“循環結構”類問題基本上占了該類問題總數一半以上,而其他的測試工程師在發現該類問題上,在不同的項目是隨機的,沒有一定的規律和趨勢。

②在“指針內存”問題上C測試工程師在3個項目的代碼走查中發現問題數占該類型問題數都較少甚至沒有。

其次,根據上述不同測試人員發現故障的特點,在第4個測試項目的分工上,讓測試工程師A在第四個項目代碼走查中,負責對“指針內存”和“循環結構”類問題進行重點審查,其他測試工程師則不進行側重性分工,統計結果表明,工程師A發現問題的比例和絕對數量提高明顯。

表3 項目代碼走查數據分類統計表

問題 /%

項目1項目2項目3項目4

ABCABCABCDABCD

宏定義100.00093.106.9000100.0000100.0

循環結構75.025.0046.22.651.350.00050.075.025.000

指針內存55.644.4050.0050.00000100.0000

最后,由于測試工程師未參加第1、第2個項目,則在4個項目中在進行比較,又可以發現測試工程師A和D在發現“宏定義”類問題的能力上基本相當,但比測試工程師B和C更有效率,因此,在后續的項目中可以根據這一特點,對測試人員A,B,C,D進行合理的調配,組建高效率測試組,而且隨著可分析項目的數量增加,測試人員的特長會分析的越來越精確,對測試組內人員分工就可以越細化,工作也越高效。

5 結 語

基于帕累托法則的測試策略優化,一方面,在項目測試工作過程中,通過對故障類型和分布特性進行分析,查找故障缺陷模塊類聚性和故障類型的類聚性,改進軟件測試設計過程和提高測試的效能;另一方面,進行故障與人員相關性分析,查找發現軟件設計人員、開發過程等方面的不足,根據其薄弱點提出一個機構或個人在那一方面需要提高或需要加強培訓,并提出針對性培訓建議,從而促進開發過程的改進。此外,利用測試人員發現故障特點分析結果,對測試人員進行針對性的調配,組建高效率測試組和進行合理的組內分工,可以提高測試故障的發現率,促進測試過程的改進。通過多個項目的實踐證明,基于帕累托法則的測試策略優化可以明顯提高測試效率。

參考文獻

[1]朱少民.軟件測試技術和方法[M].北京:清華大學出版社,2005.

[2]GLenford J Myers.計算機軟件測試技巧[M].周芝英,譯.北京:清華大學出版社,1985.

[3]Ron Patton.軟件測試[M].周予濱,譯.北京:機械工業出版社,2002.

[4]肖瑜.測試用例自動生成方法研究與實現.現代電子技術,2008,31(16):100-102.

[5]Endres A.An Analysis of Errors and Their Causes in System Programs[J].IEEE Transactions on Software Engineering SE-1,1975:140-149.

[6]李寧.軟件測試策略研究與實踐[A].國防科技工業軟件評測技術交流會論文集,2007.

[7]鄭人杰.計算機軟件測試技巧[M].北京:清華大學出版社,1992.

[8]William E Lewis.軟件測試與持續質量改進[M].2版.陳紹英,譯.北京:人民郵電出版社,2008.

[9]Marnie L Hutcheson.Software Testing Fundamentals Methods and Metrics[M].人民郵電出版社,2007.

[10]羅圣儀.計算機軟件質量保證的方法和實踐[M].北京:科學出版社,1999.

作者簡介 黃茂生 男,1973年出生,廣東肇慶人,高級工程師,學士。主要研究方向為軟件測試、軟件可靠性。

楊春暉 女,1965年出生,湖南洞口人,研究員,碩士。主要研究方向為軟件質量工程、項目管理。

注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文

主站蜘蛛池模板: 丰满的熟女一区二区三区l| av在线无码浏览| 看看一级毛片| 色综合a怡红院怡红院首页| 国产精品成人久久| 久草美女视频| 国产精品无码AV片在线观看播放| 国产嫖妓91东北老熟女久久一| 亚洲综合久久成人AV| 丁香亚洲综合五月天婷婷| 青草国产在线视频| 911亚洲精品| 精品撒尿视频一区二区三区| 免费看美女自慰的网站| 国产一区二区三区在线观看免费| 一本无码在线观看| 青青草国产免费国产| 波多野结衣在线一区二区| 伊人网址在线| 精品无码一区二区三区电影| 国产美女91呻吟求| 久久永久视频| 中文字幕丝袜一区二区| 国产69精品久久久久孕妇大杂乱 | 精品自窥自偷在线看| 国产极品嫩模在线观看91| 国产麻豆精品在线观看| 欧美专区在线观看| 国产亚洲一区二区三区在线| 国产黄色视频综合| 中文字幕在线免费看| 国产精品大尺度尺度视频| 欧美三级不卡在线观看视频| 亚洲综合经典在线一区二区| 亚洲男人在线天堂| 免费三A级毛片视频| 久久综合丝袜长腿丝袜| 一区二区三区成人| 国产又爽又黄无遮挡免费观看| 中文字幕日韩欧美| 久久久精品久久久久三级| 亚洲美女AV免费一区| 永久在线精品免费视频观看| 亚洲色图综合在线| 18禁影院亚洲专区| 欧美日韩国产在线人成app| 四虎永久免费地址在线网站| 亚洲人成日本在线观看| 午夜国产精品视频| 欧日韩在线不卡视频| 久青草国产高清在线视频| 91亚洲免费视频| 精品久久人人爽人人玩人人妻| 国产性生交xxxxx免费| 无码一区二区三区视频在线播放| 日本在线免费网站| 色偷偷男人的天堂亚洲av| 成人年鲁鲁在线观看视频| 国产69囗曝护士吞精在线视频| 亚洲色图在线观看| 色亚洲成人| 国产精品成人啪精品视频| 亚洲av综合网| 日韩美毛片| 欧美一区二区精品久久久| 亚洲天堂自拍| 国产第一页免费浮力影院| 日日摸夜夜爽无码| 99热6这里只有精品| 女人18毛片一级毛片在线| 国产va视频| 国产AV无码专区亚洲A∨毛片| 婷婷综合亚洲| 99热这里只有精品5| 色天堂无毒不卡| 91娇喘视频| 久久精品娱乐亚洲领先| 国产乱论视频| 女人天堂av免费| 日韩欧美高清视频| 中国黄色一级视频| 久久精品这里只有国产中文精品|