《電子技術應用》
您所在的位置:首頁 > 測試測量 > 設計應用 > 集合因子最短路徑算法在軟件測試中的應用
集合因子最短路徑算法在軟件測試中的應用
2016年微型機與應用第16期
楊會廷
東方地球物理公司 物探技術研究中心,河北 涿州 072750
摘要: 當前軟件普遍采用爬蟲程序完成部分測試功能,分析當前測試用的爬蟲程序,發現耗時最多的是查找可用路徑。為了避免撒網式的、無明確目地的、重復查找,提出了將集合因子最短路徑算法應用于當前的爬蟲程序中,以改善并提高爬蟲程序在軟件測試中的效率和有效性。此算法可以大大縮減爬蟲程序在查找有效可用路徑的時間,提高整個測試的效率。
Abstract:
Key words :

  楊會廷
  (東方地球物理公司 物探技術研究中心,河北 涿州 072750)

       摘要:當前軟件普遍采用爬蟲程序完成部分測試功能,分析當前測試用的爬蟲程序,發現耗時最多的是查找可用路徑。為了避免撒網式的、無明確目地的、重復查找,提出了將集合因子最短路徑算法應用于當前的爬蟲程序中,以改善并提高爬蟲程序在軟件測試中的效率和有效性。此算法可以大大縮減爬蟲程序在查找有效可用路徑的時間,提高整個測試的效率。
  關鍵詞:最短路徑;軟件測試;集合因子  

0引言
  為了滿足市場的需要,一般軟件都需要支持多個語言版本,例如:微軟的Windows 系統和Office軟件需要支持幾百種語言。因此針對多個語言的本地化軟件測試不可避免地提上了日程。在本地化軟件測試中,除了本地化的功能測試外,為了保證本地化軟件的翻譯質量,往往需要對軟件的所有本地化頁面進行檢查。對于支持幾百種語言的軟件,如何快速有效地獲取多種語言的所有本地化頁面就成為降低此項測試成本的關鍵[1]。
1如何獲取所有軟件頁面
  一個軟件有多少界面對于開發者來說是透明的。如何獲取一個軟件所有的界面,對于不同的軟件設計會有不同的策略。基于Web的軟件尤為如此。
  (1)訪問URL列表: 這個策略是針對基于Web的軟件才可以使用。整個軟件所有不同的頁面對應的是不同且唯一的URL。通過訪問不同的URL以獲取軟件所有界面是比較簡單的方式。前提就是需要獲取整個軟件的URL 列表。不過目前大多數基于Web 的軟件,特別是外網可以訪問的軟件,為了保證軟件的安全都要屏蔽掉實際的URL。所以要獲取整個軟件的不同URL 列表也不是容易的事。
  (2)定制腳本:目前許多軟件在開發的階段就同時開始定制許多測試腳本,并在以后的開發測試階段反復用來測試以保證軟件功能正常。但是這些腳本一般都是由開發人員編寫的,主要針對軟件的功能和復雜的業務邏輯,并且主要運行在英文版的軟件上,很少運行在本地化的軟件上。根據調查,大概只有6.7%的軟件開發小組會把腳本在本地化軟件上試運行。所以很多開發腳本都很難直接運行在本地化的軟件上并獲取本地化的界面[2]。
  (3)自動爬蟲:目前自動爬蟲的程序有很多。用戶只需要提供登錄信息,爬蟲程序就能自動查找頁面上可能產生的新頁面元素,并依次觸發,循環迭代直到找到所有頁面。為了減少本地化測試成本,對于支持多種語言的軟件,要獲取多種語言的本地化頁面,采取自動爬蟲程序是一個很好的選擇。讓多個線程同時分別運行在多個語言環境下截取所有頁面,從而可以大大節省成本。如果讓爬蟲程序撒網式查找并自由運行,則整個運行過程比較冗長。為了優化爬蟲程序,加入最短路徑算法,使得整個爬蟲程序更有效[3]。
