九九99在线视频-九九99香蕉在线视频美国毛片-九九99热久久精品在线9-九九99热-九九99久久精品在免费线bt-九九99久久

以文本方式查看主題

-  曙海教育集團論壇  (http://m.adgdgn.cn/bbs/index.asp)
--  軟件測試  (http://m.adgdgn.cn/bbs/list.asp?boardid=70)
----  查找嵌入式C語言程序/軟件中的缺陷的多種技術(shù)討論  (http://m.adgdgn.cn/bbs/dispbbs.asp?boardid=70&id=2662)

--  作者:wangxinxin
--  發(fā)布時間:2010-12-15 12:32:28
--  查找嵌入式C語言程序/軟件中的缺陷的多種技術(shù)討論
 

基于模式的靜態(tài)代碼分析、運行時內(nèi)存監(jiān)測、單元測試以及數(shù)據(jù)流分析等軟件驗證技術(shù)是查找嵌入式C語言程序/軟件缺陷行之有效的方法。上述技術(shù)中的每一種都能查找出某一類特定的錯誤。即便如此,如果用戶僅采用上述技術(shù)中的一種或者幾種來進(jìn)行驗證,這樣的驗證方法很有可能會漏過對程序中的一些缺陷的檢查。解決此類問題的一種安全和有效的策略就是同時使用上述軟件驗證中的所有互補技術(shù)。這樣就能建立起一個牢固的框架來幫助用戶檢查出可能會避開某種特定技術(shù)的缺陷。與此同時,用戶也自然地建立起一個能檢測出關(guān)鍵并且難以查找的功能性錯誤的環(huán)境。

本文將詳盡闡述基于模式的靜態(tài)代碼分析、運行時內(nèi)存錯誤檢測、單元測試以及數(shù)據(jù)流分析等自動化技術(shù)共同使用時是如何查找出嵌入式C語言程序/軟件中的缺陷的。本文中將以Parasoft C++test為例來演示上述各項技術(shù)。C++teST是一個經(jīng)廣泛的最佳實踐證明能提升軟件開發(fā)團隊開發(fā)效率以及軟件質(zhì)量的自動化集成解決方案。

當(dāng)讀者在閱讀本文以及任何時候思考查找到的缺陷時,關(guān)注文中的截圖是很重要的。自動化檢測例如內(nèi)存崩潰和死鎖的缺陷,毫無疑問對任何開發(fā)團隊都是一項必不可少的任務(wù)。盡管如此,最致命的缺陷卻是功能性錯誤,這往往是難以自動發(fā)現(xiàn)的。在本文的結(jié)論部分我們將簡要地討論一下查找這些缺陷的技術(shù)。

情景簡介

為了給出一個具體的示例,我們將就一個我們最近遇到的案例來介紹以及演示我們所推薦的缺陷查找策略:一個運行在ARM 板上的簡單傳感器應(yīng)用程序。

假設(shè)我們已經(jīng)創(chuàng)建了該應(yīng)用系統(tǒng),但是當(dāng)我們將程序上載到系統(tǒng)目標(biāo)板上并試圖運行該程序時,我們沒有在LCD屏上看到所預(yù)期的輸出。

我們尚不明確系統(tǒng)不能正常工作的原因,因此我們設(shè)法對系統(tǒng)進(jìn)行調(diào)試,但是在目標(biāo)板上進(jìn)行調(diào)試是一件耗時而且煩人的事。因為我們不得不手動分析調(diào)試器的結(jié)果并試圖人工判斷出問題的真正原因;蛘呶覀兪褂靡恍┍蛔C實能自動定位出錯誤的工具或技術(shù)來幫助我們減輕負(fù)擔(dān)。

從這一點而言,我們要么期待使用調(diào)試器來調(diào)試程序能夠帶來好運,要么我們嘗試使用一種自動化的測試策略來查找代碼中所存在的錯誤。如果自動化技術(shù)仍然沒有幫助我們查找到錯誤,那么我們不得不回到使用調(diào)試器作為最后的辦法。

基于模式的靜態(tài)代碼分析

這里,我們假設(shè)僅在絕對必要的情況下才使用調(diào)試器進(jìn)行調(diào)試,因此我們從運行基于模式的靜態(tài)代碼分析開始。它將查找到如下圖所示的問題:

這是違反了 MISRA 的一個規(guī)則,此違規(guī)說明該處的賦值運算符存在一些可疑情況。的確,編程者此處的本意是使用比較運算符而不是賦值運算符。因此我們將此處檢測到的沖突修改掉,并重新運行程序。

我們發(fā)現(xiàn)有了一些改善:一些輸出被顯示在了LCD屏上了。但是,由于一次訪問違規(guī),程序崩潰掉了。因此我們需要再次地做出選擇。我們是應(yīng)該使用調(diào)試器還是繼續(xù)使用自動化的錯誤檢測技術(shù)。由于經(jīng)驗告訴我們自動化錯誤檢測技術(shù)能非常高效地檢查出我們當(dāng)前程序所遇到的內(nèi)存崩潰這類問題,因此我們決定使用運行時內(nèi)存監(jiān)測來查找問題。

整個程序的運行時內(nèi)存監(jiān)測

為了進(jìn)行運行時內(nèi)存監(jiān)測,我們使用 C++test 來插裝應(yīng)用程序。這樣的插裝是輕量級的,所以經(jīng)過插裝后的程序適合在目標(biāo)板上運行。當(dāng)我們把程序上載到目標(biāo)板上并運行經(jīng)過插裝的程序后,我們將結(jié)果下載到PC上,如下的錯誤將被報告出來:

該結(jié)果指出在第48行代碼處產(chǎn)生了一次讀取數(shù)組越界的錯誤。顯然,msgIndex變量的值肯定超過了數(shù)組的范圍。如果我們隨著堆棧追蹤上一級的原因,我們將發(fā)現(xiàn)此處的打印信息所指示的值的確超出了數(shù)組的范圍(因為在調(diào)用printMessage()函數(shù)前我們給出了一個錯誤的條件)。我們可以刪除掉這個不必要的條件(value <= 20)以修改這個錯誤。

void handleSensorValue(int value)

{

initialize();

int index = -1;

if (value >= 0 && value <= 10) {

index = VALUE_LOW;

} else if ((value > 10) && (value <= 20)) {

index = VALUE_HIGH;

}

printMessage(index, value);

}

然后我們重新運行程序,將不會再報告任何內(nèi)存錯誤。當(dāng)我們把程序上載到目標(biāo)板上時,它似乎如我們預(yù)期那么在工作了。盡管如此,我們?nèi)匀挥幸恍⿹?dān)心。

我們僅查找到我們所執(zhí)行的代碼路徑中的一個內(nèi)存寫溢出實例,我們憑什么能夠斷定我們尚未執(zhí)行到的代碼就不會有內(nèi)存寫溢出錯誤了呢?如果我們檢查覆蓋率分析,我們就會發(fā)現(xiàn)reportSensorFailure()這個函數(shù)從未被執(zhí)行到。我們有必要對這個函數(shù)進(jìn)行測試,但是具體如何進(jìn)行呢?建立一個調(diào)用該函數(shù)的單元測試用例就是一個不錯的辦法。

在單元測試中使用運行時內(nèi)存監(jiān)測:我們使用C++test的測試用例向?qū)韯?chuàng)建一個測試用例的框架,并向其中添加一些測試代碼。然后運行該測試用例——以檢查上面提到的未經(jīng)測試的函數(shù),同時打開運行時內(nèi)存監(jiān)測功能。使用C++teST,全過程大約只需要數(shù)秒鐘。

