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

    基于DevOps能力模型的持續(xù)集成方法

    2018-07-19 12:53:42昕,郭勇,王
    計算機工程與設(shè)計 2018年7期
    關(guān)鍵詞:測試用例代碼可視化

    董 昕,郭 勇,王 杰

    (1.成都工業(yè)學(xué)院 計算機工程學(xué)院,四川 成都 611730;2.摩托羅拉系統(tǒng)(中國)有限公司成都分公司,四川 成都 611731;3.中國電子科技集團第29研究所,四川 成都 610036)

    0 引 言

    近年來,軟件的規(guī)模越來越大,復(fù)雜度也越來越高。較大規(guī)模和較高復(fù)雜度使集成變成了一件困難的事情,軟件項目團隊極可能會遇到下面的一些問題:

    (1)研發(fā)人員要等很長時間才能看到自己提交的結(jié)果。如果研發(fā)人員嚴(yán)格遵守“頻繁提交”原則,則上百人的大型研發(fā)團隊將一直處于提交狀態(tài),使集成服務(wù)器始終繁忙,某位研發(fā)人員必須等待其它研發(fā)人員提交的構(gòu)建通過后,才能知道自己的提交是否構(gòu)建成功、是否測試通過。

    (2)一旦構(gòu)建失敗,研發(fā)人員將花費較長時間才知道這次失敗是否與自己提交的改動相關(guān)。

    (3)測試人員不知道在哪里拿對應(yīng)的構(gòu)建來進行測試。

    (4)項目經(jīng)理不確定測試人員是否在正確的運行環(huán)境上運行了正確的版本等。因此找到一種高效的等解決上述問題的持續(xù)集成方法就成了當(dāng)務(wù)之急。

    文獻[1]提出可將代碼靜態(tài)分析工具Klocwork引入到持續(xù)集成系統(tǒng)中提高代碼質(zhì)量,但項目實踐發(fā)現(xiàn)Klocwork并不適合處理快節(jié)奏大代碼庫的持續(xù)集成系統(tǒng)。文獻[2]提出使用開源的托管平臺GitHub提高版本控制效率,但其只支持Git作為唯一的版本庫格式進行托管。文獻[3]提出利用NUnit單元測試框架實現(xiàn)自動化單元測試。上述文獻基于特定集成環(huán)境提出了某些方面問題的解決方案,但是沒有從系統(tǒng)層次解決大型軟件項目持續(xù)集成的根本問題。

    本文在上述文獻研究及項目實踐基礎(chǔ)上,提出了基于DevOps能力模型的大規(guī)模持續(xù)集成方法,該方法從自動化、質(zhì)量保障及可視化3個維度出發(fā),通過自動化使軟件構(gòu)建、測試、發(fā)布整個流程更加頻繁、快捷及可靠,通過可視化使項目各項數(shù)據(jù)形象直觀,加強軟件開發(fā)人員、質(zhì)量保障人員和運營維護人員的溝通合作。

    1 RM項目持續(xù)集成系統(tǒng)

    作為一種重要的軟件開發(fā)實踐,持續(xù)集成要求團隊研發(fā)成員頻繁集成其工作,通常要求每個成員每天至少完成一次集成。每一次集成都必須通過自動化構(gòu)建(包含編譯、發(fā)布、自動化測試)驗證,使得集成錯誤及早被發(fā)現(xiàn)[2]。本文給出了一種基于DevOps能力模型的以團隊基礎(chǔ)服務(wù)器(team foundation sever,TFS)為核心的持續(xù)集成的方法,并在數(shù)字集群通信系統(tǒng)對講機管理軟件(radio management,RM)開發(fā)項目中應(yīng)用并得到了驗證。

    數(shù)字集群通信系統(tǒng)廣泛應(yīng)用于公共安全、交通運輸、能源和物流等領(lǐng)域。作為數(shù)字集群通信系統(tǒng)的手持設(shè)備,對講機為無線用戶提供語音和數(shù)據(jù)服務(wù),在各行各業(yè)的指揮調(diào)度中發(fā)揮了重要作用。對講機管理系統(tǒng)(Radio Mana-gement,RM)為對講機用戶提供了計算機和對講機之間的編程接口。RM允許客戶修改對講機配置文件,使客戶能夠輕松地管理和更新對講機的軟件。該項目有下面幾個特點:

    (1)項目團隊比較分散,除了中國之外,歐洲和美國也有部分開發(fā)人員;

    (2)項目規(guī)模較大,有超過100人參與其中,代碼行數(shù)達到近百萬行;

    (3)項目關(guān)系復(fù)雜,影響面較廣,涉及到固件(firmware)、多條產(chǎn)品線、軟件遺留系統(tǒng)的重用和架構(gòu)的重構(gòu)。

    (4)也是最重要的一點,在采用DevOps能力模型方法之前,RM項目幾乎沒有自動化構(gòu)建、測試及版本控制技術(shù),編碼、構(gòu)建、集成、測試、交付等還處于各自為政的狀態(tài),沒有打通整個項目鏈條。

    RM系統(tǒng)需要支持及兼容數(shù)款主流對講機型號,而且未采用持續(xù)集成方法,一個主版本通常需要約一百名工程師歷時近一年時間開發(fā)測試交付完成,效率較低。

    1.1 常用的持續(xù)集成平臺

    軟件開發(fā)生命周期過程隨著時間的推移而演變。開發(fā)團隊意識到定期構(gòu)建的重要性,開始了每周構(gòu)建。然后,當(dāng)每日構(gòu)建開始時,構(gòu)建變得越來越頻繁,甚至出現(xiàn)了每小時構(gòu)建。由于頻繁構(gòu)建的好處變得更加明顯,團隊需要更多的構(gòu)建。這是因為軟件開發(fā)的持續(xù)集成使軟件團隊獲得正式、可靠的構(gòu)建。因此,高效持續(xù)集成的關(guān)鍵實踐為以下幾點:只需要維護一個統(tǒng)一的源碼庫;支持自動化構(gòu)建;自行測試每次構(gòu)建[3];每位研發(fā)人員每天都必須將代碼提交到主線上;每次提交后主線必須在集成服務(wù)器上被重新構(gòu)建;確保構(gòu)建快速便捷;測試在模擬環(huán)境中進行[4];每位研發(fā)人員都能容易得到最新的可執(zhí)行文件;每位研發(fā)人員都能觀察到進度;部署自動化等[5]。由于開發(fā)人員和測試人員進行持續(xù)的同步工作,要求他們互相之間要不斷地更新和反饋消息,了解軟件質(zhì)量的實時狀況和快速地修復(fù)缺陷[6]?;谶@點,持續(xù)集成的自動化將發(fā)揮巨大的作用。

    現(xiàn)階段持續(xù)集成自動化平臺較多,比如CruiseControl、Jenkins和Integrity等,百花齊放,各有千秋[7]。本文提出的基于DevOps能力模型持續(xù)集成新方法以微軟應(yīng)用程序生命周期管理服務(wù)器團隊基礎(chǔ)服務(wù)器即team foundation server(TFS)為核心,提供源代碼管理、報告、需求管理、項目管理、自動構(gòu)建、實驗室管理、測試和發(fā)布管理等功能,覆蓋了整個應(yīng)用程序生命周期,將在第二章詳細介紹該新方法的特點。

    1.2 基于DevOps能力模型的持續(xù)集成

    DevOps能力模型如圖1所示包含了3個部分:開發(fā)、測試和運維,它是三者的交集。DevOps能力模型的目的是通過高度自動化工具與流程,實現(xiàn)更好地優(yōu)化軟件開發(fā)(development,Dev)、測試(quality assurance,QA)、運維(operations,Ops)流程,開發(fā)運維一體化,使軟件構(gòu)建、測試、發(fā)布、運營、維護乃至整個生命周期管理更加快捷、頻繁和可靠。

    圖1 DevOps能力模型

    DevOps能力模型有以下幾點優(yōu)勢:

    (1)代碼的提交直接觸發(fā)構(gòu)建及測試:消除等待時間,快速反饋軟件質(zhì)量;

    (2)每個變化對應(yīng)一個交付管道:使問題定位和調(diào)試變得簡單;

    (3)開發(fā)流程全程高效自動化:穩(wěn)定、快速、可預(yù)測交付結(jié)果;

    (4)自動化回歸測試持續(xù)進行:提高軟件交付質(zhì)量;

    (5)軟硬件設(shè)施和資源共享并按需提供分配:資源利用率最大化。

    該模型聚焦于在一個大型組織內(nèi)實施持續(xù)集成必須遵循自動化、質(zhì)量保證、可視化、持續(xù)交付、技術(shù)運營、組織文化等方面所需要的能力,有的放矢地解決前面提到的各種問題并持續(xù)改進符合企業(yè)特點的持續(xù)集成系統(tǒng)。可以從中選取3~4點,作為能力模型的維度,并在每個維度上深化,持續(xù)改進使能力提升。該模型可根據(jù)相應(yīng)得分而分級(L1-L5,L1為最低級入門級,L5為最高級極致級),如表1所示。表中CI能力得分滿分為100,分3個維度打分,分別是自動化、質(zhì)量保障和可視化,各項滿分為35、35和30分。總分低于20分即為L0無序級,不低于20分但低于40分即為L1入門級,不低于40分但低于60分即為L2進階級,不低于60分但低于80分即為L3高階級,不低于80分但低于90分即為L4精通級,不低于90分但低于100分即為L5極致級。

    表1 DevOps能力模型

    文中持續(xù)集成方法的實施和改進會緊扣DevOps能力模型的這些維度來描寫:自動化、質(zhì)量保障及測試、可視化,從這3個維度分別詳細闡述基于DevOps能力模型的持續(xù)集成新方法的特點及其在RM項目中的具體應(yīng)用及成效。

    2 RM項目持續(xù)集成模型的3個維度

    2.1 自動化

    DevOps能力模型中第一個維度是自動化,其中最重要的是如何實現(xiàn)自動化開發(fā)及構(gòu)建(Dev)。如何減少編譯時間?如何增加每天的集成次數(shù)和編譯次數(shù)?如何創(chuàng)建一個穩(wěn)定的可以隨時發(fā)布的應(yīng)用程序代碼庫?如何實現(xiàn)自動化集成并且自動回滾有缺陷的代碼?為了回答這些問題,RM項目找到的解決方案是基于DevOps能力模型的自動化構(gòu)建系統(tǒng)。圖2顯示了RM項目的構(gòu)建系統(tǒng)的拓撲結(jié)構(gòu)。圖中構(gòu)建控制器(build controller)存儲和管理一個或多個構(gòu)建代理的服務(wù)。它將處理器密集型工作(如編譯代碼或運行測試)分發(fā)到池中的各個構(gòu)建代理進行處理。構(gòu)建控制器處理工作流,通常執(zhí)行大多數(shù)輕量級工作,例如確定構(gòu)建的名稱,在版本控制中創(chuàng)建標(biāo)簽,記錄注釋以及報告構(gòu)建狀態(tài)。因為構(gòu)建控制器通常不需要大量的處理器時間,所以虛擬機通常足以用作構(gòu)建控制器的平臺。每個構(gòu)建代理(build agent)專用于單個構(gòu)建控制器并由其控制。構(gòu)建代理的工作包括從版本控制庫中獲得文件、簽入文件、編譯源代碼及測試。當(dāng)組裝一個構(gòu)建系統(tǒng)時,可以從幾個代理開始。然后可在添加團隊成員時添加更多構(gòu)建代理,隨著代碼庫的增長和構(gòu)建系統(tǒng)的工作增加,進行構(gòu)建系統(tǒng)擴展[8]。TFS構(gòu)建系統(tǒng)的核心就在于構(gòu)建定義與其工作流程。構(gòu)建定義描述了構(gòu)建的過程,包括編譯哪些代碼項目的指令,什么樣的行動觸發(fā)構(gòu)建,運行什么測試,以及許多其它的選擇。構(gòu)建定義有一系列的定義需要填,就像一個代碼項目的屬性頁[9]。

    TFS構(gòu)建系統(tǒng)的另一個獨創(chuàng)性在于構(gòu)建工作流程(build workflow)。構(gòu)建工作流程定義具體的構(gòu)建過程,比如給出編譯哪些代碼項目的指令、什么事件應(yīng)該觸發(fā)構(gòu)建以及運行什么測試。本質(zhì)上工作流程就是定義團隊基礎(chǔ)構(gòu)建(team foundation build,TFBuild)的構(gòu)建代碼、運行測試并運行其它程序如腳本的方式的XAML文件。每個構(gòu)建定義都有一個對應(yīng)的工作流程文件如圖3所示。使用TFBuild還可以創(chuàng)建和管理自動編譯和測試應(yīng)用程序并執(zhí)行其它重要功能的構(gòu)建過程,并使用構(gòu)建系統(tǒng)來支持持續(xù)集成的策略,或者進行更嚴(yán)格的質(zhì)量檢查,以防止質(zhì)量差的代碼“打破構(gòu)建”。

    圖2 RM項目TFS構(gòu)建系統(tǒng)的拓撲結(jié)構(gòu)

    2.2 質(zhì)量保障及測試(QA)

    DevOps能力模型中第二個維度是質(zhì)量保障及測試。為了在任何時間點都可以向客戶交付可運行高品質(zhì)的軟件產(chǎn)品,需要建立持續(xù)集成和自動化測試配合的機制。集成和測試的整合,意味著代碼在合成到主干前,系統(tǒng)就可以捕獲新代碼的編譯錯誤或功能錯誤,并觸發(fā)代碼自動回滾,這是一套動態(tài)并且強大高效機制。

    RM自動化測試平臺是以團隊基礎(chǔ)服務(wù)器(team foundation server,TFS)為核心搭建起來的,實現(xiàn)了用測試分組和并行化降低測試周期、測試集合管理、測試環(huán)境管理:自動部署到測試實驗室及不同級別測試:封閉簽入測試(gated test)、簽入后測試(post test)、用戶界面自動化測試(UI automation test)等。封閉簽入測試是其中具有獨創(chuàng)性的測試方法。圖4顯示了封閉簽入的具體過程。當(dāng)工程師提交代碼修改時,快速持續(xù)集成被觸發(fā)。如果編譯或封閉簽入測試失敗,將阻止代碼簽入,并將代碼回滾到測試通過的版本,系統(tǒng)還將自動觸發(fā)郵件告知機制,將編譯或封閉簽入測試錯誤信息通過郵件發(fā)送給提交代碼的工程師;如果通過編譯和封閉簽入測試,代碼將被簽入。封閉簽入過程提高代碼的質(zhì)量,而且避免了無意義的重復(fù)勞動和人工操作可能存在的潛在錯誤。代碼簽入后,簽入后測試將被觸發(fā),測試報告將發(fā)送給提交者[10]。并且在夜間12點運行涉及范圍更廣、測試用例更多的自動化測試。

    圖4 封閉簽入流程

    如圖5所示,在RM測試框架中TFS負責(zé)安排自動化測試、實驗室部署和測試結(jié)果收集等一系列活動。測試框架中主要組件如下:測試管理器(test manager)、測試控制器(test controller)、測試代理(test agent)及實驗室管理器(lab manager)。測試管理器主要功能是為軟件測試人員和測試主管提供一個專用于管理和執(zhí)行測試計劃的工具,將測試計劃、測試集合和測試用例存儲于TFS中。它負責(zé)配置測試控制器,測試控制器負責(zé)配置測試代理并安排一個或多個測試代理以便執(zhí)行自動化測試。測試運行完后,測試控制器收集測試代理的測試結(jié)果數(shù)據(jù)。TFS保存這些數(shù)據(jù)便于生成測試報表。測試代理(Test Agent)是作為實驗室環(huán)境的一部分的工作站,實際測試由測試控制器控制并在測試代理上運行。事實上測試管理器充當(dāng)TFS客戶端界面來驅(qū)動自動化測試,這意味著在測試管理器運行測試計劃之前,必須正確設(shè)置TFS,測試控制器和測試代理。實驗室管理器主要用于生成標(biāo)準(zhǔn)測試環(huán)境使測試代理能順利部署構(gòu)建運行自動化測試。

    圖5 RM測試框架

    RM項目基于TFS搭建了自動化測試平臺,其工作流程共有7步:①確定測試環(huán)境,即多臺計算機的集合,其中每臺計算機都有特定的功能,軟件在環(huán)境上部署及執(zhí)行測試;②創(chuàng)建測試配置,測試管理器利用測試配置定義不同的測試場景;③創(chuàng)建或?qū)霚y試用例,測試用例由工作項標(biāo)識:手動創(chuàng)建測試用例工作項,并將它們與測試方法相關(guān)聯(lián)或者使用tcm命令從測試程序集(DLL)自動生成測試用例工作項;測試管理器可以通過測試中心跟蹤查詢功能,搜索存在的測試用例;④創(chuàng)建測試計劃,創(chuàng)建由查詢生成的多個測試用例組成的測試套件;⑤在測試管理器上運行自動化,確保選擇正確的選項:正確的構(gòu)建包含測試程序集及其依賴項、測試運行環(huán)境及要使用的測試設(shè)置;⑥構(gòu)建完成后觸發(fā)自動測試,新構(gòu)建完成后,可以在“進程”選項卡中指定如何根據(jù)默認(rèn)工作流模板執(zhí)行自動化測試;⑦得到可視化的測試結(jié)果,如圖6所示。圖中顯示測試結(jié)果的概況,比如基于某些功能模塊的測試集合的通過率和總的測試用例通過率等測試數(shù)據(jù),可為進一步測試、持續(xù)集成及質(zhì)量改進提供重要依據(jù)。一旦測試失敗,一方面記錄會自動發(fā)送給代碼提交者和測試負責(zé)人,缺陷會被及時記錄及修復(fù);另一方面快速定位到哪次提交的代碼影響了主干代碼的穩(wěn)定性,并可以使代碼快速回滾到上一個的穩(wěn)定版本。

    圖6 自動化測試結(jié)果

    該方法不僅支持回歸測試的全自動化,而且測試周期的大幅減小,實現(xiàn)了測試環(huán)境準(zhǔn)備、測試用例執(zhí)行的自動化,提高了測試效率。

    2.3 可視化

    DevOps能力模型中第3個維度是可視化。持續(xù)集成和改進需要依靠數(shù)據(jù)全面反映DevOps狀態(tài)的數(shù)據(jù),并且可視化貫穿持續(xù)集成的全過程,因此需要建設(shè)可視化的能力?;贒evOps能力模型的可視化軟件的開發(fā)吸收了多種先進的開源技術(shù)的優(yōu)點而開發(fā)的。而其中,Python Flask是使用Python編寫的輕量級Web后端應(yīng)用框架;MongoDB是基于分布式文件存儲的數(shù)據(jù)庫;G2是阿里由純Javascript編寫的語義化圖表生成工具;React是臉書公司提供的響應(yīng)式(Reactive)和組件化(Composable)的視圖組件技術(shù);AngularJS是谷歌設(shè)計和開發(fā)的一套功能全面的前端開發(fā)框架;jQuery是一個快速簡潔的JavaScript庫;Bootstrap是Web樣式CSS框架,它為HTML標(biāo)記語言提供了一種網(wǎng)格式的樣式描述方案,直觀定義了Web頁面元素的顯示方式[11]。在這里以質(zhì)量保障及測試(缺陷數(shù)量趨勢、缺陷生存周期和失敗的測試用例等)和項目完成度中的燃盡圖和產(chǎn)品代辦項為例,闡述如何進行可視化。

    圖7就是可視化頁面中質(zhì)量保障及測試的結(jié)果。圖中左上角表示過去、現(xiàn)在和預(yù)測將來的缺陷數(shù)量。如果測試運行一段時間之后,缺陷數(shù)量趨于穩(wěn)定或不再增長。這說明測試比較充分,發(fā)現(xiàn)了絕大部分的缺陷,預(yù)計尚未發(fā)現(xiàn)的缺陷較少。相反,如果缺陷持續(xù)增加,說明極有可能還有更多的缺陷尚未發(fā)現(xiàn),還需繼續(xù)測試,項目遠未達到交付標(biāo)準(zhǔn)。圖中右上角給出了缺陷生存周期和狀態(tài)等指標(biāo),比如在最近7天發(fā)現(xiàn)的缺陷有59個已解決,有2個尚未解決,有3個推遲到下個交付解決,沒有處于監(jiān)控狀態(tài)的缺陷。圖中左下角表示最近20天內(nèi)每天失敗的測試用例的趨勢,可看出測試用例失敗的數(shù)量尚未減少,還需繼續(xù)加大力度分析測試結(jié)果,判斷是測試用例缺陷還是軟件缺陷。圖中右下角表示失敗的測試用例分布圖,反映不同的組件各有多少測試用例失敗。測試和開發(fā)人員可以判斷潛在問題較多的組件集中力量分析。通過這些直觀化的信息,團隊可以分析軟件質(zhì)量情況,解決缺陷,預(yù)測何時能結(jié)束測試交付產(chǎn)品。

    圖7 質(zhì)量保障及測試可視化

    在項目完成度方面,RM項目主要選取燃盡圖和產(chǎn)品代辦項等來反映項目完成情況。圖8左上角是項目某階段的燃盡圖,可看出現(xiàn)階段的進度領(lǐng)先于計劃預(yù)期,項目進展較順利;右上角是現(xiàn)階段優(yōu)先級最高的5個產(chǎn)品待辦項(product backlog item,PBI)。5個待辦項中,有1個工作量較大,占30個人月;3個工作量居中,占13-15個人月,1個工作量較小暫時忽略不計。可看出,優(yōu)先級最高的5個產(chǎn)品待辦項的總工作量為71個人月,整體基本可控,不會帶來太大的進度風(fēng)險。

    圖8 某項目沖刺進展情況可視化

    在引入可視化之前,團隊存在的一種典型的反模型是含糊不清的“完成”定義,開發(fā)人員迫于時間壓力可以僥幸少做一些功能或忽略一些潛在缺陷[12],引發(fā)的功能障礙的例子就是:團隊簽入了許多功能點,沖刺結(jié)束時絕大多數(shù)功能點都是“幾乎完成”,但都有細小的模塊沒有實現(xiàn)。這導(dǎo)致產(chǎn)品負責(zé)人在軟件上市前無法判斷還剩余多少工作為真正完成,從而帶來了不可預(yù)測性、不確定性及未知的質(zhì)量風(fēng)險[13]。而自從團隊明確定義了項目完成度的關(guān)鍵因素,并以可視化的形式設(shè)置了需要認(rèn)真對待的“完成”標(biāo)準(zhǔn),開發(fā)人員主觀或非主觀漏掉功能點并導(dǎo)致軟件不可上市的情況被消除。

    3 持續(xù)集成新方法的使用成效

    從項目實踐可知,基于DevOps能力模型的持續(xù)集成新方法能顯著縮短構(gòu)建周期和軟件版本控制的時間。如圖9所示,Paradise RM 2.3項目使用了該方法后進行軟件版本控制的時間從之前未使用該方法的手工集成150分鐘縮短到3分鐘,效率提升98%;構(gòu)建周期從之前未使用該方法的平均270分鐘縮短到80分鐘,效率提升70%。為了驗證該方法的成效,將該方法移植到Tetra RM項目,使用了該方法軟件版本控制的時間從之前未使用該方法的48分鐘縮短到3分鐘,效率提升近94%;構(gòu)建周期從之前未使用該方法的平均109分鐘縮短到40分鐘,效率提升約63%。由兩個項目的實踐得到結(jié)論,采用DevOps能力模型持續(xù)集成新方法使RM項目構(gòu)建周期和軟件版本控制時間顯著降低,效率顯著提高。

    圖9 所提方法使用前后構(gòu)建周期和軟件版本控制時間比較

    基于下面幾個方面的分析,可以得出RM持續(xù)集成系統(tǒng)的特點:

    (1)性能方面,該方法的每一步都采用了自動化技術(shù),能快速完成。這里將持續(xù)集成可分為兩類:快速持續(xù)集成和全面持續(xù)集成??焖俪掷m(xù)集成可以實現(xiàn)立等可取(如果不包括可用性測試可以在5分鐘內(nèi)完成),而且支持封閉簽入,如果包括可用性測試可以10分鐘內(nèi)完成。全面持續(xù)集成如果不包括測試可以在30分鐘內(nèi)完成。其中測試可以在其它專用測試機上部署和執(zhí)行,測試時長是變化的,依賴于團隊選擇測試用例的策略和不同目的的測試類型,還可以通過在多個測試機上分布式運行測試用例來縮短測試周期。

    (2)質(zhì)量保障及測試極大地提高了生產(chǎn)效率和軟件質(zhì)量。如果沒有一個穩(wěn)固和及時反饋的質(zhì)量系統(tǒng),持續(xù)集成就是一個紙老虎。該方法預(yù)先創(chuàng)建好測試用例集合,根據(jù)測試目標(biāo)和功能自動選擇測試集合并監(jiān)控測試是否通過,如果通過將測試結(jié)果保存至測試結(jié)果庫中。如果測試失敗,通過自動發(fā)送郵件通知和報告等機制,幫助開發(fā)人員快速定位問題,找出問題原因,修復(fù)問題并通過測試。

    (3)該方法還實現(xiàn)了非常有意義和強大的可視化及報告功能,包括:在持續(xù)集成構(gòu)建服務(wù)器的啟動/關(guān)機測量;構(gòu)建請求和持續(xù)集成服務(wù)器的響應(yīng)時間統(tǒng)計[14];需要注意的突出問題的報警:構(gòu)建代理的短缺;過于頻繁的簽入代碼導(dǎo)致持續(xù)集成資源短缺,能定位到特定的構(gòu)建和發(fā)起者;可能是由于糟糕的設(shè)計或編碼引起的與之前構(gòu)建相比太長的周期。RM持續(xù)集成最終實現(xiàn)了團隊按計劃構(gòu)建,項目按計劃運行,質(zhì)量有保證;能夠向個人、團隊/項目發(fā)起報告。

    (4)可用性方面,該方法實現(xiàn)了構(gòu)建服務(wù)器的相互備份,物理位置在不同國家的服務(wù)器互為備份,當(dāng)某臺服務(wù)器關(guān)閉時,另一臺支持自動切換。當(dāng)出現(xiàn)故障服務(wù)器恢復(fù)正常再次運行時,構(gòu)建服務(wù)器可以自動切換,提高了系統(tǒng)可靠性[15]。

    (5)該方法還實現(xiàn)了硬件資源的高效利用:一方面是充分利用了虛擬機,能夠在Hyper-V環(huán)境中部署復(fù)雜的應(yīng)用程序,支持構(gòu)建自動化及測試自動化,并且按需動態(tài)分配資源;另一方面使24小時全天候運行狀態(tài)成為現(xiàn)實。

    該項目牽涉多條產(chǎn)品線由幾個子項目組成,是一個為期3年的產(chǎn)品規(guī)劃。重建的RM系統(tǒng)對未來的集群通信系統(tǒng)無線終端設(shè)備的產(chǎn)品線發(fā)展有重大意義。在采用DevOps能力模型方法之前,RM項目幾乎沒有自動化構(gòu)建、測試及版本控制技術(shù),編碼、構(gòu)建、集成、測試、交付等還處于各自為政的狀態(tài),沒有打通這一鏈條,處于DevOps能力模型的無序級。采用DevOps能力模型方法之后,RM項目有效利用了各項自動化技術(shù),加強了質(zhì)量保障及測試,實現(xiàn)了數(shù)據(jù)可視化,發(fā)動全體人員建設(shè)持續(xù)集成系統(tǒng),構(gòu)建了一個相對完善的系統(tǒng),基本達到了DevOps能力模型中的精通級。

    項目實踐中采用DevOps能力模型方法來實現(xiàn)持續(xù)集成,該方法實現(xiàn)了RM自動化生命周期管理,其中包括:封閉簽入、編譯/構(gòu)建、靜態(tài)分析、單元測試、代碼混淆、安裝包生成、安裝包部署、集成測試、黑盒測試和錯誤報告。通過RM項目實踐,驗證該方法極大提高了軟件發(fā)布效率。從2013年至今由于使用該方法使研發(fā)成本減少了40%,將原來4個月的迭代周期縮短到1個月,并且實現(xiàn)軟件每天可以發(fā)布。并且RM項目是一個由跨越5個國家、3大洲和3條產(chǎn)品線的100多位開發(fā)人員的團隊組成的大規(guī)模軟件項目。該方法成功完成了對100萬行代碼、27年歷史的對講機管理系統(tǒng)架構(gòu)的重構(gòu),并且兼容市面上主流對講機的所有功能,大大減少了軟件人工干預(yù)程度,較大程度地提高了軟件開發(fā)集成發(fā)布效率。

    值得特別指出的是該方法顯著地提高了軟件質(zhì)量并降低了項目風(fēng)險。經(jīng)過集成測試每個改動簽入的問題都會被更早地發(fā)現(xiàn)。長時間的集成不再存在,盲區(qū)被徹底消除了。在任何時間都知道項目的進展,什么能運轉(zhuǎn),什么不能運轉(zhuǎn),系統(tǒng)里有什么明顯的問題,這些都一目了然。持續(xù)集成不能防止問題的產(chǎn)生,但明顯簡化定位和修復(fù)問題工作。由此可見,該方法使軟件開發(fā)工作更便捷,在軟件開發(fā)生命周期中的每個環(huán)節(jié)都能獲得可部署的軟件,并且能及早發(fā)現(xiàn)缺陷,縮短了開發(fā)時間,降低了軟件研發(fā)成本。通過該方法,軟件研發(fā)團隊可以降低風(fēng)險及減少重復(fù)性勞動,使得整個研發(fā)團隊能更好地掌握項目的狀態(tài),在資源有限的情況下按時地保質(zhì)保量地順利完成項目。

    通過項目實踐,可看出基于DevOps能力模型持續(xù)集成方法具備下列這些優(yōu)點:①當(dāng)開發(fā)、測試及運維人員處于分布式開發(fā)環(huán)境中,持續(xù)集成是一種很好的方式確保開發(fā)人員正在構(gòu)建的構(gòu)建是最新的;②連續(xù)集成能減少回歸次數(shù);③開發(fā)人員能盡早捕獲構(gòu)建中斷,不必等待一天或一周的結(jié)束才了解某個簽入對構(gòu)建的影響;④在軟件生命周期中集成測試提前進行,每次簽入都要進行集成測試,盡早發(fā)現(xiàn)問題;⑤持續(xù)集成能實現(xiàn)更好的開發(fā)過程,每個開發(fā)者都要對構(gòu)建負責(zé),而且總是有一個最新最好的構(gòu)建,用于演示和展示等。當(dāng)然,該方法也有一些不足之處,比如:持續(xù)集成會增加維護開銷;需要開發(fā)人員改變心態(tài);簽入直接導(dǎo)致代碼備份,因為程序員無法簽入部分完成的代碼等。

    為了更好地闡述本文新方法的優(yōu)勢,將該方法與傳統(tǒng)方法進行對比分析。由于Jenkins方法在業(yè)界使用最廣泛,最具有代表性,因此將該方法與Jenkins方法從3個方面做了對比分析,結(jié)果見表2。從表2的幾個方面比較可見,基于DevOps能力模型持續(xù)集成方法與現(xiàn)有較常用的持續(xù)集成平臺Jenkins比較,前者具有以下一些優(yōu)點:插件實用性較高,界面友好,清爽簡潔,代碼構(gòu)建支持更換代理,構(gòu)建流程較清晰。但是也有一些不足比如插件不夠豐富,后期可以豐富其插件庫,來進一步提升該方法的優(yōu)越性。

    表2 本文方法與Jenkins方法比較

    4 結(jié)束語

    綜上所述,該持續(xù)集成方法提出了DevOps能力模型,并且從自動化、質(zhì)量保障及可視化等維度出發(fā),實現(xiàn)了多個產(chǎn)品且每個產(chǎn)品多版本的軟件開發(fā)、測試及運維的高效融合,提高了開發(fā)效率,降低了項目質(zhì)量風(fēng)險。實踐結(jié)果表明,該方法值得在其它大規(guī)模軟件開發(fā)項目中推廣和部署。在今后的研發(fā)項目中,團隊前進的方向為實現(xiàn)產(chǎn)品隨時可發(fā)布,努力做到極致級別的持續(xù)集成。

    猜你喜歡
    測試用例代碼可視化
    基于CiteSpace的足三里穴研究可視化分析
    基于Power BI的油田注水運行動態(tài)分析與可視化展示
    云南化工(2021年8期)2021-12-21 06:37:54
    基于SmartUnit的安全通信系統(tǒng)單元測試用例自動生成
    基于CGAL和OpenGL的海底地形三維可視化
    “融評”:黨媒評論的可視化創(chuàng)新
    傳媒評論(2019年4期)2019-07-13 05:49:14
    創(chuàng)世代碼
    動漫星空(2018年11期)2018-10-26 02:24:02
    創(chuàng)世代碼
    動漫星空(2018年2期)2018-10-26 02:11:00
    創(chuàng)世代碼
    動漫星空(2018年9期)2018-10-26 01:16:48
    創(chuàng)世代碼
    動漫星空(2018年5期)2018-10-26 01:15:02
    基于混合遺傳算法的回歸測試用例集最小化研究
    岛国毛片在线播放| 99热国产这里只有精品6| 天天躁夜夜躁狠狠躁躁| 欧美另类一区| 80岁老熟妇乱子伦牲交| 老女人水多毛片| 好男人视频免费观看在线| 亚洲精品久久午夜乱码| 久久99热这里只频精品6学生| 一级爰片在线观看| 美女福利国产在线| 91在线精品国自产拍蜜月| 一本色道久久久久久精品综合| 国产精品成人在线| a级毛片在线看网站| 午夜福利在线观看免费完整高清在| 久热这里只有精品99| 国产精品女同一区二区软件| 热99久久久久精品小说推荐| av黄色大香蕉| 超碰97精品在线观看| 国产 精品1| 亚洲国产精品成人久久小说| 国产精品欧美亚洲77777| 26uuu在线亚洲综合色| 天堂中文最新版在线下载| 久久精品国产亚洲av涩爱| 男人添女人高潮全过程视频| av黄色大香蕉| 九九爱精品视频在线观看| 三级国产精品片| 久久国产亚洲av麻豆专区| 欧美少妇被猛烈插入视频| 久久久久久伊人网av| 日产精品乱码卡一卡2卡三| 中文天堂在线官网| 一区二区三区精品91| 国产av精品麻豆| 丝袜喷水一区| 午夜激情av网站| 亚洲欧洲精品一区二区精品久久久 | 国产av精品麻豆| 国产日韩欧美亚洲二区| 中文字幕制服av| 欧美日韩亚洲高清精品| 狂野欧美激情性bbbbbb| 激情视频va一区二区三区| videossex国产| 成人漫画全彩无遮挡| 亚洲欧洲国产日韩| 亚洲av中文av极速乱| 国产精品不卡视频一区二区| 精品亚洲成国产av| 水蜜桃什么品种好| 下体分泌物呈黄色| 久久久久网色| 精品少妇内射三级| 天堂8中文在线网| 校园人妻丝袜中文字幕| 亚洲成国产人片在线观看| 亚洲美女黄色视频免费看| 亚洲成av片中文字幕在线观看 | 观看美女的网站| 视频中文字幕在线观看| 免费av中文字幕在线| 久久精品国产亚洲av涩爱| 亚洲国产看品久久| 免费少妇av软件| 中文字幕亚洲精品专区| 女性被躁到高潮视频| 久久精品国产综合久久久 | 欧美成人午夜免费资源| 熟女人妻精品中文字幕| 春色校园在线视频观看| 精品国产国语对白av| 日日撸夜夜添| 18在线观看网站| 在线天堂最新版资源| 人体艺术视频欧美日本| 女性生殖器流出的白浆| www.av在线官网国产| 在线观看一区二区三区激情| 免费人成在线观看视频色| 韩国精品一区二区三区 | 午夜福利网站1000一区二区三区| 日本黄大片高清| 美女主播在线视频| 一级,二级,三级黄色视频| 中国美白少妇内射xxxbb| 18禁观看日本| 在线免费观看不下载黄p国产| 欧美少妇被猛烈插入视频| 我要看黄色一级片免费的| 日韩大片免费观看网站| 两性夫妻黄色片 | 色5月婷婷丁香| 在线观看一区二区三区激情| 极品少妇高潮喷水抽搐| 成人18禁高潮啪啪吃奶动态图| 日韩中字成人| 母亲3免费完整高清在线观看 | 日韩欧美精品免费久久| 一本久久精品| 亚洲高清免费不卡视频| 91精品国产国语对白视频| av国产精品久久久久影院| 一二三四中文在线观看免费高清| av国产精品久久久久影院| 少妇猛男粗大的猛烈进出视频| 国产片特级美女逼逼视频| 久久人人爽人人片av| 久久人人97超碰香蕉20202| 国产精品国产三级国产专区5o| 一区二区三区四区激情视频| 最后的刺客免费高清国语| 女性被躁到高潮视频| 97精品久久久久久久久久精品| 黄网站色视频无遮挡免费观看| 日韩一区二区三区影片| 一边摸一边做爽爽视频免费| 在线观看www视频免费| 女人被躁到高潮嗷嗷叫费观| 亚洲欧美一区二区三区国产| 国产综合精华液| 国产精品欧美亚洲77777| 亚洲综合色网址| 七月丁香在线播放| 免费在线观看黄色视频的| 国产精品成人在线| 搡女人真爽免费视频火全软件| 精品人妻在线不人妻| 久久毛片免费看一区二区三区| 中国美白少妇内射xxxbb| 成年人免费黄色播放视频| 国产精品.久久久| 国产成人精品无人区| 欧美精品一区二区免费开放| 国产精品三级大全| 美女国产视频在线观看| 国产国拍精品亚洲av在线观看| 久久综合国产亚洲精品| 久久人人爽av亚洲精品天堂| 美女xxoo啪啪120秒动态图| 两个人看的免费小视频| 九九在线视频观看精品| 成人综合一区亚洲| 亚洲伊人色综图| 午夜视频国产福利| av在线老鸭窝| 高清视频免费观看一区二区| 岛国毛片在线播放| 亚洲av国产av综合av卡| 桃花免费在线播放| 天美传媒精品一区二区| 国产片特级美女逼逼视频| 在线观看www视频免费| 久久人人97超碰香蕉20202| 久久久国产欧美日韩av| 国产xxxxx性猛交| 成人午夜精彩视频在线观看| 成年人免费黄色播放视频| 亚洲欧美精品自产自拍| 高清视频免费观看一区二区| 午夜福利视频在线观看免费| 欧美亚洲日本最大视频资源| 亚洲av综合色区一区| 超碰97精品在线观看| 亚洲精品中文字幕在线视频| 女的被弄到高潮叫床怎么办| 天堂俺去俺来也www色官网| 男人爽女人下面视频在线观看| 99九九在线精品视频| 老司机亚洲免费影院| 亚洲精品av麻豆狂野| 一二三四中文在线观看免费高清| 国产免费一区二区三区四区乱码| 五月天丁香电影| 狂野欧美激情性bbbbbb| 在线亚洲精品国产二区图片欧美| 久久国产精品男人的天堂亚洲 | 国产精品一区二区在线观看99| 老司机影院毛片| 美女脱内裤让男人舔精品视频| 久久人妻熟女aⅴ| 日本色播在线视频| 精品午夜福利在线看| 两性夫妻黄色片 | 国产淫语在线视频| 亚洲国产看品久久| 99热这里只有是精品在线观看| 校园人妻丝袜中文字幕| 高清不卡的av网站| 各种免费的搞黄视频| 免费不卡的大黄色大毛片视频在线观看| av免费在线看不卡| 在线观看三级黄色| √禁漫天堂资源中文www| 亚洲欧洲日产国产| 夫妻午夜视频| 久久久久人妻精品一区果冻| 久久ye,这里只有精品| 成人国语在线视频| 亚洲欧洲国产日韩| 精品久久久久久电影网| 国产精品秋霞免费鲁丝片| 亚洲欧洲国产日韩| 色婷婷av一区二区三区视频| 少妇人妻久久综合中文| www.色视频.com| 最近最新中文字幕免费大全7| 国产黄频视频在线观看| 亚洲欧洲国产日韩| 国产亚洲午夜精品一区二区久久| 日本av手机在线免费观看| 人妻人人澡人人爽人人| 亚洲欧美中文字幕日韩二区| 婷婷成人精品国产| av在线app专区| www.av在线官网国产| 日韩av在线免费看完整版不卡| 丝袜人妻中文字幕| 日日撸夜夜添| 青青草视频在线视频观看| 大片免费播放器 马上看| 国产激情久久老熟女| 大片电影免费在线观看免费| 免费观看性生交大片5| 国产成人a∨麻豆精品| 午夜激情av网站| 亚洲美女搞黄在线观看| 尾随美女入室| 蜜臀久久99精品久久宅男| 成人黄色视频免费在线看| 极品人妻少妇av视频| 亚洲欧洲日产国产| 看免费av毛片| 王馨瑶露胸无遮挡在线观看| 春色校园在线视频观看| 少妇人妻精品综合一区二区| 少妇被粗大猛烈的视频| 草草在线视频免费看| 免费观看性生交大片5| 一二三四中文在线观看免费高清| 欧美精品亚洲一区二区| 亚洲美女搞黄在线观看| 国产成人午夜福利电影在线观看| 亚洲,欧美,日韩| 伊人亚洲综合成人网| 最近最新中文字幕免费大全7| 国产成人av激情在线播放| 亚洲国产精品成人久久小说| 亚洲少妇的诱惑av| 老司机影院毛片| 中文欧美无线码| 国产精品人妻久久久影院| 国精品久久久久久国模美| 日韩 亚洲 欧美在线| 日韩制服丝袜自拍偷拍| 热99久久久久精品小说推荐| 国产精品一区二区在线观看99| 婷婷色麻豆天堂久久| 一级毛片 在线播放| 狂野欧美激情性xxxx在线观看| 一级毛片我不卡| 久久精品久久久久久久性| 国产伦理片在线播放av一区| 亚洲精品aⅴ在线观看| 亚洲国产av影院在线观看| 亚洲高清免费不卡视频| 久久久久久人人人人人| 高清视频免费观看一区二区| 亚洲精品久久久久久婷婷小说| 精品久久国产蜜桃| 色婷婷久久久亚洲欧美| 日本欧美视频一区| 欧美日韩一区二区视频在线观看视频在线| 日本av免费视频播放| av一本久久久久| 久久久久网色| 久久人人97超碰香蕉20202| 伦精品一区二区三区| 国产一区二区激情短视频 | 亚洲精品av麻豆狂野| 免费看av在线观看网站| 久久毛片免费看一区二区三区| 久久99一区二区三区| 搡女人真爽免费视频火全软件| 男女国产视频网站| 男人爽女人下面视频在线观看| av线在线观看网站| 欧美人与善性xxx| 纵有疾风起免费观看全集完整版| 日韩中字成人| 久久午夜综合久久蜜桃| 国产老妇伦熟女老妇高清| 亚洲美女搞黄在线观看| 精品酒店卫生间| 成人手机av| 91在线精品国自产拍蜜月| 人妻少妇偷人精品九色| 国产又爽黄色视频| 制服丝袜香蕉在线| 各种免费的搞黄视频| 精品国产国语对白av| 久久精品国产亚洲av天美| 九草在线视频观看| 国产一区二区在线观看av| 精品久久久精品久久久| 亚洲精品国产av蜜桃| 99国产精品免费福利视频| av播播在线观看一区| 男女国产视频网站| 91精品国产国语对白视频| 亚洲综合精品二区| 婷婷色av中文字幕| 日日啪夜夜爽| 亚洲性久久影院| 纵有疾风起免费观看全集完整版| 亚洲美女视频黄频| 精品久久国产蜜桃| 欧美 亚洲 国产 日韩一| 国产69精品久久久久777片| 男人添女人高潮全过程视频| 90打野战视频偷拍视频| 国产精品偷伦视频观看了| 欧美少妇被猛烈插入视频| 欧美日韩国产mv在线观看视频| 少妇熟女欧美另类| 免费少妇av软件| 欧美最新免费一区二区三区| 国产精品一国产av| 夫妻午夜视频| 大香蕉97超碰在线| 黑人巨大精品欧美一区二区蜜桃 | 日韩中字成人| 中国国产av一级| 秋霞在线观看毛片| 午夜免费观看性视频| 男女边摸边吃奶| 黑人猛操日本美女一级片| 日韩 亚洲 欧美在线| 日韩成人伦理影院| 欧美人与性动交α欧美精品济南到 | 精品99又大又爽又粗少妇毛片| 香蕉丝袜av| 国产激情久久老熟女| 亚洲人与动物交配视频| 99国产精品免费福利视频| 亚洲天堂av无毛| 午夜老司机福利剧场| 免费黄频网站在线观看国产| 日本免费在线观看一区| 极品人妻少妇av视频| 好男人视频免费观看在线| 男女午夜视频在线观看 | 热99久久久久精品小说推荐| 日韩一本色道免费dvd| 欧美国产精品一级二级三级| 国产成人aa在线观看| 一区二区日韩欧美中文字幕 | 99热网站在线观看| 国产成人a∨麻豆精品| 欧美成人午夜免费资源| 看十八女毛片水多多多| 26uuu在线亚洲综合色| 亚洲欧美日韩卡通动漫| 亚洲国产成人一精品久久久| 黄色配什么色好看| 国产国语露脸激情在线看| 91精品伊人久久大香线蕉| 久久精品国产亚洲av天美| 黑丝袜美女国产一区| 极品人妻少妇av视频| 咕卡用的链子| 国产又爽黄色视频| 永久免费av网站大全| 日韩中文字幕视频在线看片| 婷婷色综合www| 亚洲三级黄色毛片| 国产精品 国内视频| 激情五月婷婷亚洲| 99热这里只有是精品在线观看| 欧美激情国产日韩精品一区| 波多野结衣一区麻豆| 国精品久久久久久国模美| 免费黄网站久久成人精品| 成人亚洲欧美一区二区av| 亚洲av男天堂| 国产精品久久久久成人av| 男人添女人高潮全过程视频| 一级,二级,三级黄色视频| 欧美少妇被猛烈插入视频| 国产黄色视频一区二区在线观看| 少妇被粗大的猛进出69影院 | 在线观看三级黄色| 午夜激情av网站| 免费看不卡的av| 欧美亚洲 丝袜 人妻 在线| 精品少妇久久久久久888优播| 久久久精品区二区三区| 午夜福利,免费看| 国产成人精品婷婷| 欧美日韩亚洲高清精品| 久久99一区二区三区| av在线播放精品| 久热这里只有精品99| 久久久久久伊人网av| 婷婷成人精品国产| 久久久亚洲精品成人影院| 在现免费观看毛片| 亚洲成色77777| 欧美日韩视频高清一区二区三区二| 国产淫语在线视频| 在线观看免费日韩欧美大片| 国产日韩一区二区三区精品不卡| 欧美成人午夜免费资源| 天堂中文最新版在线下载| 国产片内射在线| 亚洲美女搞黄在线观看| 美女大奶头黄色视频| 咕卡用的链子| 男女无遮挡免费网站观看| 黄片无遮挡物在线观看| 午夜福利影视在线免费观看| 97超碰精品成人国产| av免费观看日本| 春色校园在线视频观看| 考比视频在线观看| 26uuu在线亚洲综合色| 热99国产精品久久久久久7| 亚洲,欧美,日韩| 极品人妻少妇av视频| 精品一区二区三区视频在线| 亚洲性久久影院| 亚洲国产精品专区欧美| 人妻少妇偷人精品九色| 国产一区二区激情短视频 | 亚洲丝袜综合中文字幕| 制服诱惑二区| 咕卡用的链子| 欧美变态另类bdsm刘玥| 亚洲欧洲国产日韩| 曰老女人黄片| 久久鲁丝午夜福利片| 2018国产大陆天天弄谢| 欧美亚洲日本最大视频资源| av.在线天堂| 9色porny在线观看| 国产色爽女视频免费观看| 欧美人与性动交α欧美精品济南到 | 18+在线观看网站| 搡女人真爽免费视频火全软件| 亚洲精品成人av观看孕妇| 插逼视频在线观看| 91久久精品国产一区二区三区| 中文字幕制服av| 一级,二级,三级黄色视频| 久久97久久精品| 高清在线视频一区二区三区| 亚洲精品一二三| 精品国产国语对白av| av免费在线看不卡| 在现免费观看毛片| 成年人免费黄色播放视频| 中国国产av一级| 男女无遮挡免费网站观看| 久久ye,这里只有精品| 国产探花极品一区二区| 亚洲精品第二区| 99香蕉大伊视频| 91成人精品电影| 黑人猛操日本美女一级片| 精品少妇黑人巨大在线播放| 9191精品国产免费久久| 美女大奶头黄色视频| 另类精品久久| 成人国产av品久久久| 日本爱情动作片www.在线观看| 国产精品一区二区在线观看99| 成年人午夜在线观看视频| 最新的欧美精品一区二区| 天天躁夜夜躁狠狠躁躁| 亚洲综合色网址| 免费在线观看完整版高清| av卡一久久| 成人毛片60女人毛片免费| 青春草国产在线视频| 搡女人真爽免费视频火全软件| 国产xxxxx性猛交| 成人影院久久| 国产精品不卡视频一区二区| 精品一区在线观看国产| 中文精品一卡2卡3卡4更新| 在线观看www视频免费| 国产成人精品无人区| 精品国产国语对白av| 中国美白少妇内射xxxbb| 有码 亚洲区| 狠狠精品人妻久久久久久综合| av有码第一页| 色婷婷av一区二区三区视频| 最近2019中文字幕mv第一页| 国产在线免费精品| 中文欧美无线码| 最新的欧美精品一区二区| av国产精品久久久久影院| 91成人精品电影| 在线看a的网站| 精品一区在线观看国产| 最近的中文字幕免费完整| 国产一区二区激情短视频 | 久久精品国产鲁丝片午夜精品| 日本与韩国留学比较| 99久国产av精品国产电影| 亚洲中文av在线| 80岁老熟妇乱子伦牲交| 制服诱惑二区| 春色校园在线视频观看| 亚洲精品一二三| 免费黄频网站在线观看国产| 亚洲天堂av无毛| 亚洲人与动物交配视频| 高清黄色对白视频在线免费看| 91久久精品国产一区二区三区| 99久久人妻综合| 中文字幕人妻熟女乱码| 欧美成人午夜免费资源| 99久久中文字幕三级久久日本| 一个人免费看片子| 国产一区二区三区av在线| 日韩一区二区三区影片| 日韩一本色道免费dvd| 久久午夜福利片| 少妇的逼水好多| 精品一区二区三区四区五区乱码 | 一级黄片播放器| 人妻一区二区av| 国产麻豆69| 国产 精品1| 99精国产麻豆久久婷婷| 亚洲精品久久午夜乱码| 久久久欧美国产精品| 色婷婷av一区二区三区视频| 麻豆精品久久久久久蜜桃| 亚洲第一区二区三区不卡| 亚洲精品日本国产第一区| 日本色播在线视频| 男人添女人高潮全过程视频| 91在线精品国自产拍蜜月| 在线看a的网站| 晚上一个人看的免费电影| 自拍欧美九色日韩亚洲蝌蚪91| 捣出白浆h1v1| 亚洲国产色片| 亚洲av成人精品一二三区| 考比视频在线观看| 丰满少妇做爰视频| 欧美精品一区二区免费开放| 欧美精品高潮呻吟av久久| 国产综合精华液| 制服丝袜香蕉在线| 晚上一个人看的免费电影| 亚洲内射少妇av| videosex国产| 久久久久国产精品人妻一区二区| 成人国产麻豆网| 热re99久久精品国产66热6| 一级片免费观看大全| 亚洲综合精品二区| 亚洲精华国产精华液的使用体验| 七月丁香在线播放| 最近2019中文字幕mv第一页| 亚洲经典国产精华液单| 精品久久国产蜜桃| 午夜影院在线不卡| 我的女老师完整版在线观看| 九九爱精品视频在线观看| 一区在线观看完整版| 亚洲精品中文字幕在线视频| 最新的欧美精品一区二区| 秋霞在线观看毛片| 91aial.com中文字幕在线观看| 妹子高潮喷水视频| 欧美日韩成人在线一区二区| 国产成人aa在线观看| 亚洲一码二码三码区别大吗| 国产极品天堂在线| 在线 av 中文字幕| 久久免费观看电影| 97精品久久久久久久久久精品| 日韩人妻精品一区2区三区| 亚洲人与动物交配视频| 亚洲精品日韩在线中文字幕| 欧美日韩av久久| 日本黄大片高清| 一级毛片我不卡| 久久精品人人爽人人爽视色| 久久精品国产综合久久久 | 黑人猛操日本美女一级片| 亚洲成av片中文字幕在线观看 | 国产国语露脸激情在线看| 成年av动漫网址| 伦理电影大哥的女人| 国产精品三级大全| 亚洲第一av免费看| 精品午夜福利在线看| 亚洲三级黄色毛片| 少妇的逼好多水| 精品一品国产午夜福利视频| 夫妻午夜视频| 午夜免费男女啪啪视频观看| 国国产精品蜜臀av免费| 午夜福利乱码中文字幕| 啦啦啦在线观看免费高清www| 中文字幕免费在线视频6|