999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Evosuite和Randoop單元測(cè)試用例生成工具覆蓋率對(duì)比分析①

2020-09-22 07:44:48楊正卉黃小丹
關(guān)鍵詞:實(shí)驗(yàn)方法

楊正卉,洪 玫,郭 丹,王 瀟,劉 芳,黃小丹

(四川大學(xué) 計(jì)算機(jī)學(xué)院(軟件學(xué)院),成都 610065)

1 研究背景及意義

軟件測(cè)試是發(fā)現(xiàn)軟件缺陷的過(guò)程,是保障軟件質(zhì)量的重要手段.由于被測(cè)系統(tǒng)的復(fù)雜性以及測(cè)試成本的限制,軟件測(cè)試自動(dòng)化已經(jīng)成為必然.隨著測(cè)試技術(shù)的進(jìn)一步發(fā)展,測(cè)試流程的不斷規(guī)范,大量的單元測(cè)試用例生成工具涌現(xiàn).這些工具以覆蓋率作為測(cè)試標(biāo)準(zhǔn).有研究者發(fā)現(xiàn),測(cè)試用例的覆蓋率是越高,捕獲代碼缺陷的可能性就越大.研究自動(dòng)化單元測(cè)試用例生成工具生成的測(cè)試用例的覆蓋率和檢錯(cuò)率具有重要意義,直接影響著這些測(cè)試工具是否能在業(yè)界發(fā)揮更好的作用.在國(guó)際上的一些單元測(cè)試工具競(jìng)賽中[1-6],Evosuite多次獲得第一名;在2019年的競(jìng)賽中,Randoop 工具和手工編寫(xiě)的測(cè)試用例被作為其余工具對(duì)比的基線.因此,本文選擇Evosuite,Randoop 兩個(gè)具有代表性的工具為例,采用了2016年單元測(cè)試工具競(jìng)賽中使用的數(shù)據(jù)集:Defects4J,研究自動(dòng)化單元測(cè)試工具的性能,擬回答以下問(wèn)題:

(1)在不同的生成時(shí)間下,Evosuite,Randoop 生成的測(cè)試用例在數(shù)量上、方法覆蓋率、分支覆蓋率等方面的表現(xiàn)如何?

(2)哪些因素影響了Evosuite、Randoop 工具生成的測(cè)試用例的覆蓋率?

2 相關(guān)研究

為了分析自動(dòng)化測(cè)試用例生成工具的性能,Fraser等進(jìn)行了手工測(cè)試和自動(dòng)化測(cè)試的對(duì)比實(shí)驗(yàn),邀請(qǐng)49 名參與者,從多個(gè)方面分析了手工測(cè)試用例和自動(dòng)化工具Evosuite 所生成的測(cè)試用例的特定[7].Shamshiri等在Defects4J 數(shù)據(jù)集上研究了Evosuite、Randoop 工具,以及商用工具AgitarOne 的性能,回答了如何使自動(dòng)化單元測(cè)試工具能夠查找到更多的缺陷的問(wèn)題[8].Almasi 等使用工業(yè)界的項(xiàng)目——LifeCalc 對(duì)Evosuite和Randoop 工具的有效性進(jìn)行了評(píng)估[9].Kotelyanskii等對(duì)基于搜索的單元測(cè)試用例工具Evosuite 的參數(shù)調(diào)優(yōu)進(jìn)行了研究,其研究結(jié)果為本文提供了參考[10].在這些研究中,主要關(guān)注的是工具的缺陷查找能力,但作為自動(dòng)化單元測(cè)試,更重要的是其對(duì)代碼的覆蓋能力,David Schuler 確定了覆蓋率是判斷測(cè)試用例質(zhì)量的一個(gè)可靠指標(biāo),覆蓋率越高,缺陷查找率可能越高[11].本文詳細(xì)分析了工具生成的測(cè)試用例對(duì)源代碼的方法和分支的覆蓋率,進(jìn)一步探索了工具的特點(diǎn)和存在的缺陷.

3 實(shí)驗(yàn)方法

