• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    一種面向數(shù)值模擬軟件的持續(xù)集成平臺

    2020-09-26 11:50:38單雅輝劉青凱楊章田鴻運(yùn)鄒勇剛
    計算機(jī)輔助工程 2020年3期
    關(guān)鍵詞:軟件測試

    單雅輝 劉青凱 楊章 田鴻運(yùn) 鄒勇剛

    摘要: 隨著軟件復(fù)雜度的增加和交付需求的變化,快速集成和自動部署成為高性能數(shù)值模擬軟件推廣應(yīng)用的瓶頸。為滿足軟件構(gòu)建和發(fā)布的差異化需求,簡化從用戶需求到軟件發(fā)布的工作流程,基于Jenkins設(shè)計持續(xù)集成平臺,實(shí)現(xiàn)軟件靜態(tài)審查、編譯、測試和發(fā)布流程的自動化,全面記錄軟件構(gòu)建日志和測試結(jié)果。利用Docker技術(shù)將構(gòu)建環(huán)境容器化,實(shí)現(xiàn)環(huán)境的快速搭建和配置管理,滿足多樣化目標(biāo)環(huán)境需求。該平臺的實(shí)際應(yīng)用效果顯示,基于該平臺的產(chǎn)品發(fā)布周期相比之前縮短約75%,可極大簡化軟件安裝和部署難度。

    關(guān)鍵詞: 持續(xù)集成; 軟件測試; 軟件發(fā)布; 自動部署

    中圖分類號: TP311.56 ? 文獻(xiàn)標(biāo)志碼: B

    Abstract: With the software complexity increasing and the delivery requirements changing, rapid integration and automatic deployment become the bottleneck in the application of high-performance numerical simulation software. In order to meet the differentiated requirements of software construction and release, the workflow from user requirements to software distribution is simplified, and then the continuous integration platform based on Jenkins is designed to realize the automation of software static review, compilation, testing and release process, in which the software build logs and test results can be recorded comprehensively. The Docker technology is used to containerize the environment, and then the rapid construction and configuration management of the environment can be realized to meet the needs of diversified target environment. The application effect of the platform shows that the product distribution cycle based on this platform is about 75% shorter than before, which can greatly simplify the difficulty of software installation and deployment.

    Key words: continuous integration; software testing; software release; automatic deployment

    0 引 言

    數(shù)值模擬軟件是一類特殊的計算機(jī)應(yīng)用軟件,其服務(wù)于科學(xué)計算,以再現(xiàn)、發(fā)現(xiàn)和預(yù)測真實(shí)客觀系統(tǒng)運(yùn)行規(guī)律和演化特征的數(shù)值模擬為主要目標(biāo)。[1]目前,數(shù)值模擬軟件已廣泛應(yīng)用于國家重大領(lǐng)域,包括全球氣候預(yù)測、地球資源環(huán)境檢測、核能開發(fā)利用、電磁環(huán)境和信息安全等。

    隨著數(shù)值模擬軟件應(yīng)用范圍不斷擴(kuò)大,數(shù)值模擬軟件的研發(fā)呈現(xiàn)以下3個方面特征[2]:(1)應(yīng)用需求日趨復(fù)雜,軟件規(guī)模不斷增加,代碼行數(shù)由過去的幾千行發(fā)展到數(shù)萬行甚至數(shù)十萬行;(2)高效能計算共性技術(shù)不斷發(fā)展,基于編程框架與離散中臺的研發(fā)模式日益普及,使得軟件架構(gòu)趨于層次化和模塊化,軟件集成復(fù)雜度隨之增加;(3)軟件運(yùn)行環(huán)境多樣、交付部署頻繁,為保證求解問題的規(guī)模,數(shù)值模擬軟件在計算實(shí)際應(yīng)用問題時需要高性能計算機(jī)支撐,但是不同高性能計算機(jī)在硬件架構(gòu)、編譯器、MPI、作業(yè)調(diào)度等方面存在較大差別,這種運(yùn)行環(huán)境差異會對數(shù)值模擬軟件的計算結(jié)果精度、性能表現(xiàn)等產(chǎn)生干擾,嚴(yán)重情況下甚至導(dǎo)致程序無法正常運(yùn)行,這對軟件的可移植性、部署靈活性提出更高的要求。

    因此,在數(shù)值模擬軟件研發(fā)過程中,如何降低集成和部署難度、滿足產(chǎn)品化和應(yīng)用推廣需求,成為急需解決的問題。

    本文結(jié)合高性能數(shù)值模擬軟件研發(fā)過程中的實(shí)際需求,設(shè)計并實(shí)現(xiàn)一種適用于高性能數(shù)值模擬軟件研發(fā)的持續(xù)集成平臺;介紹數(shù)值模擬軟件交付過程中面臨的實(shí)際問題,對比分析幾款典型的軟件構(gòu)建工具;介紹持續(xù)集成平臺的操作流程和設(shè)計方案,闡述實(shí)施過程中的關(guān)鍵技術(shù)點(diǎn)和具體實(shí)施過程。

    1 數(shù)值模擬軟件交付過程面臨的問題和挑戰(zhàn) ?數(shù)值模擬軟件的交付過程涉及環(huán)境構(gòu)建、依賴管理解析、軟件編譯、測試和部署等內(nèi)容,如果僅涉及依賴關(guān)系處理和編譯,業(yè)內(nèi)一些構(gòu)建工具(如CMake)可以有效支撐,但對于整個交付過程來說,業(yè)內(nèi)流行的構(gòu)建工具暫時不能滿足需求。數(shù)值模擬軟件交付過程具有以下幾個方面的需求特征。

    (1)生產(chǎn)環(huán)境的有效配置管理。數(shù)值模擬軟件的研發(fā)和使用大多在Linux系統(tǒng)環(huán)境下進(jìn)行。為保證軟件安裝包的可用性,生產(chǎn)環(huán)境需要與用戶環(huán)境保持一致,通常采用搭建虛擬機(jī)的方式模擬用戶環(huán)境。生產(chǎn)環(huán)境搭建過程中需完成操作系統(tǒng)安裝、網(wǎng)絡(luò)配置、軟件驅(qū)動、編譯器安裝和環(huán)境配置等工作。該過程往往無法被記錄,配置人員的某個錯誤操作極可能造成軟件編譯部署失敗,并且難以定位錯誤的位置。因此,生產(chǎn)環(huán)境最好能夠自動創(chuàng)建,并且每次環(huán)境配置的變更都能夠被記錄下來。

    (2)編譯語言與目標(biāo)存在差異。在層次化研發(fā)模式中,按照軟件的不同功能定位,數(shù)值模擬軟件分為編程框架、離散中臺和應(yīng)用軟件3類。數(shù)值模擬軟件趨于模塊化,各模塊研發(fā)相對獨(dú)立,模塊或軟件之間依賴關(guān)系復(fù)雜。不同類型的軟件依賴關(guān)系不同,編譯目標(biāo)也會不同。此外,數(shù)值模擬軟件大多基于C、C+ +、Fortran等編程語言混合編寫,程序的編譯方式也會存在一定的差異。因此,需要構(gòu)建一套不僅能夠支持不同程序語言、編譯方式,而且能夠自動解析、有效處理依賴關(guān)系的工具。

    (3)跨平臺兼容性測試。在通常情況下,軟件集成、開發(fā)和測試等過程是在開發(fā)環(huán)境下完成的,之后才會向生產(chǎn)環(huán)境部署。對于數(shù)值模擬軟件來說,程序?qū)幾g和運(yùn)行時的環(huán)境依賴較為敏感。當(dāng)生產(chǎn)環(huán)境與開發(fā)環(huán)境不一致時,經(jīng)常引起依賴庫版本不匹配、接口不兼容等問題,導(dǎo)致程序出現(xiàn)編譯或運(yùn)行錯誤。解決這類問題一般需要對程序進(jìn)行適配性修改,然后重新提請測試和部署,但是這種方式?jīng)]有在目標(biāo)環(huán)境中進(jìn)行充分測試,無法保證程序的正確性。解決方案是將生產(chǎn)環(huán)境下的測試、部署和發(fā)布活動納入到數(shù)值模擬軟件研發(fā)過程中,在開發(fā)的同時完成生產(chǎn)環(huán)境的測試,及時發(fā)現(xiàn)軟件在生產(chǎn)環(huán)境中遇到的問題或存在的缺陷。

    (4)一鍵式軟件安裝部署。完成軟件構(gòu)建后,將編譯生成的二進(jìn)制可執(zhí)行程序、用戶文檔及其依賴的第三方庫打包后供用戶使用。由于用戶環(huán)境配置不同,需要手工修改配置文件中的目錄結(jié)構(gòu)和環(huán)境配置信息,解析依賴關(guān)系與可執(zhí)行程序鏈接庫,并通過執(zhí)行程序檢查可用性。軟件越復(fù)雜,依賴關(guān)系越復(fù)雜,安裝部署所需時間越長,而且越容易出現(xiàn)錯誤。這對用戶來說并不友好,影響程序的推廣應(yīng)用。因此,構(gòu)建工具應(yīng)該可以支持用戶環(huán)境下依賴關(guān)系、安裝與配置環(huán)境變量的自動處理,簡化用戶部署難度。

    (5)全面記錄構(gòu)建日志和測試結(jié)果。數(shù)值模擬軟件開發(fā)涉及數(shù)學(xué)、物理、計算機(jī)等多學(xué)科領(lǐng)域,開發(fā)人員之間的知識背景不同,對軟件的理解差別很大。在軟件構(gòu)建和測試過程中發(fā)生錯誤時,無法快速定位錯誤是由環(huán)境配置、程序自身還是第三方依賴關(guān)系所引入,聯(lián)合調(diào)試難度大。因此,持續(xù)集成平臺需要將環(huán)境配置信息、編譯日志和測試結(jié)果全面記錄下來,并保存錯誤現(xiàn)場,便于開發(fā)人員分析和定位錯誤。

    為解決以上問題,調(diào)研幾款業(yè)內(nèi)知名的軟件構(gòu)建和部署工具,其功能對比見表1。

    Make是經(jīng)典的構(gòu)建工具之一,目前仍然活躍在軟件開發(fā)領(lǐng)域,但是當(dāng)應(yīng)用程序復(fù)雜程度和軟件依賴關(guān)系增加時,Makefile維護(hù)成本提升,導(dǎo)致Make更加難以調(diào)試。CMake是開源跨平臺構(gòu)建工具,能夠處理混合語言編譯,但暫不支持構(gòu)建環(huán)境和自動解析依賴等功能。MSBuild、Ant、Maven和Gradle的應(yīng)用領(lǐng)域主要針對Java或.NET語言,其中Gradle功能最為完善,可支持依賴解析、生命周期管理和構(gòu)建環(huán)境管理等功能[3-8],但其支持語言受限,無法滿足數(shù)值模擬領(lǐng)域多種編程語言混合編譯的需求。

    目前,尚未發(fā)現(xiàn)單一的工具軟件可以完全符合上述高性能數(shù)值模擬軟件構(gòu)建和部署的需求,因此,針對數(shù)值模擬軟件交付過程中存在的問題,借鑒DevOps思路[9],設(shè)計并實(shí)現(xiàn)一套面向數(shù)值模擬軟件的持續(xù)集成平臺。

    2 持續(xù)集成與測試平臺

    為解決前文提出的數(shù)值模擬軟件構(gòu)建和部署過程中存在的問題,設(shè)計實(shí)現(xiàn)一種面向高性能數(shù)值模擬軟件的持續(xù)集成平臺。持續(xù)集成是一種軟件開發(fā) ? 實(shí)踐活動,通過單元測試和集成測試,將本地開發(fā)創(chuàng)建的代碼更改提交到代碼倉庫中,觸發(fā)自動化的軟件構(gòu)建操作,包括代碼編譯、靜態(tài)代碼審查、測試覆蓋率檢查、自動化驗(yàn)收測試和軟件安裝包發(fā)布等,驗(yàn)證更改是否滿足質(zhì)量和正確性的要求,從而盡早地發(fā)現(xiàn)集成錯誤。[10]該平臺主要解決以下關(guān)鍵問題:(1)簡化從用戶需求到軟件產(chǎn)品發(fā)布的工作流程,盡早發(fā)現(xiàn)程序缺陷;(2)滿足多樣化目標(biāo)環(huán)境需求,實(shí)現(xiàn)環(huán)境的快速搭建與配置管理;(3)有效管理軟件依賴關(guān)系,增強(qiáng)軟件構(gòu)建部署能力。

    2.1 關(guān)鍵技術(shù)點(diǎn)和系統(tǒng)特色

    2.1.1 自動化通用流程設(shè)計

    針對傳統(tǒng)工具系統(tǒng)構(gòu)建流程繁瑣、用戶需求響應(yīng)不及時的問題,設(shè)計一套自動化軟件持續(xù)集成流程,盡量減少人工干預(yù)。該流程涉及產(chǎn)品發(fā)布的整個工作流,支持代碼靜態(tài)分析、編譯部署、驗(yàn)收測試、測試覆蓋率檢測和產(chǎn)品發(fā)布等過程的自動化,其工作流程見圖1。

    該流程的輸入是軟件源代碼,輸出是二進(jìn)制安裝包。該流程的基礎(chǔ)是通過版本控制工具統(tǒng)一管理源代碼,制定規(guī)范進(jìn)行分支、目錄和權(quán)限管理。當(dāng)研發(fā)人員收到用戶的需求或缺陷反饋后,對本地代碼進(jìn)行修改,并完成本地單元級、模塊級測試驗(yàn)證后,將源代碼提交到版本管理系統(tǒng)。當(dāng)版本管理系統(tǒng)檢查到源代碼倉庫的狀態(tài)發(fā)生變化后,自動或定時觸發(fā)集成服務(wù)器進(jìn)入構(gòu)建過程。持續(xù)集成系統(tǒng)通過任務(wù)形式將源代碼分發(fā)到指定從節(jié)點(diǎn)(按環(huán)境需求)進(jìn)行系統(tǒng)構(gòu)建和測試,具體包括代碼靜態(tài)審查、自動化測試、覆蓋率測試等。測試通過后將軟件編譯成二進(jìn)制安裝包,并將安裝包通過文件傳輸工具上傳至產(chǎn)品發(fā)布平臺或部署到目標(biāo)機(jī),通知用戶下載、安裝軟件產(chǎn)品。如果系統(tǒng)構(gòu)建失敗,則通過網(wǎng)頁的形式將報錯日志反饋到控制臺輸出界面,供研發(fā)人員快速跟蹤定位錯誤。

    2.1.2 基于模板快速配置構(gòu)建環(huán)境

    滿足多樣化目標(biāo)環(huán)境需求的關(guān)鍵是實(shí)現(xiàn)構(gòu)建環(huán)境的自動化搭建,并對環(huán)境進(jìn)行有效的版本控制。對虛擬化技術(shù)的前期調(diào)研發(fā)現(xiàn),應(yīng)用容器引擎技術(shù)能夠?qū)?gòu)建環(huán)境搭建的工作量最小化。

    應(yīng)用容器引擎將所需軟件及其依賴關(guān)系包進(jìn)一個可移植的容器中,支持向任何現(xiàn)有的Linux機(jī)器部署和遷移。容器是一組能夠隨處運(yùn)行的單元,對應(yīng)用程序及其關(guān)聯(lián)性進(jìn)行隔離,運(yùn)行時相互之間不影響。根據(jù)特定的用戶環(huán)境需求,容器引擎可通過環(huán)境構(gòu)建腳本快速創(chuàng)建容器環(huán)境。構(gòu)建腳本將全部環(huán)境配置命令組合形成文件模板,通過一條簡單的環(huán)境構(gòu)建命令即可實(shí)現(xiàn)容器化構(gòu)建環(huán)境的快速生成和批量創(chuàng)建。

    與虛擬機(jī)相比,容器化環(huán)境更加輕量化。當(dāng)出現(xiàn)新的構(gòu)建環(huán)境需求時,只需要簡單修改模板文件,即可實(shí)現(xiàn)快速定制,環(huán)境搭建時間由原來的幾小時縮短為幾分鐘。此外,這種方式便于開發(fā)人員與測試人員之間溝通迭代,通過交換環(huán)境構(gòu)建腳本可保證軟件執(zhí)行環(huán)境的一致性。

    2.1.3 聯(lián)動構(gòu)建機(jī)制管理依賴關(guān)系

    在數(shù)值模擬軟件研制過程中,存在2種較為常見的依賴關(guān)系,即庫依賴和組件依賴。庫依賴是指程序開發(fā)過程中所依賴的第三方軟件包,例如編譯器、MPI和數(shù)學(xué)庫等,這些軟件一般很少更新。組件依賴應(yīng)用程序所依賴的部分程序塊通常是自主研發(fā)的,需要頻繁更新。[10]

    對于庫依賴來說,由于不同軟件所用的第三方軟件包有所差異,在集成或部署時經(jīng)常遇到版本沖突、接口不兼容等問題。通過對所有產(chǎn)品庫依賴關(guān)系進(jìn)行梳理,基于軟件包管理工具建立統(tǒng)一的庫管理模式,可形成一套根據(jù)構(gòu)建環(huán)境分類的內(nèi)部發(fā)布平臺(軟件源)。開發(fā)人員只需要在原有構(gòu)建工具的基礎(chǔ)上進(jìn)行封裝,簡單編寫配置文件,明確構(gòu)建步驟和依賴關(guān)系,即可從內(nèi)部發(fā)布平臺(軟件源)自動解析獲取依賴,完成編譯和軟件打包等操作,具體產(chǎn)品構(gòu)建工作流程見圖2。

    對于組件依賴來說,當(dāng)某個組件被修改時,僅獨(dú)立編譯該組件,在集成時會影響相關(guān)組件的使用。針對這一問題,基于持續(xù)集成系統(tǒng)配置聯(lián)動構(gòu)建機(jī)制,即建立任務(wù)之間的前后順序管理,當(dāng)前一組件構(gòu)建成功即可自動觸發(fā)下一組件構(gòu)建,通過集成測試后,再將該應(yīng)用程序依賴的框架或庫整理打包并發(fā)布。

    統(tǒng)一的依賴庫管理模式與聯(lián)動構(gòu)建機(jī)制相結(jié)合,一方面可提供統(tǒng)一的第三方庫管理機(jī)制,有效管理庫版本,實(shí)現(xiàn)第三方庫依賴關(guān)系的自動解析;另一方面可有效管理組件之間的依賴關(guān)系和持續(xù)集成與測試組件之間的接口,避免組件版本不兼容引入的問題。

    2.2 持續(xù)集成方案設(shè)計

    按照第2.1節(jié)中的流程設(shè)計思路,基于持續(xù)集成服務(wù)器與版本控制系統(tǒng)之間的觸發(fā)機(jī)制,當(dāng)系統(tǒng)檢測到代碼更新時,持續(xù)集成服務(wù)器選擇指定的從節(jié)點(diǎn)作為構(gòu)建環(huán)境,在從節(jié)點(diǎn)上執(zhí)行持續(xù)集成配置腳本。配置腳本調(diào)用代碼檢測與軟件構(gòu)建相關(guān)的工具,實(shí)現(xiàn)環(huán)境清理、代碼靜態(tài)審查、軟件編譯、自動化測試、代碼覆蓋率檢測和軟件發(fā)布等操作。腳本執(zhí)行完成后,將構(gòu)建結(jié)果輸出到指定目錄,供持續(xù)集成服務(wù)器讀取和分析。持續(xù)集成服務(wù)器通過配置插件、讀取構(gòu)建和測試日志,將結(jié)果可視化輸出到web端界面。整個過程的實(shí)現(xiàn)主要依賴于配置腳本,通過修改配置腳本可以實(shí)現(xiàn)自定義流程裁剪和定制。持續(xù)集成平臺設(shè)計方案見圖3。

    2.3 持續(xù)集成和測試方案的實(shí)施

    選用Jenkins作為基礎(chǔ)持續(xù)集成服務(wù)器。與其他持續(xù)集成工具相比,Jenkins主要有2個優(yōu)點(diǎn):一是易于安裝配置,提供直觀靈活的web用戶界面,便于配置管理;二是具有強(qiáng)大的插件機(jī)制,可以顯示測試結(jié)果和構(gòu)建日志等反饋信息。[11-12]版本控制工具使用Subversion,用于存儲、追蹤目錄和文件的修改

    歷史。軟件包管理工具使用Conda,用于管理軟件依賴關(guān)系,可有效處理軟件產(chǎn)品之間的沖突。自動化測試工具使用自主研發(fā)的AutoBenchTest(簡寫為ABTest),適用于數(shù)值模擬軟件測試算例的串行和并行執(zhí)行,能夠自動生成測試報告和結(jié)果統(tǒng)計報表。

    基于以上設(shè)計方案和支撐工具,該平臺具體實(shí)現(xiàn)過程如下。

    2.3.1 基于Docker容器技術(shù)配置構(gòu)建環(huán)境

    采用Docker容器技術(shù)為持續(xù)集成服務(wù)器提供構(gòu)建環(huán)境。在Docker中構(gòu)建容器時,通過編寫Dockerfile腳本實(shí)現(xiàn)容器的快速生成。該Dockerfile包含創(chuàng)建鏡像所需要的全部指令,實(shí)現(xiàn)對網(wǎng)絡(luò)、訪問端口、編譯器、構(gòu)建環(huán)境、版本控制服務(wù)和其他依賴軟件的安裝配置?;谠揇ockerfile文件,僅執(zhí)行docker build命令即可一鍵式創(chuàng)建鏡像,同時自底向上打包軟件及其構(gòu)建環(huán)境。[13]這種方式能夠減少鏡像和容器的創(chuàng)建過程,簡化部署、方便系統(tǒng)升級。

    容器搭建完成后,持續(xù)集成服務(wù)器可以通過任務(wù)配置的方式選取相應(yīng)的Docker容器作為構(gòu)建環(huán)境執(zhí)行軟件編譯與測試。[14]當(dāng)任務(wù)執(zhí)行完成后,持續(xù)集成服務(wù)器生成容器并保存至Docker鏡像倉庫,便于后期環(huán)境恢復(fù)和錯誤定位?;贒ocker的環(huán)境配置方案見圖4。

    2.3.2 基于Conda工具實(shí)現(xiàn)自動化構(gòu)建

    Conda工具的實(shí)現(xiàn)機(jī)制主要包括遠(yuǎn)程服務(wù)器端和本地端2部分。對于遠(yuǎn)程服務(wù)器端來說,產(chǎn)品發(fā)布平臺主要用于統(tǒng)一管理所有軟件構(gòu)建所依賴的公共庫、第三方軟件和工具軟件等,以減少重復(fù)構(gòu)建的操作。對于本地端來說,面向數(shù)值模擬軟件的構(gòu)建和打包需求,可支撐軟件完成依賴解析和軟件編譯,最終生成二進(jìn)制安裝包。

    本地端的構(gòu)建自動化通過編寫Conda配置文件meta.yaml和build.sh腳本實(shí)現(xiàn)。build.sh是自動化編譯腳本,用于記錄軟件編譯步驟、需要設(shè)置的環(huán)境變量信息等內(nèi)容。該腳本是在程序原有的CMakelist/ Makefile上進(jìn)行一層封裝,不會對程序原有編譯方式造成影響。對用戶來說,該工具的使用和維護(hù)成本較小。meta.yaml提供指定遠(yuǎn)程源路徑、安裝包名稱、版本、源碼目錄、編譯/運(yùn)行時所依賴的軟件和版本等內(nèi)容。明確以上關(guān)鍵信息后,Conda工具通過讀取配置文件解析軟件依賴關(guān)系,從遠(yuǎn)程軟件源獲取安裝包并配置構(gòu)建環(huán)境,完成編譯并生成二進(jìn)制安裝包。

    2.3.3 編寫持續(xù)集成配置腳本

    持續(xù)集成配置腳本基于shell語言與Jenkins Pipeline語法編寫,主要包括版本檢出、代碼靜態(tài)檢查、軟件編譯、驗(yàn)收測試、覆蓋率檢測等5個部分。該腳本按照流程分階段組織,每個階段完成相應(yīng)的環(huán)境清理、工具調(diào)用、測試數(shù)據(jù)輸出、輸出數(shù)據(jù)處理和可視化等操作。

    此外,腳本盡可能地使用特定變量和相對目錄,規(guī)避不同軟件之間的個性化差異,從而形成持續(xù)集成配置腳本模板,可支持構(gòu)建任務(wù)的快速創(chuàng)建。

    2.3.4 基于Jenkins插件反饋構(gòu)建結(jié)果

    Jenkins提供豐富的二次開發(fā)接口和插件機(jī)制[15],能夠支持靜態(tài)審查、代碼量統(tǒng)計、自動化測試和測試覆蓋率結(jié)果可視化等操作,可直觀地向測試人員反饋評測結(jié)果。

    在插件管理界面安裝Cppcheck和Sloc插件,在配置界面填寫輸出文件目錄和文件格式等關(guān)鍵信息,讀取并分析XML形式的輸出文件,對結(jié)果進(jìn)行統(tǒng)計、分類并輸出詳細(xì)日志,完成靜態(tài)檢查和代碼量統(tǒng)計。以代碼靜態(tài)審查為例,其不僅能夠簡明扼要地反饋錯誤統(tǒng)計結(jié)果,而且能夠顯示錯誤詳細(xì)信息,包括靜態(tài)審查錯誤文件、行數(shù)、錯誤類型和日志等信息,便于研發(fā)人員及時解決程序中潛在的數(shù)組越界、內(nèi)存泄漏等問題。靜態(tài)審查錯誤日志實(shí)例見圖5。

    在軟件測試和覆蓋率統(tǒng)計方面,基于持續(xù)集成服務(wù)器提供的Publish Html插件,在配置界面明確測試報告生成目錄、網(wǎng)頁文件名稱和標(biāo)題等,Jenkins可將任務(wù)與工具生成的Html界面關(guān)聯(lián),并在任務(wù)主界面顯示測試算例執(zhí)行報表、測試覆蓋率檢測結(jié)果等。自動化測試報告實(shí)例見圖6。報告中明確給出測試環(huán)境信息、測試算例執(zhí)行狀態(tài)和統(tǒng)計信息,提供具體算例的執(zhí)行日志,便于定位錯誤。測試覆蓋率檢測報告實(shí)例見圖7。報告中不僅統(tǒng)計本次軟件測試中整體代碼行數(shù)與函數(shù)覆蓋率情況,而且能夠通過顏色明確標(biāo)識具體代碼行的執(zhí)行信息,便于研發(fā)人員進(jìn)一步完善測試算例。

    3 應(yīng)用效果

    該持續(xù)集成平臺用于支撐中物院高性能數(shù)值模擬軟件中心的產(chǎn)品化和應(yīng)用推廣工作。該平臺可實(shí)現(xiàn)產(chǎn)品構(gòu)建、測試和發(fā)布工作的自動化,已應(yīng)用于35款數(shù)值模擬軟件,完成2 100余例測試算例自動化測試,發(fā)布軟件產(chǎn)品3 000余次,產(chǎn)品交付周期相比之前縮短約75%,大幅提升產(chǎn)品構(gòu)建與交付效率。

    基于Dockerfile容器模板,該平臺可支持構(gòu)建環(huán)境的快速生成。目前,構(gòu)建環(huán)境覆蓋Centos、Redhat、Fedora和Suse等多種操作系統(tǒng)、編譯器和MPI版本,能夠滿足銀河、天河2號等典型高性能計算環(huán)境的產(chǎn)品部署需求。在產(chǎn)品發(fā)布后,用戶可一鍵式安裝部署,平臺自動解析軟件依賴和安裝與環(huán)境變量配置,降低軟件產(chǎn)品部署難度和使用成本。

    此外,針對軟件研發(fā)過程中的問題記錄和反饋需求,該平臺可實(shí)現(xiàn)構(gòu)建和測試日志全面輸出。對于單個軟件的構(gòu)建來說:一方面,該平臺能夠直觀地反饋階段執(zhí)行情況,記錄整個構(gòu)建任務(wù)中的操作步驟和報錯日志,并可視化輸出各個工具生成的數(shù)據(jù)文件;另一方面,該平臺能夠?qū)y試結(jié)果進(jìn)行統(tǒng)計分析,生成構(gòu)建過程趨勢圖(見圖8),有效監(jiān)控軟件開發(fā)過程數(shù)據(jù),促進(jìn)產(chǎn)品質(zhì)量持續(xù)提升。

    4 結(jié)束語

    基于Docker與Jenkins技術(shù)設(shè)計并實(shí)現(xiàn)面向數(shù)值模擬軟件的持續(xù)集成平臺。該平臺從數(shù)值模擬軟件面臨的實(shí)際應(yīng)用需求出發(fā),建立代碼靜態(tài)分析、依賴關(guān)系解析、軟件編譯、測試和部署等自動化工作流程,實(shí)現(xiàn)構(gòu)建環(huán)境的快速搭建和配置管理,詳細(xì)記錄軟件構(gòu)建日志和測試結(jié)果,便于研發(fā)團(tuán)隊及時發(fā)現(xiàn)軟件缺陷、快速分析定位問題。

    該平臺可大幅度縮短產(chǎn)品構(gòu)建、發(fā)布和交付周期,有效保障數(shù)值模擬軟件的產(chǎn)品化和推廣應(yīng)用。但是,該持續(xù)集成平臺未采用數(shù)據(jù)庫技術(shù)對測試數(shù)據(jù)統(tǒng)一管理。在下一步工作中,將深入開展測試數(shù)據(jù)管理和分析工作,記錄產(chǎn)品質(zhì)量變化趨勢,及時發(fā)現(xiàn)軟件中潛在的缺陷。

    參考文獻(xiàn):

    [1] 莫則堯, 裴文兵. 科學(xué)計算應(yīng)用程序探討[J]. 物理, 2009, 38(8): 552-558. DOI: 10.3321/j.issn:0379-4148.2009.08.004.

    [2] 田鴻運(yùn), 劉青凱, 成杰, 等. 一種面向高性能數(shù)值模擬軟件的自動化測試平臺[J]. 計算機(jī)工程與科學(xué), 2017, 39(11): 1980-1985. DOI: 10.3969/j.issn.1007-130X.2017.11.002.

    [3] 蔣祥剛. Make與Makefile初探[J]. 中文信息, 2002(8): 62-65.

    [4] HOFFMAN B, COLE D, VINES J. Software process for rapid development of HPC software using CMake[C]// Proceedings of 2009 DoD High Performance Computing Modernization Program Users Group Conference. San Diego: IEEE Press, 2009: 11873937. DOI: 10.1109/HPCMP-UGC.2009.62.

    [5] KAWALEROWICZ M, BERNTSON C. Continuous integration in .Net[M]. New York: Manning, 2011.

    [6] HATCHER E, LOUGHRAN S. 使用Ant進(jìn)行Java開發(fā)[M]. 北京: 電子工業(yè)出版社, 2005.

    [7] 董曉光, 喻濤. 使用Maven構(gòu)建Java項目[J]. 電子技術(shù)與軟件工程, 2014(10): 105.

    [8] BERGLUND T, MCCULLOUGH M. Building and testing with Gradle[M]. Boston: O′Reilly Media, 2011.

    [9] 陳能技, 付勇, 等. 大規(guī)模組織DevOps實(shí)踐[M]. 北京: 電子工業(yè)出版社, 2018.

    [10] 成奮華, 金敏. 基于敏捷過程的IT項目范圍管理的研究與應(yīng)用[J]. 計算機(jī)技術(shù)與發(fā)展, 2010, 20(10): 232-236. DOI: 10.3969/j.issn.1673-629X.2010.10.056.

    [11] HUMBLE J, FARLEY D. Continuous delivery: Reliable software releases through build, test, and deployment automation[M]. Alaska: Addison-Wesley Professional, 2010.

    [12] DUVALL P M, MATYAS S, Glover A. 持續(xù)集成軟件質(zhì)量改進(jìn)和風(fēng)險降低之道[M]. 北京: 電子工業(yè)出版社, 2012.

    [13] MERKEL D. Docker: Lightweight Linux containers for consistent development and deployment[J]. Linux Journal, 2014, 2014(239): 2.

    [14] 張兆晨, 羅鐵堅. CCI: 一種基于容器化的持續(xù)集成系統(tǒng)[J]. 中國科學(xué)院大學(xué)學(xué)報, 2018, 35(4): 569-575. DOI: 10.7523/j.issn.2095-6134.2018.04.021.

    [15] 劉巧玲, 范冰冰, 黃興平. 基于Hudson的持續(xù)集成研究和應(yīng)用[J]. 計算機(jī)系統(tǒng)應(yīng)用, 2010, 19(12): 151-154.

    (編輯 武曉英)

    猜你喜歡
    軟件測試
    軟件測試方向人才培養(yǎng)“1+X”融合研究
    基于OBE的軟件測試課程教學(xué)改革探索
    航天軟件測試模型構(gòu)建與應(yīng)用
    軟件(2020年3期)2020-04-20 01:45:34
    基于MBD模型自動生成測試用例的軟件測試方法
    計算機(jī)軟件測試方法的研究
    電子測試(2018年14期)2018-09-26 06:05:06
    EXCEL和VBA實(shí)現(xiàn)軟件測試記錄管理
    電子制作(2018年16期)2018-09-26 03:27:18
    關(guān)于軟件測試技術(shù)應(yīng)用與發(fā)展趨勢研究
    電子測試(2017年15期)2017-12-18 07:19:20
    一種航空機(jī)載軟件測試項目的進(jìn)度改進(jìn)模型
    電子測試(2017年12期)2017-12-18 06:36:14
    軍用軟件測試文檔生成設(shè)計與實(shí)現(xiàn)
    電子測試(2017年12期)2017-12-18 06:35:35
    軟件測試工程化模型及應(yīng)用研究
    色综合欧美亚洲国产小说| 亚洲成av人片免费观看| 亚洲人成电影免费在线| 伦理电影免费视频| 亚洲最大成人中文| 国产三级在线视频| 19禁男女啪啪无遮挡网站| 久久中文看片网| 久久久久久大精品| 久久九九热精品免费| 日本三级黄在线观看| 香蕉久久夜色| 亚洲国产精品999在线| a级毛片a级免费在线| 久久久国产成人免费| 亚洲第一电影网av| 成人国产综合亚洲| 国内揄拍国产精品人妻在线 | 亚洲国产欧美一区二区综合| 欧美另类亚洲清纯唯美| 女性被躁到高潮视频| 国产野战对白在线观看| 久久中文字幕一级| 在线看三级毛片| 国产精品野战在线观看| 嫩草影视91久久| 日韩三级视频一区二区三区| 黄色片一级片一级黄色片| 怎么达到女性高潮| 91字幕亚洲| 亚洲精品美女久久av网站| 国产精华一区二区三区| 精品国产乱子伦一区二区三区| 一级a爱视频在线免费观看| 一a级毛片在线观看| 久久久精品欧美日韩精品| 在线观看日韩欧美| 91在线观看av| 天天躁狠狠躁夜夜躁狠狠躁| 丝袜美腿诱惑在线| av片东京热男人的天堂| 欧美 亚洲 国产 日韩一| 人人妻人人澡欧美一区二区| videosex国产| 十分钟在线观看高清视频www| 亚洲国产欧美网| 嫩草影视91久久| 欧美日韩中文字幕国产精品一区二区三区| tocl精华| 一级毛片高清免费大全| 村上凉子中文字幕在线| cao死你这个sao货| 国产精品久久电影中文字幕| 亚洲一区中文字幕在线| 他把我摸到了高潮在线观看| 最近最新免费中文字幕在线| 国产精品一区二区免费欧美| 日本免费一区二区三区高清不卡| 老汉色av国产亚洲站长工具| 99热6这里只有精品| 亚洲av电影不卡..在线观看| 中文在线观看免费www的网站 | 一级毛片精品| 搞女人的毛片| 亚洲一区二区三区色噜噜| 日韩欧美国产一区二区入口| 亚洲第一av免费看| 免费电影在线观看免费观看| 亚洲狠狠婷婷综合久久图片| 一本久久中文字幕| 国内精品久久久久久久电影| 精品日产1卡2卡| 亚洲欧洲精品一区二区精品久久久| 久久国产精品人妻蜜桃| 久久精品亚洲精品国产色婷小说| 侵犯人妻中文字幕一二三四区| 精品国产超薄肉色丝袜足j| 午夜福利高清视频| 两个人免费观看高清视频| 国产精品免费一区二区三区在线| 久久中文字幕一级| 久久精品91无色码中文字幕| 三级毛片av免费| 成熟少妇高潮喷水视频| 真人做人爱边吃奶动态| 日本黄色视频三级网站网址| 国产成年人精品一区二区| 大香蕉久久成人网| 日日爽夜夜爽网站| 亚洲成人精品中文字幕电影| 母亲3免费完整高清在线观看| 欧美中文综合在线视频| 亚洲国产欧美日韩在线播放| 日韩视频一区二区在线观看| 一卡2卡三卡四卡精品乱码亚洲| 女性被躁到高潮视频| 久久精品夜夜夜夜夜久久蜜豆 | tocl精华| 看黄色毛片网站| av中文乱码字幕在线| 国产亚洲精品久久久久5区| 老司机午夜福利在线观看视频| 成人永久免费在线观看视频| 国产蜜桃级精品一区二区三区| 欧美成人一区二区免费高清观看 | 99久久综合精品五月天人人| 少妇熟女aⅴ在线视频| 久久狼人影院| 欧美乱妇无乱码| 一级毛片女人18水好多| 精品人妻1区二区| 欧美激情高清一区二区三区| 天堂影院成人在线观看| 精品电影一区二区在线| 18禁美女被吸乳视频| 精品久久久久久成人av| 亚洲国产欧美日韩在线播放| 18禁美女被吸乳视频| 午夜久久久在线观看| 精品不卡国产一区二区三区| 99热只有精品国产| 欧美色欧美亚洲另类二区| 成人永久免费在线观看视频| 久久精品夜夜夜夜夜久久蜜豆 | 久久久精品国产亚洲av高清涩受| 国产熟女xx| 在线视频色国产色| 久久九九热精品免费| 日日爽夜夜爽网站| 在线观看一区二区三区| 一级作爱视频免费观看| 9191精品国产免费久久| 美女免费视频网站| 十八禁人妻一区二区| 三级毛片av免费| 亚洲国产日韩欧美精品在线观看 | 黄色丝袜av网址大全| 精品一区二区三区视频在线观看免费| 久久人妻福利社区极品人妻图片| 法律面前人人平等表现在哪些方面| 女同久久另类99精品国产91| 国产午夜精品久久久久久| x7x7x7水蜜桃| 精品福利观看| 琪琪午夜伦伦电影理论片6080| 国产97色在线日韩免费| 国产视频一区二区在线看| 天堂动漫精品| 欧美丝袜亚洲另类 | 日韩三级视频一区二区三区| 熟女少妇亚洲综合色aaa.| 精品少妇一区二区三区视频日本电影| 久久香蕉国产精品| 欧美另类亚洲清纯唯美| 亚洲专区中文字幕在线| 亚洲国产精品成人综合色| 高清在线国产一区| 99久久久亚洲精品蜜臀av| 一个人免费在线观看的高清视频| 国产激情久久老熟女| 国产午夜福利久久久久久| 视频区欧美日本亚洲| 在线av久久热| 亚洲精品国产区一区二| 制服丝袜大香蕉在线| 国产精品永久免费网站| 999久久久精品免费观看国产| 国产亚洲欧美在线一区二区| 亚洲avbb在线观看| 日韩免费av在线播放| 亚洲欧美一区二区三区黑人| 欧美大码av| 嫩草影视91久久| 大型av网站在线播放| 精品第一国产精品| 亚洲av成人不卡在线观看播放网| 欧美成人一区二区免费高清观看 | 制服人妻中文乱码| 日韩欧美国产一区二区入口| a在线观看视频网站| 看片在线看免费视频| 亚洲国产毛片av蜜桃av| 精品欧美国产一区二区三| 好看av亚洲va欧美ⅴa在| av在线播放免费不卡| 久久性视频一级片| 亚洲va日本ⅴa欧美va伊人久久| 他把我摸到了高潮在线观看| 女人被狂操c到高潮| 亚洲精品一卡2卡三卡4卡5卡| 波多野结衣高清作品| 97超级碰碰碰精品色视频在线观看| 成人国产综合亚洲| 亚洲av日韩精品久久久久久密| 久久久久久亚洲精品国产蜜桃av| 亚洲精品国产区一区二| 免费搜索国产男女视频| 在线国产一区二区在线| 免费电影在线观看免费观看| 少妇的丰满在线观看| 午夜两性在线视频| 国产伦人伦偷精品视频| 99精品在免费线老司机午夜| 午夜福利一区二区在线看| 可以在线观看的亚洲视频| 岛国在线观看网站| 久久久精品欧美日韩精品| 国内久久婷婷六月综合欲色啪| 亚洲成人久久性| 狠狠狠狠99中文字幕| 午夜免费鲁丝| av欧美777| 欧美人与性动交α欧美精品济南到| 日本熟妇午夜| 亚洲精品粉嫩美女一区| 欧美大码av| 国产亚洲精品第一综合不卡| 男人操女人黄网站| 亚洲五月色婷婷综合| 久久久国产精品麻豆| 亚洲avbb在线观看| 亚洲自拍偷在线| 俺也久久电影网| 国产熟女xx| 精品乱码久久久久久99久播| 亚洲avbb在线观看| 久久久国产欧美日韩av| 亚洲一卡2卡3卡4卡5卡精品中文| 婷婷精品国产亚洲av| av有码第一页| 一本精品99久久精品77| 男人舔女人下体高潮全视频| 十分钟在线观看高清视频www| 精品一区二区三区视频在线观看免费| 亚洲国产欧美一区二区综合| 两性午夜刺激爽爽歪歪视频在线观看 | 999久久久精品免费观看国产| 免费观看人在逋| 国产精品永久免费网站| 国产真人三级小视频在线观看| 在线观看免费午夜福利视频| 在线观看www视频免费| 久久人妻福利社区极品人妻图片| 国产激情偷乱视频一区二区| 免费在线观看完整版高清| 国产区一区二久久| 久久久久久九九精品二区国产 | 熟女少妇亚洲综合色aaa.| 大型黄色视频在线免费观看| 大香蕉久久成人网| 少妇 在线观看| 日韩视频一区二区在线观看| 国产成人av激情在线播放| 99re在线观看精品视频| 桃色一区二区三区在线观看| 成人国产一区最新在线观看| 久久久国产成人免费| 中文字幕精品免费在线观看视频| 男人舔女人下体高潮全视频| 国产精品久久视频播放| 欧美乱妇无乱码| 亚洲av成人不卡在线观看播放网| 中文亚洲av片在线观看爽| 久久香蕉精品热| 美女午夜性视频免费| 久久久久久久午夜电影| 久久亚洲真实| 99精品久久久久人妻精品| 国产成人欧美在线观看| 最新美女视频免费是黄的| 搡老熟女国产l中国老女人| 一边摸一边做爽爽视频免费| 精品久久久久久,| 国产精品九九99| 少妇裸体淫交视频免费看高清 | 国产不卡一卡二| 亚洲一码二码三码区别大吗| 男人操女人黄网站| 亚洲一区中文字幕在线| 国产亚洲欧美在线一区二区| 免费看十八禁软件| 亚洲天堂国产精品一区在线| 变态另类成人亚洲欧美熟女| 国产一区二区在线av高清观看| 日本撒尿小便嘘嘘汇集6| 亚洲av五月六月丁香网| 欧美在线黄色| 两个人视频免费观看高清| 老司机午夜十八禁免费视频| 国产精品 欧美亚洲| 亚洲精品一卡2卡三卡4卡5卡| АⅤ资源中文在线天堂| 中文字幕人妻熟女乱码| 成人永久免费在线观看视频| 美女免费视频网站| 久久亚洲真实| 国产人伦9x9x在线观看| 国产午夜福利久久久久久| 宅男免费午夜| 麻豆av在线久日| 一级作爱视频免费观看| 老司机深夜福利视频在线观看| 日本五十路高清| 亚洲国产精品成人综合色| 伦理电影免费视频| 欧美亚洲日本最大视频资源| videosex国产| 精品久久蜜臀av无| 精品不卡国产一区二区三区| 长腿黑丝高跟| bbb黄色大片| 又黄又粗又硬又大视频| 精华霜和精华液先用哪个| 亚洲精华国产精华精| 欧美一级a爱片免费观看看 | 国产精品综合久久久久久久免费| videosex国产| xxx96com| 亚洲,欧美精品.| 日本三级黄在线观看| 欧美在线黄色| 亚洲精品国产一区二区精华液| 波多野结衣av一区二区av| 99久久国产精品久久久| 欧美又色又爽又黄视频| 精品一区二区三区四区五区乱码| av天堂在线播放| 国产成人av教育| 成人av一区二区三区在线看| 两性夫妻黄色片| 久久香蕉精品热| 亚洲av电影在线进入| 亚洲精品国产一区二区精华液| 国产午夜福利久久久久久| 天天添夜夜摸| 黑人欧美特级aaaaaa片| 午夜福利在线在线| 亚洲精品久久国产高清桃花| 欧美日本视频| 久久中文看片网| 免费在线观看亚洲国产| 日本黄色视频三级网站网址| 欧美激情高清一区二区三区| 国内精品久久久久精免费| 午夜福利18| 午夜福利在线观看吧| 亚洲av中文字字幕乱码综合 | 婷婷丁香在线五月| 久久久久久九九精品二区国产 | 91国产中文字幕| 中文资源天堂在线| 丰满的人妻完整版| 99久久国产精品久久久| 欧美成人午夜精品| 欧美日韩亚洲综合一区二区三区_| 校园春色视频在线观看| 男人舔奶头视频| 狠狠狠狠99中文字幕| 国产精品一区二区免费欧美| 国产真人三级小视频在线观看| 欧美成狂野欧美在线观看| 国产伦在线观看视频一区| 午夜免费观看网址| 少妇的丰满在线观看| 在线观看免费视频日本深夜| 亚洲无线在线观看| 色尼玛亚洲综合影院| 精品电影一区二区在线| 日韩大码丰满熟妇| 无限看片的www在线观看| 久久久久久国产a免费观看| 日日爽夜夜爽网站| 一个人免费在线观看的高清视频| 好看av亚洲va欧美ⅴa在| 欧美性猛交╳xxx乱大交人| 久久精品国产综合久久久| 亚洲av电影在线进入| 亚洲国产欧美网| 国产一区二区三区在线臀色熟女| 亚洲一区二区三区不卡视频| 香蕉丝袜av| 女人爽到高潮嗷嗷叫在线视频| 叶爱在线成人免费视频播放| 色婷婷久久久亚洲欧美| 亚洲精华国产精华精| 一二三四在线观看免费中文在| 母亲3免费完整高清在线观看| 成人国产综合亚洲| 久久精品成人免费网站| 国产一级毛片七仙女欲春2 | 国产成人系列免费观看| 亚洲精品国产一区二区精华液| 一区福利在线观看| 亚洲第一电影网av| 亚洲成av片中文字幕在线观看| 两个人看的免费小视频| 亚洲熟妇中文字幕五十中出| 日日爽夜夜爽网站| 极品教师在线免费播放| 色婷婷久久久亚洲欧美| 欧美成人一区二区免费高清观看 | www日本在线高清视频| 国产成人精品无人区| 午夜激情av网站| 一级片免费观看大全| av免费在线观看网站| 欧美成人一区二区免费高清观看 | 又黄又爽又免费观看的视频| 午夜福利在线观看吧| 午夜两性在线视频| 午夜精品久久久久久毛片777| 国内少妇人妻偷人精品xxx网站 | 久久午夜亚洲精品久久| 午夜视频精品福利| 桃色一区二区三区在线观看| 国产又色又爽无遮挡免费看| 国产人伦9x9x在线观看| 国产av不卡久久| 一级毛片精品| 久久中文字幕一级| 午夜激情av网站| 久久久久国内视频| 999久久久精品免费观看国产| 亚洲一卡2卡3卡4卡5卡精品中文| 人人妻,人人澡人人爽秒播| 欧美丝袜亚洲另类 | 国产精品九九99| 亚洲国产欧美网| 免费观看人在逋| 女性被躁到高潮视频| a级毛片在线看网站| 麻豆成人av在线观看| a在线观看视频网站| 欧美亚洲日本最大视频资源| 国内精品久久久久久久电影| 啦啦啦免费观看视频1| svipshipincom国产片| 宅男免费午夜| 麻豆一二三区av精品| 一个人免费在线观看的高清视频| 国产精品乱码一区二三区的特点| 国产成人欧美| 麻豆成人午夜福利视频| 亚洲国产欧美日韩在线播放| 亚洲成a人片在线一区二区| 国产在线观看jvid| 天堂影院成人在线观看| 亚洲av成人av| 中文资源天堂在线| 老鸭窝网址在线观看| 一边摸一边做爽爽视频免费| 操出白浆在线播放| 成人三级黄色视频| 国产精品永久免费网站| 亚洲熟妇熟女久久| 亚洲专区字幕在线| 亚洲五月天丁香| 亚洲三区欧美一区| 国产极品粉嫩免费观看在线| 波多野结衣av一区二区av| 日韩欧美在线二视频| 日本 av在线| 人人澡人人妻人| 日韩三级视频一区二区三区| 亚洲国产日韩欧美精品在线观看 | 成人特级黄色片久久久久久久| 久9热在线精品视频| 午夜福利在线在线| 欧美成人免费av一区二区三区| 久久亚洲精品不卡| 免费在线观看日本一区| 欧美日韩亚洲综合一区二区三区_| 亚洲国产精品合色在线| 久久精品成人免费网站| 国产爱豆传媒在线观看 | 久久精品亚洲精品国产色婷小说| 欧美黑人巨大hd| 熟女电影av网| 免费在线观看成人毛片| 日本 av在线| 91老司机精品| 亚洲av电影在线进入| 岛国在线观看网站| 香蕉国产在线看| 久久久久亚洲av毛片大全| 婷婷丁香在线五月| 亚洲av美国av| 91在线观看av| 精品久久久久久久末码| 欧美三级亚洲精品| 两性夫妻黄色片| 精品国产超薄肉色丝袜足j| 无人区码免费观看不卡| 日韩 欧美 亚洲 中文字幕| xxx96com| 亚洲九九香蕉| 少妇 在线观看| 国产精品美女特级片免费视频播放器 | 中文字幕最新亚洲高清| 久久香蕉国产精品| 久久久久国产精品人妻aⅴ院| 久久九九热精品免费| 亚洲精品一区av在线观看| 欧美国产日韩亚洲一区| 色综合站精品国产| 国产乱人伦免费视频| 午夜精品久久久久久毛片777| 亚洲国产毛片av蜜桃av| 亚洲在线自拍视频| 丝袜美腿诱惑在线| 亚洲三区欧美一区| e午夜精品久久久久久久| 他把我摸到了高潮在线观看| 精品卡一卡二卡四卡免费| 老鸭窝网址在线观看| 国产爱豆传媒在线观看 | 国产乱人伦免费视频| 国产真实乱freesex| 国产真人三级小视频在线观看| 国产成人av激情在线播放| 欧美激情高清一区二区三区| 精品国产亚洲在线| 久久精品国产99精品国产亚洲性色| 免费电影在线观看免费观看| 女人爽到高潮嗷嗷叫在线视频| 丝袜人妻中文字幕| 2021天堂中文幕一二区在线观 | 国产精品爽爽va在线观看网站 | 精品免费久久久久久久清纯| 亚洲精品在线美女| 亚洲成国产人片在线观看| 久久久久久久久久黄片| 国产成+人综合+亚洲专区| 久久久久国内视频| 男女午夜视频在线观看| 九色国产91popny在线| 日韩视频一区二区在线观看| 在线观看66精品国产| 亚洲人成伊人成综合网2020| 1024香蕉在线观看| 国产成+人综合+亚洲专区| 青草久久国产| 亚洲成人精品中文字幕电影| 亚洲在线自拍视频| а√天堂www在线а√下载| 丝袜在线中文字幕| 熟女少妇亚洲综合色aaa.| 美女高潮到喷水免费观看| 国产精品国产高清国产av| 欧美日韩福利视频一区二区| 在线观看一区二区三区| 一级毛片高清免费大全| 一边摸一边抽搐一进一小说| 国产三级在线视频| 夜夜躁狠狠躁天天躁| 国产黄色小视频在线观看| 999精品在线视频| 成人亚洲精品av一区二区| 久久久久久国产a免费观看| av免费在线观看网站| x7x7x7水蜜桃| 欧美黄色片欧美黄色片| 日本熟妇午夜| 麻豆成人午夜福利视频| 欧美黑人精品巨大| 久久 成人 亚洲| 男女视频在线观看网站免费 | 亚洲狠狠婷婷综合久久图片| 一级黄色大片毛片| 日韩一卡2卡3卡4卡2021年| 久久精品国产清高在天天线| 国产精品亚洲美女久久久| 国产色视频综合| 中文字幕人成人乱码亚洲影| 亚洲精品av麻豆狂野| 精品久久久久久久末码| 欧美日本亚洲视频在线播放| 精品一区二区三区av网在线观看| а√天堂www在线а√下载| 日韩免费av在线播放| 正在播放国产对白刺激| 俄罗斯特黄特色一大片| 久久精品91蜜桃| 成熟少妇高潮喷水视频| videosex国产| 成人特级黄色片久久久久久久| 99久久综合精品五月天人人| 久久久水蜜桃国产精品网| 一级a爱视频在线免费观看| 在线观看免费午夜福利视频| 日韩成人在线观看一区二区三区| 国产精品 欧美亚洲| 中文字幕人妻丝袜一区二区| 91老司机精品| 国产精品日韩av在线免费观看| 9191精品国产免费久久| 精品久久久久久久末码| 天天躁夜夜躁狠狠躁躁| 久99久视频精品免费| 国产亚洲精品第一综合不卡| 中文在线观看免费www的网站 | 高清毛片免费观看视频网站| 波多野结衣高清无吗| 国产精品 欧美亚洲| 久久精品国产清高在天天线| 9191精品国产免费久久| 国产精品久久视频播放| 久久精品人妻少妇| 国产精品 欧美亚洲| 亚洲精品美女久久av网站| 亚洲午夜理论影院| 欧美zozozo另类| 老司机靠b影院| 99久久综合精品五月天人人| 十八禁网站免费在线|