Monkey

Monkey:Android SDK自帶的一個(gè)命令行工具澜搅,使用adb來(lái)運(yùn)行它勉躺,向系統(tǒng)發(fā)送偽隨機(jī)的用戶事件流,如按鍵柳弄、觸屏碧注、輸入等糖赔;實(shí)現(xiàn)對(duì)正在開(kāi)發(fā)的應(yīng)用程序進(jìn)行壓力測(cè)試放典,伴隨著日志輸出。實(shí)際上該工具只能做程序做一些壓力測(cè)試壳影,由于測(cè)試事件和數(shù)據(jù)都是隨機(jī)的宴咧,不能自定義径缅,所以有很大的局限性。

MonkeyRunner:Android SDK提供的測(cè)試工具桃笙,位于tools目錄下沙绝,比Monkey強(qiáng)大闪檬,可以編寫(xiě)腳本來(lái)自定義數(shù)據(jù),事件;但是腳本是采用python語(yǔ)言編寫(xiě)的为黎,其實(shí)就是對(duì)python進(jìn)行了封裝铭乾,對(duì)測(cè)試人員要求較高娃循。

Instrumentation:這個(gè)是Google早期提供的測(cè)試自動(dòng)化測(cè)試工具類捌斧,可以看成是Android的一個(gè)組件,可以模擬用戶眾多事件妇押,通常用來(lái)單元測(cè)試敲霍,對(duì)測(cè)試人員要求較高丁存,需要了解Android的api解寝。

UiAutomator:Android提供的自動(dòng)化測(cè)試框架,也是前兩年最佳的UI測(cè)試框架与学,基本上支持所有的用戶事件索守,可以抓取APP頁(yè)面控件屬性卵佛,測(cè)試代碼結(jié)構(gòu)簡(jiǎn)單,編寫(xiě)容易疾牲,能跨APP測(cè)試阳柔,但是要求設(shè)備在Android4.1以上蚓峦,不支持Hybird APP暑椰,WebApp一汽。

Appium:這應(yīng)該是最近很火的一個(gè)測(cè)試框架召夹,支持Native APP戳鹅,Hybird APP枫虏,Web APP腾它;可以跨平臺(tái)在Windows妓忍,Mac定罢,Linux使用酬凳,支持Android,ios稠屠;支持java完箩,js,php阻逮,Python等語(yǔ)言編寫(xiě)測(cè)試腳本叔扼。

Monkey命令介紹

我們?cè)赾md中先進(jìn)入adb所在目錄瓜富,然后輸入命令 adb shell monkey -help 可以查看到monkey相關(guān)的命令


-p 用于約束限制鳍咱,用此參數(shù)指定一個(gè)包,指定包后Monkey將被允許啟動(dòng)指定應(yīng)用与柑;如果不指定包谤辜,? Monkey將被允許啟動(dòng)設(shè)備中的所有應(yīng)用(主Activity有android.intent.category.LAUNCHER 或android.intent.category.MONKEY類別?)。比如 adb shell monkey -p xxx.xxx.xxx 1 ?;?xxx.xxx.xxx 表示應(yīng)用包名价捧,1 表示monkey模擬用戶隨機(jī)事件參數(shù)丑念,最低1,這樣就能把應(yīng)用啟動(dòng)起來(lái)

-v 用于指定反饋信息級(jí)別结蟋,也就是日志的詳細(xì)程度脯倚,分三個(gè);-v 默認(rèn)值推正,僅提供啟動(dòng)提示恍涂,操作結(jié)果等少量信息 比如adb shell monkey -p ?xxx.xxx.xxx -v?1 ;-v -v 提供比較詳細(xì)信息植榕,比如啟動(dòng)的每個(gè)activity信息 再沧,比如adb shell monkey -p xxx.xxx.xxx -v -v?1 ;-v -v -v 提供最詳細(xì)的信息 内贮,比如adb shell monkey -p xxx.xxx.xxx -v -v -v?1?