為了回答上述研究問(wèn)題,本文設(shè)計(jì)了比較實(shí)驗(yàn),實(shí)驗(yàn)過(guò)程如圖1所示.應(yīng)用自動(dòng)化單元測(cè)試用例生成工具Evosuite 和Randoop,在Defects4J 數(shù)據(jù)集上,針對(duì)不同的被測(cè)軟件,分別生成測(cè)試用例.工具生成測(cè)試用例的時(shí)間分別設(shè)置為10 s,20 s,30 s,60 s,120 s,180 s,300 s.由于Evosuite 和Randoop 都是隨機(jī)生成測(cè)試用例,每次產(chǎn)生的結(jié)果有一定隨機(jī)性.因此,在實(shí)驗(yàn)設(shè)計(jì)上,同一生成時(shí)間重復(fù)運(yùn)行Evosuite 和Randoop 3 次,并以3 次運(yùn)行結(jié)果的平均值作為實(shí)驗(yàn)分析數(shù)據(jù).

3.1 Randoop 和Evosuite 工具

Randoop[12]是基于反饋的面向?qū)ο髥卧獪y(cè)試的隨機(jī)測(cè)試用例生成工具,對(duì)于被測(cè)類,Randoop 創(chuàng)建一系列方法調(diào)用和構(gòu)造函數(shù),依次創(chuàng)建和更改對(duì)象狀態(tài).執(zhí)行所有創(chuàng)建的序列,并用執(zhí)行的生成來(lái)創(chuàng)建捕獲系統(tǒng)行為的斷言.Randoop 的輸入是一組要測(cè)試的Java 類,一個(gè)時(shí)間限制和一組可選的規(guī)范檢查器,生成是一組對(duì)應(yīng)的JUnit 測(cè)試用例.Randoop 的隨機(jī)種子在缺省情況下為0,對(duì)于相同被測(cè)類,每次運(yùn)行時(shí)需更改隨機(jī)種子的值.另外,Randoop 工具在生成過(guò)程中易產(chǎn)生片狀測(cè)試,導(dǎo)致Randoop 工具無(wú)法生成更多的測(cè)試用例.為了解決該問(wèn)題,需將flaky-test-behavior 參數(shù)設(shè)置為OUTPUT.

Evosuite[13]是基于搜索的單元測(cè)試用例生成工具,該工具被集成于Eclipse,IntelliJ,Maven 等環(huán)境下,可以生成Java 類的JUnit 測(cè)試用例.該工具采用遺傳算法,從一組隨機(jī)測(cè)試用例開(kāi)始,迭代地應(yīng)用選擇、突變和交叉等搜索操作符來(lái)進(jìn)化測(cè)試用例,進(jìn)化由基于覆蓋標(biāo)準(zhǔn)的適應(yīng)度函數(shù)指導(dǎo),一旦搜索結(jié)束,測(cè)試用例就會(huì)被最小化,并添加測(cè)試斷言.在本實(shí)驗(yàn)中,除了禁止Evosuite 使用單獨(dú)的類加載器,更改生成時(shí)間以外,其余均采用默認(rèn)配置.

圖1 實(shí)驗(yàn)過(guò)程設(shè)計(jì)

3.2 被測(cè)軟件

實(shí)驗(yàn)被測(cè)軟件采用Defects4j 數(shù)據(jù)集[14]中的5 個(gè)開(kāi)源項(xiàng)目的多個(gè)版本.這些項(xiàng)目版本中有357 個(gè)真實(shí)缺陷:JFreeChart (26 個(gè)缺陷)、Google Closure compiler(133 個(gè)缺陷)、Apache Commons Lang (65 個(gè)缺陷)、Apache Commons Math (106 個(gè)缺陷) 和Joda Time(27 個(gè)缺陷).Apache Commons Lang 是處理Java 基本類方法的工具類包,彌補(bǔ)了Java.Lang API 基本處理方法上的不足;Apache Commons Math 是輕量級(jí)自容器的數(shù)學(xué)和統(tǒng)計(jì)計(jì)算方法類包,包含大多數(shù)常用的數(shù)值算法,外部依賴較少.JFreeChart 是為Applications,Applets,Servlets 以及JSP 等使用所設(shè)計(jì)的,可生成多種圖表,產(chǎn)生PNG 和JPEG 格式的生成.對(duì)于項(xiàng)目版本的每一個(gè)缺陷,Defects4j 提供了:(1)該缺陷對(duì)應(yīng)的缺陷版本和已修復(fù)版本;(2)開(kāi)發(fā)人員手工編寫(xiě)的可以揭露缺陷的測(cè)試用例;(3)缺陷類的列表.

