超碰91资源站-超碰97豆花-超碰97人妻-超碰97人人干-超碰97人人香蕉-超碰97天天操-超碰97在线资源站-超碰97资源站共享-超碰97资源站总站-超碰aa在线91-超碰av操-超碰爱爱

半岛外围网上直营

Loadrunner案例:某通信企業Web業務系統的性能測試

原創|行業資訊|編輯:龔雪|2016-06-07 11:57:26.000|閱讀 2049 次

概述:本文主要為大家講述一則Loadrunner案例,關于某省電信公司的業務系統的性能測試。

# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>

相關鏈接:

項目背景

該案例是某通信企業Web業務系統的性能測試。該Web業務系統用于管理企業的備品和備件,包括對網絡設備的庫存管理、庫存流轉、備品備件的查詢統計等功能。其中庫存管理、備品備件查詢等功能主要是對數據庫的增、刪、改、查操作,庫存流轉則主要體現為工作流的實現。

該系統的主要用戶是通信企業的備品備件管理人員,通過該系統,管理人員能夠對現有的備品備件庫數據進行查詢、更新,也可以通過該系統提供的業務流程完成備品備件的出庫和入庫操作。

對系統的測試在系統上線時進行,主要目的是驗證系統的性能能否達到用戶要求。

性能測試工具Loadrunner

點擊下載

項目特點

該項目基于J2EE實現,采用Tomcat作為應用服務器,架構上使用Struts+EJB+Herbinate,在業務上實現了多個流轉的流程。

該系統是一個典型的J2EE應用,從性能測試的角度來說,具有很強的代表性。從技術的角度來說,該系統使用了驗證碼方式防止對系統口令的暴力破解和可能的內部SPAM,由于現在越來越多的系統都采用驗證碼方式提高系統的安全性,因此在對本案例的描述中也特別給出了針對這種驗證碼的性能測試解決方案。

該系統的網絡環境和設備相對簡單,網絡環境是企業內部的千兆網絡,基本不可能對系統性能造成影響;設備方面,采用一臺UNIX服務器作為數據庫服務器,一臺UNIX服務器作為應用服務器。

該系統是一個以人機交互為主的系統,因此,對系統性能的體現主要通過響應時間來給出。

由于Web應用采用的協議單一(HTTP和HTTPS協議),因此特別適合用商業的性能測試工具(如LoadRunner)來輔助進行測試,本案例的描述中重點結合LoadRunner的使用,描述了在項目性能測試中用LoadRunner等工具進行測試的方法。

性能測試過程

本節描述性能測試的全過程,根據本書第5章的性能測試過程描述,按照PTGM模型分別對性能測試的各階段進行闡述。

測試前期準備

在了解該項目的基本狀況之后,首先開始測試前期準備工作。

1.系統基礎功能驗證

本案例中描述的性能測試安排在功能驗收測試之后,因此在性能測試中不需要額外安排基礎功能驗證。

2.組建測試團隊

根據該項目的具體情況,建立一個5人的團隊負責本次測試工作。由于該系統的設備環境和網絡環境相對簡單,因此沒有特別在團隊中包括系統工程師,團隊的5個成員中,1名是數據庫工程師,1名是性能測試設計和分析人員,3名是性能測試開發和實施人員。

在測試開始之前,根據對項目的了解,預計該系統的性能測試難點主要在測試設計和測試腳本實現階段,由于系統協議單一,架構相對比較簡單,且有合適的商業工具可以直接使用,因此在測試工具方面不需要投入太多的精力。

3.測試工具需求確認

考慮到系統測試的要求,確定的測試工具需求如下:

  • 支持HTTP/HTTPS協議層上的測試。
  • 能監控UNIX服務器的主要性能計數器值,如服務器的內存使用狀況、CPU使用狀況、磁盤I/O情況等。
  • 能監控Windows服務器的主要性能計數器,如服務器的內存使用狀況、CPU使用狀況、磁盤I/O情況、進程的內存使用情況等。
  • 支持對Oracle數據庫的主要性能計數器值進行監控。
  • 支持對Tomcat應用服務器的JVM內存使用狀況進行監控。

4.測試工具需求確認

性能預備測試用于對系統建立直觀的認識,在正式開始測試之前體驗性地使用了本系統的主要功能,根據體驗,系統的所有操作均能在4秒之內完成,響應時間相對較長的是登錄過程。

測試工具引入

根據測試前期準備確定的測試工具需求,目前市面上的性能測試工具基本都能夠支持這些需求,唯一有困難的是“監控Tomcat應用服務器的JVM使用狀況”,基本上所有的商業工具都不支持該需求。

最終確定的測試工具包括兩個方面的內容:采用LoadRunner工具作為主要的性能測試工具;對Tomcat的JVM使用狀況的監控通過自行開發工具來實現。

測試計劃

測試計劃階段需要分析用戶活動,確定系統的性能目標。

1.性能測試領域分析

根據對項目背景的了解,本性能測試要解決的主要問題為:驗證系統是否達到了預期的性能指標。

這些內容對應于第2章中給出的能力驗證應用領域。進一步根據第2章的內容,本測試可用的性能測試方法包括PerformanceTesting和StressTesting方法。

2.用戶活動剖析與業務建模

本案例描述系統的建模主要通過用戶活動建模和業務建模來體現和進行。

根據對被測系統的使用用戶進行書面的問卷調查,在問卷基礎上進行分析,可以得到如表1所示的典型用戶活動分析列表。

表1

注:①“實際使用用戶數量”是針對一個具體的業務模塊的,此處給出的數據是對某個具體業務模塊的估算。本案例中,通信企業實際使用該系統的人數約為1000人,但考慮到選取的“1天”的考察時間范圍,每個模塊每天的使用者為20~200人不等。

 ②“業務發生數”是根據書面的用戶調查方式獲取的,具體方法是將用戶的平均業務發生數乘以用戶數。

表1初步描述了用戶對各業務系統的使用情況,可以以此為基礎來進一步分析用戶場景,并據此設計相應的測試方案和用例,業務場景的分析與企業的實際業務模式相關。

在對用戶活動進行建模的過程中,還得到了以下數據:

  1. 平均每天使用該系統的總用戶數約為600。
  2. 平均每個用戶的loginsession時間為4小時(也就是說,平均每個用戶在8小時時間內有4小時處于“使用系統”的狀態)。
  3. 平均每個用戶在loginsession的時間范圍內進行500個業務操作。

根據以上數據,可以用第1章給出的公式進行計算:

并發用戶數:600×4/8=300

吞吐量:300×500/(4×60×60)=10,單位是頁面瀏覽數/秒(PageView/sec)。

有了這些數據就可以進行測試場景的設計了。

在分析了用戶的行為之后,為了給測試腳本開發提供依據,還需要對每個業務的操作過程進行描述。在本案例中,以“庫存流轉―審批”為例,對業務操作進行描述。

“庫存流轉——審批”業務步驟描述如下:

  1. 用戶單擊“審批”鏈接,進入審批頁面,頁面顯示所有等待審批的申請單。
  2. 用戶選中所有顯示審批單中的第一張審批單,單擊“審批通過”按鈕。
  3. 系統在頁面上反饋“審批通過”信息。

從表1中可以看到,該系統的主要業務集中在庫存流轉流程相關的活動上,因為這些活動都圍繞流轉進行,在業務場景設計時必須考慮流程之間的交互性。

另外,“導入備件Excel文件”業務的發生頻率和實際使用的用戶數量都不大,但由于每次的導入操作均會導入大量的數據,導入過程中系統承受的壓力很大,因此在設計場景時有必要單獨考慮該場景。

3.確定性能目標

本性能測試的應用領域已被確定為能力驗證,在確定性能目標時,主要圍繞這個方面確定。

本項目是一個開發項目,從需求和設計中可以獲得關于該系統性能目標的描述。根據需求和設計文檔,該系統的性能約束在文檔中的表達如下:

  1. 系統的頁面響應時間不超過10秒。
  2. 需要評估導入備件Excel文件對系統性能的影響,如果該操作影響其他業務,需給出建議。
  3. 系統能夠穩定運行。

在這些描述中,第(1)條是比較清晰的性能需求描述;第(2)條實際描述的并不是需求,而是希望在性能測試中安排對“導入”操作的性能表現的測試;第(3)條描述的是用戶的性能要求,但不夠明確。

經過多次溝通,最終確定的明確的性能需求如下:

系統在典型數據量情況下,頁面響應時間不超過10秒:典型數據量定義為當前系統的所有備件規模的靜態數據和半年的流轉數據。

  1. 系統在典型數據量情況下,頁面響應時間不超過10秒:典型數據量定義為當前系統的所有備件規模的靜態數據和半年的流轉數據。
  2. 系統能夠在高于實際系統運行壓力1倍的壓力情況下,持續穩定工作72小時:持續穩定工作定義為在系統運行期間,系統的可用資源不會出現持續性地減少,用戶響應速度沒有顯著變化。

除了這兩個直接從文檔中反映的系統性能需求,根據和用戶、項目經理等的溝通,另外確定的其他性能目標包括:

  1. 評估典型規模的Excel備件文件導入時對系統性能的影響:評估內容包括兩個方面,一個方面是對典型規模的Excel文件(考慮到系統實際的備件數據規模,選擇一個20MB、包含50000條數據記錄的Excel文件)進行導入時的效率評估;另一方面是通過組合場景,判斷導入操作對其他操作的影響。
  2. 在頁面響應時間要求10秒的情況下,找到系統能夠承受的最大用戶數量:該要求可以給用戶提供一個可擴展性的參考。

表2給出了分析整理后的性能需求描述。

表2

對能力驗證應用領域來說,本測試需要重點關注的是業務的響應時間、各服務器的資源使用狀況,結合性能測試需求,性能目標可以定義如下:

  1. 在典型用戶數量要求的情況下,服務器CPU平均使用率不高于75%,內存使用率不高于75%。
  2. 在穩定性測試的壓力情況下,服務器CPU平均使用率不高于95%,內存使用率不高于90%。