2集合因子最短路徑算法的介紹
  隨著社會的發展,最短路徑問題在現實生活中占據的地位越來越重要。求解這一類問題的方法有很多,包括Floyd算法、Dijkstra算法、BellmanFord算法、動態規劃算法和智能優化算法等。最短路徑問題是圖論研究中的一個經典算法問題,旨在尋找圖(由節點和路徑組成的)中兩節點之間的最短路徑。算法的具體形式包括[4]:
  (1)確定起點的最短路徑問題:即已知起始節點,求最短路徑的問題。
  (2)確定終點的最短路徑問題:與確定起點的問題相反,該問題是已知終結節點,求最短路徑的問題。在無向圖中該問題與確定起點的問題完全等同,在有向圖中該問題等同于把所有路徑方向反轉的確定起點的問題。
  (3)確定起點終點的最短路徑問題:即已知起點和終點,求兩節點之間的最短路徑。
  (4)全局最短路徑問題:求圖中所有的最短路徑。
  用于解決最短路徑問題的算法被稱作“最短路徑算法”,有時被簡稱作“路徑算法”。這里主要介紹可以應用于自動爬蟲程序的集合因子最短路徑算法。
  2.1集合因子最短路徑算法介紹
  集合因子最短路徑算法是單源最短路徑算法,用于計算一個節點到其他所有節點的最短路徑。其主要特點是以起始點為中心向外層擴展,在擴散過程中每次擴散都以一個集合為因子,直到擴展到所有節點為止。
  問題描述:在無向圖G=(V,E)中,假設每條邊E[i]的長度為w[i],找到由頂點V0到其余各點的最短路徑[5]。
  2.2算法描述
  2.2.1算法思想原理
  設G=(V,E)是一個帶權無向圖,把圖中頂點集合V分成兩組,第一組為已求出最短路徑的頂點集合(用S表示,初始時S中只有一個源點,以后每次求得最短路徑的頂點, 就被加入到集合S中,直到全部頂點都加入到S中,算法就結束了),第二組為其余未確定最短路徑的頂點集合(用U表示),按最短路徑長度的遞增次序依次把第二組的頂點加入S中。在加入的過程中,總保持從源點v到S中各頂點的最短路徑長度不大于從源點v到U中任何頂點的最短路徑長度。此外,每個頂點對應一個距離,S中的頂點的距離就是從v到此頂點的最短路徑長度,U中的頂點的距離是從v到此頂點只包括S中的頂點為中間頂點的當前最短路徑長度。
  2.2.2算法過程描述
  算法過程如下:
  (1)初始時,S只包含源點,即S={v},v的距離為0。U包含除v外的其他頂點,即:U={其余頂點},若v與U中頂點u有邊,則<u,v>正常有權值,若u不是v的出邊鄰接點,則<u,v>權值為∞。
  (2)從U中選取距離v最小的頂點集合<k1,k2>,把k1、k2加入S中(該選定的距離就是v到k1=v到k2, 且是最短路徑長度)。
  (3)以<k1、k2>組成的集合為新考慮的中間點,修改U中各頂點的距離;若從源點v到頂點u的距離(經過頂點ki)比原來距離(不經過頂點ki)短,則修改頂點u的距離值,修改后的距離值的頂點ki的距離加上邊上的權。
  (4)重復步驟(2)和(3)直到所有頂點都包含在S中。
  2.3算法適用范圍
  (1)單源最短路徑;
  (2)有向圖和無向圖。
3集合因子最短路徑算法在爬蟲程序中的應用
  每個軟件一般都有一個登錄頁面,把登錄后的第一個頁面命名序號為001,然后以從上到下,從左到右的順序分別定義自動爬蟲程序掃描出來的新頁面,分別是002、003等。而每個頁面之間的距離,即權值,都為1(實際中,訪問不同頁面需要的時間是不同的,這里在服務器性能很好的情況下,忽略訪問時間的不同,都設定為1)。所有頁面從第一個頁面001出發,可以直接到達或者經過若干個節點后到達。其他不同的節點間也可能存在到達的路徑。這樣由所有頁面作為節點組成一個所有頁面可到達的圖,且每個節點之間的距離都為1。由于整個軟件過于龐大,下面只畫出部分節點來說明問題,如圖1所示。

圖像 005.png

  設001為源點,求001到其他各頂點〈002,003,004,005,006,007,008,009,010,011,012,013〉的最短路徑。算法執行步驟如表1。

圖像 006.png

圖像 007.png