本實(shí)驗(yàn)選擇JFreeChart,Apache Commons Lang,Apache Commons Math 作為被測(cè)軟件,既滿足了多樣性的需求,也保證了所選擇的軟件的代表性.實(shí)驗(yàn)將3 個(gè)軟件每個(gè)版本中已修復(fù)缺陷的類作為被測(cè)類.當(dāng)某個(gè)類在缺陷類列表中多次出現(xiàn)時(shí),使用該類第一次出現(xiàn)缺陷時(shí)對(duì)應(yīng)的已修復(fù)版本.本實(shí)驗(yàn)共篩選出71 個(gè)被測(cè)類.

3.3 實(shí)驗(yàn)環(huán)境

本實(shí)驗(yàn)在Windows 64 位操作系統(tǒng)下采用SUN Java 8 SE,Eclipse Europa IDE 編譯被測(cè)項(xiàng)目.在JUnit 4 框架下運(yùn)行測(cè)試用例,使用EclEmma 插件計(jì)算測(cè)試用例覆蓋率.編程自動(dòng)統(tǒng)計(jì)覆蓋率結(jié)果,并采用Excel工具對(duì)結(jié)果進(jìn)行分析.

3.4 實(shí)驗(yàn)步驟

(1)編譯被測(cè)類

Apache Commons Lang 和Apache Commons Math是Maven 構(gòu)建的項(xiàng)目,編譯該項(xiàng)目時(shí),需確保Eclipse中已配置Maven 環(huán)境.

(2)測(cè)試用例生成

在命令行中使用Evosuite-1.0.5.jar 和Randoop-4.0.4 生成測(cè)試用例.在生成測(cè)試用例時(shí),生成時(shí)間設(shè)為:10 s,20 s,30 s,60 s,120 s,180 s,300 s.Evosuite 和Randoop 工具分別在每個(gè)生成時(shí)間下運(yùn)行3 次.每次運(yùn)行時(shí),Evosuite 參數(shù)保持不變.Randoop 隨機(jī)種子分別設(shè)置為123,234,456,其余參數(shù)保持不變.

(3)測(cè)試用例執(zhí)行與覆蓋率計(jì)算

測(cè)試用例在Eclipse 中使用JUnit 4 框架分別執(zhí)行.測(cè)試覆蓋率由eclEMMA 插件統(tǒng)計(jì),結(jié)果在測(cè)試用例執(zhí)行結(jié)束后得到.Randoop 生成的測(cè)試用例分為回歸測(cè)試用例和揭錯(cuò)測(cè)試用例,這兩種測(cè)試用例都應(yīng)被執(zhí)行.考慮測(cè)試的穩(wěn)定性,若測(cè)試用例不能執(zhí)行或執(zhí)行中斷,則丟棄該測(cè)試用例.

本實(shí)驗(yàn)從以下幾個(gè)角度統(tǒng)計(jì)覆蓋率結(jié)果:

① 以類為單位,統(tǒng)計(jì)Evosuite 和Randoop 測(cè)試用例對(duì)被測(cè)類的方法覆蓋率和分支覆蓋率.

② 以方法為單位,統(tǒng)計(jì)Evosuite 和Randoop 測(cè)試用例在每個(gè)方法中的分支覆蓋率.

(4)實(shí)驗(yàn)結(jié)果處理

實(shí)驗(yàn)中存在無(wú)法生成測(cè)試用例或測(cè)試用例無(wú)法正常運(yùn)行的情況,比如個(gè)別類或者方法不存在分支,此時(shí)默認(rèn)分支覆蓋率為100%.