4.制定測試時間計劃

本案例采用商業性能測試工具LoadRunner進行測試,由于本案例涉及較多的流程交互等內容,因此重點集中在如何設計和實現合理的性能測試腳本,這需要消耗較多的時間和人力資源。

另外,測試結果的分析也需要安排足夠的時間進行。本案例的測試時間計劃安排如表3所示。

表3

測試設計與開發

測試設計與開發包括測試環境設計、測試場景設計、測試用例設計和測試輔助工具開發多個活動。對本案例而言,測試場景關注用戶以何種方式使用本系統,以場景來體現性能測試的目的和目標。

1.測試環境設計

本性能測試需要驗證系統在實際生產部署環境上的性能,因此,選擇盡可能接近實際生產環境的環境來進行測試。由于本測試的環境就是實際的生產環境,因此在環境設計上,沒有太多需要考慮的內容。

最終確定的測試環境如表4所示。

表2給出了用作測試的基礎數據量?;A數據量的計算方法在前兩個案例中都有描述,在此不再重復。

表4

2.測試場景設計

結合表1的和表2可以很容易地為該案例給出需要的測試場景。

根據上面給出的數據,設定的總并發用戶數為300,按照業務模塊訪問用戶數比例給定VU分配比例,為了達到10PageView/sec的吞吐量,每個VU的操作之間間隔應該為300/10=30秒。

根據調查的結果,我們確定了幾個典型的測試場景,如表5所示。

表5-1

表5-2

3.測試用例設計

確定測試場景之后,原有的業務操作描述可以更進一步完善為可映射為腳本的測試用例描述。

在本案例中,可以將用戶業務操作形成更詳細的用例步驟。例如,“審批”業務可以描述如下:

用例編號:TC_XXXX_XX-1

用例條件:用戶已登錄,登錄用于具有審批的權限

用戶步驟和驗證方法:

  1. 用戶單擊“庫存流轉”鏈接,進入庫存流轉頁面。
    【驗證】頁面出現“庫存流轉”提示字符串。
  2. 用戶在頁面左側樹視圖上單擊“審批”鏈接,進入審批頁面。
    【驗證】頁面上出現“申請單列表”提示字符串。
  3. 用戶在頁面給出的等待審批的申請單列表中選擇最上方的一個,單擊“審批”按鈕,進入審批頁面。
    【驗證】給出選中審批單信息,頁面上出現被選中審批單的編號。
  4. 用戶輸入審批信息,單擊“通過”按鈕。
    【驗證】頁面上出現“審批通過”提示字符串

從該用例的描述可以看到,在每個操作步驟之后,都給出了相應的驗證手段。對性能測試來說,驗證手段同樣關鍵。性能測試工具(如LoadRunner等)在性能測試過程中為了VU的效率,一般只通過HTTP返回的HTTPCode判斷請求是否成功,對于典型的如HTTP500、HTTP404等錯誤,LoadRunner能夠判斷,但如果采用了自定義錯誤頁面,或是返回了表示異常狀態的頁面,LoadRunner便不能發現。

基于以上原因,通常需要在腳本中添加一些用于驗證返回頁面是否正確的代碼,最常用的方法是判斷頁面中是否存在特定的字符串。因此,在每個用例中都描述了每個步驟結果的驗證方法。

4.腳本和輔助工具的開發

本案例采用LoadRunner作為性能測試工具,下面通過該案例首先介紹LoadRunner在性能測試中的一般應用步驟,然后重點說明在性能測試過程中遇到的問題和解決方法,依次演示LoadRunner使用中的一些技巧和技術。

(1)LoadRunner的性能測試過程。

用LoadRunner工具輔助進行性能測試,一般包括錄制和調試腳本、設置場景、運行場景、收集結果并分析4個活動。

錄制和調試腳本活動使用LoadRunner的VirtualUserGenerator應用(下文中簡稱為VUGenerator)完成,運行該應用,選擇合適的錄制協議,打開被測應用的客戶端程序(對B/S應用,客戶端程序就是瀏覽器),按照預期即可進行錄制。LoadRunner錄制的腳本中體現的是客戶端和服務器之間的通信數據以及相互的交互關系。

腳本的錄制依據事先分析出的用戶活動和案例。按照測試用例設計中給出的具體操作描述,打開VUGenerator工具,輸入應用的起始URL,根據用例描述執行操作,錄制腳本。LoadRunner針對Web應用錄制的腳本默認分為vuser_init、Action和vuser_end3段,其中,vuser_init和vuser_end段只在腳本運行時執行一次,而Action段的執行次數由腳本或場景的RuntimeSetting控制。一般來說,在錄制腳本時,會把Login和Logout的步驟分別放在vuser_init和vuserend段中,而把針對業務的操作步驟放在Action段中。

VUGenerator同時提供了對腳本調試的良好支持。腳本錄制完成后,需要經過一個仔細的調試階段才能保證腳本確實準確無誤地反映了計劃中的測試意圖。調試過程中經常進行的操作是參數化、關聯和調試輸出。

設置場景活動由LoadRunner的Controller工具支持。運行Controller工具,根據測試設計中確定的典型測試場景(見表1),將不同的腳本按照場景中設計的比例分配到一個場景中。并且,測試場景中還需要根據設計的典型場景中的“性能計數器”項目,設置需要進行監控的性能計數器內容。圖1描述的是根據表5設計的“系統應用典型場景1”實施的場景。

圖1

場景設置涉及的細節內容較多,除了在該場景中分配執行各腳本的VU數量外,還需要根據測試設計添加需要增加的性能計數器(見圖2),最后,特別需要關注的是針對腳本的RuntimeSetting設置(見圖3),例如,表5給出的“典型場景1”中描述了需要每個腳本Action部分迭代100次,這就需要在Controller的設置中給出每個腳本的迭代次數設置。

圖2

圖3

運行場景活動相對簡單,單擊Run頁面中的StartScenario按鈕,Controller就會自動開始運行場景,并在ScenarioStatus中顯示運行時的信息。

收集結果并分析活動需要Analysis應用的支持,Analysis應用可以被獨立啟動,也可以從Controller程序中調用。從Controller程序中調用時,Analysis應用直接讀取本Controller當前場景運行時的信息。圖4給出了Analysis應用運行時的界面。

圖4

Analysis應用能夠根據用戶設定的性能計數器生成各種性能報表。不過,Analysis最多也只能起到輔助進行性能測試分析的作用,要對性能測試的結果進行分析,還要依靠測試分析者的經驗、技能和對系統的了解。

(2)錄制“登錄”腳本。

針對該應用錄制登錄腳本時,驗證碼是一個首要的困難。

驗證碼是在進行登錄或內容提交時,頁面上隨機出現的人工可識別但機器不可識別的驗證字符串(一般是采用背景、扭曲等方式產生的圖片),要求登錄或提交內容的同時輸入,如果驗證碼輸入錯誤,則不允許進行要求的操作。

本案例中的被測系統使用了驗證碼技術,其要求輸入驗證碼的頁面內容如圖5所示。

驗證碼可以有效防止采用機器猜測方法對口令的刺探,目前己經被許多Internet或Intranet應用接受為標準的實現方式。但對性能測試來說,驗證碼卻帶來了很大的問題。因為驗證碼具有阻止通過自動工具嘗試的特性,因此,對于本質上也是自動化工具的性能測試工具,驗證碼同樣具有相當的威力。

圖5

具體到本案例系統,在錄制腳本時,LoadRunner可以錄制用戶輸入的“用戶名”、“密碼”和“驗證碼”信息,但在回放時,由于要求的驗證碼與錄制時的驗證碼不可能相同,因此回放必然會失敗。

為使性能測試能夠順利進行,需要采用某種方法解決上述問題。在筆者的實際工作中,通常使用下面3種方法解決該問題。

第1種方法是最容易想到的方法——在被測系統中暫時屏蔽驗證功能,也就是說,為性能測試臨時修改應用,在應用中屏蔽驗證碼(也就是說,無論用戶輸入的是什么驗證碼,應用都認為其是正確的)。

這種方法最容易實現,對性能測試結果也不會有太大的影響。這種方式去掉了“驗證驗證碼正確性”這個環節,從理論上來說,測試得到的結果與存在“驗證驗證碼正確性”環節的應用系統存在細微的差異,不過考慮到此環節一般不會成為系統性能瓶頸,因此認為這種處理方式對性能測試結果沒有太大的影響。

這種方法對于處于未上線狀態或在受控的測試環境中運行的系統非常適用,但對于已經實際上線運行的系統來說,這種方法有一個明顯的問題:屏蔽驗證功能會對己經在線運行的業務造成非常大的安全性風險。

因此,我們建議在受控的測試環境中采用該方法,但對于已上線的系統來說,不推薦使用該方法。

第2種方法是在第1種方法的基礎上稍微進行一些改進。

第1種方法的主要問題是安全性問題,為了應對對在線系統安全性的威脅但在其中留一個“后門”——設定一個“萬,可以在修改程序時不取消驗證,能驗證碼”,只要用戶輸入該“萬能驗證碼”,應用就認為驗證通過,否則,還是按照原先的驗證方式進行驗證。

這種方式仍然存在安全性問題,但由于可以通過管理手段將“萬能驗證碼”控制在一個較小的范圍內,而且只在性能測試期間保留這個“后門,基本上可以看作是可靠的。

相對第1種方法來說,這種方法在安全性方面進行了改進,在能夠通過管理手段控制“萬能驗證碼”范圍的情況下,該方法不失為一種簡單易行且相對安全的方法。

第3種方法采用更進一步的方法來處理驗證碼的問題。

