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

針對函數式編程語言的基于屬性的測試方法研究

2016-03-16 05:50:36熊玉蘭
中國新通信 2016年3期
關鍵詞:程序設計

熊玉蘭

一、概論

如何提高軟件質量是軟件工程致力解決的關鍵問題之一。軟件測試和驗證是保證軟件正確性和提高可靠性的最基本和最重要的手段,也是工業界使用的主流技術。軟件測試有不同的方法,基本可以劃分為基于程序的測試和基于規范的測試兩大范疇。基于程序的測試根據程序特征代碼(如:語句、分支、路徑)產生測試樣例,并以相應程序代碼特征是否得到充分測試作為測試終止的判定標準,即測試充分性準則。基于規范的測試要求根據功能規范和設計規范產生測試用例,針對相應的功能和設計屬性進行測試,并以相關屬性是否得到充分測試作為測試充分性準則。

到目前為止,工業界在軟件開發過程中采用的測試技術大多是非系統化的,具有可靠性高、實時性強等要求,通常的完整的軟件測試工作需要耗費大量的人力物力,基本上會占據軟件開發周期50%甚至更多的時間。特別地,對于一些特殊的軟件,比如:安全攸關實時軟件(火箭控制等),他們的高復雜性和高安全需求使得傳統的基于程序代碼的測試在技術上難以實現,開銷上難以接受。

對于特定目的,采用某些特定結構的程序可以采用一類稱為隨機測試的方法。隨機測試是一種有效的測試策略,該策略簡單易行、成本低,不需要過多了解軟件的內部結構的信息,只是按照一定的規則在整個輸入域中隨機產生測試用例,因而被廣泛地用于軟件測試和可靠性評估中。同時,高昂的測試代價不斷促進研究人員考慮能否有自動化測試的方法,不管是全部自動化還是部分自動化。自動化的測試工具可以幫助編程人員在很短的時間內完成測試,并且很容易在每次程序修改過之后重復測試。目前為止,有一類QuickCheck的工具,可以用于測試Haskell程序。

二、 研究方法

一個屬性為基礎的測試框架通常會一遍又一遍地運行相同的生成測試數據,這個設置和當前基于樣例的測試架構不太一樣,在基于樣例的測試中,每個單元測試都設置了一個輸入的情況,然后運行測試的代碼,最后檢查輸出(以及然后代碼應該有的其他的影響)。相反的是,一個屬性為基礎的測試通常會運行數百次不同的輸入,這個測試的框架通常會考慮一些比較邊緣的情況,比如:傳遞空列表、負值、所有可能的邊緣情況,來使測試發生失敗,以達到學習的目的。

基于屬性的測試人員必須非常仔細地考慮各種各樣的規范和細節。比如:支持什么樣的輸入?輸入如何產生?可以對輸入做哪些申明?這些考慮都是非常必要的。

基于屬性的測試主要分為以下八個步驟:

屬性選擇(selecting a property)。它需要從一堆屬性池子中根據一些準則選擇一個屬性來進行測試。

靜態分析(Static analysis and slicing),它主要做的工作是為源代碼生成一個基于數據流的圖,這個圖通常在基于屬性的其他步驟中有很多作用。

程序導入(Program instrumentation),它的主要工作是:導入以及定位到與第一步中選擇的屬性有關的代碼片段,然后編譯這段代碼片段。

初步測試(Initial test execution),它的主要工作是:使用之前產生的各種各樣的測試數據進行初步測試。

范圍測試(Coverage evaluation),它的主要工作是:根據第四部測試執行過程中產生的代碼片段執行的歷史記錄來分析哪些路徑是被執行的,以此來得到一個所謂的范圍。

額外測試(Additional test case),它的主要任務是:根據第五步返回的結果進行進一步的測試。

正確性評估(Correctness evaluation),它的主要任務是:將之前的測試結果與期望結果進行比較,依次來判斷基于該屬性的測試是否成功。

三、實驗評估

為了驗證基于屬性的測試的有效性,我們設計了如下實驗對其進行驗證,選擇二項堆(Binomial Heap)作為測試對象對其進行基于屬性的測試。

二項堆是一種支持快速合并的堆數據結構,采用二項樹(Binomial Tree)的集合進行實現。二項樹遞歸定義如下:

階為k的二項樹是由階為k-1, k-2, , 2, 1, 0的二項樹的根節點作為k階二項樹的節點構成的。

二項堆是有二項樹的集合構成的,滿足如下二項堆性質:

堆中的每一棵二項都樹滿足最小堆性質,即結點的值大于其父節點的值;

堆中具有某階的二階樹具有唯一性。

我們采用Scala實現了中的二項堆,并且設計實現了5種具有缺陷的二項堆,對這6種二項堆進行了屬性測試。具有缺陷的二項堆對原二項堆的實現進行了變種,使其在某些特定情況下會不滿足二項堆的性質。

我們還設計了6個屬性,采用基于屬性的測試方法對這6種堆實現進行測試,這些屬性都是根據二項堆的性質進行設計的,所以正確的二項堆實現會全部滿足這些屬性,而我們設計實現的具有缺陷的二項堆將會違背某個屬性。

這是因為第二種變種實現改變了鏈接二項樹的操作,會影響到堆的插入、刪除等各項操作,對產生的堆的結構產生了影響;而第一種變種實現僅會影響到findMin操作,不會對堆的結構產生影響。

四、結論

本文對基于屬性的測試進行了研究,實驗中采用Scala編程語言對純函數式二項堆進行了實現,并設計實驗了五種具有缺陷的二項堆,并定義了六種滿足二項堆性質的屬性,采用基于屬性的測試對二項堆進行測試,通過實驗結果證明了基于屬性的測試的有效性。

猜你喜歡
程序設計
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
主站蜘蛛池模板: 国产精品19p| 日韩成人在线一区二区| 午夜激情婷婷| 国产区免费精品视频| 欧美午夜网站| 欧美亚洲香蕉| 欧美色视频在线| 色精品视频| 午夜无码一区二区三区| 精品亚洲国产成人AV| 国产在线自乱拍播放| 天天干天天色综合网| 久久久久久午夜精品| 动漫精品啪啪一区二区三区| 制服丝袜 91视频| 欧美国产菊爆免费观看 | 91在线精品免费免费播放| 午夜影院a级片| 国产精品欧美日本韩免费一区二区三区不卡| 国产色伊人| 五月婷婷综合网| 欧美激情网址| 亚洲欧洲自拍拍偷午夜色| 精品国产成人a在线观看| 久久综合九九亚洲一区| 色婷婷成人网| 久久精品波多野结衣| 日本人真淫视频一区二区三区| 无码专区国产精品第一页| 国产欧美在线观看一区| 极品性荡少妇一区二区色欲| 亚洲色图欧美一区| 成人午夜久久| 5555国产在线观看| 大香伊人久久| 毛片在线播放网址| 欧美另类第一页| 欧美成人午夜视频免看| 国产色婷婷| 色综合久久综合网| 色婷婷久久| 久久不卡国产精品无码| 亚洲最大在线观看| 亚洲一区二区三区中文字幕5566| av在线人妻熟妇| 日韩123欧美字幕| 亚洲视频二| 婷婷色狠狠干| 亚洲成人黄色在线观看| 国产白浆一区二区三区视频在线| 操操操综合网| 亚洲精品第一在线观看视频| 99热这里只有精品2| 国产呦精品一区二区三区下载| 香蕉精品在线| 欧美日韩国产成人高清视频| 欧美另类精品一区二区三区| 国内精品视频区在线2021| 成人av专区精品无码国产| 高清码无在线看| 亚洲中文精品人人永久免费| 日韩精品一区二区深田咏美| 国产成人亚洲毛片| 国产福利大秀91| 中文字幕中文字字幕码一二区| 国产99精品视频| 欧美一区二区三区不卡免费| 香蕉视频在线观看www| 人妖无码第一页| 日韩人妻少妇一区二区| 九色视频在线免费观看| 日韩精品亚洲人旧成在线| 动漫精品中文字幕无码| 狠狠躁天天躁夜夜躁婷婷| 制服无码网站| 亚洲国产日韩视频观看| 99精品国产电影| 天堂中文在线资源| 亚洲第一黄片大全| 亚洲一区二区日韩欧美gif| 成年人免费国产视频| 国产成人三级|