4 實(shí)驗(yàn)結(jié)果及分析

4.1 Evosuite 和Randoop 生成測(cè)試用例的數(shù)量、方法覆蓋率、分支覆蓋率

(1) Evosuite 和Randoop 工具生成的測(cè)試用例數(shù)量.

圖2展示了Evosuite 和Randoop 工具生成的測(cè)試用例數(shù)量與生成時(shí)間的關(guān)系.無(wú)論生成時(shí)間如何設(shè)置,Evosuite 工具生成的測(cè)試用例數(shù)量相對(duì)穩(wěn)定.Randoop工具生成的測(cè)試用例數(shù)量隨著生成時(shí)間的增加而增加.當(dāng)生成時(shí)間為60 s 時(shí),明顯看出Randoop 測(cè)試用例數(shù)量多于Evosuite.圖3展示了在不同項(xiàng)目中 Evosuite和Randoop 生成的測(cè)試用例數(shù)量對(duì)比,當(dāng)生成時(shí)間為10 s,20 s 時(shí),Randoop 生成的測(cè)試用例數(shù)量依舊高于Evosuite.因此在所有生成時(shí)間設(shè)置下,Randoop 工具生成的測(cè)試用例數(shù)量都多于Evosuite.因?yàn)镋vosuite 工具會(huì)對(duì)生成的測(cè)試用例進(jìn)行最小化操作,保留符合覆蓋率標(biāo)準(zhǔn)的測(cè)試用例.而Randoop 工具則輸出生成的所有測(cè)試用例.

(2) Evosuite 和Randoop 工具生成的測(cè)試用例的方法覆蓋率.

圖4展示了Evosuite 和Randoop 工具生成測(cè)試用例對(duì)被測(cè)類的方法覆蓋率與分支覆蓋率.在3 個(gè)被測(cè)軟件中,Evosuite 測(cè)試用例的方法覆蓋率隨著生成時(shí)間的增加而增加.Randoop 測(cè)試用例的方法覆蓋率在生成時(shí)間為10~120 s 時(shí)存在遞增現(xiàn)象,并在120 s 時(shí)達(dá)到最大值.在Chart 項(xiàng)目中,當(dāng)生成時(shí)間為300 s 時(shí),Randoop 測(cè)試用例的方法覆蓋率有所降低;在Lang 項(xiàng)目上,當(dāng)生成時(shí)間超過(guò)120 s 后,Randoop 測(cè)試用例的方法覆蓋率保持平穩(wěn);對(duì)于Math 項(xiàng)目,當(dāng)生成時(shí)間超過(guò)120 s 后,Randoop 測(cè)試用例的方法覆蓋率逐漸降低.當(dāng)且僅當(dāng)生成時(shí)間為10 s 時(shí),對(duì)于Chart 項(xiàng)目,Randoop測(cè)試用例的方法覆蓋率高于Evosuite.當(dāng)生成時(shí)間達(dá)到20 s 后,無(wú)論在哪個(gè)項(xiàng)目上,Evosuite 測(cè)試用例的方法覆蓋率都高于Randoop.總體來(lái)看,Evosuite 測(cè)試用例的方法覆蓋率高于Randoop.

圖2 Evosuite 和Randoop 工具生成的測(cè)試用例數(shù)量與生成時(shí)間的關(guān)系

圖3 在不同的項(xiàng)目中,Evosuite 和Randoop 生成的測(cè)試用例數(shù)量對(duì)比

圖4 Evosuite 和Randoop 測(cè)試用例對(duì)被測(cè)類的方法覆蓋率與分支覆蓋率比較

(3) EvosuiteRandoop 工具生成的測(cè)試用對(duì)被測(cè)類的分支覆蓋率.