-s 偽隨機(jī)數(shù)生成器的種子值产园,如果我們兩次monkey測(cè)試事件使用相同的種子值,會(huì)產(chǎn)生相同的事件序列夜郁;如果不指定種子值什燕,系統(tǒng)會(huì)產(chǎn)生一個(gè)隨機(jī)值。種子值對(duì)我們復(fù)現(xiàn)bug很重要竞端。使用如下adb shell monkey -p xxx.xxx.xxx?-s 11111 10

--ignore-crashes 忽略異常崩潰屎即,如果不指定,那么在monkey測(cè)試的時(shí)候事富,應(yīng)用發(fā)生崩潰時(shí)就會(huì)停止運(yùn)行技俐;如果加上了這個(gè)參數(shù),monkey就會(huì)運(yùn)行到指定事件數(shù)才停止统台。比如adb shell monkey -p xxx.xxx.xxx?-v -v -v ?--ignore-crashes?10?

--ignore-timeouts 忽略ANR雕擂,情況與4類似,當(dāng)發(fā)送ANR時(shí)候贱勃,讓monkey繼續(xù)運(yùn)行井赌。比如adb shell monkey -p xxx.xxx.xxx?-v -v -v ?--ignore-timeouts?10

--ignore-native-crashes 忽略native層代碼的崩潰,情況與4類似贵扰,比如adb shell monkey -p xxx.xxx.xxx?-v -v -v ?--ignore-native-crashes?10

--ignore-security-exceptions 忽略一些許可錯(cuò)誤仇穗,比如證書(shū)許可,網(wǎng)絡(luò)許可戚绕,adb shell monkey -p xxx.xxx.xxx?-v -v -v ?--ignore-security-exceptions?10

--monitor-native-crashes 是否監(jiān)視并報(bào)告native層發(fā)送的崩潰代碼纹坐,adb shell monkey -p xxx.xxx.xxx?-v -v -v ?--monitor-native-crashes?10

--kill-procress-after-error 用于在發(fā)送錯(cuò)誤后殺死進(jìn)程

--hprof ?設(shè)置后,在Monkey事件序列之前和之后立即生產(chǎn)分析報(bào)告舞丛,保存于data/mic目錄耘子,不過(guò)將會(huì)生成大量幾兆文件,謹(jǐn)慎使用

--throttle 設(shè)置每個(gè)事件結(jié)束后延遲多少時(shí)間再繼續(xù)下一個(gè)事件球切,降低cpu壓力拴还;如果不設(shè)置,事件與事件之間將不會(huì)延遲欧聘,事件將會(huì)盡快生成片林;一般設(shè)置300ms,因?yàn)槿俗羁?00ms左右一個(gè)動(dòng)作,比如?adb shell monkey -p xxx.xxx.xxx?-v -v -v ?--throttle?300 10

--pct-touch 設(shè)置觸摸事件的百分比费封,即手指對(duì)屏幕進(jìn)行點(diǎn)擊抬起(down-up)的動(dòng)作焕妙;不做設(shè)置情況下系統(tǒng)將隨機(jī)分配各種事件的百分比。比如adb shell monkey -p xxx.xxxx.xxx --pct-touch 50 -v -v 100 弓摘,這就表示100次事件里有50%事件是觸摸事件

--pct-motion 設(shè)置運(yùn)動(dòng)事件百分比焚鹊,這種事件類型是由屏幕上某處的一個(gè)down事件-一系列偽隨機(jī)的移動(dòng)事件-一個(gè)up事件,即點(diǎn)擊屏幕韧献,然后直線運(yùn)動(dòng)末患,最后抬起這種運(yùn)動(dòng)。

--pct-trackball 設(shè)置軌跡球事件百分比锤窑,這種事件類型是一個(gè)或者多個(gè)隨機(jī)移動(dòng),包含點(diǎn)擊事件渊啰;這里可以是曲線運(yùn)動(dòng)

--pct-syskeys 設(shè)置系統(tǒng)按鍵事件百分比探橱,比如home鍵,音量鍵绘证,返回鍵隧膏,撥打電話等

--pct-nav 設(shè)置基本的導(dǎo)航按鍵事件百分比,比如輸入設(shè)備上的上下左右四個(gè)方向鍵

