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

    基于汽車(chē)嵌入式軟件的持續(xù)集成和持續(xù)測(cè)試分析

    2023-06-14 07:13:54藍(lán)啟亮吳光耀周升輝
    汽車(chē)實(shí)用技術(shù) 2023年10期
    關(guān)鍵詞:嵌入式軟件測(cè)試用例插件

    王 帥,藍(lán)啟亮,陳 聰,吳光耀,周升輝

    基于汽車(chē)嵌入式軟件的持續(xù)集成和持續(xù)測(cè)試分析

    王 帥,藍(lán)啟亮,陳 聰,吳光耀,周升輝

    (比亞迪汽車(chē)工業(yè)有限公司 產(chǎn)品規(guī)劃及汽車(chē)新技術(shù)研究院,廣東 深圳 518118)

    隨著汽車(chē)控制器軟件迭代速度的加快,其對(duì)軟件質(zhì)量提出了更高的要求,故軟件集成和測(cè)試周期短而頻繁。持續(xù)集成/持續(xù)測(cè)試(CI/CT)已被認(rèn)可是盡早發(fā)現(xiàn)缺陷的最佳實(shí)踐。文章分析了汽車(chē)嵌入式軟件的開(kāi)發(fā)過(guò)程,通過(guò)引入持續(xù)集成測(cè)試方法,基于Jenkins搭建軟件持續(xù)集成測(cè)試平臺(tái),該平臺(tái)支持多種開(kāi)發(fā)語(yǔ)言,可以集成調(diào)用編譯器、模型在環(huán)(MIL)測(cè)試、硬件在環(huán)(HIL)測(cè)試等工具鏈,從而實(shí)現(xiàn)軟件集成、測(cè)試和缺陷通知完全自動(dòng)化,將軟件工程師從重復(fù)冗長(zhǎng)的集成測(cè)試任務(wù)中解放出來(lái)。持續(xù)集成測(cè)試在某混合電動(dòng)汽車(chē)(HEV)整車(chē)控制器(VCU)軟件項(xiàng)目應(yīng)用以后,可以節(jié)省近90%的軟件迭代耗時(shí)。

    持續(xù)集成;持續(xù)測(cè)試分析;軟件自動(dòng)化測(cè)試;汽車(chē)嵌入式軟件

    在汽車(chē)行業(yè)向“新四化”趨勢(shì)發(fā)展的推動(dòng)下,傳統(tǒng)分布式的電子電氣(Electrical Electronic, EE)架構(gòu)向域集中式架構(gòu)發(fā)展,伴隨著域控制器概念的提出,軟件也將根據(jù)相應(yīng)功能域分類(lèi)集成,域控制器的代碼量也與日俱增。服務(wù)導(dǎo)向架構(gòu)(Service-Oriented Architecture, SOA)的開(kāi)發(fā)模式可實(shí)現(xiàn)各軟件功能模塊間解耦,幫助軟件團(tuán)隊(duì)縮短開(kāi)發(fā)周期,快速迭代軟件版本??罩邢螺d(Over- The-Air, OTA)升級(jí)技術(shù)將軟件快速部署到各個(gè)域控制器,為軟件產(chǎn)品的快速迭代提供保障。在行業(yè)競(jìng)爭(zhēng)日趨激烈的背景下,只有要求產(chǎn)品不斷壓縮上市時(shí)間,才能搶占市場(chǎng)獲得主動(dòng)權(quán)。持續(xù)集成(Continuous Integration, CI)和持續(xù)測(cè)試(Conti- nus Testing, CT)來(lái)源于Development和Operations,即DevOps[1]中提倡的CI—持續(xù)部署(Continuous Deployment, CD)—CT—持續(xù)交付(Continuous Delivery, CD),通過(guò)流程和CI/CT工具平臺(tái),實(shí)現(xiàn)自動(dòng)化“軟件交付”,使得構(gòu)建、測(cè)試、發(fā)布軟件能夠更加快捷、頻繁和可靠,從而為軟件快速迭代提供質(zhì)量保證,這一開(kāi)發(fā)模式多出現(xiàn)于互聯(lián)網(wǎng)軟件行業(yè)[2-7],近年來(lái)在汽車(chē)嵌入式軟件領(lǐng)域中的應(yīng)用也逐漸增多[8]。

    傳統(tǒng)汽車(chē)軟件開(kāi)發(fā)模型中,軟件開(kāi)發(fā)工程師負(fù)責(zé)對(duì)軟件進(jìn)行集成編譯,測(cè)試工程師通過(guò)手動(dòng)/半自動(dòng)化腳本進(jìn)行軟件測(cè)試,其特點(diǎn)是以“人”為中心,需要工程師重復(fù)性的手動(dòng)編譯、集成、測(cè)試、不斷更新工具腳本或配置、記錄問(wèn)題和測(cè)試狀態(tài)跟蹤。測(cè)試周期和質(zhì)量依賴于軟件工程師的數(shù)量、經(jīng)驗(yàn)?zāi)芰凸ぞ邤?shù)量。CI/CT方法以人、測(cè)試流程、測(cè)試工具相結(jié)合,通過(guò)一系列工具鏈組合與自動(dòng)化測(cè)試工程,提交新版軟件時(shí)即為測(cè)試流程的開(kāi)始,接著快速找到軟件缺陷,解決測(cè)試和開(kāi)發(fā)在時(shí)間上的矛盾,從而幫助軟件開(kāi)發(fā)團(tuán)隊(duì)實(shí)現(xiàn)軟件產(chǎn)品速度與質(zhì)量目標(biāo)。

    基于Jenkins[9]搭建了CI/CT平臺(tái),通過(guò)Jenkins配合版本控制軟件、軟件編譯工具、自動(dòng)化測(cè)試工具和報(bào)告插件,當(dāng)檢測(cè)到代碼倉(cāng)庫(kù)有版本變化時(shí),能夠自動(dòng)觸發(fā)Jenkins調(diào)度相關(guān)軟件完成編譯集成、測(cè)試執(zhí)行、測(cè)試報(bào)告并將測(cè)試結(jié)果以郵件形式發(fā)送給開(kāi)發(fā)和測(cè)試人員。本方案不僅能夠密切監(jiān)視軟件開(kāi)發(fā)過(guò)程中的問(wèn)題,而且能夠在無(wú)人值守的環(huán)境下自動(dòng)完成預(yù)設(shè)的測(cè)試任務(wù),完成重復(fù)的測(cè)試過(guò)程,通過(guò)更快地識(shí)別和修復(fù)相關(guān)問(wèn)題,最終實(shí)現(xiàn)持續(xù)不斷的快速交付。

    1 系統(tǒng)設(shè)計(jì)

    1.1 架構(gòu)設(shè)計(jì)

    本文所構(gòu)建的CI/CT平臺(tái)架構(gòu)如圖1所示,該系統(tǒng)主要由包含版本控制、自動(dòng)化構(gòu)建、自動(dòng)化測(cè)試三個(gè)核心環(huán)節(jié)。因此,將CI/CT平臺(tái)劃分為以下三個(gè)部分:

    圖1 CI/CT平臺(tái)架構(gòu)

    1)版本管理服務(wù)器:Gitblit作為版本控制管理的工具,負(fù)責(zé)軟件代碼的版本控制,保證實(shí)施持續(xù)集成時(shí),源代碼保存位置一致,以保障代碼的可維護(hù)性。因此,集成人員能夠從中輕松獲取項(xiàng)目工程全部源代碼。

    2)持續(xù)集成服務(wù)器:Jenkins作為持續(xù)集成服務(wù)器,是CI/CT平臺(tái)的中心,通過(guò)驅(qū)動(dòng)整套系統(tǒng)完成持續(xù)集成測(cè)試流程,并將結(jié)果發(fā)送至相關(guān)人員。Jenkins支持分布式部署,其中Jenkin-Master為Jenkins的主節(jié)點(diǎn),通過(guò)Web端登錄,主要用于管理平臺(tái)任務(wù)和調(diào)度Jenkins-Slaver從節(jié)點(diǎn)。一個(gè)Master可以關(guān)聯(lián)多個(gè)Salver,同時(shí)每個(gè)Slaver可以分配多個(gè)Job[9]。

    3)自動(dòng)化集成測(cè)試環(huán)境:Hightec等工具作為軟件編譯集成環(huán)境,配置成Jenkins-Slaver1從節(jié)點(diǎn)進(jìn)行軟件集成編譯,負(fù)責(zé)CI任務(wù)。dSPACE等硬件在環(huán)(Hardware In Loop, HIL)測(cè)試工具鏈作為軟件測(cè)試環(huán)境,配置成Jenkins-Slaver2從節(jié)點(diǎn)負(fù)責(zé)CT任務(wù)。

    1.2 持續(xù)集成測(cè)試流程

    持續(xù)集成測(cè)試平臺(tái)的工作流程如下:

    1)開(kāi)發(fā)人員負(fù)責(zé)軟件迭代并提交新的變更到Git倉(cāng)庫(kù);

    2)Jenkins Master服務(wù)器會(huì)輪詢或者被Git Post-receive hooks腳本觸發(fā),分發(fā)相應(yīng)任務(wù);

    3)CI節(jié)點(diǎn)Jenkins Slaver1接收到集成任務(wù)后,從Git中拉取相應(yīng)分支進(jìn)行集成編譯和模型在環(huán)(Model In Loop, MIL)單元測(cè)試,最后反饋集成編譯結(jié)果給Jenkins Master;

    4)CT節(jié)點(diǎn)Jenkins Slaver2接收到測(cè)試任務(wù)后,從Jenkins Master獲取CI的結(jié)果文件和測(cè)試用例進(jìn)行自動(dòng)化測(cè)試,最后反饋測(cè)試結(jié)果給Jenkins Master;

    5)最終全部測(cè)試結(jié)果和報(bào)告會(huì)由Jenkins Master統(tǒng)一以郵件方式發(fā)送給相關(guān)人員。

    開(kāi)發(fā)人員在接收到Jenkins報(bào)告郵件后,可以迅速得知本次Git推送是否成功通過(guò)編譯和測(cè)試,如果失敗也可以迅速查找問(wèn)題并重新推送。測(cè)試人員可以通過(guò)Jenkins Master對(duì)整個(gè)持續(xù)集成平臺(tái)進(jìn)行管理維護(hù),同時(shí)可以根據(jù)反饋結(jié)果對(duì)測(cè)試用例進(jìn)行維護(hù)。以上流程會(huì)反復(fù)迭代,從而達(dá)到軟件持續(xù)集成測(cè)試的目的。

    2 CI/CT項(xiàng)目配置

    根據(jù)前述的CI/CT平臺(tái)架構(gòu)設(shè)計(jì),針對(duì)新能源整車(chē)控制器的嵌入式軟件進(jìn)行CI/CT項(xiàng)目的應(yīng)用。

    2.1 Jenkins平臺(tái)配置

    Jenkins具備內(nèi)容豐富的插件庫(kù),其作為開(kāi)源工具可供測(cè)試人員實(shí)現(xiàn)持續(xù)集成配置,整車(chē)控制器(Vehicle Control Unit, VCU)軟件集成測(cè)試任務(wù)需安裝Jenkins插件,如表1所示。

    表1 Jenkins插件列表

    插件作用 Git Plugin輪詢、提取、簽出分支,合并、標(biāo)記和推送Git存儲(chǔ)庫(kù)等 Copy Artifact Plugin項(xiàng)目間傳遞文件 JUnit Plugin生成可擴(kuò)展的標(biāo)記語(yǔ)言(EXtensible Markup Language, XML)測(cè)試報(bào)告,并提供歷史測(cè)試結(jié)果的圖形可視化 Piketec-tpt Plugin執(zhí)行TPT軟件的測(cè)試用例,并生成測(cè)試報(bào)告 Html Publisher發(fā)布html測(cè)試報(bào)告 Mailer Plugin為構(gòu)建結(jié)果配置電子郵件通知

    基于以上插件在Jenkins搭建持續(xù)集成和持續(xù)測(cè)試任務(wù),任務(wù)流主要由以下部分組成:

    1)General通用設(shè)置:可以設(shè)定全局參數(shù)等;

    2)源碼管理:負(fù)責(zé)與Git服務(wù)器進(jìn)行交互;

    3)構(gòu)建觸發(fā)器:負(fù)責(zé)設(shè)定任務(wù)的觸發(fā)條件;

    4)構(gòu)建環(huán)境:負(fù)責(zé)對(duì)工程文件進(jìn)行配置,如編譯配置、測(cè)試用例生成、控制器程序燒寫(xiě)、執(zhí)行編輯測(cè)試等;

    5)構(gòu)建后操作:負(fù)責(zé)收集結(jié)果和發(fā)送郵件。

    2.2 源碼管理配置

    Jenkins需要通過(guò)Git Plugin分別與軟件倉(cāng)庫(kù)和測(cè)試倉(cāng)庫(kù)進(jìn)行交互,如圖2所示,填入軟件倉(cāng)庫(kù)地址以及具有倉(cāng)庫(kù)讀寫(xiě)權(quán)限的用戶密碼。根據(jù)任務(wù)需求,分別在Polling ignores commits in certain paths中通過(guò)正則表達(dá)式監(jiān)控指定文件夾進(jìn)行觸發(fā)構(gòu)建,并設(shè)定淺克隆深度為5層,以提高克隆速度。

    2.3 構(gòu)建觸發(fā)器配置

    構(gòu)建觸發(fā)器可以實(shí)現(xiàn)軟件更改后自動(dòng)觸發(fā)執(zhí)行構(gòu)建,此處采用Poll SCM方式,并配置兩種觸發(fā)器,即

    1)事件觸發(fā):gitblit配置Post-receive鉤子實(shí)現(xiàn)事件觸發(fā);

    2)定時(shí)觸發(fā):Jenkins設(shè)置定期輪詢定時(shí)觸發(fā)。其中,Post-receive鉤子函數(shù)采用groovy腳本實(shí)現(xiàn),程序結(jié)構(gòu)如圖3所示。

    圖2 源碼管理配置

    圖3 Gitblit的鉤子函數(shù)

    此腳本需在Gitblit倉(cāng)庫(kù)啟用,Gitblit Post- receive設(shè)置如圖4所示。

    圖4 Gitblit Post-receive設(shè)置

    定時(shí)觸發(fā)方式在Jenkins構(gòu)建觸發(fā)器設(shè)置,如圖5所示,(H */1 * * *)為每小時(shí)進(jìn)行輪詢。

    圖5 Jenkins構(gòu)建觸發(fā)器設(shè)置

    2.4 CI任務(wù)配置

    CI任務(wù)主要通過(guò)bat腳本調(diào)用相關(guān)編譯工具和模型靜態(tài)檢查工具實(shí)現(xiàn),任務(wù)流程如圖6所示。

    圖6 CI任務(wù)流程

    CI節(jié)點(diǎn)服務(wù)器Jenkins-Slaver1的環(huán)境采用統(tǒng)一部署,避免了不同人員因配置不同導(dǎo)致的編譯差異,編譯結(jié)果更加可靠,同時(shí)服務(wù)器擁有高達(dá)72個(gè)核心的處理器,因此,可以充分調(diào)用Hightec的多核編譯能力,大大加快編譯速度。

    2.5 CT任務(wù)配置

    對(duì)于CT任務(wù),通過(guò)Python調(diào)用測(cè)試系統(tǒng)api實(shí)現(xiàn)自動(dòng)化測(cè)試,自動(dòng)化測(cè)試的流程框架如圖7所示。自動(dòng)化測(cè)試用例是實(shí)現(xiàn)CT的關(guān)鍵所在,為了加速自動(dòng)化測(cè)試用例的開(kāi)發(fā)速度,事先將整套HIL測(cè)試系統(tǒng)[10]提供的接口變量聲明到Mapping文件中,軟件測(cè)試工程師根據(jù)Mapping中的接口變量進(jìn)行標(biāo)準(zhǔn)的文本用例開(kāi)發(fā),Python負(fù)責(zé)識(shí)別預(yù)先定義的文本關(guān)鍵字,將文本用例自動(dòng)轉(zhuǎn)換為所需的自動(dòng)化測(cè)試用例,縮短人工開(kāi)發(fā)自動(dòng)化用例90%的耗時(shí)。測(cè)試工程師將用例和用例組合上傳到測(cè)試倉(cāng)庫(kù)用于Jenkins調(diào)用以執(zhí)行CT任務(wù)。

    圖7 CT任務(wù)流程框架

    注:集成校準(zhǔn)和采集(INtegrated Calibration and Acquisition, INCA)。

    CT任務(wù)構(gòu)建過(guò)程中涉及到的控制器上下電、燒寫(xiě)腳本分別通過(guò)調(diào)用dSPACE、INCA軟件系統(tǒng)的api函數(shù)來(lái)實(shí)現(xiàn),使繁瑣手動(dòng)的控制器程序燒寫(xiě)及標(biāo)定步驟得以完全自動(dòng)化,避免人為操作失誤的引入。測(cè)試工程師只需專(zhuān)注于用例開(kāi)發(fā)和測(cè)試分析報(bào)告即可。

    2.6 構(gòu)建后配置

    在CI/CT任務(wù)結(jié)束以后,需要將測(cè)試結(jié)果生成測(cè)試報(bào)告并傳遞給相關(guān)人員,同時(shí)開(kāi)啟Junit、html和E-mail插件,相關(guān)配置如圖8 所示。

    Junit生成的結(jié)果趨勢(shì)報(bào)告可以查看項(xiàng)目的歷史構(gòu)建狀態(tài)。圖9為html詳細(xì)報(bào)告,其可在網(wǎng)頁(yè)快速進(jìn)行查看,從而幫助項(xiàng)目成員快速了解項(xiàng)目進(jìn)展及定位問(wèn)題點(diǎn),進(jìn)而完成用例和軟件迭代。

    圖8 構(gòu)建后的配置

    圖9 html詳細(xì)報(bào)告

    圖10 郵件通知

    Jenkins的任務(wù)信息會(huì)通過(guò)E-mail插件發(fā)送給相關(guān)人員,以達(dá)到提醒目的,如圖10所示。

    3 項(xiàng)目應(yīng)用

    經(jīng)過(guò)前面配置后可以將CI/CT應(yīng)用于具體的汽車(chē)嵌入式軟件開(kāi)發(fā)項(xiàng)目中,以某混合電動(dòng)汽車(chē)(Hybrid Electric Vehicle, HEV)VCU軟件迭代開(kāi)發(fā)過(guò)程為例,統(tǒng)計(jì)得到如圖11所示的開(kāi)發(fā)過(guò)程耗時(shí)分析圖,可以發(fā)現(xiàn)CI/CT引入以后節(jié)省了近90%的軟件迭代耗時(shí),這主要是歸功于全自動(dòng)集成測(cè)試流程帶來(lái)的效率提升。

    圖11 軟件單次迭代耗時(shí)分析

    4 結(jié)論

    CI/CT平臺(tái)將繁瑣重復(fù)的集成測(cè)試工作交給機(jī)器來(lái)完成,降低了產(chǎn)品軟件集成的難度,提高了軟件開(kāi)發(fā)效率,同時(shí)允許項(xiàng)目組將精力投入到更重要及更棘手的問(wèn)題上,幫助項(xiàng)目成員時(shí)刻了解開(kāi)發(fā)測(cè)試進(jìn)度,開(kāi)展有效決策,樹(shù)立產(chǎn)品信心,最終提高軟件產(chǎn)品的質(zhì)量。研究的CI/CT平臺(tái)在某HEV整車(chē)控制器軟件開(kāi)發(fā)項(xiàng)目中應(yīng)用后,節(jié)省了近90%的迭代耗時(shí)。

    [1] ALLSPAW J, HAMMOND P. 10+ Deploys Per Day: Dev and Ops Cooperation at Flickr[C]//Web Perfor- mance and Operations Conference.Washington:O'Rei- lly,2009:233-237.

    [2] 卞孟春.基于Jenkins的持續(xù)集成方案設(shè)計(jì)與實(shí)現(xiàn)[D].北京:中國(guó)科學(xué)院大學(xué),2014.

    [3] 劉博,汪宇昕.一種基于Jenkins的嵌入式軟件持續(xù)集成方法[J].鐵道機(jī)車(chē)車(chē)輛,2018,38(6):20-22.

    [4] 陳迪.基于Jenkins的持續(xù)集成系統(tǒng)研究[J].電子測(cè)試, 2020(8):48-51.

    [5] 蔡永健,路云菲,鄔遠(yuǎn)祥,等.基于Jenkins和Docker容器技術(shù)在數(shù)字化電站項(xiàng)目自動(dòng)化部署的研究及應(yīng)用[J].計(jì)算機(jī)時(shí)代,2020(2):77-80.

    [6] 雷建勝,蘇曉,金明磊.一種分布式可持續(xù)集成自動(dòng)化測(cè)試平臺(tái)[J].計(jì)算機(jī)與現(xiàn)代化,2020(4):14-18.

    [7] 張曉帆,劉寧,潘帆.持續(xù)集成系統(tǒng)可視化設(shè)計(jì)研究[J].計(jì)算機(jī)與現(xiàn)代化,2020,30(2):58-62.

    [8] 錢(qián)俊磊.基于CANoe和Jenkins的ECU軟件自動(dòng)化測(cè)試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].汽車(chē)實(shí)用技術(shù),2019,44 (22):64-67.

    [9] SMART J F.Jenkins權(quán)威指南[M].北京:電子工業(yè)出版社,2016.

    [10] 黨美婷,任佳越,楊啟東.基于dSPACE 的電機(jī)控制器硬件在環(huán)測(cè)試研究[J].汽車(chē)實(shí)用技術(shù),2019,44(18): 131-134.

    Continuous Integration and Continuous Testing Analysis Based on Automotive Embedded Software

    WANG Shuai, LAN Qiliang, CHEN Cong, WU Guangyao, ZHOU Shenghui

    ( Product Planning & Automotive New Technology Research Institude,BYD Automobile Industry Company Limited, Shenzhen 518118, China )

    As the iteration of automotive embedded software becomes more and more frequent, it poses a higher challenge to software quality, and so software integration and testing cycles become shorter and more frequent. Continuous integration/continus testing(CI/CT) has been acknowledged as the best practice for early detection of defects.This paper analyzes the development process of automotive embedded software,though introducing the method of continuous integration testing,and a software continuous integration testing platform is built based on Jenkins.The platform supports multiple development languages, and can integrate and call the tool chain of compiler, model in loop(MIL) testing, hardware in loop(HIL) testing, etc., so as to realize the complete automation of software integration, testing and defect notification. Finally, engineers can be free themselves from tremendous software development tasks.After the application of continuous integration and continuous testing methods in a hybrid electric vehicle(HEV) vehicle control unit (VCU) software projects, nearly 90% of the software iteration time can be saved.

    Continuous integration;Continuous testing analysis;Software automated testing;Automotive embedded software

    U467.5+26

    A

    1671-7988(2023)10-156-07

    10.16638/j.cnki.1671-7988.2023.010.032

    王帥(1989—),男,工程師,研究方向?yàn)榛旌蟿?dòng)力汽車(chē)控制、嵌入式軟件、軟件自動(dòng)化測(cè)試,E-mail:sandey. wong@hotmail.com。

    猜你喜歡
    嵌入式軟件測(cè)試用例插件
    基于SmartUnit的安全通信系統(tǒng)單元測(cè)試用例自動(dòng)生成
    自編插件完善App Inventor與樂(lè)高機(jī)器人通信
    電子制作(2019年22期)2020-01-14 03:16:34
    基于混合遺傳算法的回歸測(cè)試用例集最小化研究
    實(shí)時(shí)嵌入式軟件的測(cè)試技術(shù)
    全景相機(jī)遙控器嵌入式軟件V1.0 相關(guān)操作分析
    電子制作(2017年17期)2017-12-18 06:40:56
    MapWindowGIS插件機(jī)制及應(yīng)用
    基于Eclipse的航天嵌入式軟件集成開(kāi)發(fā)環(huán)境設(shè)計(jì)與實(shí)現(xiàn)
    航天嵌入式軟件浮點(diǎn)運(yùn)算誤差分析與控制
    基于Revit MEP的插件制作探討
    基于依賴結(jié)構(gòu)的測(cè)試用例優(yōu)先級(jí)技術(shù)
    嵊泗县| 砀山县| 达拉特旗| 岚皋县| 公安县| 宜兰市| 光泽县| 荣成市| 花垣县| 栖霞市| 龙游县| 张家界市| 庄浪县| 子洲县| 丹凤县| 蓬溪县| 永兴县| 平潭县| 鄄城县| 康平县| 喀什市| 新丰县| 黄骅市| 日喀则市| 义马市| 旅游| 武汉市| 武乡县| 瓮安县| 巴彦县| 五指山市| 五寨县| 张家界市| 孟津县| 福贡县| 舒兰市| 大埔县| 军事| 峡江县| 浪卡子县| 开平市|