LoadRunner能夠調用外部的DLL或組件接口,考慮到這個特性可以根據“驗證碼驗證”的實現,寫一個獲取驗證碼的動態庫,在測試腳本中調用其接口即可。關于如何在LoadRunner中使用外部DLL,參見本書第11章的內容。

在使用以上驗證碼處理的方法時,特別要注意,如果針對的是己上線運行的實際系統,無論用哪種方法,測試完成后,都必須立刻將應用恢復,并對系統進行一次安全審計,以免在測試期間被他人入侵。

在本案例中,采用第2種方法來解決驗證碼帶來的問題。

以下是腳本中與登錄相關的部分代碼:

圖6-1

圖6-2

這段腳本中灰色背景的粗斜體內容就是修改系統實現后留下的“后門”,其中,5847是在代碼中控制的一個“萬能驗證碼”,主要用戶輸入該驗證碼,系統就認為驗證通過。

細心的讀者還會發現,這段代碼已經經過了關聯處理,其中粗斜體標識的內容就是關聯產生的參數內容。這段代碼的關聯是通過LoadRunner的“自動關聯”方式實現的,具體實現方法請見第11章。

解決了驗證碼和登錄時關聯的問題后,登錄腳本還需要處理的另一個問題就是針對輸入的用戶名和口令進行參數化處理,本案例中共使用了10組不同的用戶名和口令組合。對用戶名和口令實現參數化的具體步驟請見第11章。

(3)錄制“新建申請單”腳本。

錄制“新建申請單”腳本需要首先按照設計中該用例的操作步驟進行錄制,以下是按照“新建申請單”用例步驟進行錄制后生成的部分腳本代碼。

圖7

從腳本中可以看到,腳本中給出了申請的發起時間和到期時間,為了使腳本具有更好的適應性,我們決定將這兩個時間分別以“當前時間”和“當前時間的前4天”進行替代,這需要對腳本進行參數化操作。在VUGenerator中,選中需要參數化的內容(兩個時間),從右鍵菜單中選擇Replacewithaparameter命令,在出現的對話框中設定參數類型為Date/Time,設置時間格式為適合的格式,如圖8所示。

設置到期時間時,需要將參數在當前時間的基礎上再增加4天。圖9所示為設置到期時間的對話框,要注意其中設置的Offsetparameterby選項。

另外,為了便于直觀地識別數據是在哪次操作時插入的,在新建申請單時將“備注”的內容修改為“test-”+“當前時間”(當前時間精確到秒)。

圖8

圖9

參數化修改完成后的腳本代碼如下:

圖10

除了參數化之外,在腳本中還需要體現“驗證返回結果是否正確”,驗證返回結果是否正確通過LoadRunner提供的web_eg_find函數實現。該函數的原型是:

圖11

在腳本中加入該函數可以根據頁面是否存在指定的文本等來驗證系統處理的正確性。在用例設計時我們給出了“審批”業務的用例,其中包括的每個“驗證”點都可以用這種方式來處理。例如,對給出的“【驗證】頁面上出現‘申請單:列表’提示字符串”要求,可以在指定的發送請求的語句后添加下面的語句來驗證:

Web_reg_find("Text=申請表:列表",LAST);

該語句可以驗證返回的頁面上是否包含“申請表:列表”文本內容。

(4)錄制“審批”腳本。

“審批”涉及到“流程”的概念,測試場景中要求一部分用戶“新建”申請單,另一部分用戶對已有的申請單進行“審批”操作。錄制腳本時,假設錄制了對某一條己有的申請單的“審批”,在回放時,如果指定的申請單已經被處理,則腳本的處理就會出錯。

圖12給出了審批時能看到的待審批申請單列表,在性能測試過程中,每個VU看到的列表都會有所不同,為了使性能測試時每個VU都能夠順利執行(處理待審批的申請單),必須在腳本中約定申請單的處理規則。為簡單起見,我們約定的規則是“每個VU都只處理當前未被處理申請單列表中的第一條記錄”。

圖12

為了實現這個規則,必須對錄制后的腳本進行一些處理。未處理的錄制生成腳本的相關部分代碼如下:

圖13

/*動作2——單擊指定的審批單記錄,給出審批單的詳細信息,允許用戶對其進行審批*/

圖14

/*動作3——填寫審批單后進行提交,提交為"通過審批"*/

圖15

以上代碼中的數字“20051223004”表明了要處理的記錄的ID。動作2和動作3都使用了唯一標識審批單記錄的ID(數字20051223004)來對指定的審批單操作,那么,這個審批單的ID是從哪里得到的呢?

注意動作1,該動作返回當前所有可被處理的審批單列表,幾乎可以肯定,用于標識審批單ID的數字是作為該動作的響應返回給我們的。在VUGenerator中切換到TreeView視圖(單擊工具欄中的ViewTree按鈕),選擇ServerResponse選項卡,可以看到圖16所示的結果。

將圖16顯示的信息與圖15進行對比,圖15是瀏覽器呈現的頁面,而圖16給出的則是該頁面的對象信息和以文本方式顯示的HTML內容。

圖16左側樹型的3個radio:appids節點對應于圖15顯示的3條待處理審批單。而且,從右側顯示的HTML文本內容來看,這個Radio的value就是在后續腳本中需要使用到的用作ID的數值。

圖16

根據約定的規則,只要求每個VU處理第一條未審批的記錄,這樣問題就轉變成了一個典型的關聯問題―如何從動作1返回的HTML文本中獲取到第一條未審批記錄的value值。

本書的第11章詳細描述了相關的內容,對Web應用的性能測試腳本而言,主要的關聯函數是web_reg_save_param函數。該函數必須放在產生需要獲取關聯內容的語句之前(在本案例中,要放置在“動作1”的語句之前),其原型是:

圖17

其中,第一個參數是關聯操作獲取的內容保存的變量;最后一個參數是LAST;中間的參數描述了約束要獲取關聯內容的各種屬性。指定關聯屬性時,必須指定“左邊界”和“右邊界”,視情況還可指定其他屬性。對本案例來說,需要進行關聯的內容在返回的HTML文本中,文本內容為:

圖18

需要通過關聯操作獲取的內容是“20051223004",可以選取左邊界為“value="”,右邊界為“"”??紤]到返回的HTML文本中能夠與選取的左邊界與右邊界匹配的內容較多,因此還需要通過ORD屬性指明具體的需要關聯的內容位置。

最終關聯處理完成后的腳本代碼片斷如下:

圖19

添加的web_reg_save_param語句表明,需要關聯的內容存在于下一個Request為“"”返回的HTML內容的BODY中,該內容左邊界為“value="”,右邊界,在這個HTML內容的BODY中,我們想要通過關聯獲取的內容順序排在第4個出現符合約束條件的位置。

(5)錄制其他腳本

錄制其他腳本的過程相對比較簡單,主要的技術細節和難點都在上幾個腳本的錄制過程中進行了詳細描述,在此不再贅述。

測試執行與管理

在測試執行與管理之前的過程和活動中,己經明確規劃了本性能測試的環境、場景和腳本,在本過程中,只需要按照前面階段的要求,將測試場景和腳本進行部署,然后執行測試并記錄結果即可。

建立測試環境

建立測試環境只需要按照測試設計中設計的環境設計內容部署測試環境。部署測試環境的工作一般由團隊中的系統工程師完成,可以采用CheckList幫助進行測試環境的部署。

表6給出了一個CheckList的示例。

表6

部署測試腳本和測試場景

根據設定的性能測試場景,在LoadRunner工具中對其進行部署,部署過程請參考本書的第11章。

多學兩招:

本案例共設定了5個場景和多個業務用例(腳本)。在場景和用例較多時,如果對其管理不善,常常會導致測試過程中的麻煩。因此,在實際測試過程中,一般使用具有一定意義的場景和腳本名稱標識不同的場景和腳本。

例如,在本案例的測試過程中,使用“測試項目名稱_場景名稱”的方式為LoadRunner中的場景文件命名;使用“測試項目名稱_業務名稱_特殊說明”為LoadRunner中的腳本命名。這樣在后續的測試過程中,可以很容易地根據場景和腳本的名稱識別出場景和腳本的用途。

執行測試和記錄結果

本性能測試中使用LoadRunner作為性能測試工具,性能指標的數據主要通過LoadRunner的Monitor等獲得,因此主要通過LoadRunner來記錄數據。唯一例外的是針對Tomcat的服務器狀態監控,這部分通過Tomcat提供的StatusSeverlet進行監控,監控得到的數據保存在本地文件中,通過Excel進行處理并以圖表的方式呈現。

用LoadRunner執行測試非常簡單,只需要通過Controller的GUI界面就可以完成執行和監控工作。這部分的具體內容請參考本書的第11章。對Tomca秒獲取一次數據t使用的JVM進行監控通過Tomcat的statusservelet實現,每5,獲取的數據保存在文本文件中。

但在實際的性能測試過程中,由于一些設置等問題,有時候會遇到執行出錯的情況。典型的情況是腳本在單獨回放時沒有任何問題,但部署到場景中執行時卻出現一些奇怪的錯誤。

本案例的執行過程中就出現了這樣的情況。設定好測試場景并開始執行后,從Controller的界面上可以看到“HTTP404:CannotfindpageXXXX”的錯誤信息。剛看到這個問題時覺得特別奇怪,因為在回放的過程中沒有出現過這樣的錯誤,而且,從計數上看,通過的Transaction一共只有500個,除去200個vuser_init和vuser_end的Transaction,通過的只有300個,也就是說,每個腳本都只有第一次迭代的執行是正確的。

仔細檢查WebServer的日志,發現該日志中有多個訪問timeout.jsp的記錄,詢問開發人員得知,session超時后才會訪問這個頁面。首先排除了由于迭代之間的等待時間過長導致超時的可能,隨后經過仔細分析,覺得問題產生的原因可能與LoadRunner的設置有關。