--pct-appswitch 設(shè)置activity跳轉(zhuǎn)事件的百分比

--ptc-anyevent 設(shè)置其它事件百分比

--ptc-majornav 設(shè)置主導(dǎo)航事件的百分比

保存dos窗口打印的monkey信息嚷那,在monkey命令后面補(bǔ)上輸出地址胞枕,如adb shell monkey -p xxx.xxxx.xxx ?-v -v 100 > D:\monkey.txt;這樣monkey測(cè)試結(jié)束后魏宽,所有打印的信息都會(huì)輸出到這個(gè)文件里

通過(guò)adb bugreport 命令可以獲取整個(gè)android系統(tǒng)在運(yùn)行過(guò)程中所有app的內(nèi)存使用情況曲稼,cpu使用情況,activity運(yùn)行信息等湖员,包括出現(xiàn)異常等信息。使用方法?adb bugreport > bugreport.txt ;這樣在當(dāng)前目錄就會(huì)產(chǎn)生一個(gè)txt文件和一個(gè)壓縮包瑞驱,具體信息可在壓縮包查看娘摔,txt文件只會(huì)記錄壓縮包的生成過(guò)程信息

-f 加載monkey腳本文件進(jìn)行測(cè)試,比如 adb shell monkey -f sdcard/monkey.txt -v -v 500

Monkey使用

1.進(jìn)入adb目錄

2.通過(guò)adb install apk名字

3.輸入adb shell monkey -p xxx.xxxx.xxx ?-s 123123 --throttle 300 -v -v 20 > d:\monkey.txt唤反,這里指定了seed值凳寺,每個(gè)事件之間休息300ms,執(zhí)行了20個(gè)事件彤侍,然后將日志信息保存在了monkey.txt文件中

4.打開(kāi)文件肠缨,查看信息如下:

Monkey: seed=123123 count=20 //seed值是指定的123123,方便出現(xiàn)bug后再?gòu)?fù)現(xiàn) 事件次數(shù)是20

:AllowPackage: com.android.mangodialog // 應(yīng)用包名

:IncludeCategory: android.intent.category.LAUNCHER //啟動(dòng)的主activity的類別盏阶,兩種只要有一種就行

:IncludeCategory: android.intent.category.MONKEY

// Selecting main activities from category android.intent.category.LAUNCHER

// ? + Using main activity com.android.mangodialog.MainActivity (from package com.android.mangodialog) //該應(yīng)用符合這種類別的activity

// Selecting main activities from category android.intent.category.MONKEY

// Seeded: 123123

// Event percentages://各種事件的百分比

// ? 0: 15.0% ?//可通過(guò)--pct-touch 參數(shù)設(shè)置的事件的百分比 常用

// ? 1: 10.0% ?//可通過(guò)--pct-motion 參數(shù)設(shè)置的事件的百分比 常用

// ? 2: 2.0% ? //可通過(guò)--pct-pinchzoom 參數(shù)設(shè)置的事件的百分比

// ? 3: 15.0% ?//可通過(guò)--pct-trackball 參數(shù)設(shè)置的事件的百分比

// ? 4: -0.0% ?

// ? 5: -0.0% ?

// ? 6: 25.0% ?//可通過(guò)--pct-nav 參數(shù)設(shè)置的事件的百分比

// ? 7: 15.0% ?//可通過(guò)--pct-majornav 參數(shù)設(shè)置的事件的百分比

// ? 8: 2.0% ? //可通過(guò)--pct-syskeys 參數(shù)設(shè)置的事件的百分比 常用

// ? 9: 2.0% ? //可通過(guò)--pct-appswitch 參數(shù)設(shè)置的事件的百分比?常用

// ? 10: 1.0% ?//可通過(guò)--pct-flip 參數(shù)設(shè)置的事件的百分比

// ? 11: 13.0% //可通過(guò)--pct-anyevent 參數(shù)設(shè)置的事件的百分比?

//啟動(dòng)的activity

:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.android.mangodialog/.MainActivity;end

? ? // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.android.mangodialog/.MainActivity } in package com.android.mangodialog

