版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 畢業(yè)設計(論文)</b></p><p> 題 目 基于R語言的測試 </p><p> 用例聚類選擇程序開發(fā) </p><p> 專 業(yè) 計算機科學與技術 </p><p> 班 級 計
2、121 </p><p> 學 生 李鵬宇 </p><p> 指導教師 黑新宏(教授) </p><p> 2016 年</p><p><b> 摘 要</b></p><
3、p> 隨著互聯(lián)網(wǎng)的發(fā)展,軟件質(zhì)量逐步被視為企業(yè)生命,很多企業(yè)都將業(yè)務建立在軟件系統(tǒng)上,軟件與業(yè)務密切結(jié)合,高質(zhì)量的軟件系統(tǒng)有助于企業(yè)增強自身實力,在市場競爭中贏得優(yōu)勢,而軟件測試是確保軟件質(zhì)量的重要手段。并且最近幾年來,由于軟件的復雜度不斷地增強,更由于軟件的工業(yè)化發(fā)展趨勢,軟件測試得到了廣泛的重視。越來越多的公司開始加大軟件測試的比例,甚至有的公司軟件測試占的比重比軟件開發(fā)占的比重還要高。</p><p&g
4、t; 而設計測試用例是軟件測試中比較高效的一種方法,但隨著軟件規(guī)模越來越大、版本迭代越來越快,每迭代一次版本,測試用例都要新添一部分。測試用例的數(shù)量也是迅速的增多,很有可能造成測試用例的冗余,相應的測試所需要的資源也被大大的浪費了。這個時候測試用例的約簡就顯得尤為重要,而如果不加以分析,又不能判斷哪些測試用例是過時的,哪些測試用例還可以正常找出程序錯誤。所以要找一個好的可以分析測試用例的程序是非常重要的。</p><
5、;p> 基于R語言的測試用例聚類選擇程序開發(fā)就是一個很好的幫助,其中聚類過程是無監(jiān)督的,它可自動的進行分析那些測試用例功能是相似的,那些測試用例功能不同。其中聚類過程用R語言實現(xiàn),聚類方法采用K中心點聚類的思想。之所以采用R語言,是因為R語言有很強大的數(shù)據(jù)分析能力,不止是聚類,可以為后續(xù)機器學習做出很大的幫助。</p><p> 關鍵詞:R語言實現(xiàn),測試用例約簡,聚類分析</p><
6、p><b> ABSTRACT</b></p><p> With the development of the internet, the quality of software gradually regarded as the life of the enterprise, many companies will business established in the sof
7、tware systems, software and service integrated closely, high-quality software systems help enterprises to enhance their own strength, have the advantage in the market competition, software testing is an important means
8、to ensure software quality. And in recent years, due to the complexity of the software is constantly improved, but al</p><p> Designing test cases is a more efficient method in software testing, but with th
9、e increasing scale of software, faster version of the iteration, for each iteration version, test cases have to add some new part. The number of test cases is increasing rapidly, is likely to cause the redundancy in test
10、 cases, the appropriate resources for testing has also been greatly wasted. At this time, the reduction of test cases is particularly important, if not analyze, and can not determine which test is out</p><p>
11、; Test case clustering selection program development based on R language is a good help, which clustering is unsupervised, it can automatically analyze test those features are similar to those different test functions.
12、Wherein the clustering process using R language, thought K clustering method using clustering center. The reason for using the R language, because language R very powerful data analysis capabilities, not just clustering,
13、 can make a great help for the subsequent machine learning.</p><p> KEY WORDS: R language, the test case reduction, cluster analysis</p><p><b> 前 言</b></p><p> 隨著軟件規(guī)
14、模的不斷增大和軟件復雜性的日益提高,市場對軟件的質(zhì)量的要求也不斷提高,如何保證軟件的質(zhì)量已成為軟件開發(fā)過程中越來越重要的問題。軟件測試時保證軟件質(zhì)量的重要手段,軟件測試直接決定軟件產(chǎn)品的質(zhì)量。</p><p> 軟件測試中測試用例的設計是一個非常高效的方法,可是隨著軟件越來越復雜,需要的測試用例數(shù)量也越來越多,這個時候測試用例的冗余也就慢慢的顯現(xiàn),急需一種可以很好的解決測試用例的冗余的方法又不減少測試用例的檢錯
15、能力,本畢設就針對這個問題提出解決方案。</p><p> 本畢設是基于R語言的測試用例聚類選擇程序的開發(fā),主要用到R語言的聚類分析,其中R是一門非常強大的數(shù)據(jù)分析的語言,它可以很好的進行聚類分析,通過R語言的聚類分析,可以清晰的看到每個測試用例所屬的分類,并進行后續(xù)的分析。在分析過程中涉及到的數(shù)據(jù)的問題都是有文件讀取,聚類的結(jié)果也是存放入文件。</p><p> 本論文比較詳細的寫了
16、從R語言的聚類過程,全論文總共分為5章。第1章介紹了此課題背景與意義還有一些國內(nèi)外的研究概況,本課題主要研究的內(nèi)容、研究過程中主要的創(chuàng)新點等等。第2章寫的是做此課題的需求分析,主要從系統(tǒng)的需求分析和性能的需求分析兩個方面展開所寫。深入研究需求,從而確定此需求是真正存在的。第3章寫的是實現(xiàn)本課題的程序所需要的環(huán)境的搭建以及一些實現(xiàn)本課題所需要的技術的積累,有一些R語言的簡介、聚類分析的名詞解釋等等。第4章是本課題的核心部分,詳細寫了系統(tǒng)總
17、體的設計,還包括一些子功能模塊的概要設計與實現(xiàn),包括了前臺客戶端的實現(xiàn),還有后端服務器的實現(xiàn)。第5章為一些總結(jié)和展望,有一部分我的小結(jié),主要反映我再做此課題所遇到的問題并如何解決的,還有就是做此課題的收獲等等。</p><p> 當然真理是相對的,實踐是多元的,讀者就是最好的老師,盡管我在寫本論文是算是非常的認真對待,但是由于時間的倉促,本論文中還是有可能出現(xiàn)錯誤之處,希望廣大的讀者批評改正。</p>
18、;<p><b> 目錄</b></p><p><b> 概述</b></p><p><b> 課題背景與意義</b></p><p> 隨著互聯(lián)網(wǎng)的發(fā)展,軟件應用也越來越重要,軟件的質(zhì)量也受到了軟件開發(fā)人員與用戶的重視。而軟件的質(zhì)量就是軟件的生命,它可以直接影響到軟件的使用
19、和維護。在軟件開發(fā)的過程中,軟件測試時保證軟件質(zhì)量的不可缺少的一個環(huán)節(jié),它能盡可能多的發(fā)現(xiàn)軟件中存在的問題,并且期望通過改錯來消除缺陷,最終來提高軟件的質(zhì)量,而軟件測試所需要的資源又是很大的,所以大部分的企業(yè)都有專門的軟件測試部門,其根據(jù)固定的步驟測試軟件從而發(fā)現(xiàn)軟件中的錯誤,并把這些錯誤反饋給開發(fā)人員進行修改,來減少軟件的錯誤。而隨著軟件的規(guī)模越來越大,測試用例的設計、執(zhí)行、管理與維護所要消耗大量的人力、物力,測試的成本太大,并且測試
20、資源又是有限的,所以測試用例的約簡是非常重要也是必要的。</p><p> 而軟件技術的不斷發(fā)展與完善,傳統(tǒng)的測試用例約簡算法也將面臨新的挑戰(zhàn),既要能夠約簡測試用例集,又要能都讓其擁有足夠的檢錯能力。進行多方面的比較,希望能夠找到一個合適的平衡點來彌補以前技術的缺陷。</p><p> 而基于聚類算法的測試用例的選擇的基本思想是:屬于同一類的測試用例具有相似的行為,而不同類的測試用例的
21、行為差異較大。因此,某個測試用例可以檢測某一個故障,那么屬于同一類的其它的測試用例也同樣可以檢測到這一故障。采用基于測試用例的覆蓋度的測試用例聚類算法可以有效的對測試用例約簡,開始將測試用例分為不同的分類,然后再分類中抽樣一部分測試用例,如果這部分測試用例可以定位缺陷,那就認為本類中測試用例大部分可以檢測錯誤,保留本類中所有的測試用例。如果本類中大部分測試用例都不能檢測錯誤,則認為本類不具備檢測錯誤的能力,可刪除本類所有測試用例。<
22、;/p><p> 而數(shù)據(jù)挖掘是處理大數(shù)據(jù)的有效途徑,在軟件測試里數(shù)據(jù)挖掘也具有廣闊的應用前景,對于數(shù)據(jù)挖掘的算法的研究也是尤為重要,因為數(shù)據(jù)挖掘?qū)ο笫呛A康臄?shù)據(jù),一個好的算法可以大大的提高計算的速度,減少計算機資源的耗用。數(shù)據(jù)挖掘算法也是一個非?;钴S的領域,不斷的有新的算法提出。而分類、聚類算法的研究又是數(shù)據(jù)挖掘算法活躍的領域,所以對分類、聚類的研究也是非常的重要。所以本次畢設著重算法的研究,應用R語言實現(xiàn)一些聚類
23、算法。</p><p><b> 國內(nèi)外研究概況 </b></p><p> 目前,國內(nèi)外的研究人員也提出了許多測試用例選擇技術來約簡測試用例集,在約簡測試用例選擇的領域中也各自都有了突破,也出現(xiàn)了許多成熟并且實用的技術,這些技術的目的就是減少測試用例的數(shù)量,以期望獲得一個較小的測試用例集。但是這也不是特別的完美,也有可能刪除了一些真正可以檢測錯誤的測試用例,而保
24、留了一下不能檢測錯誤的測試用例,因此,我們要在執(zhí)行測試用例所需要的資源與測試用例自己的錯誤檢測能力兩方面做出權衡,這才是現(xiàn)在所有測試用例選擇技術的核心問題。</p><p> 而現(xiàn)在大多數(shù)技術都沒有很好的權衡這兩個方面,有些技術只關注測試用例數(shù)量的減少,初始的測試用例會根據(jù)特定的測試需求來進行約簡,使得結(jié)果子集達到一定的覆蓋度即可。然而一些研究表明,單單的滿足覆蓋度標準的測試用例雖然能夠顯著的降低測試的成本,但
25、也會嚴重喪失錯誤檢測能力,因此,這種方案在一定程度上不可取。而另一方面,很多的技術都關注測試用例子集的檢錯能力,爭取結(jié)果子集與初始測試用例的檢錯能力相同或近似。但這一類技術過于保守,在回歸測試過程中,一個測試用例可以發(fā)現(xiàn)錯誤,那么它必然經(jīng)過程序的修改部分,反之亦然,所以這一類技術會不恰當?shù)倪x擇一些經(jīng)過程序修改但是結(jié)果正確的測試用例,這就導致所選擇的測試用例子集仍然過大,但真正能夠檢測錯誤的測試用例在其中所占的比例很小,還是要消耗過多的測
26、試資源,還需要進一步的約簡測試用例集。</p><p> 所以,自然需要找到一個平衡點,既能夠讓測試用例子集變小,又要使其能擁有足夠的錯誤檢測能力,為此,希望找到一種算法,既能減少測試用例的數(shù)量,又要保證足夠的錯誤檢測能力。本文采用數(shù)據(jù)挖掘的聚類的思想,希望在已有的技術上進一步提高測試的效率。</p><p> 1.3 課題研究內(nèi)容</p><p> 1.3.
27、1 主要內(nèi)容</p><p> (1)根據(jù)原始的測試用例,分析多種測試用例的特征,從中選取合適的測試用例對數(shù)據(jù)進行提取,清洗并標準化。</p><p> (2)利用整理后的測試用例集,通過SOAP接口,調(diào)用測試用例的函數(shù)執(zhí)行剖面,并且量化函數(shù)執(zhí)行剖面,選擇R語言進行聚類,了解它們執(zhí)行情況的異同。</p><p> (3)實現(xiàn)一個半自動的演示工具,用于可視化展示
28、聚類選擇技術的思想和具體步驟。</p><p> (4)觀察聚類選擇技術的結(jié)果,利用實驗驗證其有效性,得出結(jié)論:基于R語言的聚類分析思想確實能夠達到較為理想的效果。</p><p> 1.3.2 主要創(chuàng)新點</p><p> ?。?)采用數(shù)據(jù)挖掘的思想,將數(shù)據(jù)挖掘技術用到本次畢設中。</p><p> ?。?)通過聚類分析技術的引入,對原
29、有的測試用例集進行了有效的約簡。</p><p> ?。?)對給定的測試木匾實現(xiàn)交大的覆蓋,并能達到提高錯誤檢測能力的效果。</p><p> (4)嘗試采用R語言進行聚類分析,也方便聚類的實施。</p><p><b> 1.4 論文組織</b></p><p> 本論文主要介紹了基于R語言的測試用例聚類選擇程序
30、的開發(fā),詳細描述了從測試用例的獲取到最終的聚類、分析,及之中所貫穿的一些技術實現(xiàn)的細節(jié)。</p><p> 前言:簡要介紹了本課題的背景與意義,通過查看國內(nèi)外現(xiàn)狀來思考現(xiàn)有方法的缺點與不足,延伸出本課題,在運用所學知識去實現(xiàn)問題。</p><p> 需求分析:通過系統(tǒng)的需求分析和性能的需求分析對本課題有個更深入的了解,判斷本課題意義,從而可以更好的實現(xiàn)所需要的功能。</p>
31、<p> 環(huán)境搭建與技術簡介:簡單介紹做此課題所需要的技術與名詞,并且了解實現(xiàn)此技術所需要的開發(fā)工具和所需要配置的開發(fā)環(huán)境。</p><p> 系統(tǒng)設計與功能實現(xiàn):詳細解釋本課題實現(xiàn)的細節(jié),對功能進行分析,并對比系統(tǒng)總體流程,達到滿意的效果。</p><p> 總結(jié)與展望:總結(jié)一下實現(xiàn)本課題所做的內(nèi)容,進一步完善不足的地方并加以修飾,在展望有沒有可能再在現(xiàn)有基礎上進行拓
32、展,爭取做得更好。</p><p><b> 第2章 需求分析</b></p><p> 2.1 系統(tǒng)需求分析</p><p> 隨著軟件行業(yè)的成熟,軟件測試也在不斷的發(fā)展,軟件測試的工作也由簡單的測試發(fā)展成正規(guī)的規(guī)范化測試。測試的工具也由原來的純手工慢慢演變成現(xiàn)在半手工、自動化工具,也慢慢的演變出第三方的專業(yè)測試機構(gòu)。已經(jīng)有統(tǒng)計資料表明
33、,測試的工作量已經(jīng)占到整個項目開發(fā)工作量的40%左右。并且對于一些人身安全的軟件(如地鐵的自動控制駕駛系統(tǒng)),測試的工作量更是大大的增加。</p><p> 而軟件測試的一個重要的環(huán)節(jié)就是設計測試用例,然而隨著軟件的越來越大,測試用例的數(shù)量也越來越多,為了完成所有的測試用例,所需要的資源也越來越多,這個時候就需要約簡測試用例,盡量減少那些不能檢測出錯誤的測試用例,提高測試用例的效率,降低測試的成本。而本課題利用
34、聚類的思想,對測試用例進行聚類,挑選符合條件的測試用例,從而約簡測試用例。</p><p> 2.2 性能需求分析</p><p> 隨著軟件的日益增大,測試用例的數(shù)目也是越來越多,對聚類算法的性能也提出了一大挑戰(zhàn),本次聚類采用K-中心點聚類方法,屬于數(shù)據(jù)挖掘的經(jīng)典算法之一。其基本過程為:</p><p> ?。?)隨機的選擇K個代表對象作為初始的K個中心點,&
35、lt;/p><p> ?。?)指派剩余的每個對象給離它最近的中心點所代表的類,</p><p> ?。?)然后隨機的選擇一個非中心點對象y,</p><p> ?。?)計算用非中心點y代替中心點x的總代價s,</p><p> (5)若代價s為負,則用點y代替中心點x,形成新的中心點,</p><p> ?。?)重復步驟
36、(2)(3)(4)(5),直到K個中心點不再發(fā)生變化。</p><p> 其優(yōu)點為:它減輕了K均值算法對孤立點的敏感性,K中心點算法不采用類中對象平均值作為類中心,而選用離類平均值最近的對象作為類的中心。</p><p> 第3章 環(huán)境搭建與技術簡介</p><p><b> 3.1 技術簡介</b></p><p&g
37、t; 3.1.1 測試用例</p><p> 軟件測試的重要性是毋庸置疑的,但是如何以最少的資源投入,用最短的時間出色地完成測試,盡可能多地發(fā)現(xiàn)軟件系統(tǒng)的缺陷,以提升軟件的質(zhì)量是一個恒久不變的課題。這個課題的本質(zhì)上就是如何為被測系統(tǒng)建議一套優(yōu)秀的測試方案。影響軟件測試的因素有很多,例如需求定義的精度、軟件本身的復雜度、系統(tǒng)設計的合理性以及開發(fā)人員的素質(zhì)等,這些是開發(fā)層面的,那么對于軟件測試自身來說不同的測試方
38、法和技術的運用也會導致不一樣的測試效果。如何才能保障軟件測試質(zhì)量的穩(wěn)定呢?現(xiàn)階段一個有效的方法就是基于測試用例的測試。</p><p> 測試用例是測試人員編寫的重要文檔。測試用例是為某個特定的目標而設計的一組測試輸入數(shù)據(jù)、執(zhí)行條件和預期輸出結(jié)果,以測試某個程序路徑或驗證是否滿足某個特定需求。由于在實際測試時無法達到窮舉測試,所以要從軟件輸入域中選擇有代表性或特殊性的數(shù)據(jù)作為測試數(shù)據(jù),測試用例就是為了高效率地發(fā)
39、現(xiàn)軟件的缺陷而精心設計的少量的測試數(shù)據(jù),這些少量的有代表性或特殊性數(shù)據(jù)的選擇可根據(jù)白盒及黑盒測試技術的不同測試方法來確定。</p><p><b> 3.1.2 R語言</b></p><p> R是用于統(tǒng)計分析、繪圖的語言和操作環(huán)境,它是屬于GNU系統(tǒng)的一個自由、免費、開源的軟件,是一個用于統(tǒng)計計算和統(tǒng)計制圖的優(yōu)秀工具。并且它有積極而活躍的維護和更新,對各類數(shù)據(jù)
40、和其它系統(tǒng)良好的兼容性,并且有能力解決多個領域的各種問題。</p><p> 免費且開源:R遵守開源授權,這意味著任何人都可以下載并修改源代碼,這可以確保許多優(yōu)秀的程序員對R代碼進行改進與提升,也正是這個原因,使得R既穩(wěn)定又可依賴。</p><p> 可在任何環(huán)境下運行:在R核心開發(fā)團隊的努力下,R可以運行在各種不同的硬件和軟件環(huán)境下,比如Windows,UNIX(如Linux),以及
41、Mac等。</p><p> 支持拓展:R本身是一門強大的語言,提供了各種豐富的功能,如數(shù)據(jù)操作、統(tǒng)計建模以及圖標呈現(xiàn)。而R的一個巨大優(yōu)勢在于其可拓展性。開發(fā)人員可以很方便地編寫自己的軟件,并以拓展包的形式分發(fā)。由于編寫這些擴展包非常容易,因此已有的擴展包極為豐富。事實上,許多最新的(或者比較新的)統(tǒng)計方法在發(fā)布的時候都附帶了R包。</p><p> 擁有一個活躍的社區(qū):R的用戶數(shù)量正
42、在持續(xù)的上漲,許多R的老用戶正致力于保住新人,使他們能夠在自己的工作領域和專業(yè)范圍內(nèi)使用R,他們還積極的為R的郵件列表(www.r-project.org/mail.html)編寫內(nèi)容,或者在諸如Stack Overflow(www.stackoverflow.com/questions/tagged/r)和CrossValidated(http://stats.stackexchange.com/qustions/tagged/r)這
43、樣的網(wǎng)站上回答網(wǎng)友提出的各種問題。除此之外,R用戶還會通過社交網(wǎng)站,如Twitter(www.twitter.com/search/rstats)以及本地的社交組織傳播自己的知識和技能。</p><p> 與其他語言的緊密相連:隨著越來越多的人轉(zhuǎn)向使用R進行數(shù)據(jù)分析,他們開始嘗試將R融合到之前的工作流中,這就催生了一整套的拓展包,實現(xiàn)R與文件系統(tǒng)、數(shù)據(jù)庫和其他應用程序之間的連接,這些拓展包中的一部分也隨之集成到
44、了R安裝程序中。</p><p> 3.1.3 聚類分析</p><p> 聚類分析是一種無監(jiān)督學習方法,目的是捕獲數(shù)據(jù)的自然結(jié)構(gòu),從而將數(shù)據(jù)自動劃分為有意義的幾個群組、類別或者稱之為簇。這些簇的特點在于組內(nèi)的變異較小,而組間的變異較大。聚類方法可以用來探索數(shù)據(jù)的結(jié)構(gòu),還可以用來對數(shù)據(jù)進行預處理,為進一步的數(shù)據(jù)挖掘工作起到壓縮和降維的作用。一般聚類分為層次聚類、動態(tài)聚類、基于密度的聚類
45、和自組織映射。</p><p> 本系統(tǒng)采用動態(tài)聚類法中的K中心點聚類,動態(tài)聚類法亦稱逐步聚類法,屬于大樣本聚類法,具體做法是:先粗略地進行預分類,然后再逐步調(diào)整,直到把類分的比較合理為止,具有計算量較小、占用計算機存貯單元少、方法簡單等優(yōu)點,所以更適合于大樣本的聚類分析。</p><p> 3.1.4 SOAP通信技術</p><p> SOAP又叫簡單對象
46、訪問協(xié)議,它是交換數(shù)據(jù)的一種協(xié)議規(guī)范,是一種輕量級的、簡單的、基于XML(標準通用標記語言下的一個子集)的協(xié)議,它被設計在WEB上交換結(jié)構(gòu)化的和固化的信息。其優(yōu)點有:</p><p> 可拓展的。SOAP無需終端已有的應用程序,SOAP客戶端、服務器和協(xié)議自身都能發(fā)展。而且SOAP能極好的支持中間介質(zhì)和層次化的體系結(jié)構(gòu)。</p><p> 簡單的??蛻舳税l(fā)送一個請求,調(diào)用相應的隊形,然
47、后服務器返回結(jié)果。這些消息是XML格式的,并且封裝成符合HTTP協(xié)議的消息,因此,它符合任何路由器、防火墻或 代理服務器的要求。</p><p> 完全和廠商無關。SOAP可以相對于平臺、操作系統(tǒng)、目標模型和編程語言獨立實現(xiàn)。另外,傳輸和語言綁定以及數(shù)據(jù)編碼的參數(shù)選擇都是有具體的實現(xiàn)決定的。</p><p> 與編程語言無關。SOAP可以使用任何語言來完成,只要客戶端發(fā)送正確的SOAP
48、請求(也就是說,傳遞一個合適的參數(shù)給一個時間的遠程服務器),SOAP沒有對象模型,應用程序可以捆綁在任何對象模型中。</p><p> 與平臺無關。SOAP可以在任何操作系統(tǒng)中廣無需改動正常運行。</p><p> 3.2 開發(fā)環(huán)境搭建</p><p> 3.2.1 開發(fā)工具介紹</p><p><b> 硬件工具:<
49、/b></p><p> 本地Windows PC一臺,服務器一臺。</p><p><b> 軟件環(huán)境:</b></p><p> 操作系統(tǒng):Microsoft Windows 10,</p><p> C++開發(fā)工具:Qt Creator 5.3,</p><p> R語言開發(fā)
50、工具:R for Windows,Rstudio,</p><p> 服務器系統(tǒng):windows server ,</p><p> 數(shù)據(jù)庫:mysql 5.6</p><p> 3.2.2 R語言環(huán)境變量配置</p><p> 本系統(tǒng)采用R版本為3.3.0,可通過R官網(wǎng)(http://mirror.fcaglp.unlp.edu.a
51、r/CRAN/)下載,進入官網(wǎng)選擇Windows版本,下載后選擇默認安裝即可。然后配置環(huán)境變量,在計算機右鍵選擇屬性,進入屬性頁面選擇高級系統(tǒng)設置,點擊環(huán)境變量,在Path變量下新建值為R安裝目錄的bin目錄下。然后打開命令提示符界面輸入R,如果顯示R版本號并進入R界面則正確,如果顯示“R”不是內(nèi)部命令或外部命令,也不是可運行程序或批處理程序則錯誤,請認真檢查改正。</p><p> 3.2.3 QT環(huán)境變量的
52、配置</p><p> 本系統(tǒng)采用QT的版本為5.3,在QT下載官網(wǎng)(https://www.qt.io/download/)進行下載,安裝基本也是默認安裝,安裝完成后設置系統(tǒng)環(huán)境變量,在計算機右鍵選擇屬性,進入屬性頁面選擇高級系統(tǒng)設置,點擊環(huán)境變量,在Path變量下新建值為QT安裝目錄的bin目錄下。然后打開命令提示符界面輸入qmake,如果顯示一系列參數(shù)則正確安裝,如果顯示“qmake”不是內(nèi)部命令或外部命
53、令,也不是可運行程序或批處理程序則錯誤,請認真檢查改正。</p><p> 第4章 系統(tǒng)設計與功能實現(xiàn)</p><p> 4.1 系統(tǒng)總體設計</p><p> 本系統(tǒng)是基于Windows平臺的一個應用,可通過此應用對測試用例進行聚類分析。采用人性化的設置,在聚類過程中可選擇聚類的參數(shù),有聚類的個數(shù)、距離度量的方式,展示效果采用表格聯(lián)動的效果,很好的展示所分
54、的類別,每個類內(nèi)包含的測試用例,可供后續(xù)繼續(xù)進行分析。主要包含的模塊有測試用例剖面提取模塊,R語言的聚類分析模塊,結(jié)果展示的模塊和軟件集成。</p><p> 4.1.1 測試用例剖面提取</p><p> 本系統(tǒng)是對測試用例進行聚類,所以測試用例的好壞也影響了聚類的結(jié)果,而公司是一個做測試軟件的公司,有很多比較好的測試用例,和公司商量后可以本人可在公司軟件上加一個接口返回我需要的測試
55、用例,為了和公司的軟件接口一致,接口部分和公司一樣通過SOAP通信技術,然后本地調(diào)用接口獲取測試用例數(shù)據(jù)。</p><p> 服務端接口部分框架圖</p><p> 圖4-1 服務端接口部分框架圖</p><p> 可在前端界面上登陸后調(diào)用服務端的此接口,用于獲取測試用例,把本測試用例寫入文件保存用于后續(xù)分析,由于是調(diào)用接口獲取的測試用例,所以本程序使用模擬登
56、陸,以集成到軟件,可直接運行會自動登陸的,數(shù)據(jù)已經(jīng)存在可直接獲取。</p><p> 4.1.2 R語言聚類分析</p><p> 本部分通過接口調(diào)用測試用例數(shù)據(jù),組織成聚類算法所需要的形式,寫入文件,在通過調(diào)用一個聚類算法的R腳本,R腳本從文件中讀出所需要的參數(shù)進行聚類,并把結(jié)果返回給文件,本地在從文件中讀取所需要的結(jié)果,解析成所需要的數(shù)據(jù)形式,等待前臺的調(diào)用并展示出來。</p
57、><p><b> 聚類過程框架:</b></p><p> 圖4-2 聚類過程框架圖</p><p> 此過程為R語言聚類的過程,其思想基本如上圖所示的一樣,R腳本可讀取文件獲取數(shù)據(jù),并讀取參數(shù)進行設置,然后進行R的聚類分析,把分析結(jié)果保存到的文件中,供后續(xù)顯示的界面讀取。</p><p> 4.1.3 結(jié)果展示&
58、lt;/p><p> 結(jié)果展示采用聯(lián)動表格的方式,點擊左邊表格某一行會在右邊表格對應顯示該類的詳細情況,整體上對每個類也由詳細的信息,包括類別、測試用例ID、類內(nèi)個數(shù)、類內(nèi)最大距離、類內(nèi)平均距離、類內(nèi)直徑和類間距離。聯(lián)動表格顯示本類的所用測試用例ID和對應的測試用例名稱。其具體效果如下:</p><p> 圖4-3 聚類結(jié)果展示圖</p><p> 本展示結(jié)果盡可
59、能多的顯示類內(nèi)與類間的信息,充分挖掘所有類內(nèi)與類間之間的種種聯(lián)系,為以后的分析做好充分的準備。</p><p> 4.1.4 軟件的集成</p><p> 本課題為公司派發(fā),所以要求最后要集成到公司的軟件中,開始還天真的以為自己做出來就行,集成沒什么難的,到了最后要集成的時候才發(fā)現(xiàn)我錯了,畢竟公司軟件已經(jīng)很復雜了,要想集成一個功能可以正常使用又不影響原有的功能真的太難了,沒辦法必須慢慢
60、學公司軟件框架,慢慢了解后開始動手,一個一個的小問題慢慢解決,經(jīng)過不懈的努力,最終還是完美解決了。其總體效果如下:(點擊聚類結(jié)果會彈出結(jié)果展示界面,結(jié)果展示界面如上)</p><p> 圖4-4 產(chǎn)品總體圖</p><p> 本軟件為公司產(chǎn)品,其中測試用例聚類是本人獨自完成,并集成到公司產(chǎn)品中去,方便高級用戶進行聚類分析,完成更高級的測試。</p><p>
61、4.2 客戶端的實現(xiàn)</p><p> 4.2.1 前端展示的實現(xiàn)</p><p> 前端顯示界面采用QT下的C++開發(fā),雖然C++以前學過,但由于QT為第一次接觸,開始學起來還是比較困難的,先是在圖書館借的幾本書慢慢的看,一邊看書一邊進行實踐,先學一些簡單的界面布局方面的,慢慢上手后就開始做,一步一步的界面的雛形慢慢出來了,但總是感覺不美觀,以至于后來重新設計界面然后做出來,這個過
62、程中也學了一些QT樣式方面的知識,總感覺學的越多就越想做的更漂亮一點,不停的打磨,最終做出表格聯(lián)動的效果,更好的表示了所分的類,每個類的詳細情況,其表格聯(lián)動的具體實現(xiàn)為:</p><p> 先new兩個表格(其中m_tableWidget為主表格,tableWidget為副表格)</p><p> m_tableWidget = new QTableWidget();</p>
63、;<p> tableWidget = new QTableWidget();</p><p> 關聯(lián)主表格的點擊事件到副表格上</p><p> connect(m_tableWidget,SIGNAL(itemClicked(QTableWidgetItem*)),this,SLOT(showTableWidget(QTableWidgetItem*)));<
64、/p><p> 在showTableWidget()函數(shù)中實現(xiàn)聯(lián)動效果</p><p> void MainWindow::showTableWidget(QTableWidgetItem *widget){</p><p> ClusterLabel->setText(m_tableWidget->item(widget->row(),0)-&
65、gt;text());</p><p> tableWidget->setRowCount(0); //設置行數(shù)為0</p><p> int row = 0;</p><p> QHash<int,QString> TempHash = Hash.value(m_tableWidget->item(widget->row
66、(),0)->text().toInt());</p><p> QHashIterator<int, QString > i(TempHash);</p><p> while (i.hasNext()) {</p><p><b> i.next();</b></p><p> tableW
67、idget->insertRow(row);</p><p> tableWidget->setItem(row,0,new QTableWidgetItem(QString::number(i.key())));</p><p> tableWidget->setItem(row,1,new QTableWidgetItem(i.value()));</p&g
68、t;<p><b> row++;</b></p><p><b> }</b></p><p><b> }</b></p><p> 4.2.2 模擬登陸獲得權限</p><p> 由于總體采用SOAP通信,也是第一次接觸,導致還要新學,在客戶端上登
69、陸采用SOAP通信協(xié)議,設置合適的用戶名、密碼通過登陸接口模擬登陸來獲得權限,由于一個用戶可能有多個版本,所以要在通過一個設置版本的接口來設置一個版本,接下來獲取數(shù)據(jù)就會是該版本的數(shù)據(jù),其主要的實現(xiàn)具體為:</p><p> new一個SOAP接口的對象:</p><p> TT = new ThreadingTestProxy;</p><p> 通過log
70、in接口模擬登陸:</p><p> TT->login("http://127.0.0.1:17262",NULL,"user","user",strLoginret);</p><p> 通過setVersion接口設置版本:</p><p> TT->setVersion("
71、;http://127.0.0.1:17262",NULL,VERID,VersionRet);</p><p> 至此模擬登陸已經(jīng)完成,后續(xù)可直接通過本用戶在獲取測試用例數(shù)據(jù)的接口直接獲得數(shù)據(jù)進行聚類分析。</p><p> 4.2.3 進行聚類并獲得聚類結(jié)果</p><p> 前期已經(jīng)獲得了權限,所以進行聚類和獲得聚類結(jié)果也是比較簡單,稍微復雜的
72、就是要把結(jié)果解析出來并展示,具體實現(xiàn)中每個數(shù)據(jù)用空格隔開,所以提取時只要以空格分開就行,并把數(shù)據(jù)解析出來放入表格中。其過程大致如下:</p><p><b> 進行聚類過程</b></p><p> TT->Cluster("http://127.0.0.1:17262",NULL,VERID,</p><p>
73、 rClusterNumEdit->text().toInt(),rMetricEdit->currentIndex()+1,result;</p><p><b> 獲得數(shù)據(jù)過程</b></p><p> TT->getClusterResult("http://127.0.0.1:17262",NULL,VERID,clu
74、sterResult);</p><p><b> 中心點數(shù)據(jù)的解析</b></p><p> QHash<int,QString> TempHash;</p><p> std::string str1 = clusterResult.Medoids.at(0);</p><p> QString
75、qstr1 = QString(QString::fromStdString(str1));</p><p> TempHash.insert(qstr1.section(' ',0,0).toInt(),qstr1.section('',2,2));</p><p> for(int i= 1;i<clusterResult.Medoids.s
76、ize();i++){</p><p> std::string str2 = clusterResult.Medoids.at(i);</p><p> QString qstr2 = QString(QString::fromStdString(str2));</p><p> if(qstr1.section('',1,1).toInt
77、()==qstr2.section('',1,1).toInt()){</p><p> TempHash.insert(qstr2.section('',0,0).toInt(),qstr2.section(' ',2,2));</p><p><b> }</b></p><p><
78、b> else{</b></p><p> Hash.insert(qstr1.section(' ',1,1).toInt(),TempHash);</p><p> TempHash.clear();</p><p> str1 = clusterResult.Medoids.at(i);</p><
79、p> qstr1 = QString(QString::fromStdString(str1));</p><p> TempHash.insert(qstr1.section(' ',0,0).toInt(),qstr1.section(' ',2,2));</p><p><b> }</b></p>&
80、lt;p><b> }</b></p><p> Hash.insert(qstr1.section(' ',1,1).toInt(),TempHash);</p><p> TempHash.clear();</p><p><b> 類別數(shù)據(jù)的解析</b></p><p
81、> m_tableWidget->setRowCount(0); //設置行數(shù)為0</p><p> int row = 0;</p><p> for(int i= 0;i<clusterResult.PamResult.size();i++){</p><p> std::string str = clusterResult.P
82、amResult.at(i);</p><p> QString qstr = QString(QString::fromStdString(str));</p><p> m_tableWidget->insertRow(row);</p><p> for(int col = 0; col<qstr.size(); col++){</p
83、><p> QString StrItem ;</p><p> if(col>=3){</p><p> StrItem= QString::number(qstr.section(' ',col,col).toDouble(), 'f', 2);</p><p><b> }else{&
84、lt;/b></p><p> StrItem=qstr.section(' ',col,col);</p><p><b> }</b></p><p> m_tableWidget->setItem(row,col,new QTableWidgetItem(StrItem));</p><
85、;p><b> }</b></p><p><b> row++;</b></p><p><b> }</b></p><p> 中心點與類別數(shù)據(jù)解析完成后就可以進行顯示,其中類別數(shù)據(jù)是一邊解析一邊顯示出來,中心點數(shù)據(jù)是根據(jù)類別保存到HashMap里面,供后續(xù)顯示是取得。</p&
86、gt;<p> 4.3 服務器端的實現(xiàn)</p><p> 4.3.1 聚類與獲得聚類結(jié)果接口的實現(xiàn)</p><p> 由于聚類與獲得聚類結(jié)果接口的實現(xiàn)原理一致,所有放在一起說。先用工具生成SOAP接口,然后寫出接口具體的實現(xiàn)。其中聚類接口主要是從前端傳來聚類所需要的參數(shù),服務器端獲取獲取參數(shù)進行聚類,主要過程是調(diào)用一個R的腳本進行聚類。獲取聚類結(jié)果的接口是從文件讀出所需
87、要的結(jié)果,組織成一定的格式,然后返回給客戶端。總體來說比較簡單,主要是在參數(shù)上組織形式與解析時比較麻煩一點,需認真一點。</p><p> 4.3.2 R腳本聚類的實現(xiàn)</p><p> R語言也是我第一次接觸,感覺語法和python差不多,也是解釋性的語言,聽說其數(shù)據(jù)分析與畫圖能力特別強大,本次作為聚類分析選用R語言,充分展示了R語言的便利性,可以用很少的代碼寫出一個高質(zhì)量的聚類分析
88、函數(shù)。</p><p> 由于在C++中無法直接寫R語句,開始一直是想著怎么建立兩者的連接,等學到R腳本這個知識后,有了新的靈感,就開始動手,寫一個腳本通過C++直接調(diào)用腳本。然后就是傳參數(shù)的問題,這個問題真是困擾了我好久,一開始想的是用文件進行參數(shù)傳遞,但仔細想想不是那么高效,想了好多辦法,畢竟是兩個不同的語言,而且語言差別也是有點大,最終也是沒有一個更好的解決方法,還是下決心就用文件進行傳遞參數(shù)。最終成果還
89、可以,算是完成了整體的過程。</p><p><b> 第5章 總結(jié)與展望</b></p><p><b> 5.1 小結(jié)</b></p><p> 經(jīng)過幾個月的畢設時間,從開始的新接觸,到一點一點的熟悉,學了很多東西,基本上按時按量完成了要求。在初期時,由于很多知識都是第一次接觸,必須要先自己學習才可以動手實踐,就
90、從圖書館借了好多的書看,一邊看書一邊動手實踐,其中聚類分析,測試用例,R語言這些都是第一次學習,還是有點難度,學習進度也是比較慢的,但這個期間感覺進步還是比較大的,每天學到新的知識并加以運用。在中期時,現(xiàn)在基本簡單的應用沒什么問題,然后就開始動手寫,畢竟從動手寫中可以更快的學習而且還比單純的學習理論知識有趣很多,這個時候就會發(fā)現(xiàn)自己學的那個地方?jīng)]學懂,那個地方還是錯誤的認識,一遍遍試錯,一遍遍改錯,程序雛形也慢慢顯現(xiàn)出來了。到后期的時候
91、,就該認真研究那些難點,這個方法不行就換個方法,一遍遍地找方法,突破了一個問題,另一個問題也顯現(xiàn)出來,再堅持不懈的努力下,最終終于可以完美運行了。如果說前期的學習只是一些基礎的知識,后期的突破才是學習真正的技術的時候。</p><p> 5.2 遇到的問題及解決方法</p><p> 5.2.1 QT下的C++與R語言相互調(diào)用問題</p><p> 這個問題是
92、我真正動手時想到的第一個問題,開始查了好多資料都沒有一個好的方法解決C++下調(diào)用R語言的接口,畢竟是兩個不同的語言,而R語言又是一個比較小眾的語言,所以C++也沒有特定的庫直接調(diào)用R語言。就在我要放棄從C++中找方法時,這是我在R這邊找到了希望,R可以作為一個腳本獨立存在,然后開始學習R腳本方面的知識,簡單的寫了一個hello world的腳本,然是就是試著直接從C++程序調(diào)用R腳本執(zhí)行,真的可以了。</p><p&
93、gt; 解決這個問題我也反思了很多,因為真的浪費了太多時間。我覺得遇見問題不能單方面的解決,就比如我就一直想著C++怎樣調(diào)用R程序執(zhí)行,單方面從C++這邊找解決方法,可是C++沒有提供這樣的庫,怎么弄都沒有辦法。才會到R這邊想辦法,最終才解決了問題。</p><p> 5.2.2 R語言參數(shù)傳遞與結(jié)果返回問題</p><p> 其實R語言參數(shù)傳遞與結(jié)果返回基本是一個問題,都是R與C+
94、+之間的數(shù)值傳遞問題。等到真正開始寫聚類代碼的時候才發(fā)現(xiàn)了這個問題,在hello world這個腳本是可以順利執(zhí)行的,但是聚類不一樣呀,它是需要參數(shù)的,并在聚類結(jié)果是要把結(jié)果返回的,不像hello world那樣直接在控制臺給個輸出就行。解決這個問題時我走入了一個誤區(qū),總是想的是在調(diào)用R腳本時直接傳入?yún)?shù),可事與愿違,還真沒有一個好的辦法可以傳遞,當然在后面的學習中發(fā)現(xiàn)還是可以直接傳值的,但是我需要的參數(shù)與返回的結(jié)果都是大量的數(shù)據(jù),而直
95、接傳值只能是一些基本的數(shù)據(jù)類型。最終選擇了用文件傳遞,畢竟這些數(shù)據(jù)是要保存下來,不能每次需要都重新計算,這樣想想文件也是一個不錯的方法,然后就開始研究QT下的文件讀寫與R語言下的文件讀寫,這些也不是很難,基本一天也就掌握了,至此,這個參數(shù)傳遞與結(jié)果返回的問題就徹底解決了。</p><p> 在解決問題的過程中,網(wǎng)上找方法,其中看過一句話:在兩個語言之間的傳值用文件是一個萬能的方法。畢竟像在C中直接寫匯編這種兩個
96、語言混用還是太少,所以當你沒有好方法解決兩個語言之間的傳值問題,就用文件吧。</p><p> 5.2.3 SOAP接口實現(xiàn)問題</p><p> 以前在做項目時都是用的socket通信的機制,SOAP是第一次用,開始只是在網(wǎng)上找資料這看一點那看一點感覺學的好混亂,沒辦法,先從簡單的開始學,慢慢的入門了之后再回想起以前看的會有一些更深的認識,然后開始動手,結(jié)果真正寫的時候也不用完全的通
97、信機制都要自己寫,通信的細節(jié)是自動生成的,自己要寫的就是數(shù)據(jù)的處理,這點還是很方便的,用戶可以不同在乎通信細節(jié)問題,直接寫代碼。</p><p> 這個問題告訴我們其實互聯(lián)網(wǎng)上有好多的工具是可以大大簡化我們的工作量,一些小的點是完全可以不用考慮的。所以以后嫌一些技術細節(jié)比較麻煩時,靜下心來,在網(wǎng)上好好找找,說不定你要做的事情別人已經(jīng)替你做好了。</p><p> 5.3 主要的研究成果
98、</p><p> 通過本次畢設,學到了很多東西,也有很多技術像測試用例、R語言、聚類分析這些都是第一次見,基本上也算是會用這些技術了,總體可以聯(lián)系起來完成一個作品。</p><p> 本次做的是一個基于R語言的測試用例的聚類分析程序,通過本程序可以對測試用例進行聚類,從聚類的結(jié)果中找出一些不好的測試用例,從而減少測試用例的數(shù)量,減輕測試所需要的資源。本程序可定制化程度較高,聚類時可自
99、主選擇聚類的個數(shù)和聚類所用的距離度量方式,極大方便了用戶。在顯示效果上也是認真研究顯示方式,爭取更高效的顯示出來,最終采用表格聯(lián)動的方式,在整體上可以很好的顯示每個類的大體情況,聯(lián)動表格也可以顯示每個類的細節(jié)情況。爭取做到一看就知道每個類的好壞情況,可為后續(xù)分析做好保障。在功能上也是為了發(fā)揮更大的作用,把這個功能加入產(chǎn)品中,因為產(chǎn)品是做測試用的,可以新建測試用例,而這個功能又可以直接分析測試用例,更是方便了用戶的選擇。</p>
100、;<p><b> 5.4 展望</b></p><p> 對測試用例的聚類分析來減少測試所需要的資源是一個很好的想法,但聚類后的分析也是一個很重要的問題,現(xiàn)在做出來的只能人為的根據(jù)測試用例的分類情況來進一步判斷測試用例的好壞,從而保留好的測試用例,刪除不好的測試用例。</p><p> 所以后期準備在開發(fā)一個功能,主要作用就是根據(jù)測試用例的分類情
101、況自動化的分析測試用例好壞,從而自動剔除不好的測試用例。其主要實現(xiàn)具體為在每個類中隨機抽樣一些測試用例進行測試,如果本類的大部分測試用例都可以很好的發(fā)現(xiàn)錯誤,則說明這一類測試用例都能很好的發(fā)現(xiàn)錯誤。如果本類的大部分測試用例都不能發(fā)現(xiàn)錯誤,則認為這一類的測試用例質(zhì)量都不高,可整體進行刪除。</p><p> 在有余力的情況下,還想做一個關于回歸測試的東西,一個好的測試用例要求在老版本上發(fā)現(xiàn)問題,在一個新的版本上也
102、要能發(fā)現(xiàn)問題,對測試用例進行回歸測試是一個很繁重的工作,而這個工作如果能自動的進行將大大減少測試的工作。當然這只是初步的想象,具體的實現(xiàn)有望以后解決。</p><p><b> 致謝</b></p><p> 隨著畢設慢慢接近尾聲了,大學生活也快要結(jié)束了,從剛開始做畢設到現(xiàn)在的基本完成畢設,這個過程中學了很多的東西,也得到了不少人的幫助,現(xiàn)在想想如果沒人這么多人的
103、幫助的話,自己也不一定能按時完成這次畢設,所以我想在這里感謝一下在這個過程中幫助我的人。</p><p> 首先要感謝的就是我的導師黑新宏老師。在別人還沒開始做的時候,他就讓我看了一些關于數(shù)據(jù)挖掘的東西,我就是從這里找到了我的方向,從此就愛上了數(shù)據(jù)挖掘,以至于后來畢設做的就是數(shù)據(jù)挖掘算法中的聚類算法。盡管我畢設是在公司做的,但是在畢設前期和畢設后期這段時間我都在學校,不管平時有什么事找他總是能很好的解決,記得在
104、前期在學校期間和后期從公司回到學校后,找他說是給我找個地方做畢設,他就直接帶我去教研室給我找了一個地方。教研室有很好的學習氛圍,可以靜下心來認真的學習,現(xiàn)在想想要是當初沒有教研室我在宿舍學習不知效率是有多差。</p><p> 然后要感謝的就是我再公司的所有同事和公司的老板,在我做畢設期間,他們給了我好多技術上的支持。開始時由于我對公司的產(chǎn)品不是很熟悉,學的比較慢,他們都能耐下心來給我講,對我的技術是一個很大的
105、提升,這也就直接推動了我畢設的進度。并且在公司我算是一個新來的,他們與會照顧我,在我進度慢的時候主動幫助我,整個公司的氛圍特別好,非常適合去學習。</p><p> 還要感謝的就是我的師兄師姐和一些同學,是他們在我困惑的時候給我?guī)椭?。每當遇見一個小的問題第一個想到的就是同學,不管什么時候,他們總是可以給你幫助。別看是一些小的問題,有的還真不好解決,他們都能認認真真的解決,并提出更好的想法。可以說沒有這些同學,我
106、的畢設肯定就是亂七八糟的,一些小的毛病肯定也就留到最后。</p><p> 最后,還要感謝一些在大學生涯給我?guī)дn的老師,是他們交給我知識,才有了知識積累去完成畢設。感謝所有幫助過我的老師,每一個老師總是在我最需要幫助的時候來幫助我,讓我重新認識自己。感謝所有幫助我的同學,是他們在生活上幫助我們,讓我們克服所有的困難。感謝西安理工大學,我的母校提供了優(yōu)良的學習環(huán)境,讓我可以認真的學習。</p>&l
107、t;p><b> 參考文獻</b></p><p> [1] 張良均,云偉標,王路,劉曉勇.R語言數(shù)據(jù)分析與挖掘?qū)崙?zhàn)[M].北京:機械工業(yè)出版社.2016</p><p> [2]〔法〕弗里斯,〔法〕邁斯. R語言輕松入門與提高[M].麥稈創(chuàng)智譯.北京:人民郵電出版社,2015</p><p> [3] 王振武,徐慧.數(shù)據(jù)挖掘算法
108、原理與實現(xiàn)[M].北京:清華大學出版社.2015</p><p> [4] 黃文,王正林.數(shù)據(jù)挖掘:R語言實戰(zhàn)[M].北京:電子工業(yè)出版社.2014</p><p> [5] 〔中〕吳信東,〔英〕庫馬爾. 數(shù)據(jù)挖掘十大算法[M].李文波,吳素研譯.北京:清華大學出版社.2013</p><p> [6] 霍亞菲.Qt Creator快速入門[M].北京:北京航
109、空航天大學出版社.2014</p><p> [7] 蔡志明,盧傳富,李立夏.精通Qt4編程[M].北京:電子工業(yè)出版社.2008</p><p> [8] 丁林松,黃麗琴.Qt4圖形設計與嵌入式開發(fā)[M].北京:人民郵電出版社.2009</p><p> [9] 〔美〕蘭茲. 機器學習與R語言[M].李洪成,徐金煒,李艦澤譯.北京:機械工業(yè)出版社.2015&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文---基于文本的聚類算法
- 畢業(yè)論文(設計)基于遺傳算法的測試用例生成方法
- 基于CHAM的類測試用例生成.pdf
- 基于聚類技術的面向?qū)ο筌浖y試用例生成方法研究.pdf
- 2017畢業(yè)論文-基于c語言的掃雷游戲開發(fā)
- 基于r語言在城鄉(xiāng)收支水平差距預測的應用-畢業(yè)論文
- 基于模糊聚類的物流市場細分方法探究【畢業(yè)論文】
- 畢業(yè)論文--基于loadrunner的web應用程序測試方法
- 軟件開發(fā)類畢業(yè)論文
- 基于程序切片算法的測試用例集約簡方法.pdf
- 回歸測試用例的優(yōu)化選擇研究.pdf
- 郵件收發(fā)程序的設計與開發(fā)——畢業(yè)論文
- 基于模型檢查的程序驗證和測試用例生成.pdf
- 基于動態(tài)程序切片技術的測試用例自動生成研究.pdf
- 模糊聚類理論發(fā)展及研究畢業(yè)論文
- 基于蟻群算法的測試用例選擇機制研究.pdf
- 基于java語言的網(wǎng)絡聊天系統(tǒng)開發(fā)與實現(xiàn)畢業(yè)論文
- 軟件測試和回歸測試用例選擇算法的研究.pdf
- 基于.net平臺的聊天程序畢業(yè)論文
- 回歸測試用例選擇技術研究.pdf
評論
0/150
提交評論