HTTP協議本身是非面向連接的無狀態的協議,為了適應Web應用需要的交互特性,一般需要使用sessionid來標識一些會話中的各個request和response為了保留住sessionid,一般的做法是用hiddenfield、cookie或是在URL上附加sessionid來解決,我們懷疑本題的出現與sessionid的處理相關。

查看LR記錄的頁面訪問數據(見圖20),可以看到,在ClientRequest中附帶了JSESSIONID的信息,可見,該應用是用cookie解決sessionid的問題的。

圖20

接下來,可以大膽猜測,出現問題的原因可能是在兩次迭代之間LR清除了cookie,這就使在第一次迭代時應用操作成功,但在隨后的執行中由于不存在sessionid的標識,使后續的操作全部失敗。

檢查腳本RuntimeSetting的設置(見圖21),果然Simulateanewuseroneachiteration選項被選中。LoadRunner的Manual里對Simulateanewuseroneachiteration選項的解釋是:“選中該選項后,LoadRunner在每次迭代時清除當前的上下文。”iteration選項的解釋是:“選中該選項后,LoadRunner在每次迭代時清除當前的上下文。”

圖21

取消選中該選項,重新運行Controller中的場景,結果正常。

多學兩招:

上面描述的問題是由sessionid引起的,更準確地說,是因為應用要支持session而導致應用使用了一些特殊的處理方法引起的。那么,究竟什么是session,session一般在程序中以何種方式存在呢?

首先說一下session的起源。

HTTP協議本身是無狀態的,這與HTTP協議本來的目的是相符的,客戶端只需要簡單地向服務器請求下載某些文件,無論是客戶端還是服務器都記錄彼此過去的行為,每一次請求之間都是獨立的。

然而,對目前的大部分Web應用來說,“無狀態”導致許多應用都不得不花費大量的精力記錄用戶的操作步驟,人們很快發現,如果能夠提供一些按需生成的動態信息,會使Web變得更加有用,這種需求一方面迫使HTML逐步添加了表單、腳本、DOM等客戶端行為,另一方面在服務器端則出現了CGI規范以響應客戶端的動態請求,作為傳輸載體的HTTP協議也添加了文件上載、cookie這些特性。其中cookie的作用就是為了解決HTTP協議無狀態的缺陷所作出的努力。至于后來出現的session機制則是又一種在客戶端與服務器之間保持狀態的解決方案。下面用幾個例子來描述一下cookie和session機制之間的區別與聯系。假設在一個快餐廳有累計消費滿200元返50元的優惠,為了能夠準確地返給用戶正確的金額,可以有這樣幾種方案:

(1)該店的店員很厲害,能記住每位顧客的累計消費金額,只要顧客一走進快餐廳,店員就知道該怎么對待了。這種做法就是協議本身支持狀態。

(2)發給顧客一張卡片,上面記錄著消費的數量,一般還有一個有效期限。每次消費時,如果顧客出示這張卡片,則此次消費就會與以前或以后的消費聯系起來。這種做法就是在客戶端保持狀態。

(3)發給顧客一張會員卡,除了卡號之外什么信息也不記錄,每次消費時,如果顧客出示該卡片,店員則在店里的記錄本上找到該卡號對應的記錄并添加一些消費信息。這種做法就是在服務器端保持狀態。

由于HTTP協議是無狀態的,而出于種種考慮也不希望其成為有狀態的,因此,后面兩種方案就成為現實的選擇。具體來說,cookie機制采用的是在客戶端保持狀態的方案,而session機制采用的是在服務器端保持狀態的方案。同時也看到,由于采用服務器端保持狀態的方案在客戶端也需要保存一個標識,所以session機制可能需要借助于cookie機制來達到保存標識的目的。

session機制是一種服務器端的機制,服務器使用一種類似于散列表的結構(也可能就是使用散列表)來保存信息。

當程序需要為某個客戶端的請求創建一個session時,服務器首先檢查這個客戶端的請求里是否已包含了一個session標識——sessionid,如果包含,則說明以前已經為此客戶端創建過session,服務器就按照sessionid把這個session檢索出來使用(如果檢索不到,可能會新建一個);如果不包含,則為此客戶端創建一個session并且生成一個與此session相關聯的sessionid,sessionid的值應該是一個既不會重復,又不容易被找到規律以仿造的字符串,該sessionid將在本次響應中返回給客戶端保存。

保存sessionid的方式可以采用cookie,這樣在交互過程中,瀏覽器可以自動按照規則把這個標識發送給服務器。一般將cookie,設定為類似于SESSIONID的名稱,如weblogic對于Web應用程序生成的cookie,JSESSIONID=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764,該cookie的名字就是JSESSIONID。

測試分析

測試執行完成后,通過LoadRunner的Analysis模塊,可以對測試過程中得到的性能數據進行分析。

針對場景1、場景2、場景3的基礎性能分析

在進行性能分析時,首先可以檢查Analysis模塊提供的SummaryReport。下面以系統應用典型場景1為例進行分析。

圖22給出了該場景運行后的SummaryReport。

圖22

從圖22可以看出,整個測試過程中我們所關心的各業務(備件信息、查詢、申請表和登錄)的響應時間均超過了性能需求中定義的10秒,因此從總體來說,本系統沒有達到性能要求。

到此為止,已經得出了總體的結論,但是,性能測試結果的分析過程還遠遠沒有結束。因為我們的目的并不僅僅要得出“系統是否滿足預期的性能要求”這樣一個結論,還應該給出更加具有建設性的意見和建議。

例如,還需要考慮:性能是在什么時候開始變壞的?性能可能的瓶頸在哪里?

為此,我們首先關注性能測試過程中業務的執行成功比例。圖23給出了所有事務執行情況的柱狀圖。

圖23

從圖23可以看到,所有的事務執行都為成功,也就是說,測試結果基本可信。另外,從SummaryReport中的HTTP返回碼統計圖(見圖24)中可以看到,大部分的HTTP返回碼都是200和302,這說明應用在HTTP返回層面上是成功的,少部分的404返回碼通過對日志的檢查,可以確認是由于部分圖片文件缺失引起的,而這部分圖片文件的缺失是在開發過程中造成的,并不影響應用本身的正確性,也不影響應用性能測試結果的有效性。

圖24

確認測試結果的有效性之后,接下來對應用的性能表現進行初步的分析。

圖25給出了“申請單”業務的“RunningVuser-AverageTransactionResponseTime關聯曲線,從該關聯圖可以看出,應用系統的性能隨著RunningVusers數量的變化有一個明顯的變化趨勢。

圖25

多學兩招:

LoadRunner的Analysis應用默認并不會為每個事務生成RunningVusers-AverageTransactionResponseTime圖形,該圖形需要用戶通過Analysis應用提供的功能自行生成。

具體的操作步驟如下:

  1. 選中RunningVusers頁面,在圖形上單擊鼠標右鍵,選擇MergeGraph命令。
  2. 從彈出的對話框中選擇AverageTransactionResponseTime,從Merge類型中選擇Correlate,單擊OK按鈕。
  3. Analysis應用會打開一個新的頁面,該頁面顯示RunningVusers-AverageTransactionResponseTime曲線。

在圖25中,排除那些明顯的離散點,Vuser的數量從0至150增加時,各事務的性能表現基本保持穩定;當Vuser的數量從150至200增加時,事務的響應時間呈緩慢的線性增長狀態;當Vuser的數量超過200時,事務的響應時間急劇增加。

根據本書第1章中描述的性能下降曲線分析法可以知道,150個用戶為最佳狀態下的最大并發用戶數。從圖中可以看到,當Vuser增長到180時,基本上所有事務的響應時間都在10秒以內,因此,根據需求和性能下降曲線分析法,可以得出以下結論:

  1. 在系統應用典型場景1條件下,被測系統在180個并發用戶訪問的情況下事務響應時間小于10秒。
  2. Vuser為200是該系統性能表現的拐點。
  3. “申請單”事務是性能相對最差的事務。

為了確定影響性能的主要因素,我們采用同樣的方法得到RunningVusers-UNIXResources關聯曲線。圖26給出了兩臺服務器的CPU使用狀況和RunningVusers的關聯曲線。

圖26

從圖26可以看到,當Vuser超過110時,應用服務器的CPU使用率就已經超過了預期的75%,而將應用服務器和數據庫服務器的CPU使用率進行對比發現,數據庫服務器的CPU使用率一直都很低。由此可見,應用服務器的CPU應該是系統性能的瓶頸之一。

同樣,兩臺服務器的內存使用狀況和RunningVusers的關聯曲線也可用于比較,在本案例中,經過比較發現,在整個性能測試過程中,兩臺服務器的內存使用都沒有超過可用內存的70%,由此可見,可用內存并不是性能瓶頸之一。

對應用服務器來說,在性能測試中,除了關注服務器的內存使用狀況外,一個更重要的需要關注的內容是JVM內存的使用狀況。

圖27給出了應用服務器的JVM內存使用情況。

圖27

多學兩招:

圖27并非LoadRunner的Analysis應用生成的報表,而是將數據文件經過Excel處理后得到的曲線圖形。

在本案例中,由于采用的應用服務器是Tomcat5,LoadRunner不能直接支持對該應用服務器JVM內存使用狀況的獲取,因此我們自行編寫了一個小程序,通過Tomcat5提供的Servelet獲取JVM使用信息并將其寫入本地文件中。測試結束后,將生成的本地文件用Excel進行處理,得到的就是圖27所示的曲線圖。

從圖27可以看到,在整個測試過程中,應用服務器的JVM可用內存處于相對充裕的狀況,應該說JVM的可用內存不是性能瓶頸。但需要注意的是,JVM的內存使用呈現出鋸齒狀的波動,很可能在代碼中存在產生了過多的臨時對象等情況。

其他的場景可以采用類似的方法進行分析。分析表明,在測試方案中計劃的3個不同場景均存在同系統應用典型場景1類似的情況。