Sleeping for 300 milliseconds //設(shè)置的事件之間間隔300ms 下面就是執(zhí)行點(diǎn)擊事件

:Sending Key (ACTION_DOWN): 82 ? ?// KEYCODE_MENU

:Sending Key (ACTION_UP): 82 ? ?// KEYCODE_MENU

Sleeping for 300 milliseconds

:Sending Key (ACTION_DOWN): 23 ? ?// KEYCODE_DPAD_CENTER

:Sending Key (ACTION_UP): 23 ? ?// KEYCODE_DPAD_CENTER

Sleeping for 300 milliseconds

? ? // Allowing start of Intent { cmp=com.android.mangodialog/.MainActivity2 } in package com.android.mangodialog

:Sending Key (ACTION_DOWN): 22 ? ?// KEYCODE_DPAD_RIGHT

:Sending Key (ACTION_UP): 22 ? ?// KEYCODE_DPAD_RIGHT

Sleeping for 300 milliseconds

:Sending Key (ACTION_DOWN): 21 ? ?// KEYCODE_DPAD_LEFT

:Sending Key (ACTION_UP): 21 ? ?// KEYCODE_DPAD_LEFT

Sleeping for 300 milliseconds

:Sending Touch (ACTION_DOWN): 0:(1017.0,280.0)

:Sending Touch (ACTION_UP): 0:(1021.8751,281.12732)

Sleeping for 300 milliseconds

:Sending Touch (ACTION_DOWN): 0:(1005.0,1599.0)

:Sending Touch (ACTION_UP): 0:(994.4962,1589.7715)

Sleeping for 300 milliseconds

:Sending Key (ACTION_DOWN): 2 ? ?// KEYCODE_SOFT_RIGHT

:Sending Key (ACTION_UP): 2 ? ?// KEYCODE_SOFT_RIGHT

Sleeping for 300 milliseconds

:Sending Key (ACTION_DOWN): 20 ? ?// KEYCODE_DPAD_DOWN

:Sending Key (ACTION_UP): 20 ? ?// KEYCODE_DPAD_DOWN

Sleeping for 300 milliseconds

:Sending Key (ACTION_DOWN): 22 ? ?// KEYCODE_DPAD_RIGHT

:Sending Key (ACTION_UP): 22 ? ?// KEYCODE_DPAD_RIGHT

Sleeping for 300 milliseconds //軌跡球運(yùn)動(dòng)

:Sending Trackball (ACTION_MOVE): 0:(4.0,-5.0)//手機(jī)屏幕上的坐標(biāo)

Events injected: 20 //monkey共執(zhí)行了20次事件

:Sending rotation degree=0, persist=false

:Dropped: keys=0 pointers=0 trackballs=0 flips=0 rotations=0

//測(cè)試過(guò)程中的網(wǎng)絡(luò)狀態(tài)晒奕,花費(fèi)了3064ms連接,既沒(méi)有連接上手機(jī)網(wǎng)絡(luò),也沒(méi)有連接上wifi

## Network stats: elapsed time=3064ms (0ms mobile, 0ms wifi, 3064ms not connected)?

// Monkey finished //monkey測(cè)試結(jié)束

5.平時(shí)會(huì)使用比較復(fù)雜的參數(shù)去測(cè)試脑慧,如下

adb shell monkey -v -v -v -s 123123 --throttle 300 --pct-touch 40 --pct-motion 25 --pct-appswitch 25 --pct-syskeys 10 --pct-majornav 0 --pct-nav 0 --pct-trackball 0 --ignore-crashes?--ignore-timeouts?--ignore-native-crashes?-p xxx.xxx.xxx 100000 > d:\monkey.txt

具體什么意思就不再一一解釋了魄眉。