結(jié)果標(biāo)明該函數(shù)已經(jīng)被覆蓋到了,但同時也查找到了新的錯誤:

我們的測試用例查找到了更多的內(nèi)存相關(guān)錯誤。很顯然,當(dāng)失敗處理函數(shù)被調(diào)用時,我們的內(nèi)存初始化存在問題(空指針)。通過更進(jìn)一步的分析,我們發(fā)現(xiàn)在reportSensorValue()函數(shù)中存在函數(shù)調(diào)用順序錯誤。finalize()函數(shù)先于printMessage()函數(shù)被調(diào)用,但是finalize()函數(shù)中釋放了printMessage()函數(shù)需要使用的內(nèi)存。

void finalize()

{

if (messages) {

free(messages[0]);

free(messages[1]);

free(messages[2]);

}

free(messages);

}

將函數(shù)調(diào)用順序進(jìn)行修改后,我們重新運行程序。

這樣我們就解決了上面報告中的第一個錯誤,F(xiàn)在我們再來分析報告中的第二個錯誤:即打印信息中的AccessViolatiONException。產(chǎn)生這個錯誤的原因是相應(yīng)的消息列表未經(jīng)初始化。為了解決該問題,我們在打印該信息前調(diào)用一次initialize()函數(shù)來對其進(jìn)行初始化。經(jīng)修改后的函數(shù)如下所示:

void reportSensorFailure()

{

initialize();

printMessage(ERROR, 0);

finalize();

}

當(dāng)我們再次運行該測試用例時,僅有一個任務(wù)被報告出來:未經(jīng)驗證的單元測試用例(an unvalidated unit test case),這其實并不算一條錯誤。我們只需對輸出進(jìn)行一下驗證,以將該測試用例轉(zhuǎn)換為回歸測試。通過創(chuàng)建合適的斷言,C++test會自動為我們完成這些步驟。

接下來我們再次運行整個程序。覆蓋率分析告訴我們幾乎整個程序都已經(jīng)被覆蓋到了,并且沒有發(fā)現(xiàn)任何內(nèi)存錯誤。

這樣就結(jié)束了嗎?其實不然。雖然我們運行了整個程序并為未覆蓋到的函數(shù)創(chuàng)建了單元測試用例,但還是有一些路徑是沒有被覆蓋到的。我們?nèi)匀豢梢岳^續(xù)創(chuàng)建單元測試用例,但是若指望通過這樣的方法來覆蓋程序中的所有路徑將耗費相當(dāng)長的時間。或者我們使用另外的方法,使用數(shù)據(jù)流分析來對這些路徑進(jìn)行模擬。

數(shù)據(jù)流分析

我們使用C++test的BugDetective來進(jìn)行數(shù)據(jù)流分析,BugDetective能模擬系統(tǒng)中的不同路徑并檢查這些路徑中是否存在潛在的問題。進(jìn)行數(shù)據(jù)流分析后,我們得到如下結(jié)果:

仔細(xì)分析報告的結(jié)果,我們發(fā)現(xiàn)程序中存在一條未被覆蓋到的潛在路徑可能會造成在finalize()函數(shù)中出現(xiàn)兩次free的操作。在程序中,reportSensorValue()函數(shù)調(diào)用了finalize()函數(shù),然后finalize()函數(shù)調(diào)用了free()。同時,finalize()函數(shù)還會被mainLoop()函數(shù)調(diào)用。我們可以修改finalize()函數(shù)以使其更加智能化,從而修復(fù)這個問題,修改后的代碼如下:

void finalize()

{

if (messages) {

free(messages[0]);

free(messages[1]);

free(messages[2]);

free(messages);

messages = 0;

}

}