針對場景1、場景2、場景3的頁面分析

通過以上分析,可以基本解了應用的性能能力以及影響性能的系統瓶頸。在接下來的分析過程中,我們還希望了解到底哪個頁面在測試過程中的性能表現最差,表現差的具體原因是什么。

LoadRunner的Analysis應用提供了對頁面進行分解(breakdown)分析的輔助功能。下面以“申請單”事務為例,說明對頁面進行breakdown分析的方法和過程。

在AverageTransactionResponseTime頁面上單擊鼠標右鍵,從彈出的菜單中選擇ShowTransactionBreakDownTree命令,此時Analysis應用的左側會出現一個TransactionBreakdown樹型窗口,窗口中顯示所有事務的樹型列表(見圖28)。

圖28

在該列表上雙擊需要關注的事務,則可以打開一個新的WebBreakdown頁面(見圖29)。

圖29

從圖29可以看到,左側的Breakdown列表中列出了每個事務所包含的頁面請求動作,而對于每個頁面請求動作,用戶可以從DownloadTimeBreakdown、ComponentBreakdown(overtime)、DownloadTimeBreakdown(overtime)和TimetoFirstBufferBreakdown(overtime)4個不同的角度來對一個請求的響應進行分析。

從分析的角度來說,首先會關注每個請求響應所花費的時間,從而找出幾個最關鍵的請求(頁面),然后對其進行更詳細的分析。以本案例來說,考察“申請單”事務,//server:7001/bill/worklist.jsp?rd=0.5476723708419389請求的響應花費了最長的響應時間。圖30給出了其響應時間的曲線。

圖30

對這個具體的請求,可以首先從ComponentBreakdown(overtime)圖表上看返回頁面的每個組件所花費的具體時間。具體方法是選中ComponentBreakdown(overtime)單選按鈕。

圖31給出了進行ComponentBreakdown(overtime)分解后的曲線圖形。

圖31

結合圖30和圖31可以很清楚地看到,在性能測試執行到45分鐘左右時,返回頁面的幾個部件的響應時間都非常長,最為典型的是tool_del.gif、done_click_bg.gif等圖片文件。而從DownloadTimeBreakdown圖形中可以看到(見圖32),這些圖片都非常?。ㄐ∮?KB),而且這些圖片的平均downloadtime都很短,只在45分鐘附近才出現響應時間急劇增長的情況。

圖32

從這里基本可以斷定,引起這些圖片響應時間過長的問題應該在于系統的吞吐量受到了限制,由于我們關注的部件是靜態的圖片文件,也就是說,該問題主要是由于應用服務器在該時刻處理靜態文件時的吞吐量受到限制而引起的。

為了進一步驗證我們的結論,在TimetoFirstBufferBreakdown(overtime)的圖形中(見圖33)可以看到,在45分鐘左右,請求tool_del.gif文件的所有的時間消耗都是Servertime。

圖33

結合整個測試過程的RunningVusers、HitsperSecond以及Throughput的曲線(見圖34),可以看到,在45分鐘左右,RunningVusers保持在高水平上,但此時的吞吐量有一個明顯的變低的趨勢,說明此時應用服務器已經遇到了瓶頸,而且,該瓶頸表現在請求的靜態文件的響應時間顯著變長。

根據這些分析,基本可以得出以下結論和建議:

  1. 在測試進行到45分鐘時,系統遇到了一個明顯的性能瓶頸,該瓶頸的表現是響應時間明顯變長。
  2. 該性能瓶頸的產生主要是由應用服務器引起的,從應用服務器的表現來看,在該時刻對靜態文件的請求響應速度非常慢,而且服務器吞吐量明顯受到了制約。
     

    圖34

  3. 應用服務器的瓶頸之一是服務器的CPU,但并發用戶數應該是一個引起吞吐量制約的因素。
  4. 如果需要進一步確定系統的性能瓶頸,建議采用類似RBI的方法,首先純粹通過靜態文件檢查各種不同的并發條件下應用服務器的吞吐量限制,然后與場景的測試結果比較,檢查是否是由于應用服務器本身的吞吐量限制,從而決定進一步的調優策略。
  5. 如果最終的問題定位在應用服務器對靜態文件的吞吐量上,可以考慮采用Apache+Tomcat的架構,用Apache處理靜態頁面文件和圖形文件,用Tomcat處理JSP文件。

最后要說明的是,根據我們對測試結果的分析,性能的主要瓶頸在于應用服務器,因此在本案例中基本沒有對數據庫服務器的性能指標進行關注和分析。

針對穩定性測試場景的性能分析

對應用系統的穩定性測試,重點在于通過壓力測試,檢查長時間運行條件下的應用系統運行狀況,以及各服務器的資源使用狀況。

測試設計中設計的運行時間是72小時,主要的測試關注點包括:

  1. 服務器內存使用狀況。
  2. 應用服務器JVM內存使用狀況。
  3. 持續測試過程中的系統性能表現(響應時間)。
  4. 數據庫服務器的主要性能指標。

實際測試過程中,由于對場景1~場景3的測試結果表明,系統根本無法支持預期的壓力測試的用戶訪問量,因此沒有對其進行穩定性測試。

針對數據導入場景的性能分析

數據導入場景測試除了關注系統的響應時間等性能表現外,還特別關注服務器的磁盤I/O是否達到磁盤處理能力的極限。

系統響應時間性能的分析與上面的分析過程一樣,對磁盤I/O的關注通過UNIX系統提供的iostat命令獲取相關數據并進行分析。

計算最大磁盤I/O數的公式在本書的第3章中進行了詳細的討論,在此不再贅述。在本案例中,沒有發現系統存在服務器磁盤I/O方面的瓶頸。

四、案例小結

該案例展示了一個完整的應用LoadRunner對Web應用進行性能測試的全過程,它遵循PTGM模型進行性能測試,并重點給出應用LoadRunner進行性能測試需要關注的重點內容,展示了使用LoadRunner進行性能測試結果分析的方法。

該案例系統是一個具有典型代表性的基于J2EE的Web應用系統,采用標準的HTTP協議,因此主要使用LoadRunner這個商業工具作為性能測試工具。本案例非常詳細地描述了LoadRunner在實際應用中需要注意的一些問題,介紹的一些技巧和技術都值得讀者仔細體會。

本案例還額外討論了性能測試時驗證碼的處理方法,并根據一次解決實際問題的方法介紹了session這個對Web系統非常重要的概念。在對驗證碼處理方法的討論中,給出了3種可能的解決方案,逐一討論了各種方案的優點和缺點,并給出了每種方案的適用場合和使用注意事項。

使用LoadRunner對性能測試結果進行輔助分析是使用LoadRunner進行性能測試時的重要內容,本案例通過有針對性地重點描述系統測試結果的分析過程(包括基礎分析和頁面響應分析),并結合性能下降曲線分析方法,演示了對性能測試結果的分析過程。本案例描述的分析過程當然不是唯一的分析方法和過程,但確實是具有代表性的分析方法,希望讀者能夠仔細體會。

當然,就本案例本身來說,并不是針對被測的Web系統的全部性能測試內容(在對本系統的實際性能測試中,我們還按照RBI的方法對其進行了吞吐量測試、并發測試等),而只是為了說明性能測試進行了有針對性的簡化的一個案例描述,因此,讀者在學習體會本案例的過程中,也應該更深入的思考——如果你是這個性能測試項目的負責人,還需要關注哪些方面?


標簽:性能測試網頁測試軟件測試技術

本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@ke049m.cn


為你推薦

  • 推薦視頻
  • 推薦活動
  • 推薦產品
  • 推薦文章
  • 慧都慧問