6.其實(shí)我們比較關(guān)注的是app在使用過(guò)程中出現(xiàn)的錯(cuò)誤信息,像上面我們選擇忽略掉集中錯(cuò)誤情況闷袒,這樣當(dāng)monkey執(zhí)行結(jié)束后坑律,相關(guān)的信息會(huì)被寫(xiě)入到monkey文件中,但是錯(cuò)誤信息比如crash囊骤,anr等信息會(huì)打印在dos窗口晃择,這些錯(cuò)誤信息會(huì)明確的指出哪里發(fā)生的錯(cuò)誤;如果需要復(fù)現(xiàn)也物,我們可以把忽略參數(shù)去掉宫屠,然后通過(guò)相同的seed值再次進(jìn)行monkey測(cè)試,直到發(fā)生錯(cuò)誤跳出monkey測(cè)試焦除,我們?cè)俨榭醇た觯缦?/p>

public class MainActivity2 extends AppCompatActivity {

? ? @Override

? ? protected void onCreate(@Nullable Bundle savedInstanceState) {

? ? ? ? super.onCreate(savedInstanceState);

? ? ? ? setContentView(R.layout.act_main2);

? ? ? ? float s = 1/0;

? ? }

}

我這第二個(gè)activity的oncreate方法中寫(xiě)這個(gè)會(huì)報(bào)錯(cuò)的代碼,然后在第一個(gè)activity的一個(gè)按鈕中進(jìn)行跳轉(zhuǎn)進(jìn)入這個(gè)activity膘魄,接下來(lái)進(jìn)行monkey測(cè)試來(lái)復(fù)現(xiàn)這個(gè)bug

adb shell monkey -p xxx.xxx.xxx -s 123456 -v -v 2000 ?> d:\monkey.txt

我們看這個(gè)文件

:Sending Trackball (ACTION_MOVE): 0:(4.0,-3.0)

:Sending Trackball (ACTION_MOVE): 0:(-2.0,1.0)

:Sending Trackball (ACTION_DOWN): 0:(0.0,0.0)

:Sending Trackball (ACTION_UP): 0:(0.0,0.0)

Sleeping for 300 milliseconds

? ? // Allowing start of Intent { cmp=com.android.mangodialog/.MainActivity2 } in package com.android.mangodialog

** Monkey aborted due to error.

Events injected: 190

這里可以看到是當(dāng)打開(kāi)MainActivity2的時(shí)候monkey發(fā)生錯(cuò)誤退出乌逐,只執(zhí)行了190個(gè)事件。至于錯(cuò)誤信息打印在了dos窗口创葡。

這里我們也可以通過(guò)adb bugreport命令將手機(jī)運(yùn)行日志導(dǎo)出來(lái)查看浙踢,這里面的信息更詳細(xì),包括出錯(cuò)信息灿渴。


Monkey腳本

monkeyscript是monkey的腳本語(yǔ)言洛波,能夠被monkey識(shí)別的命令集合,可以實(shí)現(xiàn)一些固定的重復(fù)性動(dòng)作骚露。Monkey可以通過(guò)命令加載腳本來(lái)進(jìn)行測(cè)試蹬挤,簡(jiǎn)單方便。

腳本格式如下:

type= raw events

count= 1

speed= 1.0 ??

start data >> ??

LaunchActivity(pkg_name, cl_name)??

第一句到第三局就使用默認(rèn)值棘幸,不需要改焰扳,其實(shí)這里設(shè)置是無(wú)效的,最終會(huì)采用命令行里的值误续;

start data >> 表示開(kāi)始執(zhí)行下面所有的命令行

LaunchActivity就是一個(gè)啟動(dòng)應(yīng)用的命令

腳本命令

LaunchActivity(pkg_name, cl_name) 打開(kāi)應(yīng)用吨悍,第一個(gè)參數(shù)是包名,第二個(gè)是啟動(dòng)的activity名

DispatchPress(keyName) 按下物理按鍵蹋嵌,例如home鍵育瓜,back鍵;參數(shù)是按鍵值 栽烂,按鍵值可查看keycode

Tap(x, y) 點(diǎn)擊屏幕躏仇,參數(shù)是點(diǎn)擊坐標(biāo)

Drag(xStart, yStart, xEnd, yEnd) 滑動(dòng)屏幕恋脚,坐標(biāo)是從哪一點(diǎn)滑到哪一點(diǎn)

LongPress() 長(zhǎng)按2s