現(xiàn)在我們再次運行數(shù)據(jù)流分析,得到的結(jié)果將只有兩個問題:

這里我們可能使用了-1作為索引來訪問了數(shù)組。這是由于整型變量index被設(shè)置的初始值為-1,并且存在一條可能通過if語句的路徑在未將該整型變量正確的進(jìn)行初始化之前便調(diào)用了printMessage()函數(shù)。運行時分析未檢查到這樣的一條路徑,并且該路徑很有可能在真實世界中永遠(yuǎn)不可能被執(zhí)行到。這就是靜態(tài)數(shù)據(jù)流分析相對于運真實運行時內(nèi)存監(jiān)測最主要的不足:數(shù)據(jù)流分析能檢查出潛在的路徑,這些路徑可能包含在程序?qū)嶋H執(zhí)行過程中不會執(zhí)行到或不存在的路徑。盡管如此,為了做到有備無患,我們刪除了上述的不必要的條件(value>=0)以修改這個潛在的錯誤。

void handleSensorValue(int value)

{

initialize();

int index = -1;

if (value <= 10) {

index = VALUE_LOW;

} else {

index = VALUE_HIGH;

}

printMessage(index, value);

}

相同地,我們也對最后一個報告的錯誤進(jìn)行相應(yīng)的處理,F(xiàn)在我們再次運行數(shù)據(jù)流分析,將不會再有錯誤被報告出來。

為了確保程序運行一切正常,我們重新運行整個分析過程。首先,我們開啟運行時內(nèi)存監(jiān)測并運行應(yīng)用程序,一切表現(xiàn)正常。然后我們開啟內(nèi)存監(jiān)測并運行單元測試,一個任務(wù)被報告出來:

我們的單元測試檢測到reportSensorFailure()函數(shù)的行為已經(jīng)發(fā)生了改變。這是由于我們已經(jīng)對finalize()函數(shù)進(jìn)行了修改——為了糾正之前報告的一個問題所做的修改。此處報告的任務(wù)是為了讓我們注意此修改,并提示我們應(yīng)該對測試用例進(jìn)行相應(yīng)的審查,并且確定是否應(yīng)該對代碼或者測試用例進(jìn)行相應(yīng)的修改,以表示這種新的行為實際上是我們所預(yù)期的行為。在檢查完代碼之后,我們發(fā)現(xiàn)后者(修改)是正確的并且應(yīng)該更新斷言的正確條件。

/* CPPtest_TEST_CASE_BEGIN test_reportSensorFailure */

/* CPPTEST_TEST_CASE_CONTEXT void reportSensorFailure(void) */

void sensor_tests_test_reportSensorFailure()

{

/* Pre-condition initialization */

/* Initializing global variable messages */

{

messages  = 0 ;

}

{

/* Tested function call */

reportSensorFailure();

/* Post-condition check */

CPPTEST_ASSERT(0 == ( messages ));

}

}

/* CPPTEST_TEST_CASE_END test_reportSensorFailure */

作為最終的確認(rèn),我們需要獨立地運行整個程序——在IDE中關(guān)閉掉運行時內(nèi)存監(jiān)測來對程序進(jìn)行構(gòu)建。結(jié)果顯示一切如我們所預(yù)期一樣運行。

總結(jié)

作為全文的結(jié)尾,讓我們一起對上述各個步驟進(jìn)行一個鳥瞰式的總結(jié)。

首先,我們開發(fā)的程序并未如我么所預(yù)期那樣運行,我們不得不在兩種解決方法中選擇一種來查找程序中的錯誤:通過運行調(diào)試器或者使用自動錯誤檢測技術(shù)。

如果我們使用調(diào)試器運行代碼來查找錯誤,我們將會看到一些很奇怪的現(xiàn)象:程序中的一些變量總是被賦予了相同的值;谶@種現(xiàn)象我們不得不通過排除法來查找問題的原因——即在應(yīng)該使用比較運算符的地方我們錯誤地使用了賦值運算符。而靜態(tài)代碼分析則能為我們自動地檢查出該邏輯錯誤。運行時內(nèi)存分析是不可能檢查出這種錯誤的,因為這種錯誤與內(nèi)存無關(guān)。數(shù)據(jù)流分析也很有可能找不到這類錯誤因為數(shù)據(jù)流分析僅僅是通過這些路徑而不會驗證這些條件的正確性。

當(dāng)我們解決了這個問題后,程序可以運行了,但是仍然還有內(nèi)存相關(guān)的問題。內(nèi)存相關(guān)的問題是很難被調(diào)試器發(fā)現(xiàn)的;當(dāng)用戶使用調(diào)試器調(diào)試程序時,用戶并不知道內(nèi)存的實際大小。但是自動錯誤檢查工具能夠做到這點。因此,為了查找這些內(nèi)存問題,我們將整個程序進(jìn)行插裝,并使用運行時內(nèi)存分析工具來運行程序。這樣我們就能知道到底是那一片內(nèi)存發(fā)生了寫溢出錯誤。

盡管如此,在審查覆蓋率分析結(jié)果的時候,我們注意到在目標(biāo)板上測試的時候,并不是全部代碼都被覆蓋到了。通過自動化的工具得到這樣的覆蓋率信息是簡單的,因為工具會自動地

跟蹤覆蓋率,但是,如果我們是通過調(diào)試器,就不得不判斷哪一部分程序經(jīng)過了驗證。而這通常只能依靠我們?nèi)斯び涗浀姆绞絹韺崿F(xiàn)。

