免费看男阳茎进女阳道视频

                        24小時論文定制熱線

                        咨詢電話

                        熱門畢設:土木工程工程造價橋梁工程計算機javaasp機械機械手夾具單片機工廠供電采礦工程
                        您當前的位置:論文定制 > 畢業設計論文 >
                        快速導航
                        畢業論文定制
                        關于我們
                        我們是一家專業提供高質量代做畢業設計的網站。2002年成立至今為眾多客戶提供大量畢業設計、論文定制等服務,贏得眾多客戶好評,因為專注,所以專業。寫作老師大部分由全國211/958等高校的博士及碩士生設計,執筆,目前已為5000余位客戶解決了論文寫作的難題。 秉承以用戶為中心,為用戶創造價值的理念,我站擁有無縫對接的售后服務體系,代做畢業設計完成后有專業的老師進行一對一修改與完善,對有答辯需求的同學進行一對一的輔導,為你順利畢業保駕護航
                        代做畢業設計
                        常見問題

                        運用TestWAJ進行單元測試系統

                        添加時間:2019/07/27 來源:重慶大學 作者:盧佳偉
                        單元測試用來對軟件中最小可測試單元進行檢查和驗證。單元測試可以幫助編程人員盡早發現 bug;保證對后面代碼的修改不會影響先前的代碼;有利于代碼的維護。
                        以下為本篇論文正文:

                        摘 要

                          單元測試是集成測試與系統測試的基礎,是測試驅動開發與軟件重構的基石。

                          隨著測試驅動開發方法的流行,單元測試愈發重要。本文主要研究 Java 程序的單元測試。通過對單元測試理論及工具的研究,發現當前的 Java 單元測試還存在一些問題,這些問題主要包括:當前測試框架不能自動地選擇測試用例,不能自動地添加運行測試用例。當需要頻繁、有選擇性地運行大量測試時,手動方式十分繁瑣;測試中使用的模擬框架具有不能模擬 final 類等局限性,并且實現模擬功能的代碼與測試的代碼混合在測試方法中,不僅影響測試方法的可讀性,而且不利于模擬對象的復用;當前測試框架沒有為測試方法的復用提供有效的支持;針對以上問題,將單元測試與面向方面編程結合,研究 AspectJ(一種面向方面框架)在 Java單元測試中的應用,取得成果主要包括:

                          1) 掃描整個項目自動添加測試用例到測試套件,框架自動運行套件中的測試用例。在添加過程中利用 AspectJ 的橫切功能橫切添加用例的方法,使得只添加在切點中描述的測試用例,實現測試用例自動地選擇、自動地添加運行。

                          2) 利用 AspectJ 切點捕獲被測方法對外部的依賴,在切面中改寫依賴方法,隔離依賴,并設計了隔離依賴的切面模型。在切面中設置預期的方法調用,被測方法運行時用切點捕獲實際的方法調用,在切面中驗證兩者是否一致,實現交互測試,并設計了實現交互測試的切面模型。

                          3) 設計了兩種復用測試方法的模式:參數化測試與接口測試方法復用。利用AspectJ 切點捕獲測試方法中被測方法的調用,在切面中用多組測試數據循環調用被測方法,記錄每組的運行結果。捕獲測試方法中斷言方法的調用,復用斷言方法斷言每組數據的運行結果,實現參數化測試。利用 AspectJ 的靜態橫切功能,讓各實現類的測試類復用切面中實現的接口中方法的測試方法,實現接口測試方法復用。

                          為了方便設計的方法在實際單元測試中的使用,設計并實現了一個基于 JUnit的單元測試框架 TestWAJ(Test with AspectJ)。最后,運用 TestWAJ進行單元測試,驗證了本文提出的解決方法是可行的。本文實現測試用例的自動選擇,自動添加運行,提高了 Java 單元測試自動化水平。設計的兩種復用測試方法的模式,增強了測試方法的復用性,減少了測試成本。用 AspectJ 實現的模擬框架,比傳統模擬框架功能更強,復用性、靈活性更高。

                          關鍵詞:單元測試,AspectJ,JUnit,模擬框架,測試方法復用

                        ABSTRACT

                          Unit testing is the basis of the integration test and system test and foundation of test-driven development and software refactoring. And as test-driven development grows in popularity, unit testing is increasingly important. This paper mainly studies the Java program unit testing. Based on the research of the unit test theory and tools, found that the current Java program unit testing also has some problems. These problems include: the current test framework can't choose the test cases automatically, also cannot automatically add test cases to Test Runner; When you need to frequently and selectively running a large number of tests, the manual test is very tedious; The mock framework used in unit testing has the limitations such as can not simulate the final class. In the test method, mixing the mock code with the test code not only affects the readability of test methods, but is also not conducive to the reuse of mock object; The current test framework don’t provide effective support for the reuse of test methods. To solve above problems, combining unit tests and aspect-oriented programming, we research the application of AspectJ (an aspect-oriented framework) in Java unit test. The main results are as follows.

                          1) First of all, scan the entire program and automatically add test cases to test suite, and then the framework automatically run the test cases in test the suites. In the process of adding test cases, Using AspectJ's crosscutting function crosscutts the method that used to add test cases, make the framework only to only add test cases described in the aspect. Realize the function that the test framework can automatically select, add and run the test case.

                          2) Capture all dependencies on external resources of the tested method using AspectJ’s pointcut. In the asepct, we rewrite the depended method to isolate dependences. And design the aspect model for isolating dependences. We can set expected methods’ invocation in aspect. Then, capture the actual method's invocation using the pointcut when the tested method is running. Then verify the consistent of actual invocations and expected invocations. We realize the interactive test, and design interactive test's aspect model.

                          3) Two methods of reusing test method is designed. They are the parametric test and the reuse of interface test method. Capture the invocation of tested method in the test method using AspectJ’s pointcut. We use multiple sets of test data to loop calling the tested method, and record the result of A single set of test data. Capture the invocation of assert methods in the test method. Reuse assert methods to assert the result for A single set of test data. Finally, realize parametric tests. We use AspectJ's static crosscutting function to let each implementation class's test class reuse test methods of interface's methods implemented in the aspect. Finally, realize the reuse of interface test method.

                          In order to facilitate the use of designed functions in the actual unit tests, this paper designs and realizes TestWAJ(Test with AspectJ) based on JUnit. Finally, unit test with TestWAJ, the results show that the proposed solutions are really feasible. This paper realized the function that the test framework can automatically select, add and run the test case. It improve the level of automation of Java unit test. Because of designing two methods of reusing test method, it can enhance the test method's reusability and reduce the test cost. The mock framework implemented by AspectJ is more stronger , and has higher reusability and flexibility than the traditional mock framework.

                          KeyWords: unit testing, AspectJ, JUnit, mock framework, the reuse of test methods

                         

                          單元測試是為了保證被測程序的一個很小的功能正確運行而編寫的一小段驗證代碼。單元測試的優點眾多,主要包括:1.幫助我們編寫代碼,預防 bug。我們在編寫代碼的時候,由于事先對代碼的功能考慮不周全,導致遺漏某些 case 或邊界條件等問題。如果我們在編寫程序前,先為程序寫好單元測試,寫單元測試的過程中會促使編程人員對代碼的功能,實現流程做詳細的思考,這樣在真正寫代碼的時候會思路清晰,減少 bug 的引入,從而提高代碼的質量。2.能更輕松,更快的反饋代碼是否正確的信息,減少我們驗證代碼的工作量,加快開發效率。

                          試想我們完成了某個功能或者修改了某個功能,如果不使用單元測試,我們需要啟動整個程序,驗證新功能是否工作正常。如果是一個 WEB 項目那可能包括發布項目,啟動服務器等繁瑣的過程。但是,如果使用單元測試,我們可以使用mock框架為程序搭建一個獨立的運行環境,只需簡單調用新功能,驗證輸出結果,就能輕松知道是否正確。與之前的方法相比,單元測試能更快,更輕松的提供檢測功能,減少我們工作量。3.確保以后對代碼的修改不會影響之前已編寫代碼的功能。隨著項目的深入,代碼量越來越大,如果此時需要修改先前寫好的代碼,這些代碼恰巧是系統的公共接口或底層的支持類,很有可能牽一發而動全身對系統造成不可預知的影響。這樣導致修改需求被擱置或推遲,由于不敢改進代碼,代碼也變得越來越難以維護,質量也隨之變差。而單元測試為這個問題提供了很好的解決方法。由于之前為了保證程序的功能,我們已經編寫了單元測試,F在,對代碼做修改后,我們只需再次運行原來的單元測試就能知道新的修改是否會影響到系統中其它部分。4.增加代碼的可維護性。為代碼寫單元測試,相當于給代碼加上了規格說明書,而且單元測試代碼大多邏輯簡單,結構清晰,開發人員通過讀單元測試代碼能輕松理解代碼的功能。目前,測試驅動開發[1]

                         。═DD)在 IT界風靡。它要求在編寫實際功能代碼之前,首先編寫測試代碼。也就是說在確定需要開發某個功能后,首先考慮怎樣對這個功能進行測試,在測試代碼的編寫完成后,然后編寫有關的功能代碼使測試代碼通過。再循環增加其他功能,直到所有功能的開發完成。在代碼重構[2]中自動化單元測試是保證重構安全性的重要手段,通過單元測試保證重構后的代碼外部行為不變。對測試驅動開發和代碼重構而言單元測試至關重要。

                          單元測試與生產代碼相同,測試代碼同樣需要具良好的可讀性,可維護性,盡量避免重復。我們在測試方法中使用第三方框架(如隔離框架),這些框架的功能代碼和測試代碼混合在一起,降低了測試代碼的可讀性,復用性和可維護性。

                          如果我們使用 JUnit 框架,測試類必須繼承 TestCase,測試方法必須無參無返回值。這些限制使得我們無法通過繼承,參數化測試等手段復用測試方法,增加程序員工作量。

                          不能自動選擇運行單元測試,影響了 Java 單元測試自動化水平,增加單元測試的成本;模擬框架的缺陷限制模擬框架的使用范圍,模擬代碼與測試代碼混合,影響單元測試的質量,影響模擬對象復用性。缺少有效的復用手段,增加了測試人員的負擔。因此很有必要研究這些問題的解決方法,讓編程人員更加方便高效的使用單元測試,從而提高軟件的質量。

                          面向方面編程[3](AOP),作為面向對象編程的一種補充和完善。它利用切面封裝日志處理,權限認證,事務處理等影響系統多個類的公共功能,這些功能為系統的主要業務提供服務。我們將系統的主要業務稱為核心關注點(主關注點),提供服務的功能稱作橫切關注點。在程序運行的時候,AOP 可以使用橫切技術捕獲需要這些橫切關注點提供服務的地方(稱為連接點),在連接點處“注入”橫切關注點的邏輯。AOP 使用橫切技術實現了橫切關注點與系統關注點的分離,不僅降低了系統耦合性,而且保證了橫切關注點的復用。AOP 橫切技術分為兩種:動態橫切與靜態橫切。使用動態橫切技術,可以在連接點處織入橫切邏輯,也可以改寫連接點處方法的實現,設定方法的返回值。靜態橫切可以修改程序的靜態結構,可以向類中添加新的方法或變量,聲明一個類實現一個接口或繼承一個類,可以將檢查異常轉換為未檢查異常。作為 AOP 的實現框架 AspectJ 很好支持 AOP 的各種功能。

                          通過深入研究 AOP 技術與 Java 單元測試,發現 AspectJ 能很好的解決上述Java 單元測試問題。本文詳述了具體的解決方法,并且基于 JUnit 框架結合AspectJ設計實現了 TestWAJ,支持本文方法在開發中的使用。

                          當前軟件項目往往十分復雜,模塊眾多,整個系統的正常運行依賴于每個小功能模塊的正常運行,單元測試是確保單一功能正常工作的有效手段,所以單元測試在項目開發中愈發不可或缺。隨著測試驅動開發理念的流行,單元測試被越來越廣泛的使用。但是,為系統中每個功能編寫單元測試,還要確保單元測試的質量,要花費開發人員大量時間。對大項目而言,大量的單元測試導致巨大的測試的成本。復用是減少工作量的重要手段,因此有眾多的關于單元測用例復用的研究。文獻[4]通過分析用例的可復用屬性,并定義與復用度有關的度量元,使得可以定量計算各測試用例的復用度,為復用提供依據。文獻[5][6]通過修復由于方法演化而失效的測試用例,實現測試用例的復用。文獻[7]使用 XML 描述測試用例,使測試用例的描述規范化,方便程序分析,同時還為測試用例建立復用文檔,包括測試用例的類別信息,歷史復用信息,方便測試用例的復用。有的研究者并不滿足僅僅復用已有的測試用例而已,他們探索各種測試用例的自動生成技術。

                          文獻[8]主要通過軟件需求規格說明書,得到程序流程圖,將流程圖改造成更易于測試用例生成的形式流程圖,通過形式流程圖自動生成交互有限狀態自動機,再由有限狀態機生成測試路徑,依據測試路徑最終生成測試用例。文獻[9]設計了一種從系統測試中錄制出單元測試的方法。

                          為了彌補單元測試中模擬框架的不足。文獻[10]擴展模擬框架的功能,讓用戶可以 Mock 被測對象自身的屬性和方法。文獻[11]使用 Hook 技術使得模擬框架可以解決沒有對象概念的基于過程的函數模擬問題。

                          面向方面編程,作為面向對象技術的完善和補充,其強大的橫切功能,可以幫助解決諸多面向對象中的難題。文獻[12]將現有的軟件監控模式用切面封裝,要使用監控功能時,通過橫切功能注入,實現了監控功能的復用,而且用法更靈活。文獻[13]使用 AOP 的動態織入功能,實現監測器的動態增刪,還可以實現對方法級別,WEB應用中 Action級別的監測。

                          也有人將面向方面應用于測試領域,并且取得了不小的成就。文獻[14]主要使用 AOP 的橫切功能獲得測試運行時指定連接點處的信息,通過這些信息來檢測單元測試的有效性。文獻[15]利用 AOP 橫切功能將各種類型的錯誤注入被測系統,來測試軟件的安全性。文獻[16],將面向方面應用于單元測試,利用 AOP 功能實現直接測試對象私有屬性,為被測類提供模擬對象,實現日志功能,性能測試功能,并將這些功能集成在一個框架中。

                          前面的研究者試圖通過測試用例復用,測試用例的自動生成來減輕開發人員進行單元測試的負擔,節約測試成本。但由于測試用例種類繁多,前述復用手段不可能覆蓋所有的測試用例,具有局限性。自動生成測試用例的方法要么過于復雜,要么依賴于其他條件。本文另辟蹊徑,1.從運行測試用例入手,使用 AspectJ實現了方便地選擇測試用例,自動地添加運行測試用例的功能,省去測試人員在運行測試時大量的手工操作?蔀閾碛斜姸鄿y試用例的項目節約大量運行成本。

                          2.從復用測試方法的角度入手,使用 AspectJ,設計了參數化測試,接口測試方法復用兩種復用測試方法的模式。本文的方法切切實實的減輕開發人員的負擔。

                          使模擬框架可以解決對象自身方法和屬性的模擬問題,雖然擴展了模擬框架的功能,但仍然沒有解決模擬框架不能模擬 final 類,代理靜態方法等缺陷(后文還將說明其它缺陷)。使用 Hook 技術只是解決面向過程中的模擬問題。本文將使用 AspectJ 輕松實現一種比現有框架功能更強并且克服現有框架缺陷的解決方案。

                          雖然已經有人將 AOP 運用于測試,但只是簡單使用了 AOP 的某項功能,沒深入挖掘 AOP 的潛力。文獻[16]雖然用 AOP 實現 mock功能,但只提供了樁對象的功能,沒有提供模擬對象可以驗證交互的功能。本文在深入研究 AspectJ 與Java單元測試的基礎上,綜合運用靜態橫切,動態橫切,切面繼承等多種 AspectJ功能,解決了 Java單元測試中比較重要的幾個問題,十分有意義。

                        運用TestWAJ進行單元測試系統:

                        TestWAJ 的包結構
                        TestWAJ 的包結構

                        基于狀態的測試
                        基于狀態的測試

                        測試類類圖
                        測試類類圖

                        自定義 TestSuite的時序圖
                        自定義 TestSuite的時序圖

                        解析測試類得到 TestSuite的時序圖
                        解析測試類得到 TestSuite的時序圖

                        addTestMethod方法代碼
                        addTestMethod方法代碼

                        樁對象與被測類之間的交互
                        樁對象與被測類之間的交互

                        目 錄

                          中文摘要
                          英文摘要
                          1 緒 論
                            1.1 研究背景及意義
                            1.2 國內外研究現狀分析
                            1.3 論文的主要工作
                            1.4 論文的組織安排
                          2 面向方面編程(AOP)
                            2.1 面向方面編程概述
                              2.1.1 AOP的基本概念
                              2.1.2 AOP技術的優勢
                            2.2 面向方面編程的實現
                            2.3 AspectJ
                              2.3.1 連接點
                              2.3.2 切點
                              2.3.3 通知
                              2.3.4 類型間聲明
                              2.3.5 方面
                            2.4 面向方面的模型表示
                            2.5 本章小結
                          3 JAVA單元測試
                            3.1 Java單元測試框架
                            3.2 JUnit單元測試框架
                            3.3 單元測試中模擬對象的使用
                              3.3.1 模擬對象的意義
                              3.3.2 基于狀態的測試與基于交互的測試
                              3.3.3 EasyMock簡介
                            3.4 本章小結
                          4 AspectJ在單元測試中的應用研究
                            4.1 運用AspectJ組織運行單元測試
                              4.1.1 當前單元測試用例執行方式存在的問題分析
                              4.1.2 基于 AspectJ 的解決思路
                            4.2 運用AspectJ解決單元測試依賴問題
                              4.2.1 現有隔離框架存在的問題分析
                              4.2.2 使用 AspectJ 技術解決 Mock問題
                            4.3 基于AspectJ的單元測試復用性研究
                              4.3.1 參數化測試
                              4.3.2 接口測試方法的復用
                            4.4 本章小結
                          5 TestWAJ
                            5.1 TestWAJ簡介
                            5.2 TestWAJ的組成
                            5.3 運用TestWAJ進行基于狀態和基于交互的測試
                            5.4 運用TestWAJ進行參數化測試與接口測試方法復用
                            5.5 運用TestWAJ靈活高效選擇運行測試
                            5.6 本章小結
                          6 總結與展望
                            6.1 總結
                            6.2 研究展望
                          致 謝
                          參考文獻
                          附 錄

                        (如您需要查看本篇畢業設計全文,請您聯系客服索。

                        相關內容
                        相關標簽:Java畢業設計
                        好優論文定制中心主要為您提供代做畢業設計及各專業畢業論文寫作輔導服務。 網站地圖
                        所有論文、資料均源于網上的共享資源以及一些期刊雜志,所有論文僅免費供網友間相互學習交流之用,請特別注意勿做其他非法用途。
                        如有侵犯您的版權或其他有損您利益的行為,請聯系指出,論文定制中心會立即進行改正或刪除有關內容!

                        將微信二維碼保存到相冊

                        打開微信掃一掃從相冊識別

                        1.點擊下面按鈕復制QQ號

                        3008637063

                        2.打開QQ→添加好友/群

                        粘貼QQ號,加我為好友

                        免费看男阳茎进女阳道视频