ProfileWait 等待5s

PressAndHold(x, y, pressDuration) 模擬長(zhǎng)按?

PinchZoom(x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End, stepCount) 模擬縮放

DispatchString(input) 輸入字符串

RunCmd(cmd) 執(zhí)行shell命令,比如截圖?screencap -p /data/local/tmp/tmp.png

RotateScreen(rotationDegree, persist) 選擇屏幕钙态,第一個(gè)參數(shù)是旋轉(zhuǎn)角度慧起,第二個(gè)是旋轉(zhuǎn)后是否停在當(dāng)前位置

DispatchFlip(true/false) 打開(kāi)或者關(guān)閉軟鍵盤(pán)

UserWait(sleepTime) 睡眠指定時(shí)間

DeviceWakeUp() 喚醒屏幕

DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFlags) 向指定位置發(fā)送單個(gè)手勢(shì)

更多方法可查看Monkey源碼

https://github.com/gb112211/Android-Platform-Development/tree/master/cmds/monkey/src/com/android/commands/monkey

現(xiàn)在來(lái)寫(xiě)一個(gè)腳本:

type= raw events

count= 1

speed= 1.0 ??

start data >> ??

LaunchActivity(com.android.mangodialog,com.android.mangodialog.MainActivity);

UserWait(1000);

Tab(500,300);

DispatchPress(KEYCODE_ENTER)

UserWait(1000);

DispatchPress(KEYCODE_BACK);

UserWait(1000);

RunCmd(screencap -p /sdcard/tmp.png);

UserWait(1000);

Drag(0, 0, 500, 500);

DispatchPress(KEYCODE_ENTER)

UserWait(1000);

DispatchString(www.baidu.com);

UserWait(1000);

DispatchPress(KEYCODE_BACK);

UserWait(1000);

然后通過(guò)adb push d:\monkey.txt sdcard/monkey.txt 將文件推送到手機(jī)sd卡上,然后通過(guò)

adb shell monkey -f sdcard/monkey.txt -v -v 1 執(zhí)行腳本文件

---------------------


原文:https://blog.csdn.net/qq_30993595/article/details/80748559

https://blog.csdn.net/zjnuwsf/article/details/52669764

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末册倒,一起剝皮案震驚了整個(gè)濱河市蚓挤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌驻子,老刑警劉巖灿意,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異崇呵,居然都是意外死亡缤剧,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)域慷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)荒辕,“玉大人,你說(shuō)我怎么就攤上這事犹褒〉种希” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵叠骑,是天一觀的道長(zhǎng)李皇。 經(jīng)常有香客問(wèn)我,道長(zhǎng)宙枷,這世上最難降的妖魔是什么掉房? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮慰丛,結(jié)果婚禮上卓囚,老公的妹妹穿的比我還像新娘。我一直安慰自己诅病,他們只是感情好哪亿,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著睬隶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪页徐。 梳的紋絲不亂的頭發(fā)上苏潜,一...
    開(kāi)封第一講書(shū)人閱讀 51,165評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音变勇,去河邊找鬼恤左。 笑死贴唇,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的飞袋。 我是一名探鬼主播戳气,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼巧鸭!你這毒婦竟也來(lái)了瓶您?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤纲仍,失蹤者是張志新(化名)和其女友劉穎呀袱,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體郑叠,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡夜赵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了乡革。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寇僧。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖沸版,靈堂內(nèi)的尸體忽然破棺而出嘁傀,到底是詐尸還是另有隱情,我是刑警寧澤推穷,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布心包,位于F島的核電站,受9級(jí)特大地震影響馒铃,放射性物質(zhì)發(fā)生泄漏蟹腾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一区宇、第九天 我趴在偏房一處隱蔽的房頂上張望娃殖。 院中可真熱鬧,春花似錦议谷、人聲如沸炉爆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)芬首。三九已至,卻和暖如春逼裆,著一層夾襖步出監(jiān)牢的瞬間郁稍,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工胜宇, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留耀怜,地道東北人恢着。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像财破,于是被迫代替她去往敵國(guó)和親掰派。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353