當(dāng)工具提醒我們一些代碼未被覆蓋到時,我們決定改變單元測試來額外地增加我們測試執(zhí)行的覆蓋率。這就揭示了程序中另外一些問題。在目標(biāo)系統(tǒng)的正常測試中,覆蓋所有函數(shù)也許是不可能完成的任務(wù),因為其中一些函數(shù)可能是硬件的失敗處理函數(shù)或僅在某些小概率的特定情況下才會被調(diào)用的函數(shù)。而對這些函數(shù)的測試對于一些注重安全性的程序而言又是至關(guān)重要的。試想在飛機上用來處理速度傳感器問題的程序中存在著代碼錯誤:我們會有系統(tǒng)崩潰的危險,而不是導(dǎo)致某個設(shè)備為非工作狀態(tài)。因此,通過創(chuàng)建單元測試用例來覆蓋這類型的執(zhí)行路徑往往是對其進(jìn)行有效測試的唯一方法。

接下來,我們修復(fù)了工具檢查到的所有問題,同時通過驗證相應(yīng)的結(jié)果創(chuàng)建了一個回歸測試用例(作為報告的任務(wù)之一引導(dǎo)我們完成)。然后我們運行數(shù)據(jù)流分析來覆蓋在目標(biāo)系統(tǒng)上即便使用單元測試也未執(zhí)行到的路徑。在此之前,我們幾乎已經(jīng)達(dá)到了100%的代碼行覆蓋率,但是我們的路徑覆蓋率卻未達(dá)到這個水平。BugDetective幫我們發(fā)現(xiàn)了這些方面的一些潛在問題。這些問題可能并沒有實際發(fā)生或者有可能永遠(yuǎn)不會發(fā)生。也許在實際運行時,這些問題僅僅會在當(dāng)其條件滿足的情況下才會出現(xiàn),并且在現(xiàn)實生活中,這些條件可能永遠(yuǎn)不可能滿足。盡管如此,我們不能保證隨著代碼的升級,應(yīng)用程序不會執(zhí)行到這些路徑。

安全起見,我們?nèi)匀恍薷牧怂鶊蟾娴膯栴}以排除任何可能影響它的實際應(yīng)用執(zhí)行的風(fēng)險。在修改代碼的同時,我們同時也引入了回歸測試,當(dāng)我們再次運行單元測試時立即被檢測到。在所有的自動化錯誤檢測方法中,回歸測試是唯一能夠幫助我們檢查到代碼是否發(fā)生了功能性的改變的方法,并且能驗證出對代碼進(jìn)行的修改是否引入了功能性的錯誤以及不可預(yù)知的副作用。最后,我們修改了回歸測試套件,并重新測試代碼,發(fā)現(xiàn)一切運行正常。

正如讀者所見,我們使用的一切測試方法——基于模式的靜態(tài)代碼分析、內(nèi)存分析、單元測試、數(shù)據(jù)流分析以及回歸測試——并不是相互競爭的關(guān)系,恰好相反,它們是一種互補的關(guān)系。將上述工具結(jié)合使用,它們就是一套具有強大作用的工具集,并為嵌入式C語言程序/軟件提供一個無可比擬的自動化錯誤檢測解決方案。

總而言之,通過自動地查找很多關(guān)于內(nèi)存和其它編碼的缺陷,我們成功地讓程序運行起來了。盡管如此,值得注意的是,最危險的缺陷卻是實際的功能性錯誤:例如程序并未如所指定的要求運行。而不幸的是,這些錯誤往往是非常難以被發(fā)現(xiàn)的。

查找這類缺陷的最好的一個方式就是通過同行代碼審查來實現(xiàn)。即另指派至少一人來檢查代碼并且審查代碼與需求內(nèi)容的一致性,這樣用戶就能對實際程序是否會如預(yù)期那樣運行有一個很好的*估。

另外一個十分有用的策略是圍繞代碼創(chuàng)建一個回歸測試套件,這能幫助用戶快捷地驗證代碼與規(guī)范的一致性。在本文所描述的示例情景中,單元測試被用來強制執(zhí)行應(yīng)用程序級的運行時內(nèi)存監(jiān)測所未覆蓋到的代碼:它能覆蓋到當(dāng)前程序的功能性,在此之后,我們對代碼做了一些修改,它能提醒我們代碼出現(xiàn)的相應(yīng)的功能性問題。事實上,這種單元測試用例應(yīng)該被更早地創(chuàng)建起來:理想情況下,當(dāng)用戶在實現(xiàn)程序的功能時就應(yīng)該被創(chuàng)建起來。這樣,用戶就能得到更高的覆蓋率并同時構(gòu)建起一個更強壯的“安全網(wǎng)”來捕捉關(guān)鍵的功能性改變。

Parasoft的C++test能幫助用戶完成這兩個任務(wù):從自動化到管理同行代碼審查流程,以及幫助團隊創(chuàng)建,持續(xù)地運行并維護(hù)一個高效的回歸測試套件。

關(guān)于Parasoft C++test

Parasoft C++test是一個經(jīng)廣泛的最佳實踐證明能提升軟件開發(fā)團隊開發(fā)效率以及軟件質(zhì)量的自動化集成解決方案。C++test能進(jìn)行諸如編碼策略增強、靜態(tài)代碼分析、運行時內(nèi)存監(jiān)測、自動同行代碼審查以及單元和組件測試,從而為軟件開發(fā)團隊提供一種更加實用的方法來確保其C以及C++程序能如所預(yù)期那樣工作。C++test可以用于在通用開發(fā)IDE下的桌面平臺中,以及在回歸測試時通過命令行以批處理模式的方式運行。同時,C++test還集成了Parasoft的報告系統(tǒng),該系統(tǒng)能提供具有細(xì)分能力的基于Web 的儀表板,這使得開發(fā)團隊根據(jù)C++test的測試結(jié)果和其他的一些關(guān)鍵進(jìn)程指標(biāo)來更加方便地跟蹤項目的狀態(tài)和趨勢。