在Chart 和Math 項(xiàng)目中,Evosuite 工具生成的測(cè)試用例對(duì)被測(cè)類的分支覆蓋率隨著生成時(shí)間的增加逐漸上升.在Lang 項(xiàng)目中,當(dāng)生成時(shí)間為30 s 時(shí),Evosuite工具生成的測(cè)試用例的分支覆蓋率較生成時(shí)間比20 s 時(shí)略有降低.但在其余生成時(shí)間上,Evosuite 工具生成的測(cè)試用例的分支覆蓋率依舊隨著生成時(shí)間的增加而增加.當(dāng)生成時(shí)間為10~120 s 時(shí),Randoop 工具生成的測(cè)試用例的分支覆蓋率隨著生成時(shí)間的增加而增加.當(dāng)生成時(shí)間達(dá)到120 s 后,在Chart 和Lang 項(xiàng)目上,Randoop 工具生成的測(cè)試用例的分支覆蓋率達(dá)到最優(yōu)值,并保持穩(wěn)定.在Math 項(xiàng)目上,Randoop 工具生成的測(cè)試用例的分支覆蓋率逐漸下降.當(dāng)且僅當(dāng)生成時(shí)間為10 s 時(shí),在Chart 項(xiàng)目上Randoop 工具生成的測(cè)試用例分支覆蓋率與Evosuite 工具生成的測(cè)試用例分支覆蓋率相當(dāng),當(dāng)生成時(shí)間達(dá)到20 s 后,Evosuite 測(cè)試用例的分支覆蓋率高于Randoop 測(cè)試用例.整體來(lái)看,Evosuite 對(duì)被測(cè)類的分支覆蓋率同樣優(yōu)于Randoop.

(4) 影響Evosuite 對(duì)被測(cè)類的分支覆蓋率高于Randoop 的因素.

從上述結(jié)論可知,Evosuite 對(duì)被測(cè)類方法覆蓋率高于Randoop.原因之一是Randoop 工具的隨機(jī)性,不能覆蓋部分方法,就不能覆蓋到方法中的分支,而Evosuite可實(shí)現(xiàn)更多的方法覆蓋,可覆蓋到方法中的分支.圖5展示了同時(shí)被Evosuite 和Randoop 測(cè)試用例覆蓋的方法的分支覆蓋率.從圖5可見(jiàn),當(dāng)Evosuite 和Randoop同時(shí)覆蓋某個(gè)方法時(shí),Evosuite 測(cè)試用例對(duì)該方法的分支覆蓋程度高于Randoop.因此,Evosuite 對(duì)被測(cè)類分支覆蓋率高于Randoop 不僅因?yàn)镋vosuite 覆蓋了更多的方法,還因?yàn)镋vosuite 測(cè)試用例較Randoop 可以覆蓋到方法中的更多分支.

圖5 同時(shí)被Evosuite 和Randoop 測(cè)試用例覆蓋的方法的分支覆蓋率

4.2 影響Evosuite 和Randoop 工具生成的測(cè)試用例覆蓋率的因素

通過(guò)分析被測(cè)軟件,發(fā)現(xiàn)軟件版本中存在抽象類,而Randoop 工具在執(zhí)行時(shí),會(huì)忽略這些抽象類以及接口.所以,即使抽象類中存在著具體的方法(例如:Math_12,Lang_15 等),Randoop 工具也沒(méi)有對(duì)這些方法生成測(cè)試用例.可以認(rèn)定,被測(cè)軟件中存在的抽象類是影響Randoop 工具生成的測(cè)試用例覆蓋率的因素之一.在Randoop 工具改進(jìn)中,建議考慮對(duì)抽象類的處理.