4試驗數據和性能對比
  通過對比數據更能體現這一算法應用在爬蟲程序中的優勢,如表2所示。下面的數據采集采用的是相同性能和型號的服務器,且使用相同軟件。整個軟件共有956張圖。程序運行過程中,在剛開始速度會比較快,到后面時由于需要花費更多時間判斷處理,速度會慢下來。表2中的數據屬于平均數據。需要運行多個語言平臺時,是多個表1算法執行步驟步驟S集合中U集合中1選入 001,此時S=<001>
  此時最短路徑001→001=0
  以集合<001>為中間點集合開始找U=<002,003,004,005,006,007,008,009,010,011,012,013>
  001→002=1
  001→003=1
  001→004=1
  001→005=1
  001→其他U中的節點=∞2選入002、003、004、005,此時S=<001,002,003,004,005>,001→001=0,
  001→002=1,
  001→003=1,
  001→004=1,
  001→005=1,
  以集合<002,003,004,005>為中間點集合,從001→002,001→003,001→004,001→005最短路徑開始找U=<006,007,008,009,010,011,012,013>
  002→U中的節點=∞
  003→006=1
  003→007=1
  003→008=1
  004→U中的結點=∞
  005→008=1(由于003→008=1已存在,直接放棄此條路徑)3選入006、007、008,
  此時,S=<001,002,003,004,005,006,007,008>,
  001→001=0,001→002=1,001→003=1,001→004=1,001→005=1,001→003→006=2,001→003→007=2,001→003→008=2,
  以集合<006,007,008>為中間點集合,從001→003→006=2,001→003→007=2,001→003→008=2
  分別為最短路徑開始找U=<009,010,011,012,013>
  006→U中的節點=∞
  007→010=1
  007→011=1
  008→009=1
  008→012=14選入010、011、009,012,此時,S=<001,002,003,004,005,006,007,008,009,010,011,012>,
  001→001=0,001→002=1,001→003=1,001→004=1,001→005=1,001→003→006=2,001→003→007=2,001→003→008=2,001→003→007→010=3,001→003→007→011=3,001→003→008→009=3,001→003→008→012=3,
  以集合<009,010,011,012>為中間點集合,從001→003→007→010=3,
  001→003→007→011=3,
  001→003→008→009=3,
  001→003→008→012=3,
  分別為最短路徑開始找U=<013>
  009→013=1
  010→U中的節點=∞
  011→U中的節點=∞
  012→U中的節點=∞5選入013,此時,S=<001,002,003,004,005,006,007,008,009,010,011,012,013>,001→001=0,
  001→002=1,001→003=1,001→004=1,001→005=1,001→003→006=2,001→003→007=2,001→003→008=2,001→003→007→010=3,001→003→007→011=3,001→003→008→009=3,001→003→008→012=3,001→003→008→009→013=4U集合已空,查找完畢線程訪問同一個服務器,只要改變瀏覽器的語言即可。從實驗數據可以看到在使用集合因子最短路徑算法后,不論是單個線程還是多個線程,整個程序的運行時間會大大縮短,性能大幅度提高。
5結論
  通過把集合因子最短路徑算法應用在自動爬蟲程序中,使得程序無論在單位時間的吞吐率還是單位事務的響應速度都大大提高。對于某些支持多個語言的軟件來說集合因子最短路徑算法會使得程序運行效率大幅度提高。
  參考文獻
  [1] 張茂林.軟件自動測試的研究與程序實現[J].北京航空航天大學學報, 1997, 23 (1):7480.
  [2] 凌永發, 張云生, 郭秀萍. 軟件測試自動化的腳本技術 [J]. 云南民族學院學報(自然科學版),2002, 11(1):544548.
  [3] 王華偉,崔啟亮.軟件本地化——本地化行業透視與實現指南[M].北京:電子工業出版社,2005.
  [4] 侯俊杰.深入淺出MFC(第2 版)[M]. 武漢:華中科技大學出版社,2005.
  [5] 李春葆.數據結構教程[M].北京:清華大學出版社,2005.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