相關產品
軟件
  • 產品功能:測試分析
  • 源 碼:非開源
  • 產品編號:13140
  • 當前版本:v2025.1 [銷售以商家最新版為準,如需其他版本,請來電咨詢]
  • 開 發 商: Parasoft 正式授權
  • ">Parasoft C/C++test

    針對 C/C++ 軟件開發提供統一、完全集成的測試解決方案。

    軟件
  • 產品功能:測試分析
  • 源 碼:非開源
  • 產品編號:13508
  • 當前版本:v12.55 [銷售以商家最新版為準,如需其他版本,請來電咨詢]
  • 開 發 商: 惠普 正式授權
  • ">LoadRunner

    LoadRunner是一款負載測試軟件,可使您精確洞察端到端系統性能,以便在應用正式推出之前識別和解決其中的問題。

    軟件
  • 產品功能:測試分析
  • 源 碼:非開源
  • 產品編號:13515
  • 當前版本:v12.5 [銷售以商家最新版為準,如需其他版本,請來電咨詢]
  • 開 發 商: 惠普 正式授權
  • ">Unified Functional Testing (UFT)

    Unified Functional Testing (UFT),原名QuickTest Professional (QTP),是一款自動化功能測試軟件。

    軟件
  • 產品功能:測試分析
  • 源 碼:非開源
  • 產品編號:13790
  • 當前版本:v12.5 [銷售以商家最新版為準,如需其他版本,請來電咨詢]
  • 開 發 商: 惠普 正式授權
  • ">HP Performance Center(HP PC)

    HP Performance Center 軟件是一款企業級性能測試平臺。設計用于推動標準化進程、集中式管理、全球協作以及形成卓越的性能測試中心。

    title
    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    利記足球官網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 真人boyu·博魚滾球網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 最大網上PM娛樂城盤口(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 正規雷火競技官方買球(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 雷火競技權威十大網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) boyu·博魚信譽足球官網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 權威188BET足球網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 正規188BET足球大全(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 国产成人av在线精品无码 | 国产精品福利在线观看免费 | 国产原创中文字幕在线观看 | 精品无码国产精品区 | 成人av在线一区二区三区四区 | 精品人妻无码一区二区色欲aⅴ | 国产精品白丝久久av网站 | 成人国产亚洲欧美成人综合网 | 东京热免费视频一区二区三区 | 国产精品一区二区三区久久久久 | 2025国精品夜夜天天人人 | 成人动漫第一页 | 动漫精品中文字幕无码第一页 | 91网站永久免费看nba视频 | 国产三级精品播放 | 18黑白丝水手服自慰喷水网站 | 国产一区二区日韩欧美在线 | 精品国产—亚洲人成在线 | av成人一区 | 99久久精品无码免费视频播放 | 国产精品嫩草99av在线 | 国产精品无码一区二区av | 18禁裸体动漫美女无遮挡网站 | 国产精品人人做人人爽人人添 | 国产午夜成人免费看片无遮挡 | 国产av巨作丝袜秘书 | 91久久精品国产91久久久久 | 国产福利萌白酱在线观看视频 | 国产成人一区二区在线 | 91在线国产在线观看高清 | 果冻传媒国产剧情免费版 | 精品久久久久久无码人妻热 | 国产精品国产日韩精 | 国产欧美久久精品不戴乳罩 | 2025精品国偷自产免费观看 | 国产足脚恋在线观看视频 | 国产一区二区免费在 | 国产精品午夜福利麻豆 | 成人午夜福利免费 | 国产午夜精品美女短视频 | a级毛片无码久久精品免费 a级毛片无码免费久久 | 国产在线精品一区二区在线看 | 国产精品香港三级国产av | 国产成人啪精品午夜 | 国产成人污污网站在线观看 | 91九色精品人成在线观看 | 国产女性无遮挡免费裸体视频 | 高清在线亚洲精品国产二区 | 国产99久久九九精品无码 | 国产日韩一区二区三区高清视频 | 91亚洲中文天 | 国产在线原创剧情麻豆 | 国产aⅴ精品一区二区三区色成熟 | 国产高清无码不卡顿在线观看 | 海角视频在线观看 | 91精品亚洲 | 成人免费av片在线观看 | 国产精品福利电影 | 国产亚洲啪啪视频 | 国产成人综合网在线观看 | 国产美女嫩模在线播 | 国产精品乱码在线观看 | 二区啪视频 | 精品国产品对白在线 | 国产麻豆剧传媒精品国产v 国产麻豆剧传媒精品国产v精品 | 国产成人在线手机在线 | 成人午夜男女爽爽影院 | 精品国产髙清在线看国产毛片 | 91精品国产欧美一区二区 | 国产日韩精品亚欧免费视频 | 国产一区二区三区在线影院 | 国产经典av三| 91久久精品一区二区三区 | 国产午夜免费啪 | 国产极品人妖在线观看 | 国产白浆视频 | 国产精品国产三级国产av | 国产一区在线免费观看 | 国产精品乱码一区二区三区 | 国产三级电影免费看 | 国产精品一区二区免费不卡 | 国产综合精品永久日韩一二三 | 精品国产国语对白 | 国产在线91观看免费观看 | 成人国产一区二区精品小说 | av天堂永久资源 | 韩国一区二区三区视频在线播 | 国产综合中文字幕在线 | 国产成人精品久久久久精品 | 国产在线第一区二区三区可以下载 | 国产在线视频国产永久 | 精品亚洲国产成人a片在线鸭王 | 91se在线观看一区二区 | 国产91精品一区二区麻豆亚洲 | 国精产品自线在拍在线精品 | av第三区亚洲狠狠婷 | 69精品视频 | 国产午夜福利不卡在线观看 | 国产在线高清伦免费理视频 | 91人妻无码精品一区二区毛片 | 国产成人午夜毛片 | 69精品人人| 18禁成年宅男午夜网站 | 国产一区二区三区内射 | 丰满一个美女app视频免费软 | 国产成人亚洲精品无码vr | 91精品视频一区 | av日韩国产一区二区三区 | 2025精品国夜夜天天拍拍 | 国产麻豆天美果冻无码视频 | 精品无码久久91毛片视频 | 99亚洲精品一区二区三区 | 国产成人精品久久 | 国产大学生一区 | 97精品亚成在人线免视频 | 99国产精一区二区 | 国产成人亚综合91精品首页 | 国产成人午夜福利电影在线播放 | 国产三级精品久久三级国专区 | 91亚洲伦理在线观看 | 成人日产国产av | 国产sm主人调教女m视频 | 国产av无码国产av毛片 | 国产麻豆剧果冻传媒浮生影视 | 国产精品高潮久久久久无码 | av老司机午夜福利片免费观看 | 国产极品久久久久极品 | 国产尤物在线视精品亚洲 | 国产v一区二区久久久 | 91精品福利观看 | 国产欧美日韩一区二区三区在线 | 国产激情一区二区三区无码 | 国产精品视频免费一区二区 | 国产三级在观线 | 精品国产天堂综合一区在线 | 精品熟女视频一区二区 | 国产成人三级在线视频网站观看 | 国产精品视频一区国模私拍 | 18禁无遮挡啪啪无码网站破解版 | 成人动漫视频在线观看 | 国产av成人一区二区三区 | 国产午夜精品无码 | 国产人妖网站大全免 | 国产麻豆剧果冻传媒视频免费 | 国产毛1卡2卡3卡4卡 | 成人欧美一区二区三区 | 国产v一区二区三区日 | 2025国产天天躁 | 国产午夜精品福利久久 | 国产高清无码在线一区二区 | 精品熟女视频一区二区 | 91福利视频网站 | 国产精品国产 | 国产免费口爆在线观看 | 国产午夜草莓视频在线观看 | av无码精品久久不卡网站 | av无码无在线观看 | 国产精品成人免费观看 | 2025亚洲阿v天堂在线观看 | 成人国产三级精品 | 国产精品无码久久久久成人影院 | 国产美女久久精品香蕉欧美 | 国产成人午夜精品影院游乐网 | 国产熟女亚洲精品明星自拍 | 国产精品毛片高 | 成人国产一区二区三区精品 | 成人无码精品1区2区3区免费看 | 国产欧美成人综合 | 国产精品成人免费视频一区 | 91精品综合久久久久五月天 | 国产美女天天爽天天乐 | 国产大学生喷水流白浆视频 | 福利精品老师 | 国产麻豆剧果冻传媒白晶晶 | 国产综合久久久久久鬼色 | 国产精品亚洲αv天堂 | 国产成人精品电影在线观看18 | av在线免费网址 | 精品亚洲av无码啪啪激情 | 国产精品一区二区日韩av在线 | a性色生活片久久毛片牛牛 a亚洲va老司机 | 国产精品熟女 | 国产毛片毛多水多密月 | 国产午夜精品毛片不卡 | 精品一区二区三区波多野结衣 | 国产成人精品久久免费 | 国产成人午夜福利在线视频 | 911青草亚洲精品 | 国产自产免费精品一区 | 国产无码中文字幕在线观看 | 国产三级久久久精 | 成人无码嫩草影院 | 国产在线精品一区二区不卡顿 | 国产精品一区二区三区高清在线 | 高清无码中文 | 国产成人精品电影 | 国产黄三级精品在线观看播放 | 国产爆乳无码视频在线观看3 | 国语自产自拍秒拍在线视频 | 91精品丝袜国产高跟在线一区 | 国产系列丝袜熟女精品网站 | 国产成人一区二区三区精品久久 | 国产高清无码免费 | 国产毛片一级在线 | 成人精品免费视频在线观看 | 国产av久久免费观看 | 国产成人av三级在线观看按摩 | 99久久婷婷国产综合精品青草 | 国产精品视频一区二区三区不 | 国产精品白丝jk黑袜喷水视 | 白嫩美女在线啪视频观看 | 国产在线欧美日韩色鬼 | 国产69式视频在线观看 | 国产精品边做奶水狂喷有码 | 国产精品欧美亚洲大片在线观看 | 国产无码免费在线观看网站 | 91精品福利资源在线观看 | 国产精品麻豆成人av电影 | 成人欧美日韩一区二区三区 | 国产精品黄色大 | 精品国产免费第一区二区 | 91成人国产综合久久精品 | 国产1区2区3区在线观看 | 国产一区二区三区不卡精品 | 国产欧美2025无马砖区 | 高清国产在线拍揄自揄视频 | 91精品国产| 国产日韩精品无码去免费专区国产 | 国产精品亚洲电影久久成人影院 | 国产一区二区三区成人欧美日韩在 | 国产成人8x人网站在线视频 | 国产一区在线观看无码av | 国产精品青草综合久 | 国产午夜精品亚洲精品国产 | 精品无码久久久久久久久国产va | 2025国产精品香蕉在线观看 | 国产综合在线视频一区二区 | 国产精品一区二区午夜嘿嘿嘿小说 | 精品福利一区二区三区在线观 | 国产精品一线二线三线精华液 | 国产精品无码亚洲精品蜜桃传媒 | 国产91丝袜在线播放 | 国产精品国产三级国产a无密码 | av中文字幕网免费观看 | 国产亚洲欧洲ⅴ综合一区 | 国产精品亚洲精品观看不卡 | 国产精品三级在线播放 | 国产成人无码剧情久久久久 | 国产精品无码一区二区在线 | 国产成a人片在线观看视频99 | 国产精品一区二区四区 | 国产黄色网页 | 国产原创在线 | 国产精品毛片一区二区在线 | av片无码v| 91成人爽a毛片免费网站观看 | 国产精品三级a三级三级午夜 | 加勒比无码一区二区三区 | 国产精品一区二区免费在线观 | 91免费观看| 国产午夜福利精品一区二区三区 | 成人午夜福利视频后入 | 爆乳邻居肉欲中文字幕 | 韩国美女精品一区二区三区 | 国产激情久久久久影院 | 精品久久久久精品三级a | a级毛片免费观看大全 | 精品无码一区 | 国产激情无码视频在线播放性 | 国产精品午夜理论片 | 国产精品专区 | 国产一级精品一区二区三区 | 国产v片在线观看精品亚洲 国产v日本v欧美v一二三四区 | 国产在线精品一区二区在线 | 国产av无码专区亚洲av高潮 | 国精产品一品二品国精破解 | 韩国日本免费高清观看 | 国产mv日韩一区二区三区 | 成人精品久久 | a级无码毛片久久18精品 | 国产粗话肉麻对白在线播放 | 国产欧美日韩综合亚洲 | 精品久久久久精品亚洲av | 91国产高清福利院 | 国产丝袜91 | 精品熟女一区 | av午夜久久蜜桃传媒软件 | 国产a级精品一级毛片 | 国产精品后入内射日本在线观 | 国产精品成人一区无码 | 国产精品白丝av在线观看播放 | 国产成人在线观看高清无删减 | 国产精品毛片在线完整版的 | 国产成人精品福利网站 | 丰满少妇人妻无码区 | 18禁美女黄网站色大片免费看 | 国产成人av第一页 | 91久久精品无码一区二区免费 | 国产白领诱惑在线观看 | 国产高清一区二区不卡视频 | 极品国产主播粉嫩在线观看 | 国产av一区二区三区 | 国产一区二区三区在线电影 | 99久久精品免费观看区一 | 国产一区二区三区好 | www中国黄色一级片 wwxx在线观看免费 | 成人无码精品1区2区3区免费 | 国产精品大奶视频 | 国产精品一区二区四区 | 国产精品视频一区二区 | 丰满少妇人妻久久久久久4 丰满少妇人妻无码专区 | 国产成人av电影在线观看浪潮 | 国产精品毛多多水多 | 国产91丝袜 | 国产亚洲大尺度无码无码专线 | 99久久无色码中文字幕无广告 | 国产精品精品一级av片免费 | 国产成人亚洲综合无码99 | 成年人无码三级片视频网 | 国产+刺激+高潮 | 国产精品麻豆 | 国产美女极度色诱视频ww | 国产三级av在在 | 国产在线播放综合网房 | 国产亚洲精品4区在线观看 国产亚洲精品91 | 2025国产精品午夜久久 | 国产三级不卡在 | 精品无码卡通视频一区二区 | 国产三级韩国三级日产三级 | 国产日韩亚洲三级片在线观 | 国产天堂亚洲国产碰碰 | 国产激情无码一区二区 | 国产精品成人a片在线播放 国产精品成人a区在线观看 | 国产精品部在线观看 | 国产亚洲欧美在线观看三区 | 国产一区日韩精品 | 国产美女精品av免费专区 | 国产精品多p对白交换绿帽 国产精品多人p | 国产免费午夜a无码v视 | 国产91丝袜高跟系列 | 精品亚洲国产成人蜜芽av小说 | 国内自拍亚洲精选在线观看 | 69精彩对白视频国产 | 99久久精品视频 | 国产成人av一区二区三区不卡 | 精品日韩免费播放器在线观看 | 精品国产一区二区在线观看 | 精品人妻中文av一区二区三区 | 国产欧美综合一区二区三区 | 国产免费无码视频 | 国产精品蜜臀在线观看 | 国产在线精品一区二区在线观看 | 99久久久国产精品免费下载 | 国产在线视频欧美一区二区三区 | av在线手机国产探精品 | 国产a一级毛片爽爽影院无码 | 国产成人欧美一区二区三区不卡 | 国产成人精品第一区二区三区 | 国产精品观看一区二区三区 | 国产精品免费露脸视频 | 国产精品成人黄色片 | 国产精品白浆在线观看无码专区 | 国产精品一区二区三区四区 | 国产无码一区二区三区不卡视频 | av香港三级级在线播放 | 国产呦精品一区二区三区下载 | 1000部啪啪未满十八勿入 | 国产精品亚洲综合色拍 | 成年人樱桃app下载安装 | 精品久久久久久久一区二区伦 | 国产主播一区二区三区在线观看 | 国产精品一区二区97 | 国产精品入口麻豆 | 精品国产成人三级在线观看 | 成人片无码中文字幕免费 | 国产精品国语对白露脸在线播放 | 成年女人wwxx免费 | 国产精品高清一区二区三区 | 国产成人欧美一区二区三区vr | 精品福利一区二区三区精品 | 国产欧美色一区二区三区 | 国产日韩av片在线观看 | 国产一区二区三精品久久久无 | 国产日韩av无码专区aaa | 国产91调教丝袜在线 | 国产在线观看精品不卡 | 国产亚洲欧美日韩亚洲中文 | 精品人妻无码久久久久久 | 91在线一区二区 | 国产97碰| 精品国产日韩在线人成 | 国产精品夜色视频一区二区三区 | 精品少妇无码一区二区三区免 | 国产高清白嫩在线播放 | 精品亚洲成av人片在线观看ww | 国产午夜精品久久久久精 | 91探花秘在线播放 | 国产毛片女人高潮叫声 | 国产在线一区二区在线视频 | 国产麻豆福利在线观看 | 国产在线精品无码 | 国产精品露脸视频观看 | 国产精品无码日韩欧 | 国产毛片大全 | 成人在线看片 | 国产成a人亚洲精品无码久久 | 福利视频一区二区三区 | 91高清对白国产在线 | 国产在线观看免费视频播放 | 国产精品嫩草影 | a级毛片无码免费视频 | 国产毛片久久毛片 | 经典国产三级 | 国产成人18黄网站在线观看软件 | 成熟人妻av无码专区 | av免费观看性色 | 国产精品自拍第二页 | 高潮无码 | 国产成人av激 | 成人h动漫精品一区二区器材 | 91成人免费观看网站 | 国产二区无码 | 国产麻豆精品人 | 国产精品大屁股白浆一区二区 | 精品国产黄页网站在线观看 | 国产成人高清在线观看播放 | 精品福利一区二区三区免费视 | 成人免费播放网站 | 国产成人噼啪免费视频 | 国产麻豆剧果冻传媒白晶晶 | 国产成人啪精品视频 | 国产日韩a视频在线播放视频色欲 | 国产性爱在线播放 | 高清无码在线观看越南专区 | 国产麻豆精品成人免费视频 | 精品精品国产高清a级毛片 精品精品国产高清a级毛片8 | 国产午夜片无码区在线观看 | 国产一区二区精品高清在线观看 | 精品无码国产免费网站视频 | 国产一区二区在线视频观看 | 精品国产鲁一鲁一区二区交 | 国产原创大胆私拍视频 | 国产不卡高清 | 精品国产一区二区三区av片 | av人摸人人人澡人人超碰妓女 | 国产av大陆精品一区二区三区 | 动漫精品中文字幕制服一区 | 国产成人精品久久亚洲高清不卡 | av无码人妻一区二区三区在 | 91成人国产网站在线观看 | 国产成人喷潮在线观看 | 成午夜免费视频在线观看 | 国产精品一区一区三区 | 国产美女白嫩嫩在线观看 | 国产欧美另类久久久精品丝瓜 | 91啪国产福利在线 | 国产精品无码专区在线观看不卡 | 国产精品后入内射日本在线观看 | 国产91一区二这在线播放 | 国产精品欧美亚洲日韩国产 | 国产白嫩美女 | 国产69精品久久久久999小说 | 国产高清视频免费最新在线 | 国产精品视频观看裸模 | 精品国产欧美一区二区三区 | 国产高清av电影 | 丰满人妻久久中文字幕免费 | 国产美女被遭高潮免费 | 国产精品流白浆免费 | 精品精品无码在线视频 | 精品国产三级aⅴ在线 | 国产欧美日韩午夜在线观看 | www在线观看一区二区三区 | 99国产精品丝袜久久久久 | 二区精品自拍 | 18禁日本黄无遮挡免费观看 | 91精品综合在线视频 | 99久久精品毛片免 | 91狠狠狠狠狠狠狠狠 | 国产精品爽爽ⅴa在线观看 国产精品爽爽va吃奶在线观看 | 91国语精品自产拍在线观看一 | 国产精品欧美三级在线观看 | 国产精品亚洲综合色区 | 国产91精品青草社区视频网址 | 国产91一区二这在线播放 | 精品无人乱码一区二区三区日 | 国产精品一区二区三区不卡视频 | 东京热中文成av人片久久 | 国产无套粉嫩白浆在 | 动漫精品中文字幕无码第一页 | 91国内揄拍国内精品情侣对白 | 国产无码一区二区三 | 国产品九九久久久国产精品 | 国产97人人乐人人爱 | 国产精品三级在线观看 | 二区偷拍 | 国产成人无码午夜福利软件 | 国产高清无码不卡二区三区 | 加勒比东京热久久久 | 国产欧美日韩综合在线一区二区 | 国产精品久久久久久久下载 | 国产精品高清一区二区三区不卡 | 91亚洲精品 | 精品人妻少妇一区二区a | av无码精品一区二区三区宅 | 91精品一区二区三区在线播放 | 91在线欧美成人 | 国产一区二区电影 | 国产二区三区在线观看视频 | 国产午夜鲁 | 国产高清av在线 | 丰满少妇一级av毛片 | 国产成年女人特黄特色大片免费 | 国产午夜亚洲精品午夜鲁丝片 | 国产成人亚洲精品影院 | a级毛片免费高清毛片视频 a级毛片免费高清视频 | 精品国产一级精品毛片基地 | 国产成年无码久久久久毛片 | 国产精品部在线观看 | 国产福利小视频尤物98 | 91人妻中文字 | 二区va| 91综合中文字幕一区二区三区 | 国产激情电影综合在线观看 | 精品国产一区二区三区四区特色 | 国产sm系列在线观看 | 国产一区二区精品在线观看 | 国产精品亚洲综合—区在线观看 | 成人欧美视频在线观看 | 精品视频一区在线观看 | 国产在线精品福利一区二区三区 | 91麻豆精品国产高清在线 | 国产三级在线 | 精品国产黄页网站在线观看 | 爆乳少妇在办公室在线观看 | 国产成人午夜福利在线观看视频 | 2025精品国产自在现线 | 国产一级av无码系列专区 | 国产高清成免费视频 | 国产夜色精品一区二区 | 国产精品嫩草免 | 91在线无码精品秘入口九色 | 国产精品无码色一区二涩欲区三区 | 国产三级久久精品三级 | 国产亚洲日韩欧美另类第八页 | 国产一区二区三区免费视频 | 91久久精品美女高潮喷水白 | 国产成年无码av片在线韩国 | 国产精品欧美在线 | 国产成人精品久久一区二区 | 丰满熟女人妻一区二区三 | 国产欧美日韩亚洲一区二区三区 | a级毛片免费观 | 91精品国产无 | 高清无码袜亚洲人妻少妇福利视频 | 国产高清色诱视频在线播放 | 国产三级精品播放 | 国产精品一区二区在线 | 国产在线线精品 | 国产精品午夜波多野结衣性色 | 国产欧美视频综合二区 | 国产高清av一级av毛片 | 国产精品亚洲lv粉色 | 成人亚洲精品久久久久软件 | 国产成人综合亚洲欧美在线观看 | 国产极品尤物粉嫩泬在线观看 | ww国产内射精品后入国产 | 91日本在线中文字幕 | 国产tv一区二区三区 | 国产欧美日韩综合在线成 | 国产成人a在线观看视频免费 | 精品人妻一卡二卡三卡 | 国产成人无码精品久久久小说 | 国产aⅴ精品一区二区三区久久 | 国产高清女同学巨大乳在线观 | 国产午夜福利在线91 | 国产日韩亚洲欧美精品专 | 国产精品国偷自产在线 | 成人精品欧美一区二区三区 | 国产成人免费在线观看 | 国产三级电影经典在线看 | 成人国产免费av一区二区三区 | 国产成人精品久久久久 | 绯色国产av无码一区二区 | 国产成人亚洲精品无码综合原创 | 精品熟女少妇a∨免费久久1 | 国产精品毛多多水多 | 国产精品一区亚洲一区天堂 | 国产伊人影院 | 国产免费无码视频不卡的 | 国产精品大屁股流白浆精韩国v | 精品国产成人国产在线观看 | 国产午夜视频在 | 国产一区二区三区四区在线观看 | 寡妇高潮一级毛片 | 国产精品日本不卡一区二区 | av一区二区人妻无码 | 国产91麻豆免费观看 | 精品无码国产社区野花在线观 | 国产精品专区第一页在线观看 | 国产福利片一区二区 | 国产精品一线二线三线精华液 | 国产日韩欧美一区二区三区在线 | 国产超清综合在线视频 | 国产精品视频一区二区三区不卡 | 爆乳少妇无码中出在线播放 | 国产在线观看在小区区野战 | 91无码福利在线观看 | 东京热人妻系列无码专区 | 69老司机在线 | 国产福利观看 | 69国产精品成 | 国产精品福利网址在线观看 | 国产精品自拍小视频 | 91精品国产一区二区三区左线 | av片子在线观看 | 国产成人涩涩涩视频在线观 | 成人女人a毛片在线看 | 国模少妇一区二区三区 | 91啪在线观| 国产精品进线69影院在线 | 91啦视频在线观看 | 成人精品视频一区二区 | 国产a一级**片午夜剧院 | 国产内射爽爽大片 | 国精品一区二区三区颜色 | 成人精品一区二区三区久久 | 国产超碰人人做人人爽www | 99久久精品一区二区 | 高清无码中文 | 国产精品自拍台湾一区 | 国产精品无码免费播放 | 97精品人妻一区二区三区在线 | 国产不卡视频在线观看 | 国产午夜福利电影免费在线观看 | 精品国产一级二级三级在线 | 国产综合亚洲欧美日韩一区二区 | 国产高清在线播放刘婷91 | 国产精品午夜福利1000集 | 国自产精品手机在线 | 成人精品视频一区二区 | 成人午夜电影大全在线观看 | 国产美女啪啪视频 | 91福利视频网站 | 国产精品+日韩精品+在线播放 | 国产亚洲欧美另类第一页 | 国产v一区二区三区日 | 精品无码欧美日本 | 国产免费一区二区三区免费观看 | 91精品国产福利尤物免费 | 国产精品秘麻豆果冻传媒在线 | 丰满大屁股在线播放bbw | 国产精品视频一区国模私拍 | 国产精品一区二区四区 | 丰满少妇一区二区 | 911精品国产亚洲日本美国韩国 | 精品久久aⅴ人妻中文字幕 精品久久a人妻 | 97人妻中| 国产精品国产三级国产试看 | 国产av无码专区影视 | 国产精品视频系列专区 | 国产精品~右手影院 | 国产精品美女挤奶汁视频 | 国产午夜草莓视频在线观看 | 国产无套内射又大又猛 | 91一区二区三 | 国产精品淫水呻吟女王调教 | 国产精品白浆精子流水合集 | 国产成人欧美一区二区三区不卡 | 2025中文字幕在线观看 | 国产综合av| a级毛片免费高清视频 | 国产高清一区视频在线播放 | 91福利网址| 国产成人夜色高潮福利影视 | 国产日韩高清一区 | 国产一区二区精品九九 | 国产色视频在线观看免费 | 成人午夜福利电影天堂 | 高清天天看国产手机在线 | av无码久久久久不卡 | av在线播放免费无码 | 丰满多毛的大隂户 | 精品日韩在线视频一区二区三 | 国产精品丝袜无码不卡视频 | 99精品热在线高清观看视频 | 国产亚洲欧美日韩综合综合二区 | 国产午夜高清高清在线观看 | 国产女主播真实视频在线观看 | 国产精品偷伦视频免费手机播 | 91久久久久人妻白浆 | 国产精品日韩欧美 | 国产成人福利资源在线观看 | 精品国产一区二区三区av性 | 国产精品一区二区含羞草 | 国产精品中文久久久久久久 | 国产无码一区二区 | 国产成人无码a区视频在线观看 | 精品无码久久久久久久久国产va | 国产三级小视频在线播放完整 | 国产精品原创午夜宅男视频 | 国产成人无码精品 | 国产极品粉嫩在线播放 | 成人亚洲一区无码久久 | 国产成人精品免费久久久久 | 国产99久久久国产精品成人 | 国产午夜小视频在线观看 | 国产成人精品自拍 | 国产91高清免费 | 99久久这里只有精品 | 国产熟女精品一区桃花 | 国产精品国产三级毛片在线专区 | 国产精品v户外野战 | 成人综合在线观看 | 国产在线观看国自产偷精品产拍 | 国产麻豆剧果冻传媒白晶晶 | 国产激情久久久久影 | 高清中文字幕mv在线观看 | 91精品国产手机在 | 91精品人妻一区二区三区蜜臀 | 成人在线精品视 | 国产一区二区精品久 | 91精选国产免费高清 | 精品少妇熟女一区二区 | 国产丰满乱子伦无码专 | 国产熟女一区二区 | 激情人妻偷乱在线视频 | 精品久久久久久无码人妻中文字幕 | 91麻豆精品国产91久久久久久 | 精品国产伦一区二区三区在线 | 91热国产在线观看 | 国产暴力一区二区三区 | 国产精品一区二区在线播放 | 国产欧美日韩综合aⅴ天堂 国产欧美日韩综合第一区第二区 | 精品国产aⅴ一区二区三区4区 | 91久久亚| 91精品国产全国免费观看蜜桃 | 国产精品先锋在线直播 | 国产精品欧美v片免费观看 国产精品欧美福利 | 不卡无码在线免费 | 国产激情视频在线观看首页 | 成人三级视频观看 | 精品无码国产自产在线观看老师 | 国产亚洲一区二区三区在线 | 国产成人www免费人成看片 | 精品日韩欧美人妻少妇 | 国产精品一一在线观看 | 99国产在线播放 | 91福利免费网站在线观看 | 韩国福利影视一区二区三区 | 国产自产最新毛片卡 | 成人影视大全在线看入口无码 | 爆乳熟妇一区二区三区影院挤奶 | www.亚洲一区二区三区 | 国产91精品对白露脸 | 国产精品高清一区二区三区绿帽 | 91在线精品麻豆欧美在线 | 国产做无码视频在线观看 | 国产精品无码制服丝袜网站 | 国产精品欧美91成人在线 | 国产成人无码18禁午夜福利p | 国产三级精品三级观 | 国产主播卡通动漫在线 | 国产午夜影视大全免费观看 | 91精品国产91热久久久久 | 国产日韩成人内 | 91麻豆精品国产一区色欲噜噜噜 | 丰满的人妻hd高清日本 | 岛国一二三区无码视频 | 国产在线视频在线观看 | 国产三级短视频在线观看 | av动漫无码| 国产精品成人av在线观看 | 成人精品久久中文字幕 | 91精品婷婷国产综合久久 | 成人在线不卡视频 | 国产成人久久精品麻豆二区33 | 国产一区二区三区在线观看精品 | 99精品人妻无码 | a级毛片无码无遮挡内射 | 国产精品爆乳奶水无码视频 | 成人免费aⅴ视频一区二区 成人免费aa片 | 国产成本人片免费av | 国产一区二区在 | 国产综合久久99久久 | 国产亚洲综合区成人国产系列 | 国产精品精品久久久久久一 | 国产一区二区三区亚洲精品 | 国产一区二区久久无码精品 | 国产激情视频在线观看的 | 精品国产av一区二区三区 | 国产日韩精品一区二区 | 国产精品一级二级三级 | 国产福利无码精品一 | 岛国一区二区三区在线观看免费 | 国产美女精品牲交 | 国产护士囗交吞精视频 | 国产成人女人毛片视频在线 | 国产成人精品一区二三区在线观看 |