圖6展示了Randoop 工具所生成的一個(gè)測(cè)試用例的樣例.在執(zhí)行該用例時(shí),發(fā)現(xiàn)深色標(biāo)注的代碼未執(zhí)行,從而未覆蓋該代碼所調(diào)用的被測(cè)方法.從這一測(cè)試用例中可以看出,Randoop 在生成測(cè)試用例時(shí),隨機(jī)模擬被測(cè)方法中所需要的參數(shù)來(lái)調(diào)用方法.當(dāng)Randoop 工具不確定測(cè)試代碼是否能成功執(zhí)行時(shí),將會(huì)以trycatch 語(yǔ)句包裹該代碼.實(shí)驗(yàn)證明,若測(cè)試用例中某些語(yǔ)句被try-catch 包裹,則該語(yǔ)句基本無(wú)法正常執(zhí)行,從而導(dǎo)致無(wú)法覆蓋其中被調(diào)用的被測(cè)方法.因?yàn)镽andoop不能成功模擬調(diào)用該被測(cè)方法所需要的參數(shù).Randoop的設(shè)計(jì)者也提到:目前Randoop 對(duì)于參數(shù)的選擇是隨機(jī)的.因此,有效模擬被測(cè)方法所需參數(shù)是影響Randoop覆蓋率的因素之一.當(dāng)Randoop 需要模擬某些參數(shù)來(lái)調(diào)用方法時(shí),可以依照上下文關(guān)系獲取該參數(shù)的值,而不是重新定義隨機(jī)值[15].

在圖4中,當(dāng)生成時(shí)間足夠長(zhǎng)時(shí),Evosuite 測(cè)試用例的方法覆蓋率達(dá)到90%以上,方法覆蓋程度并不是影響該工具分支覆蓋率的重要因素.圖7展示了 Evosuite工具對(duì)某被測(cè)模塊的覆蓋情況的樣例,Evosuite 工具所生成的測(cè)試用例雖然覆蓋了該方法,但當(dāng)方法中出現(xiàn)分支時(shí),Evosuite 無(wú)法覆蓋該分支中所包含的語(yǔ)句,該分支的運(yùn)行依賴于其他方法的執(zhí)行結(jié)果.因此,Evosuite工具對(duì)被測(cè)方法相關(guān)的依賴方法結(jié)果的構(gòu)造是影響分支覆蓋的因素之一.

圖6 Randoop 工具生成的一個(gè)測(cè)試用例樣例

圖7 Evosuite 工具對(duì)某被測(cè)模塊的覆蓋情況的樣例

4.3 有效性分析

內(nèi)部有效性,Evosuite 和Randoop 工具都具有一定的隨機(jī)性,若要評(píng)估工具測(cè)試用例的覆蓋率,應(yīng)生成盡可能多的測(cè)試用例.本實(shí)驗(yàn)在多個(gè)項(xiàng)目、多個(gè)版本、多個(gè)生成時(shí)間上分別生成3 組測(cè)試用例,實(shí)驗(yàn)數(shù)據(jù)具有一定的統(tǒng)計(jì)意義.在實(shí)驗(yàn)過(guò)程中,Randoop 工具每次運(yùn)行所生成的測(cè)試用例的方法覆蓋率和分支覆蓋率波動(dòng)較小;Evosuite 覆蓋率波動(dòng)情況較Randoop 更大,若以工具的最優(yōu)值作為衡量標(biāo)準(zhǔn),Evosuite 測(cè)試用例的覆蓋率結(jié)果將更優(yōu).但就Evosuite 運(yùn)行情況來(lái)看,采用最小值、最大值、平均值完整體現(xiàn)工具的真實(shí)情況,衡量工具覆蓋率更為合理.

外部有效性,從實(shí)驗(yàn)結(jié)果來(lái)看,Evosuite 工具生成的測(cè)試用例的方法覆蓋率和分支覆蓋率隨著生成時(shí)間的增加而增加.Randoop 工具在生成時(shí)間達(dá)到120 s 后,對(duì)于不同的項(xiàng)目方法覆蓋率和分支覆蓋率具有不同的特征.但Lang 和Math 項(xiàng)目是Apache Commons 中的基礎(chǔ)工具包,使用頻率較高,Chart 項(xiàng)目充分體現(xiàn)了繪圖程序的基本特征,因此,本實(shí)驗(yàn)選擇的被測(cè)項(xiàng)目既滿足了多樣性的需求,也保證了所選擇的軟件的代表性.

5 結(jié)論