通過在宿主機上進(jìn)行大量的測試以及在目標(biāo)系統(tǒng)中進(jìn)行的平滑的驗證,C++test能夠幫助軟件開發(fā)團隊減少花在嵌入式系統(tǒng)開發(fā)中的時間、精力以及成本。隨著代碼在宿主機上的構(gòu)建,C++test的自動化框架使得開發(fā)者能在目標(biāo)硬件系統(tǒng)尚未準(zhǔn)備好的情況下就開始測試以提升代碼質(zhì)量。這大大地縮短了花在目標(biāo)系統(tǒng)上測試的時間。早期在宿主機上構(gòu)建的測試套件可以被重用來在仿真器或真實的目標(biāo)板上驗證程序的功能性。


主站蜘蛛池模板: 性生交大片免费看女人按摩摩 | 婷婷色亚洲 | 亚洲 小说 欧美 激情 另类 | 色琪琪一区二区三区亚洲区 | 色婷婷精品久久二区二区蜜臂av | 韩国三级a视频在线观看 | 三级福利片 | 国产麻豆md传媒视频 | 超碰caoporen| 毛片日本 | 成人久久久精品乱码一区二区三区 | 日韩小视频 | 国产又粗又长 | 国产精品无圣光 | 国产一在线 | 视频一区国产精品 | 超碰在线个人 | 国自产拍偷拍精品啪啪模特 | 欧美激情内射喷水高潮 | 久久婷婷精品一区二区三区日本 | 日韩欧美激情兽交 | 欧美日韩国产三区 | 色哟哟免费| 日本人添下边视频免费 | 精品撒尿视频一区二区三区 | 久久亚洲a v| 免费国产黄线在线观看 | 天堂va蜜桃一区二区三区 | 亚洲婷婷免费 | 69婷婷国产精品入口 | 夜夜夜网站 | 亚洲欧美日韩精品久久亚洲区 | 欧美另类精品xxxxxx高跟鞋 | 日韩美在线 | 国产精品jk白丝蜜臀av小说 | 亚洲精品视频免费 | 国产 日韩 欧美 制服 另类 | 手机免费看av片 | 国产白浆视频 | 婷婷综合五月 | 先锋资源中文字幕 | 亚洲欭美日韩颜射在线二 | 草比视频在线观看 | 成人免费看片98欧美 | 国产精品久久久久aaaa九色 | 污视频在线观看网址 | 一级片av| 超碰97国产精品人人cao | 亚洲综合国产 | 搡少妇在线视频中文字幕 | 成人在线激情视频 | 麻豆成人久久精品二区三区小说 | 中文字幕在线观看你懂的 | 亚洲日韩va无码中文字幕 | 欧美日韩久久久 | 肥臀熟女一区二区三区 | 色91精品久久久久久久久 | 久久夜色精品国产噜噜av小说 | 亚洲肥老太bbw中国熟女 | 国外成人在线视频 | 成人av资源 | 日本免费一区二区三区高清视频 | 多啪视频| 国产老妇伦国产熟女老妇高清 | 国产999精品 | 久久综合五月丁香六月丁香 | 亚洲一区二区三区婷婷 | 四虎www永久在线精品 | 调教一区二区 | 国产精品高潮呻吟久久aⅴ码 | 日韩av免费一区 | 国产精品日日夜夜 | 天美麻花果冻视频大全英文版 | xxxxx黄色| 午夜免费福利视频 | www色在线观看 | 国产成人av影院 | 激情视频久久 | 欧美一区亚洲二区 | 国产黑色丝袜在线播放 | 玩弄japan白嫩少妇hd | 国产精品白嫩极品美女 | 饥渴少妇色诱水电工 | 在线观看污网站 | 欧洲男女裸体无遮挡做爰 | 九九国产 | 日韩a在线播放 | 综合精品久久 | 三级全黄做爰龚玥菲在线 | 精品熟人妻一区二区三区四区不卡 | 中文字幕不卡 | 亚洲国产成人久久 | 婷婷综合网站 | gogo人体做爰aaaa | 无码午夜人妻一区二区不卡视频 | 波多野结衣一二三四区 | 色盈盈影院 | 国产在线一区二区三区四区五区 | 国内精品人妻无码久久久影院蜜桃 | 一级大片黄色 | 五月天丁香久久 | 乱女午夜精品一区二区三区 | 亚洲国产精品视频 | 三级男人添奶爽爽爽视频 | 国产99久久久国产精品潘金 | 国产综合有码无码中文字幕 | 亚洲精品男人的天堂 | 99精品久久久久 | 天天夜夜啦啦啦 | 韩国三级hd中文字幕叫床 | 国产乱人伦中文无无码视频试看 | 亚洲日本色 | 国产真人性做爰久久网站 | 久久精品国产日本波多野结衣 | 噜噜噜久久 | 污片免费网站 | 亚洲精品视频在线观看免费 | 成人片免费视频 | 中文字幕网址在线 | 欧美精品久久久久久久免费 | av永久天堂一区二区三区 | 成人做爰视频www网站小优视频 | 亚洲操片| 亚洲一区二区三区麻豆 | 日产精品高潮呻吟av久久 | 2022色婷婷综合久久久 | 同性男男黄g片免费网站 | 日韩va视频 | 日本黄色录象 | 美国三级毛片 | 少妇日韩 | 婷婷久久亚洲 | 久久久久亚洲ai毛片换脸星大全 | 久久男人av资源网站 | 欧美国产日韩a在线视频 | 欧美日韩精品一区二区三区蜜桃 | 成人精品水蜜桃 | a级高清免费毛片av在线 | 亚洲大胆视频 | 一区二区三区在线 | 欧洲 | 黄色一级大片在线免费看国产一 | 国产精品亚洲欧美在线播放 | 日本一区二区三区高清在线观看 | 国产调教av | 黄色大视频 | 性啪啪chinese东北女人 | 免费在线播放毛片 | 你懂的网址在线 | 四个黑人玩一个少妇四p | 私人毛片免费高清影视院 | 欧美一区二区三区视频在线观看 | 91精品国产自产精品男人的天堂 | 亚洲激情久久久 | 亚洲超碰在线观看 | 精品国产乱码久久久久久闺蜜 | 亚洲欧美综合色 | av在线不卡一区 | 91精产国品一二三产区区 | 亚洲一区二三区 | 国产精品永久久久久久久久久 | 国产成年无码久久久久毛片 | 中文无码熟妇人妻av在线 | 污免费在线观看 | japanese一本色道久久 | 免费av在线播放网址 | 中文字幕一区在线观看视频 | 一区二区视频免费看 | 精品色图 | 国产深夜福利在线 | 久久成人麻豆午夜电影 | 制服 丝袜 激情 欧洲 亚洲 | 中文字幕日韩精品亚洲一区小树林 | 内射夜晚在线观看 | 天天干天天干天天干天天 | 91精品国产91 | 一级黄色大片网站 | 日韩国产欧美一区二区 | 色欧美片视频在线观看 | 日本三级视频网站 | 婷婷精品国产欧美精品亚洲人人爽 | 国产乱人伦偷精品视频 | 欧美性开放视频 | 精品h视频| 精品国产乱码久久久久久影片 | 午夜片在线观看 | 日韩中文字幕在线免费观看 | 99视频精品 | 久久看视频 | 69xxxx在线观看 | 欧洲精品国产 | 久久久久久久久久久丰满 | 在线观看黄网址 | 久久久久久久久久国产精品 | 久久综合九色综合欧美狠狠 | 精品国产乱码久久久久久闺蜜 | 波多野结衣欧美 | 一本色道av | 欧美性猛交ⅹxxx乱大交3 | 啪啪资源 | 色婷婷综合久久 | 国产青青草 | 色婷婷视频在线 | 国产精品美女www爽爽爽 | 色综合久久88色综合天天人守婷 | 久久人人97超碰精品888 | 黄 色 成 人小短文 黄色a v视频 | 久草在线视频在线 | 色综合社区 | 国产欧美一区二区三区鸳鸯浴 | 日本精品啪啪一区二区三区 | 亚洲日批视频 | 亚洲在线一区二区三区 | 国产a级网站 | 高h禁伦肉伦np双龙 高h捆绑拘束调教小说 | 亚洲综合视频网 | av无码不卡在线观看免费 | 性丰满白嫩白嫩的hp124 | 国产中文区二暮区2022 | 国产偷抇久久精品a片69 | 亚洲国产精品一区二区久久hs | 欧美激情婷婷 | 在线国产三级 | 亚洲乱码日产精品一二三 | 国产三级a三级三级 | 中文字幕亚洲在线 | 窝窝午夜影院 | 伊人情人成综合 | 一区二区小视频 | 国产激情艳情在线看视频 | 91婷婷在线 | 国模小丫大尺度啪啪人体 | 国产三级成人 | 51国产偷自视频区 | 亚洲影视综合网 | 精品欧美一区二区精品久久久 | 亚洲va欧洲va国产va不卡 | 秋霞影院av | 久久精品99国产精品日本 | 在线看污片 | 免费大片黄在线观看视频网站 | 欧美三级不卡 | 91在线精品秘密一区二区 | 国产中文一区二区三区 | 黄色国产一级片 | 国产影音先锋 | av午夜在线观看 | 91不卡视频 | 无码人妻熟妇av又粗又大 | 少妇全光淫片bbw | 亚洲最新在线 | 男人的天堂av网站 | 亚洲国产av一区二区三区四区 | 日本肉体xxxx裸体xxx免费 | 午夜亚洲天堂 | 影音先锋成人资源网 | 亚洲欧美自拍偷拍视频 | 国产精品免费vv欧美成人a | 中文字幕永久在线 | 日韩的一区二区 | 黑人粗大猛烈进出高潮视频 | 伊人免费在线观看 | 在线黄网| 青青草国产在线观看 | 粗喘呻吟撞击猛烈疯狂 | 亚洲免费网站观看视频 | 后宫一级淫片免费放 | 国产黄a三级三级三级av在线看 | 狠狠干av| 亚洲一区二区三区四区五区六区 | 国产偷v国产偷v精品视频 | 成年人黄色大片大全 | 超碰97人| 奇米精品一区二区三区四区 | 国产资源在线免费观看 | 婷婷综合久久 | 国内精品九九久久久精品 | 国产色吧| 久久久在线免费观看 | 久久男人av资源网站无码软件 | 久久久久久久久久久久国产精品 | 深夜成人在线观看 | 久操国产在线 | 一级a爱片久久毛片 | 亚洲成人黄色网 | 香蕉视频免费在线看 | 午夜av网址 | 私拍在线 | 国产69精品久久久久孕妇大杂乱 | 欧美激情一区二区三区 | 超碰97av在线| 精品欧美一区二区三区在线观看 | 特级黄色一级片 | 夜夜偷天天爽夜夜爱 | 在线播放成人av | 菠萝蜜视频在线观看入口 | 非洲黑人狂躁日本妞 | 久久国产劲爆∧v内射-百度 | 免费在线观看不卡av | 国产经典av | 国产精品久久久久久无人区 | 免费嗨片首页中文字幕 | 中文字幕在线有码 | 国产精品探花在线观看 | 人人草人 | 精品国产乱码久久久久久老虎 | 日本成年x片免费观看 | 国产在线麻豆精品观看 | 久久牛牛| 久久综合日本 | 上原瑞穗av在线播放 | 久久99精品久久久久久青青日本 | 人妻体内射精一区二区三四 | 丁香花免费高清完整在线播放 | 色噜噜狠狠狠狠色综合久 | 一本色道久久综合亚洲精品图片 | 少妇做爰免费视频网站色黄 | 午夜精品区| 亚洲不卡免费视频 | 国产日韩欧美自拍 | 日日干视频 | 看全色黄大色黄大片大学生图片 | 欧美一区二区三区不卡视频 | 午夜看毛片 | 伊人无码精品久久一区二区 | 亚洲中文字幕av无码专区 | 欧美在线视频一区二区三区 | 亚洲男人的天堂在线播放 | 108种啪姿势大全动态图 | 天堂资源wwwav啪啪 | 免费男性肉肉影院 | 日韩av成人在线观看 | 成人国产欧美大片一区 | 囯产精品一品二区三区 | 日韩在线免费观看av | 国产男女猛烈无遮挡免费视频网站 | 黄色片在线免费观看视频 | 顶弄h校园1v1 | 亚洲性xx | 欧美乱人伦 | 香蕉av福利精品导航 | 国产精品女同一区二区久久夜 | 性生av免费播放 | 亚洲91av| 亚洲日韩精品无码专区加勒比 | 在线观看网站av | 久久精品国产亚洲一区二区 | 亚洲人成人网站在线观看 | 天堂俺去俺来也www色官网 | 欧美一区二区喷水白浆视频 | 亚洲欧洲成人精品香蕉网 | 亚洲成人第一区 | 六月丁香av | 日韩黄色精品 | 久久精品国产精品亚洲毛片 | 精品视频中文字幕 | 国产免费a级片 | 无码国产精品久久一区免费 | 四虎免费影视 | 日本无码欧美一区精品久久 | 麻豆精品视频 | www亚洲精品少妇裸乳一区二区 | 国产美女亚洲精品久久久毛片小说 | 亚洲一区二区在线观看视频 | 日本少妇裸体做爰高潮片 | 久久少妇视频 | 日韩精品中文字幕一区 | 精品国产自在久久现线拍 | 动漫av网站免费观看 | 天天cao| 成人精品一区二区三区电影 | 亚洲成人精品在线 | 国产午夜亚洲精品午夜鲁丝片 | 激情五月五月婷婷 | 一本大道久久精品 | 亚洲欧美另类综合偷拍 | 欧美日本不卡 | 日本熟妇人妻xxxxx-欢迎您 | 亚洲国产成人精品女人久久 | 一区二区三区在线观看免费 | 蜜桃av网| 欧美资源在线观看 | 成人婷婷| 久久精品夜色噜噜亚洲a∨ 久久精品一二三 | 久久久中精品2020中文 | 丰满少妇高潮惨叫正在播放 | 欧美视频在线播放 | 亚洲精品国产一区二区精华液 | 九色国产精品 | 国产三区二区 | 亚洲人成在线影院 | a级高清免费毛片av播放 | 日本福利在线观看 | 人妻系列无码专区无码中出 | 黄色不卡视频 | 亚欧免费无码aⅴ在线观看 麻豆国产一区二区三区四区 | 拔萝卜在线视频免费观看 | 天天躁日日躁狠狠躁免费麻豆 | 欧美又粗又大aaa片 熟女少妇内射日韩亚洲 | av天堂午夜精品一区二区三区 | 乌克兰少妇videos高潮 | 黄色一级影片 | 久久99精品国产麻豆91樱花 | 狼人色综合| 日本草草视频 | 日本免费一区二区三区四区五区 | 欧美日韩在线视频免费 | 亚洲最新av在线 | 91成年人网站 | 国产精品69久久久久水密桃 | 久久er热在这里只有精品66 | 欧美乱妇狂野欧美在线视频 | 日韩精品久久久久久久软件91 | 国产成人精品日本亚洲 | 柳岩高潮三级a观看 | 性日韩| 成人免费在线观看av | 国产精品无码永久免费不卡 | 国产成人无码免费看片软件 | 天天做天天摸天天爽天天爱 | 波多野结衣一区二区三区av免费 | 国产激情视频在线 | 四虎影酷| 九九热九九 | 国产主播大尺度精品福利免费 | 香港三级日本三级 | 久在线观看视频 | 精品粉嫩aⅴ一区二区三区四区 | 狠狠色噜噜狠狠狠8888米奇 | 亚洲毛茸茸| 成人观看 | 久久精品国产99久久99久久久 | 男女啪啪免费视频网站 | 在线观看国精产品二区1819 | 少妇高潮一区二区三区99女老板 | 97涩国一产精品久久久久久久 | 婷婷色亚洲| 国内精品视频在线播放 | 亚洲欧美日韩精品在线 | 日韩3页| 少妇做爰免费视频网站色黄 | 亚洲日韩中文第一精品 | 欧美日韩国产成人 | 欧美不卡二区 | 女人喷液抽搐高潮视频 | 少妇高潮喷水久久久久久久久久 | 国产丰满果冻videossex | 特色特色大片在线 | 久久久久99精品成人片直播 | 免费日韩视频 | 欧美黄色录像片 | 韩国三级丰满少妇高潮 | 天天操天天射天天爱 | av人摸人人人澡人人超碰妓女 | 人妻被按摩到潮喷中文字幕 | 亚洲日韩欧美视频 | 亚洲精品久久久久国产 | 日韩免费无码人妻波多野 | 免费视频国产在线观看 | 国产日韩一区 | 欧美大片 - 8mav | 欧美一区2区 | 成 人 色 网 站免费观看 | 人妻丰满熟妇av无码区hd | 噼里啪啦免费高清看 | 牛牛视频精品一区二区不卡 | 高大丰满毛茸茸xxx性 | 免费黄色国产视频 | 日韩91视频| 国产毛片毛片毛片 | 国产成人无码www免费视频播放 | 欧美一级黄色毛片 | 在线播放无码后入内射少妇 | 妺妺窝人体色www聚色窝 | 国产精品一区二区久久久久 | 色www永久免费视频 亚洲成av人在线观看天堂无码 | 黑人老外猛进华人美女 | 日本污污网站 | 成人做爰69片免费看网站野花 | 国产精品新婚之夜泄露女同 | 成人精品一区日本无码网 | 日韩avxxx| 久久久久成人精品 | 麻豆精品国产精华精华液好用吗 | 欧美激情免费在线 | 天天干天天爱天天射 | 制服丝袜一区二区三区 | 在线观看亚洲天堂 | 91看片就是不一样 | 国产免费片 | 一本色道无码道dvd在线观看 | 中文字幕在线观看英文怎么写 | 色综合久久88 | 日本黄a三级三级三级 | 精品久久久久久久久久久久久久久久 | 视频一区免费观看 | 亚洲va欧美va天堂v国产综合 | 色人阁亚洲 | 国产精品每日更新 | 又黄又爽又色成人免费视频体验区 | 男女吻胸做爰摸下身 | 99国产精品久久久久久久成人 | 亚洲熟妇av一区二区三区 | 四虎永久在线精品免费网址 | 222aaa| 娜娜麻豆国产电影 | 成人午夜在线观看视频 | 国产男女在线观看 | jlzzjlzz欧美大全 | 美女一级黄色片 | 亚洲美女在线观看 | av片在线看免费高清网站 | aaa特级毛片| xxxxwww国产| jizz另类| 第一宅男av导航入口 | 免费涩涩网站 | 最新亚洲人成无码网站 | 特级黄一级播放 | 五月天婷婷导航 | 成人午夜免费视频 | 伊人久久精品一区二区三区 | 亚洲精品久久久久中文第一幕 | 国产毛a片啊久久久久久保和丸 | 二区视频在线观看 | 亚洲欧美黄色片 | 亚洲色播永久网址大全 | 日本特黄特色大片免费视频老年人 | 老司机67194精品线观看 | 国产精品精华液网站 | 天干夜天干天天天爽视频 | 女人大p毛片女人大p毛片 | 四虎黄色网址 | 久久伊人网视频 | 欧美黄色片网站 | 成人黄色小说在线观看 | 色www精品视频在线观看 | 免费高清成人 | xvideos国产精品好深 | 亚洲精品国产suv一区别 | 欧美日韩视频一区二区 | 午夜国产羞羞视频免费网站 | 亚洲av成人精品毛片 | 久久夜夜操妹子 | 日本猛少妇色xxxxx猛交图片 | 男女爽爽无遮挡午夜视频 | 日韩毛片免费看 | 乱色欧美videos黑人69 | av在线免费观看不卡 | 亚洲精品福利网站 | 超碰福利在线观看 | 成人男女啪啪免费观软件 | 国产激情91久久精品导航 | 免费观看激色视频网站 | 中文字幕av高清 | jyzz中国jizz十八岁免费 | 一区二区三区av夏目彩春 | 成人vr视频在线观看 | 性欧美www| 成人cosplay福利网站18禁 | 国产精品成人无码久久久 | 亚洲欧洲精品成人久久奇米网 | 成人亚洲精品久久久久软件 | 少妇高潮灌满白浆毛片免费看 | 日韩三级免费 | 天天插天天干天天射 | 欧美国产亚洲精品suv | 亚洲色图欧美 | 精品黄网站 | 高清精品xnxxcom | а√新版天堂资源中文8 | 免费观看成人在线视频 | 久久久久久国产精品免费免费男同 | 久久精品国产99国产精品亚洲 | 国产一级做a爰片久久毛片男男 | 先锋资源中文字幕 | 爱情岛亚洲论坛福利站 | 白浆av| 精品成人在线视频 | 国产视频综合 | 日本久久久久久久久久久 | 免费视频久久久 | 婷婷丁香五| 国产午夜手机精彩视频 | 美美女高清毛片视频免费观看 | 免费大片av | 午夜九九| 在线欧美亚洲 | 在线不卡中文字幕 | 欧洲色播 | 欧美一级日韩 | 奇米影视7777久久精品 | 国产好爽又高潮了毛片91 | 午夜精品久久久久久久99老熟妇 | 免费纯肉3d动漫无码网站 | 日韩欧美一区天天躁噜噜 | 人善交video另类hd侏儒 | 一级黄av| 国产成人精品午夜2022 | 黑人性xxx | 无码里番纯肉h在线网站 | 日韩成人在线视频观看 | 美女疯狂连续喷潮视频 | 欧美丰满少妇xxⅹ | 欧美日韩爱爱 | 中文字幕人妻熟女在线 | 黄色3级视频 | 老牛嫩草二区三区观影体验 | 日本ⅹxxxxoo69 | 中文字幕在线视频免费视频 | 噜噜噜狠狠夜夜躁精品仙踪林 | 亚洲天堂一级片 | 在线观看肉片av网站免费 | 快播在线视频 | 国产高清视频在线播放 | 乱子伦一区 |