午夜在线不卡| 欧美gay视频| 亚洲人成欧美中文字幕| 小处雏高清一区二区三区 | 亚洲一区二区三区四区中文| 亚洲精品网址在线观看| 亚洲国产精品va在看黑人| 狠狠色丁香久久综合频道| 国产一区二区三区免费不卡| 国产婷婷色一区二区三区四区| 国产精品午夜春色av| 国产精品日韩欧美一区| 国产精品尤物福利片在线观看| 国产精品天美传媒入口| 国产日本欧美一区二区| 国产一区二区丝袜高跟鞋图片| 国内成人精品2018免费看| 激情丁香综合| 亚洲国产精品热久久| 亚洲日韩第九十九页| 日韩视频在线观看免费| 一区二区三区 在线观看视| 9色国产精品| 亚洲一区三区视频在线观看| 亚洲欧美日韩一区在线| 亚洲欧美激情视频| 久久精品二区| 久久精品网址| 99re6这里只有精品| 亚洲影视中文字幕| 欧美一区亚洲| 久久久久久久久久看片| 老鸭窝亚洲一区二区三区| 欧美黄色成人网| 欧美日韩综合久久| 国产精品婷婷午夜在线观看| 国产无遮挡一区二区三区毛片日本| 国产一区久久| 在线观看欧美视频| 99在线热播精品免费99热| 亚洲欧美日本伦理| 亚洲国产精品成人精品| 日韩视频在线永久播放| 亚洲欧美国产精品专区久久| 久久久久国产精品一区| 欧美黄色视屏| 国产乱码精品一区二区三区av | 国产自产在线视频一区| 91久久国产自产拍夜夜嗨| 在线亚洲伦理| 久久gogo国模裸体人体| 亚洲精选一区二区| 亚洲欧美国产一区二区三区| 久久久九九九九| 欧美精品不卡| 国产日韩亚洲欧美综合| 亚洲欧洲日韩女同| 午夜精品久久久久久久99水蜜桃 | 欧美亚韩一区| 国产一区二区三区直播精品电影 | 一区二区三区高清视频在线观看 | 亚洲区一区二| 午夜精品久久久久| 美女精品一区| 国产精品日韩精品欧美在线| 在线精品国产成人综合| 亚洲免费婷婷| 亚洲美女在线视频| 欧美在线亚洲在线| 欧美精品97| 国产一区白浆| 一区二区高清视频在线观看| 久久精品国产91精品亚洲| 亚洲——在线| 欧美国产日韩在线观看| 国产视频久久网| 在线亚洲精品福利网址导航| 亚洲精品国产品国语在线app| 欧美一级欧美一级在线播放| 欧美精品乱人伦久久久久久 | 伊伊综合在线| 亚洲影院免费观看| 一区二区三区回区在观看免费视频| 久久久久国产精品一区| 欧美性做爰毛片| 亚洲人成在线观看| 久久精品一区二区| 欧美一区二区日韩一区二区| 欧美日韩裸体免费视频| 影音先锋在线一区| 欧美一区1区三区3区公司| 亚洲四色影视在线观看| 美女视频黄免费的久久| 亚洲永久在线观看| 国产午夜精品久久久久久久| 最近中文字幕日韩精品| 欧美一区日本一区韩国一区| 亚洲免费伊人电影在线观看av| 欧美成人中文字幕| 红桃视频一区| 亚洲综合视频一区| 亚洲资源在线观看| 欧美裸体一区二区三区| 亚洲高清视频在线观看| 亚洲电影中文字幕| 久久九九免费视频| 国产午夜精品视频| 午夜精品亚洲一区二区三区嫩草| 亚洲一区二区三区四区五区午夜 | 久久国产福利| 国产精品三上| av成人国产| 一区二区三区|亚洲午夜| 欧美丰满高潮xxxx喷水动漫| 在线观看精品| 亚洲国产mv| 免费观看一区| 曰韩精品一区二区| 亚洲国产精品www| 美女网站久久| 在线观看欧美日韩| 亚洲区一区二区三区| 欧美成人资源网| 最新国产の精品合集bt伙计| 亚洲美女av电影| 欧美日韩国产黄| 日韩视频免费大全中文字幕| 一区二区电影免费观看| 欧美日韩久久精品| 99热精品在线观看| 亚洲欧美在线免费观看| 国产精品综合不卡av| 欧美专区日韩专区| 老司机免费视频久久| 亚洲高清在线观看| 日韩视频在线一区| 欧美系列电影免费观看| 亚洲中午字幕| 久久久女女女女999久久| 伊人婷婷久久| 99成人在线| 国产精品久久午夜| 午夜精品99久久免费| 久久先锋资源| 亚洲国产三级网| 亚洲永久免费观看| 国产日韩欧美制服另类| 久久精品久久综合| 欧美精品电影在线| 亚洲一区欧美一区| 久久免费视频在线观看| 91久久精品国产91久久性色| 亚洲图片欧美午夜| 国产日韩综合| 亚洲理论在线观看| 国产精品久久综合| 久久爱www| 欧美精品一卡| 亚洲综合精品一区二区| 免费观看成人www动漫视频| 日韩一级在线| 久久av一区二区三区漫画| 在线播放不卡| 亚洲免费在线观看视频| 好吊日精品视频| 亚洲作爱视频| 国产一区二区三区免费在线观看| 日韩视频在线播放| 国产精品一区二区久久国产| 亚洲第一天堂av| 欧美日韩在线视频一区| 欧美亚洲一区二区在线| 欧美国产精品中文字幕| 亚洲一区综合| 欧美电影免费| 亚洲摸下面视频| 欧美极品在线视频| 欧美一区不卡| 欧美三级乱码| 亚洲国产综合在线| 国产精品丝袜久久久久久app | 亚洲毛片视频| 国产欧美一区二区精品婷婷| 亚洲区国产区| 国产欧美一区二区三区久久| 亚洲免费av电影| 国产亚洲精品aa午夜观看| 99视频+国产日韩欧美| 国产一区二区日韩| 亚洲无线观看| 在线精品视频一区二区三四| 亚洲综合精品一区二区| 亚洲国产高潮在线观看| 欧美中文在线免费| 亚洲另类春色国产| 免播放器亚洲一区| 欧美专区18| 国产女人18毛片水18精品| 一本色道久久综合亚洲精品小说| 国产一区二区三区久久|