本實(shí)驗(yàn)通過(guò)對(duì)Evosuite 和Randoop 工具所生成的測(cè)試用例的覆蓋率分析發(fā)現(xiàn):① 即使生成時(shí)間低至10 s,Radnoop 所生成的測(cè)試用例數(shù)量依舊高于Evosuite.并且當(dāng)生成時(shí)間到達(dá)20 s 后,單元測(cè)試工具Evosuite生成的測(cè)試用例的方法覆蓋率和分支覆蓋率覆蓋率高于Randoop.② 影響Randoop 工具覆蓋率的原因包含如何處理抽象類以及如何模擬被測(cè)方法所需要的參數(shù)等.Evosuite 工具提高覆蓋率的關(guān)鍵問(wèn)題是如何構(gòu)造與被測(cè)方法相關(guān)的依賴方法結(jié)果,以保證能夠覆蓋更多的分支.在未來(lái)的工作中,可以研究是否可以采用符號(hào)化執(zhí)行與隨機(jī)測(cè)試相結(jié)合的方法提高Randoop 工具的參數(shù)模擬能力.

猜你喜歡
實(shí)驗(yàn)方法
記一次有趣的實(shí)驗(yàn)
微型實(shí)驗(yàn)里看“燃燒”
做個(gè)怪怪長(zhǎng)實(shí)驗(yàn)
學(xué)習(xí)方法
NO與NO2相互轉(zhuǎn)化實(shí)驗(yàn)的改進(jìn)
實(shí)踐十號(hào)上的19項(xiàng)實(shí)驗(yàn)
太空探索(2016年5期)2016-07-12 15:17:55
用對(duì)方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢(qián)方法
捕魚(yú)
主站蜘蛛池模板: AV不卡在线永久免费观看| 亚洲欧美成人| 极品国产在线| 狠狠综合久久| 国产亚洲欧美日韩在线一区| 99久视频| 久996视频精品免费观看| 亚洲无码91视频| 成人无码区免费视频网站蜜臀| 午夜小视频在线| 欧美激情视频一区| 99久久精品免费看国产电影| 日本久久久久久免费网络| 伊人狠狠丁香婷婷综合色| 国产又粗又爽视频| 五月综合色婷婷| 天天综合网色| 幺女国产一级毛片| 不卡午夜视频| 最新午夜男女福利片视频| www.99在线观看| 国产精品第一区在线观看| 免费A级毛片无码无遮挡| 五月天丁香婷婷综合久久| 亚洲第一视频区| 97在线碰| 美女被躁出白浆视频播放| 国产欧美亚洲精品第3页在线| 91久久夜色精品国产网站| 亚洲色图欧美视频| 色欲色欲久久综合网| 免费a在线观看播放| 日韩小视频在线观看| 综1合AV在线播放| 精品国产成人av免费| 欧美区在线播放| 日本欧美午夜| 国产精品综合色区在线观看| 九九热在线视频| 国产哺乳奶水91在线播放| 天天婬欲婬香婬色婬视频播放| 嫩草在线视频| 欧美午夜视频在线| 国产偷国产偷在线高清| 91久久大香线蕉| 18禁高潮出水呻吟娇喘蜜芽| 精品无码人妻一区二区| 亚洲精品老司机| 欧洲熟妇精品视频| 婷婷五月在线视频| 亚洲va视频| 久久香蕉国产线看精品| 欧美日韩中文字幕二区三区| 免费a级毛片18以上观看精品| 国产在线观看91精品| 无码啪啪精品天堂浪潮av| 国产一区二区精品福利| 天天综合网色中文字幕| A级全黄试看30分钟小视频| 亚洲二三区| 欧洲亚洲欧美国产日本高清| 综合五月天网| 亚洲综合一区国产精品| 亚洲国产系列| 亚洲精品无码不卡在线播放| 欧美人与性动交a欧美精品| 国产精品美女网站| 欧美午夜视频| 毛片一级在线| 国产美女免费网站| 99久久国产自偷自偷免费一区| 中文字幕在线播放不卡| 天堂中文在线资源| 久久久黄色片| 一级毛片免费播放视频| 亚洲欧洲免费视频| 国产玖玖玖精品视频| 美女被躁出白浆视频播放| 久热中文字幕在线观看| 黄色一级视频欧美| a毛片在线免费观看| 亚亚洲乱码一二三四区|