国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      測(cè)試腳本自動(dòng)生成方法及裝置與流程

      文檔序號(hào):12665574閱讀:444來源:國(guó)知局
      測(cè)試腳本自動(dòng)生成方法及裝置與流程

      本發(fā)明涉及人機(jī)交互測(cè)試領(lǐng)域,尤其涉及一種測(cè)試腳本自動(dòng)生成方法及裝置。



      背景技術(shù):

      人與計(jì)算機(jī)設(shè)備之間通過人機(jī)語言(Man-Machine Language,MML)命令的方式實(shí)現(xiàn)了人機(jī)對(duì)話。由于MML命令動(dòng)輒幾千行,對(duì)其測(cè)試時(shí)的工作量非常大,當(dāng)前業(yè)界一般采用執(zhí)行批量MML命令自動(dòng)化腳本的方式進(jìn)行測(cè)試。由于版本經(jīng)常變化,給大批量MML命令測(cè)試腳本的編寫帶來很大的挑戰(zhàn)。

      現(xiàn)階段常見的問題是被測(cè)系統(tǒng)業(yè)務(wù)變動(dòng)后,相對(duì)應(yīng)的MML命令測(cè)試腳本卻無法在規(guī)定時(shí)間內(nèi)及時(shí)編寫完成,原因是測(cè)試腳本更新和編寫過于復(fù)雜,導(dǎo)致無法在短時(shí)間內(nèi)完成編寫大量測(cè)試腳本。為了快速的完成自動(dòng)化測(cè)試腳本的編寫,大型的自動(dòng)化測(cè)試框架應(yīng)運(yùn)而生,其發(fā)展經(jīng)歷了如下幾個(gè)階段:

      1.非結(jié)構(gòu)化的自動(dòng)化測(cè)試框架:數(shù)據(jù)和MML命令測(cè)試腳本糅合在一起,一條腳本就是一個(gè)測(cè)試用例,這類腳本開發(fā)速度較快,但是維護(hù)成本很高,被測(cè)試系統(tǒng)的任何變化都需要通過更新腳本來解決。

      2.數(shù)據(jù)驅(qū)動(dòng)(Data Driven)的自動(dòng)化測(cè)試框架:從數(shù)據(jù)文件讀取輸入數(shù)據(jù),通過變量的參數(shù)化,將測(cè)試數(shù)據(jù)傳入測(cè)試腳本,不同的數(shù)據(jù)文件對(duì)應(yīng)不同的測(cè)試用例。在這種模式下,數(shù)據(jù)和腳本分離,腳本的利用率、可維護(hù)性大大提高,數(shù)據(jù)的覆蓋率也較高,但受功能邏輯變化的影響仍然很大。

      3.關(guān)鍵字驅(qū)動(dòng)(Keyword Driven)的自動(dòng)化測(cè)試框架:關(guān)鍵字驅(qū)動(dòng)測(cè)試是數(shù)據(jù)驅(qū)動(dòng)測(cè)試的一種改進(jìn)類型,它將測(cè)試邏輯按照關(guān)鍵字進(jìn)行分解,形成數(shù)據(jù)文件,關(guān)鍵字對(duì)應(yīng)封裝的業(yè)務(wù)邏輯。主要關(guān)鍵字包括三類:被操作對(duì)象(Item)、操作(Operation)和值(Value),依據(jù)不同對(duì)象還有其他對(duì)應(yīng)參數(shù)。關(guān)鍵字驅(qū)動(dòng)的主要思想是:腳本與數(shù)據(jù)分離、功能邏輯元素名與測(cè)試內(nèi)部對(duì)象名分離、測(cè)試描述與具體實(shí)現(xiàn)細(xì)節(jié)分離。

      上述方法是通過改進(jìn)腳本的結(jié)構(gòu)來提高腳本的編寫效率和可維護(hù)性,這種結(jié)構(gòu)化的腳本存在如下問題:一、腳本開發(fā)的復(fù)雜度高;由于要進(jìn)行數(shù)據(jù) 分離和關(guān)鍵字封裝,增加了腳本開發(fā)的技術(shù)難度,延長(zhǎng)了腳本開發(fā)周期;二、逐條編寫測(cè)試腳本,工作量大,而且存在較大的腳本維護(hù)工作量,MML命令變化后對(duì)關(guān)鍵字的修改需要花費(fèi)時(shí)間。



      技術(shù)實(shí)現(xiàn)要素:

      本發(fā)明實(shí)施例提供一種測(cè)試腳本自動(dòng)生成方法及裝置,以改善現(xiàn)有測(cè)試腳本生成方法過分依賴MML命令邏輯結(jié)構(gòu)的問題。

      本發(fā)明公開了一種測(cè)試腳本自動(dòng)生成方法,上述方法包括以下步驟:

      逐條掃描被測(cè)系統(tǒng)的MML命令及其參數(shù),生成MML命令模型;

      對(duì)上述MML命令模型中的每條MML命令設(shè)置生成測(cè)試腳本的數(shù)據(jù)規(guī)則;

      根據(jù)上述MML命令模型,生成測(cè)試腳本執(zhí)行順序樹;

      按照上述數(shù)據(jù)規(guī)則,為每條MML命令生成測(cè)試腳本,并按照上述執(zhí)行順序樹對(duì)生成的測(cè)試腳本排序,得到被測(cè)系統(tǒng)的測(cè)試腳本。

      優(yōu)選地,上述逐條掃描被測(cè)系統(tǒng)的MML命令及其參數(shù),生成MML命令模型步驟包括:

      掃描被測(cè)系統(tǒng)的所有命令樹配置文件,并存儲(chǔ)到新建的可擴(kuò)展標(biāo)記語言(Extensible Markup Language,XML)文件中,生成MML命令樹模型;

      掃描每條MML命令的參數(shù),并存儲(chǔ)到新建的XML文件中,生成MML命令參數(shù)模型;

      根據(jù)上述MML命令樹模型和上述MML命令參數(shù)模型,得到上述MML命令模型。

      優(yōu)選地,上述MML命令的參數(shù)包括以下至少之一:參數(shù)助記符、參數(shù)描述、參數(shù)數(shù)據(jù)類型、參數(shù)取值范圍、參數(shù)枚舉宏、參數(shù)枚舉描述。

      優(yōu)選地,上述對(duì)MML命令模型中的每條MML命令設(shè)置生成測(cè)試腳本的數(shù)據(jù)規(guī)則包括:

      根據(jù)當(dāng)前MML命令參數(shù)的數(shù)據(jù)類型和取值范圍,為上述MML命令生成默認(rèn)規(guī)則;

      判斷上述MML命令是否需要設(shè)置自定義規(guī)則;若是,則為上述MML設(shè)置自定義規(guī)則;否則,當(dāng)前MML命令的數(shù)據(jù)規(guī)則設(shè)置結(jié)束。

      優(yōu)選地,上述根據(jù)MML命令模型,生成測(cè)試腳本執(zhí)行順序樹步驟包括:

      按照上述MML命令模型中的MML命令樹模型,生成基礎(chǔ)執(zhí)行順序樹;

      對(duì)上述基礎(chǔ)順序樹進(jìn)行調(diào)整,得到上述腳本執(zhí)行順序樹。

      優(yōu)選地,上述默認(rèn)規(guī)則為:

      當(dāng)MML命令的參數(shù)類型為布爾型時(shí),生成布爾測(cè)試腳本,取值為:"TRUE"和"FALSE";

      當(dāng)MML命令的參數(shù)類型為枚舉型時(shí),生成枚舉測(cè)試腳本,取值為枚舉項(xiàng)的:最后項(xiàng)、中間項(xiàng)和第一項(xiàng);

      當(dāng)MML命令的參數(shù)類型為數(shù)值型時(shí),生成數(shù)值測(cè)試腳本,取值為:最小值、中間值和最大值;

      當(dāng)MML命令的參數(shù)類型為字符型時(shí),生成字符測(cè)試腳本,取值為:最小長(zhǎng)度、最大長(zhǎng)度;

      當(dāng)MML命令的參數(shù)類型為時(shí)間型時(shí),生成時(shí)間測(cè)試腳本,取值為:時(shí)間最小值、時(shí)間最大值和時(shí)間中間值;

      當(dāng)MML命令的參數(shù)類型為地址型時(shí),生成IP地址測(cè)試腳本,取值為:最小IP地址、最大IP地址和中間IP地址;

      當(dāng)MML命令的參數(shù)類型為復(fù)合型時(shí),生成復(fù)合測(cè)試腳本,取值為:復(fù)合參數(shù)的最小值、中間值和最大值。

      優(yōu)選地,上述MML命令包括以下至少之一:增加命令、刪除命令、查詢命令和修改命令。

      優(yōu)選地,上述自定義規(guī)則包括:枚舉參數(shù)遍歷規(guī)則、容量規(guī)則及組合規(guī)則;上述方法通過引入正則表達(dá)式或者TCL(Tool Command Language)編程的方式設(shè)置上述自定義規(guī)則。

      本發(fā)明進(jìn)一步公開了一種測(cè)試腳本自動(dòng)生成裝置,上述裝置包括:MML模型管理模塊、規(guī)則管理模塊、執(zhí)行順序樹管理模塊、測(cè)試腳本生成模塊;上述

      MML模型管理模塊,用于逐條掃描被測(cè)系統(tǒng)的MML命令及其參數(shù),生成MML命令模型并保存;

      規(guī)則管理模塊,用于為上述MML命令模型中的每條MML命令設(shè)置生成 測(cè)試腳本的數(shù)據(jù)規(guī)則并保存;

      執(zhí)行順序樹管理模塊,用于根據(jù)上述MML模型管理模塊中的MML命令模型,生成測(cè)試腳本執(zhí)行順序樹并保存;

      測(cè)試腳本生成模塊,用于按照上述規(guī)則管理模塊中保存的數(shù)據(jù)規(guī)則,為每條MML命令生成測(cè)試腳本,并按照上述執(zhí)行順序樹管理模塊中保存的執(zhí)行順序樹對(duì)生成的測(cè)試腳本排序,得到被測(cè)系統(tǒng)的測(cè)試腳本。

      優(yōu)選地,

      上述MML模型管理模塊,用于將掃描到的被測(cè)系統(tǒng)的命令樹配置文件存儲(chǔ)到新建的XML文件中,生成MML命令樹模型;將掃描到的MML命令的參數(shù)存儲(chǔ)到新建的XML文件中,生成MML命令參數(shù)模型;以及合并上述MML命令樹模型和上述MML命令參數(shù)模型;

      上述規(guī)則管理模塊,用于為用戶提供設(shè)置自定義規(guī)則的接口;根據(jù)MML命令參數(shù)的數(shù)據(jù)類型和取值范圍,為MML命令生成默認(rèn)規(guī)則,并判斷MML命令是否需要設(shè)置自定義規(guī)則;以及在MML命令需要設(shè)置自定義規(guī)則時(shí),接收并保存用戶設(shè)置的自定義規(guī)則;

      上述執(zhí)行順序樹管理模塊,用于為用戶提供調(diào)整測(cè)試腳本執(zhí)行順序的接口;以及按照MML命令模型中的MML命令樹模型,生成基礎(chǔ)執(zhí)行順序樹;接收用戶對(duì)上述基礎(chǔ)順序樹的調(diào)整并保存。

      本發(fā)明通過構(gòu)造MML命令模型,為每條MML命令設(shè)置生成測(cè)試腳本的數(shù)據(jù)規(guī)則并按照上述規(guī)則逐條生成測(cè)試腳本,進(jìn)而通過執(zhí)行順序樹對(duì)腳本進(jìn)行排序,產(chǎn)生可批量執(zhí)行的測(cè)試腳本;不受具體的應(yīng)用層MML命令的邏輯限制,使得測(cè)試腳本基本上自動(dòng)生成,同時(shí)也提供了人工干預(yù)的通道,降低了腳本開發(fā)的復(fù)雜度及難度,縮短了開發(fā)時(shí)間,維護(hù)簡(jiǎn)單,適應(yīng)性強(qiáng)。

      附圖說明

      圖1是本發(fā)明所述測(cè)試腳本自動(dòng)生成方法優(yōu)選實(shí)施例流程圖;

      圖2是圖1中步驟S101優(yōu)選實(shí)施例流程圖;

      圖3是圖1中步驟S102優(yōu)選實(shí)施例流程圖;

      圖4是圖1中步驟S103優(yōu)選實(shí)施例流程圖;

      圖5是本發(fā)明所述測(cè)試腳本自動(dòng)生成裝置優(yōu)選實(shí)施原理框圖;

      為了使本發(fā)明的技術(shù)方案更加清楚、明了,下面將結(jié)合附圖作進(jìn)一步詳述。

      具體實(shí)施方式

      應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

      本發(fā)明的核心思想是,根據(jù)被測(cè)系統(tǒng)的MML命令樹,構(gòu)建MML命令模型,并為模型中的每條MML命令自動(dòng)或手動(dòng)設(shè)置生成測(cè)試腳本的數(shù)據(jù)規(guī)則,生成測(cè)試腳本,然后再按照根據(jù)MML命令模型生成的執(zhí)行順序樹對(duì)測(cè)試腳本排序,得到被測(cè)系統(tǒng)的測(cè)試腳本;通過底層抽象的MML命令模型來解決應(yīng)用層的問題。

      如圖1所示,是本發(fā)明所述測(cè)試腳本自動(dòng)生成方法優(yōu)選實(shí)施例流程圖;本實(shí)施例包括以下步驟:

      步驟S101:逐條掃描被測(cè)系統(tǒng)的MML命令及其參數(shù),生成MML命令模型;如圖2所示,是本步驟優(yōu)選實(shí)施例流程圖,具體包括以下步驟:

      步驟1011:掃描被測(cè)系統(tǒng)的所有命令樹配置文件,并存儲(chǔ)到新建的XML文件中,生成MML命令樹模型;

      步驟S1012:逐條掃描MML命令及其參數(shù),并存儲(chǔ)到新建的XML文件中,生成MML命令參數(shù)模型;

      掃描的MML命令及其參數(shù)包括以下至少之一:命令助記符、命令描述、參數(shù)助記符、參數(shù)描述、參數(shù)數(shù)據(jù)類型、參數(shù)取值范圍、參數(shù)枚舉宏、參數(shù)枚舉描述。

      步驟S1013:合并MML命令樹模型和MML命令參數(shù)模型,得到MML命令模型。

      步驟S102:對(duì)上述MML命令模型中的每條MML命令設(shè)置生成測(cè)試腳本的數(shù)據(jù)規(guī)則;如圖3所示,是本步驟優(yōu)選實(shí)施例流程圖,具體包括以下步驟:

      步驟S1021:根據(jù)當(dāng)前MML命令參數(shù)的數(shù)據(jù)類型和取值范圍,為上述MML命令生成默認(rèn)規(guī)則;

      步驟S1022:判斷上述MML命令是否需要設(shè)置自定義規(guī)則;若是,則執(zhí)行步驟S1023;否則,當(dāng)前MML命令的數(shù)據(jù)規(guī)則設(shè)置結(jié)束,執(zhí)行步驟S1024;

      步驟S1023:為上述MML設(shè)置自定義規(guī)則;

      步驟S1024:判斷當(dāng)前MML命令是不是最后一條MML命令,若是,則數(shù)據(jù)規(guī)則設(shè)置結(jié)束;否則,執(zhí)行步驟S1025;

      步驟S1025:跳轉(zhuǎn)到下一條MML命令,執(zhí)行步驟S1021。

      數(shù)據(jù)規(guī)則是MML命令、參數(shù)類型、參數(shù)取值范圍的組合,是本發(fā)明的關(guān)鍵;也就是說,根據(jù)數(shù)據(jù)規(guī)則,即可生成MML命令的測(cè)試腳本;

      本發(fā)明中,默認(rèn)規(guī)則為:

      當(dāng)MML命令的參數(shù)類型為布爾型時(shí),生成布爾測(cè)試腳本,取值為:"TRUE"和"FALSE";

      當(dāng)MML命令的參數(shù)類型為枚舉型時(shí),生成枚舉測(cè)試腳本,取值為枚舉項(xiàng)的:最后項(xiàng)、中間項(xiàng)和第一項(xiàng);

      當(dāng)MML命令的參數(shù)類型為數(shù)值型時(shí),生成數(shù)值測(cè)試腳本,取值為:最小值、中間值和最大值;

      當(dāng)MML命令的參數(shù)類型為字符型時(shí),生成字符測(cè)試腳本,取值為:最小長(zhǎng)度、最大長(zhǎng)度;

      當(dāng)MML命令的參數(shù)類型為時(shí)間型時(shí),生成時(shí)間測(cè)試腳本,取值為:時(shí)間最小值、時(shí)間最大值和時(shí)間中間值;

      當(dāng)MML命令的參數(shù)類型為地址型時(shí),生成IP地址測(cè)試腳本,取值為:最小IP地址、最大IP地址和中間IP地址;

      當(dāng)MML命令的參數(shù)類型為復(fù)合型時(shí),生成復(fù)合測(cè)試腳本,取值為:復(fù)合參數(shù)的最小值、中間值和最大值。

      MML命令包括以下至少之一:增加命令、刪除命令、修改命令和查詢命令,以下以增加命令、刪除命令、修改命令、查詢命令的測(cè)試腳本為例,對(duì)上述默認(rèn)規(guī)則進(jìn)行說明:

      1)增加命令的測(cè)試腳本的最大邊界值產(chǎn)生規(guī)則:每個(gè)參數(shù)取最大值,字符型參數(shù)取最大長(zhǎng)度,復(fù)合型參數(shù)中的每個(gè)參數(shù)也取最大值;

      2)增加命令的測(cè)試腳本最小邊界值產(chǎn)生規(guī)則:每個(gè)參數(shù)取最小值,字符型參數(shù)取最小長(zhǎng)度,復(fù)合型參數(shù)中的每個(gè)參數(shù)也取最小值;

      3)增加命令的測(cè)試腳本中間值產(chǎn)生規(guī)則:每個(gè)參數(shù)取中間值,字符型參數(shù)取中間長(zhǎng)度,復(fù)合型參數(shù)中的每個(gè)參數(shù)也取中間值;

      4)刪除命令的測(cè)試腳本參數(shù)產(chǎn)生規(guī)則:刪除最小值+1的必選參數(shù)的數(shù)據(jù),參數(shù)選擇:對(duì)于組合必選參數(shù),選擇第一個(gè)必選參數(shù)進(jìn)行刪除;對(duì)于數(shù)據(jù)容量少于等于三條的情況,刪除后,需要再進(jìn)行添加;

      5)修改命令的測(cè)試腳本參數(shù)產(chǎn)生規(guī)則:修改中間數(shù)據(jù)可選參數(shù)的值,所有的可選參數(shù)的值減少1;對(duì)于必選參數(shù)多于一個(gè)的情況,只操作第一個(gè)必選參數(shù);

      6)查詢的測(cè)試腳本參數(shù)產(chǎn)生規(guī)則:(a)對(duì)于沒有必選參數(shù)的show命令,不輸入必選參數(shù);(b)各個(gè)參數(shù)的最大邊界值;

      對(duì)于自定義規(guī)則,由于部分MML命令的數(shù)據(jù)會(huì)影響到后續(xù)的數(shù)據(jù)配置,或者數(shù)據(jù)之間的引用關(guān)系復(fù)雜,需要手動(dòng)定義規(guī)則,還有一種情況就是要對(duì)命令進(jìn)行更加復(fù)雜的測(cè)試,就需要自定義規(guī)則,一般使用引入正則表達(dá)式或者TCL編程實(shí)現(xiàn),常用的規(guī)則有:

      1)枚舉參數(shù)遍歷規(guī)則:某個(gè)參數(shù)的所有取值需要全部配置;

      2)容量規(guī)則:某條MML命令進(jìn)行容量測(cè)試,滿配置其數(shù)據(jù);

      3)組合規(guī)則:應(yīng)對(duì)參數(shù)之間的引用關(guān)系,例如:A參數(shù)取某個(gè)值時(shí),B參數(shù)只能取某些值;

      步驟S103:根據(jù)上述MML命令模型,生成測(cè)試腳本執(zhí)行順序樹;圖如4所示,是本步驟優(yōu)選實(shí)施例流程圖,具體包括以下步驟:

      步驟S1031:按照上述MML命令模型中的MML命令樹模型,生成基礎(chǔ)執(zhí)行順序樹;

      步驟S1032:對(duì)上述基礎(chǔ)順序樹進(jìn)行調(diào)整,得到上述腳本執(zhí)行順序樹。

      按照基礎(chǔ)執(zhí)行順序樹,大部分測(cè)試腳本命令都可以執(zhí)行,但其中有可能有部分測(cè)試腳本命令,前面的需要調(diào)用后面的數(shù)據(jù),因此需要根據(jù)具體情況,手動(dòng)調(diào)整執(zhí)行順序。

      步驟S104:按照上述數(shù)據(jù)規(guī)則,為每條MML命令生成測(cè)試腳本,并按照上述執(zhí)行順序樹對(duì)生成的測(cè)試腳本排序,得到被測(cè)系統(tǒng)的測(cè)試腳本。

      如圖5所示,是本發(fā)明上述測(cè)試腳本自動(dòng)生成裝置優(yōu)選實(shí)施例原理框圖,本實(shí)施例包括:MML模型管理模塊10、規(guī)則管理模塊20、執(zhí)行順序樹管理模塊30、測(cè)試腳本生成模塊40;其中:

      MML模型管理模塊10,用于逐條掃描被測(cè)系統(tǒng)的MML命令及其參數(shù), 將掃描到的被測(cè)系統(tǒng)的命令樹配置文件存儲(chǔ)到新建的XML文件中,生成MML命令樹模型;將掃描到的MML命令的參數(shù)存儲(chǔ)到新建的XML文件中,生成MML命令參數(shù)模型;以及合并上述MML命令樹模型和上述MML命令參數(shù)模型,生成MML命令模型并保存;

      規(guī)則管理模塊20,用于為用戶提供設(shè)置自定義規(guī)則的接口;根據(jù)MML命令參數(shù)的數(shù)據(jù)類型和取值范圍,為MML命令生成默認(rèn)規(guī)則,并判斷MML命令是否需要設(shè)置自定義規(guī)則;以及在MML命令需要設(shè)置自定義規(guī)則時(shí),接收并保存用戶設(shè)置的自定義規(guī)則;并保存為每條MML命令設(shè)置的生成測(cè)試腳本的數(shù)據(jù)規(guī)則;

      執(zhí)行順序樹管理模塊30,用于為用戶提供調(diào)整測(cè)試腳本執(zhí)行順序的接口;以及按照MML命令模型中的MML命令樹模型,生成基礎(chǔ)執(zhí)行順序樹;接收用戶對(duì)上述基礎(chǔ)順序樹的調(diào)整,生成測(cè)試腳本執(zhí)行順序樹并保存;

      測(cè)試腳本生成模塊40,用于按照上述規(guī)則管理模塊20中保存的數(shù)據(jù)規(guī)則,為每條MML命令生成測(cè)試腳本,對(duì)于有多項(xiàng)規(guī)則的命令按照規(guī)則的先后順序生成;并按照上述執(zhí)行順序樹管理模塊30中保存的執(zhí)行順序樹對(duì)生成的測(cè)試腳本排序,得到被測(cè)系統(tǒng)的測(cè)試腳本。

      綜上,本發(fā)明通過掃描被測(cè)系統(tǒng)構(gòu)建MML命令模型,并根據(jù)預(yù)先設(shè)置的每條MML命令生成測(cè)試腳本的數(shù)據(jù)規(guī)則;生成MML命令的測(cè)試腳本,然后再根據(jù)執(zhí)行順序樹對(duì)測(cè)試腳本進(jìn)行排序,生成被測(cè)系統(tǒng)的測(cè)試腳本。本發(fā)明通過底層抽象的MML命令模型來解決應(yīng)用層的問題。

      以上所述僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或流程變換,或直接或間接運(yùn)用在其它相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。

      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1