自動(dòng)化測(cè)試框架

非常認(rèn)可這句話:
自動(dòng)化測(cè)試是為了提高效率箫踩,測(cè)試腳本要易維護(hù)惦界,不能讓測(cè)試腳本變成另一種技術(shù)債務(wù)垫桂,不能為了自動(dòng)化測(cè)試而自動(dòng)化測(cè)試鲜戒。

文章轉(zhuǎn)自:持續(xù)集成實(shí)踐之自動(dòng)化測(cè)試

軟件測(cè)試

軟件測(cè)試大概這么分類(lèi):

  • 黑盒測(cè)試 VS 白盒測(cè)試专控,以及介于黑盒白盒之間的灰盒測(cè)試
  • 按測(cè)試粒度可分為: unit test, functional test, integration test, system test, acceptance test 等
  • 按測(cè)試目的可分為: sanity test(smoke test), build verification test(BVT), regression test, stress test, performance test, usability test, security test, ad hoc test 等
  • 按是否自動(dòng)化可分為: manual test VS automated test (簡(jiǎn)稱TA)

BVT, regression test, performance test等都應(yīng)該是automated test, 否則測(cè)試效率會(huì)很低.
在TA成本可接受的情況下,應(yīng)該盡可能將測(cè)試都做成automated test, 除非某些測(cè)試需要人來(lái)校驗(yàn)(界面是否美觀,音視頻質(zhì)量是否可接受等).

自動(dòng)化測(cè)試

自動(dòng)化測(cè)試就是用程序測(cè)試程序遏餐。項(xiàng)目需要快速迭代快速交付伦腐,或手工測(cè)試無(wú)法完成(譬如性能測(cè)試)時(shí),就需要考慮自動(dòng)化測(cè)試失都,自動(dòng)化測(cè)試可以簡(jiǎn)單分為:

  • UI driven testing - 模擬鼠標(biāo)鍵盤(pán)事件來(lái)驗(yàn)證程序行為柏蘑,或者錄制回放(UI通常變化較快,錄制腳本不容易維護(hù)粹庞,因此不推薦)
  • Code driven
    • testingUnit Test - 利用xUnit框架測(cè)試類(lèi)方法咳焚,模塊接口,庫(kù)接口的輸入輸出來(lái)驗(yàn)證程序行為
    • API driven testing - 程序常常分層設(shè)計(jì)庞溜,可以測(cè)試每一層的API interface來(lái)驗(yàn)證程序行為

記住革半,自動(dòng)化測(cè)試是為了提高效率,測(cè)試腳本要易維護(hù),不能讓測(cè)試腳本變成另一種技術(shù)債務(wù)又官,不能為了自動(dòng)化測(cè)試而自動(dòng)化測(cè)試延刘。

自動(dòng)化測(cè)試框架

正如有各種各樣的開(kāi)發(fā)框架,自動(dòng)化測(cè)試也有各種各樣的框架六敬,這些框架可以幫助我們更快速的實(shí)現(xiàn)自動(dòng)化測(cè)試碘赖,更方便的寫(xiě)測(cè)試腳本,讓我們更專(zhuān)注于項(xiàng)目邏輯和測(cè)試本身觉阅,自動(dòng)化測(cè)試框架非常多崖疤,有的開(kāi)源钦睡,有的收費(fèi)纠亚,開(kāi)源測(cè)試框架基本能滿足我們的大多數(shù)需要乐疆,因此我們將主要推薦開(kāi)源測(cè)試框架。
如何選擇測(cè)試框架割笙?不同框架適用不同測(cè)試目的,支持不同平臺(tái)眯亦,支持不同語(yǔ)言等伤溉,想明白這幾個(gè)問(wèn)題就很容易找到適合自己的框架了。
Unit test, UI driven test, performance test這三種類(lèi)型是比較常見(jiàn)的自動(dòng)化測(cè)試類(lèi)型妻率,相應(yīng)的自動(dòng)化測(cè)試框架也多一些乱顾。
下面列出一些比較常見(jiàn)的框架,后面會(huì)詳細(xì)介紹一些框架宫静。

  • STAF/STAX - Software Test Automation Framework (STAF) 是由IBM開(kāi)發(fā)的開(kāi)源走净、跨平臺(tái)、支持多語(yǔ)言的自動(dòng)化測(cè)試框架

  • Robot Framework

    • 由Nokia Networks提供的跨平臺(tái)孤里、支持Python,Java等語(yǔ)言的開(kāi)源測(cè)試框架伏伯,主要代碼由Python實(shí)現(xiàn),是一種keyworld driven的測(cè)試框架捌袜∷到粒可以通過(guò)XML-RPC插件實(shí)現(xiàn)跨機(jī)器的testing。Robot Framework + Selenium是比較常見(jiàn)的web UI的測(cè)試方案虏等。
    • STAF和Robot Framework都屬于管理執(zhí)行框架弄唧,本身不提供基礎(chǔ)的自動(dòng)化測(cè)試支持,一般會(huì)集成一個(gè)其他自動(dòng)化測(cè)試框架霍衫,譬如robot可以集成selenium套才,http://wiki.opensfs.org/Automation_framework_evaluation有STAF vs Robot Framework的比較.
  • TestNG - Java功能測(cè)試一般使用這個(gè)框架

  • JMeter - Java性能測(cè)試一般使用這個(gè)框架

  • UI testing framework:

    • QTP(收費(fèi)) - HP QuickTest Professional
    • calabash-android, calabash-ios - 移動(dòng)平臺(tái)的測(cè)試框架
    • Selenium/webdriver - web UI測(cè)試一般使用這個(gè)框架
    • Robotium - android UI測(cè)試一般使用這個(gè)框架
    • AutoIt - windows UI,基于windows控件消息
    • UI Automation - 微軟提供的測(cè)試框架慕淡,基于MSAA技術(shù)
  • LoadRunner(收費(fèi)) - HP提供背伴,用于性能測(cè)試

iOS/Android/OSX等平臺(tái)都自帶了測(cè)試自動(dòng)化的支持,Visual Stadio和Xcode也包含自動(dòng)化測(cè)試工具.

xDD

軟件工程界流行各種xDD (x driven developmen),下面介紹幾個(gè):

TDD - Test Driven Development
大概的流程是先針對(duì)每個(gè)功能點(diǎn)抽象出接口代碼傻寂,然后編寫(xiě)單元測(cè)試代碼息尺,接下來(lái)實(shí)現(xiàn)接口,運(yùn)行單元測(cè)試代碼疾掰,循環(huán)此過(guò)程搂誉,直到整個(gè)單元測(cè)試都通過(guò)。

BDD - Behavior Driven Development
BDD基于TDD静檬,使用Given/When/Then的句式描述一個(gè)個(gè)use case炭懊,描述更接近自然語(yǔ)言和容易理解,方便DEV/QA/PO/stakeholders等人員相互交流拂檩。Cucumber是目前流行的BDD框架侮腹,由Ruby實(shí)現(xiàn)。

其他的xDD還有IDD(Inteface Driven Development), DDD(Domain Driven Development), FDD(Feature Driven Development), MDD(Model Driven Development), ATDD(Acceptance Test-Driven Development)等稻励。
個(gè)人認(rèn)為父阻,程序能做到Interface Driven Design就可以有效的實(shí)現(xiàn)模塊間的解耦和方便測(cè)試代碼的編寫(xiě),IDD也是TDD的基礎(chǔ)望抽,因此開(kāi)發(fā)代碼時(shí)需要先做到IDD加矛,再做到TDD,其他的xDD則未必需要煤篙。

單元測(cè)試框架 - xUnit/xMock

單元測(cè)試是最常見(jiàn)的測(cè)試類(lèi)型斟览,一般為xUnit框架,常用的Unit Test框架有:

  • Java - JUnit, TestNG, jMock
  • C++ - Google Test, Google Mock
  • JavaScript - QUnit, JSTestDriver
  • Python - py.test, nose
  • C# - NUnit

更多閱讀:

STAF/STAX

Software Test Automation Framework (STAF) 是由IBM開(kāi)發(fā)的開(kāi)源辑奈、跨平臺(tái)苛茂、支持多語(yǔ)言的自動(dòng)化測(cè)試框架,主要代碼由C++實(shí)現(xiàn)身害,支持Windows/Linux/Mac/Solaris等平臺(tái)味悄。

STAF封裝了不同平臺(tái)和不同語(yǔ)言間通信的復(fù)雜性,提供了消息塌鸯、互斥侍瑟、同步、日志等可復(fù)用的服務(wù)丙猬,使用戶可以在此基礎(chǔ)上方便快速地構(gòu)建自動(dòng)化測(cè)試解決方案涨颜。

STAFProc

STAF的核心是一個(gè)后臺(tái)程序STAFProc,也叫STAF Daemon茧球,舉例庭瑰,如果你想在你的本地linux機(jī)器上驅(qū)動(dòng)實(shí)驗(yàn)室里的3臺(tái)windows test machine和2臺(tái)mac test machine,那么需要在這6臺(tái)機(jī)器上都裝上STAF抢埋,也就是說(shuō)弹灭,這6臺(tái)機(jī)器上都運(yùn)行STAFProc程序督暂,如下圖:


STAFProc

從STAF的環(huán)境里,并沒(méi)有客戶端/服務(wù)器的區(qū)別穷吮,這6臺(tái)機(jī)器都是平等的逻翁,從一個(gè)STAF端可以直接調(diào)用另一個(gè)STAF端提供的服務(wù)。

STAF Service

STAF是一個(gè)插件架構(gòu)捡鱼,這些插件就是Service八回,STAF的具體功能都是由各種service提供,STAFProc自帶了一些service(稱為內(nèi)部service)驾诈,也有很多外部service缠诅,用戶還可以開(kāi)發(fā)自己的service,外部Service可以用C++或Java開(kāi)發(fā)乍迄,STAF可以加載DLL文件或JAR文件里的Service管引。


STAF Service

內(nèi)部Service和STAFProc在一起,這表示內(nèi)部Service是永遠(yuǎn)可用的就乓,名字也是固定的汉匙,下面是幾個(gè)常見(jiàn)的內(nèi)部Service(非完整列表):

  • DIAG - diagnostics, 用于調(diào)試
  • DELAY - 延遲等待一段時(shí)間
  • FS - file system, 用于文件操作
  • PING - 檢查本地或遠(yuǎn)程服務(wù)是否可用
  • PROCESS - 可以啟動(dòng)拱烁、停止或者查詢進(jìn)程
  • SHUTDOWN - 用于shutdown STAFProc

外部service一般需要到STAF官網(wǎng)去下載服務(wù)組件包,一般服務(wù)組件包下完后還需要一些配置生蚁,下面是一些常用的外部服務(wù):

  • STAX - 一個(gè)基于XML的執(zhí)行引擎,在XML中定義測(cè)試工作流戏自,可以實(shí)現(xiàn)并行執(zhí)行邦投、嵌套測(cè)試用例、控制運(yùn)行時(shí)間等擅笔,STAX支持Java 和 Python 模塊
  • CRON - 定義定時(shí)任務(wù)志衣,使用Jenkins的話,也可以在Jenkins里定義定時(shí)任務(wù)
  • EMAIL - 發(fā)送郵件
  • HTTP - 發(fā)送HTTP請(qǐng)求
  • ZIP - 提供壓縮與解壓

STAF Requests

STAF實(shí)現(xiàn)了跨機(jī)器的通訊猛们,用戶程序通過(guò)發(fā)送請(qǐng)求來(lái)調(diào)用各個(gè)服務(wù)的功能念脯,每個(gè)請(qǐng)求都以字符串的形式發(fā)送,這樣可以保證 STAF 能夠跨平臺(tái)的運(yùn)行弯淘。每個(gè)請(qǐng)求都有三個(gè)參數(shù)绿店,以“系統(tǒng)-服務(wù)-參數(shù)”的形式出現(xiàn),第一個(gè)參數(shù)表示此請(qǐng)求需要被發(fā)送到的哪個(gè)機(jī)器庐橙,第二個(gè)參數(shù)表示要調(diào)用哪個(gè)Service假勿,第三個(gè)參數(shù)傳給被調(diào)用的Service使用。舉例态鳖,"STAF local ECHO hello"表示調(diào)用本機(jī)的ECHO Service转培,“STAF 1.2.3.4 PING PING”表示調(diào)用機(jī)器1.2.3.4上的PING服務(wù)。

STAF的通訊層基于CORBA浆竭,http://www.51testing.com/html/36/n-73836.html詳細(xì)介紹了STAF的由來(lái)和設(shè)計(jì)細(xì)節(jié)浸须。

Windows GUI測(cè)試 - MSAA與AutoIt

MSAA全稱為Microsoft Active Accessibility惨寿,基于COM技術(shù),核心接口是IAccessible删窒,MSAA的下一代產(chǎn)品是UI Automation (UIA)缤沦,核心接口為IAccessibleEx和IRawElementProviderSimple,從 Windows7以來(lái)易稠,微軟在努力把它的accessibility technologies放進(jìn)一個(gè)framework里面缸废,稱之為Windows Automation API。詳情參考博客

Windows GUI的自動(dòng)化測(cè)試一般都是基于MSAA技術(shù)驶社,被測(cè)程序需要支持MSAA/UIA企量,實(shí)現(xiàn)對(duì)應(yīng)的COM接口,然后測(cè)試程序就可以通過(guò)MSAA接口讀取UI元素亡电。

另一個(gè)測(cè)試windows UI的常用工具是AutoIt届巩,AutoIt基于類(lèi)似Spy++的窗口技術(shù),可以識(shí)別標(biāo)準(zhǔn)的window控件份乒,使用類(lèi)似basic的自有語(yǔ)言來(lái)寫(xiě)test case恕汇,AutoIt不僅用于Windows GUI測(cè)試,也常用來(lái)開(kāi)發(fā)windows平臺(tái)工具軟件來(lái)自動(dòng)執(zhí)行常見(jiàn)的任務(wù)或辖,還常用來(lái)開(kāi)發(fā)計(jì)算機(jī)游戲機(jī)器人瘾英,用來(lái)自動(dòng)執(zhí)行游戲中的任務(wù)等。
更多閱讀: http://en.wikipedia.org/wiki/List_of_GUI_testing_tools

Web UI測(cè)試 - Selenium WebDriver

Selenium是由ThoughtWorks公司開(kāi)發(fā)的開(kāi)源的web自動(dòng)化測(cè)試工具颂暇,用于自動(dòng)化瀏覽器缺谴。Selenium測(cè)試直接運(yùn)行在瀏覽器中,就像真正的用戶在操作一樣耳鸯。支持所有主流瀏覽器湿蛔,也支持多種語(yǔ)言來(lái)編寫(xiě)測(cè)試代碼,是應(yīng)用最廣泛的web程序自動(dòng)化測(cè)試工具.

Selenium 2.0(又名 Selenium WebDriver)的主要新功能是集成了 WebDriver县爬。WebDriver 曾經(jīng)是 Selenium 1(又名 Selenium Remote Control, 簡(jiǎn)寫(xiě)為Selenium RC)的競(jìng)爭(zhēng)對(duì)手阳啥。Selenium RC 在瀏覽器中運(yùn)行 JavaScript 應(yīng)用,而 WebDriver 通過(guò)原生瀏覽器支持或者瀏覽器擴(kuò)展直接控制瀏覽器财喳。

Selenium 1.0 + WebDriver = Selenium 2.0

Selenium 1 是一款流行和完善的測(cè)試框架察迟,支持眾多瀏覽器(因其 JavaScript 實(shí)現(xiàn)),允許用戶通過(guò)許多編程語(yǔ)言(從 Java/C# 到 PHP纲缓、Erlang...)編寫(xiě)測(cè)試腳本卷拘,而 WebDriver 則彌補(bǔ)了 Selenium 1 的缺點(diǎn),跳出了 JavaScript 的沙箱祝高,提供快速栗弟、輕量級(jí)的瀏覽器模擬器。之所以合并工闺,原因如下:

  • WebDriver 解決了 Selenium 存在的缺點(diǎn)(比如乍赫,繞過(guò) JS 沙箱)
  • Selenium 解決了 WebDriver 存在的問(wèn)題(例如支持廣泛的瀏覽器)

WebDriver 針對(duì)各個(gè)瀏覽器而開(kāi)發(fā)瓣蛀,使用各個(gè)瀏覽器提供的native support操縱瀏覽器,取代了 Selenium RC 中嵌入到被測(cè) Web 應(yīng)用中的 JavaScript雷厂,與瀏覽器的緊密集成可以支持創(chuàng)建更高級(jí)的測(cè)試惋增,且避免了 JavaScript 安全模型導(dǎo)致的限制。除了來(lái)自瀏覽器廠商的支持改鲫,WebDriver 還利用操作系統(tǒng)級(jí)的調(diào)用模擬用戶輸入诈皿。

WebDriver 支持 Firefox (FirefoxDriver)、IE (InternetExplorerDriver)像棘、Opera (OperaDriver) 和 Chrome (ChromeDriver)稽亏。它還支持 Android (AndroidDriver) 和 iPhone (IPhoneDriver) 的移動(dòng)應(yīng)用測(cè)試。此外缕题,還包括一個(gè)基于 HtmlUnit 的無(wú)界面實(shí)現(xiàn)截歉,即 HtmlUnitDriver。WebDriver API 可以通過(guò) Python烟零、Ruby瘪松、Java 和 C# 訪問(wèn),支持開(kāi)發(fā)人員使用他們偏愛(ài)的編程語(yǔ)言來(lái)創(chuàng)建測(cè)試锨阿。

Selenium 2.0包含如下幾個(gè)工具:

  • Selenium IDE - 一個(gè)Firefox插件宵睦,錄制回放用戶的基本操作,生成測(cè)試用例
  • Selenium WebDriver - 前身為Selenium RC, 包括一組browser driver和不同語(yǔ)言對(duì)應(yīng)的language bindings, 支持多種平臺(tái)(Windows群井,Linux状飞,Mac等)和多種瀏覽器(IE毫胜,F(xiàn)irefox书斜,Opera,Safari酵使,Chrome等)荐吉,可以用多種語(yǔ)言(Java,Ruby口渔,Python样屠,Perl,PHP缺脉,C#等)編寫(xiě)測(cè)試用例
  • Selenium Server - 單機(jī)運(yùn)行測(cè)試腳本時(shí)無(wú)需這個(gè)工具痪欲,使用Selenium Grid分發(fā)到遠(yuǎn)程機(jī)器上運(yùn)行Webdriver測(cè)試腳本時(shí)需要

假設(shè)在Mac機(jī)器上用Java寫(xiě)測(cè)試腳本在Chrome里測(cè)試,配置Selenium開(kāi)發(fā)環(huán)境可能需要如下幾個(gè)工具:

  • Selenium Chrome Driver, 用于驅(qū)動(dòng)Chrome瀏覽器
  • Selenium Client Drivers - Java, 用于支持Java測(cè)試腳本
  • Selenium Server, 用于遠(yuǎn)程機(jī)器測(cè)試攻礼,單機(jī)時(shí)不需要

另一個(gè)簡(jiǎn)單的方法是使用Maven來(lái)配置Java環(huán)境的Selenium開(kāi)發(fā)環(huán)境业踢,參考官網(wǎng)可以了解更多配置文檔.
更多閱讀:

Android測(cè)試 - Robotium

Robotium用于Android平臺(tái)上進(jìn)行黑盒自動(dòng)化測(cè)試,作用類(lèi)似于web平臺(tái)的selenium礁扮,提供了模擬各種手勢(shì)操作(點(diǎn)擊知举、長(zhǎng)按瞬沦、滑動(dòng)等)、查找和斷言機(jī)制的API雇锡,能夠?qū)Ω鞣N控件進(jìn)行操作逛钻,適用于測(cè)試android native app and hybrid app。

Robotium是 android 自帶類(lèi) Instrumentation 的一個(gè)封裝锰提,方便測(cè)試人員直接調(diào)用封裝好的接口曙痘,也就是說(shuō),實(shí)際上我們直接使用Instrumentation 也能夠進(jìn)行自動(dòng)化測(cè)試立肘,但robotium可以簡(jiǎn)化我們的測(cè)試步驟屡江,我們只需要調(diào)用某個(gè)robotium的API,傳幾個(gè)參數(shù)赛不,就等于我們?cè)谡{(diào)用一部分的Instrumentation幫我們實(shí)現(xiàn)測(cè)試惩嘉。

Java代碼測(cè)試 - TestNG

TestNG是類(lèi)似JUnit/NUnit的測(cè)試工具,能夠?qū)崿F(xiàn)unit test, functional test, end-to-end test, integration test等各種測(cè)試.

TestNG和JUnit是針對(duì)Java語(yǔ)言的兩個(gè)比較常用的測(cè)試框架踢故,兩者的相同點(diǎn):

  1. 使用annotation文黎,且大部分annotation相同。
  2. 都可以進(jìn)行單元測(cè)試(Unit test)殿较。
  3. 都是針對(duì)Java測(cè)試的工具耸峭。

TestNG與JUnit的不同點(diǎn):

  1. JUnit只能進(jìn)行單元測(cè)試,TestNG可以進(jìn)行單元測(cè)試淋纲,功能測(cè)試劳闹,端到端測(cè)試,集成測(cè)試等
  2. TestNG需要一個(gè)額外的xml配置文件洽瞬,配置測(cè)試的class本涕、method甚至package
  3. TestNG的運(yùn)行方式更加靈活:命令行、ant和IDE伙窃,JUnit只能使用IDE
  4. TestNG的annotation更加豐富菩颖,比如@ExpectedExceptions、@DataProvider等

其他工具

自動(dòng)化測(cè)試一般是持續(xù)集成的一部分为障,為了做好持續(xù)集成晦闰,通常會(huì)需要:

  • Jenkins - CI工具

test case fail時(shí),可能會(huì)需要自動(dòng)創(chuàng)建bug跟蹤鳍怨,因此可能需要集成下面的bug管理工具:

  • Jira/Bugzilla - Bug管理工具

為了提高代碼質(zhì)量呻右,可能會(huì)用到下面一些工具:

  • 代碼靜態(tài)掃描 -
  • 內(nèi)存泄漏分析 - valgrind on linux, appverifier on windows
  • 性能分析

為了驗(yàn)證測(cè)試coverage,可能需要用到code coverage tool:

  • gcov, c++, gcc only
  • BullseyeCoverage, c++
  • Rational PureCoverage, c++
  • EMMA, java
  • ScriptCover, javascript
  • JSCoverage, javascript

更多閱讀:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末声滥,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子确徙,更是在濱河造成了極大的恐慌醒串,老刑警劉巖执桌,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異芜赌,居然都是意外死亡仰挣,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)缠沈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)膘壶,“玉大人,你說(shuō)我怎么就攤上這事洲愤⊥前牛” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵柬赐,是天一觀的道長(zhǎng)亡问。 經(jīng)常有香客問(wèn)我,道長(zhǎng)肛宋,這世上最難降的妖魔是什么州藕? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮酝陈,結(jié)果婚禮上床玻,老公的妹妹穿的比我還像新娘。我一直安慰自己沉帮,他們只是感情好锈死,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著穆壕,像睡著了一般待牵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上粱檀,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天洲敢,我揣著相機(jī)與錄音,去河邊找鬼茄蚯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛睦优,可吹牛的內(nèi)容都是我干的渗常。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼汗盘,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼皱碘!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起隐孽,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤癌椿,失蹤者是張志新(化名)和其女友劉穎健蕊,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體踢俄,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缩功,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了都办。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嫡锌。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖琳钉,靈堂內(nèi)的尸體忽然破棺而出势木,到底是詐尸還是另有隱情,我是刑警寧澤歌懒,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布啦桌,位于F島的核電站,受9級(jí)特大地震影響及皂,放射性物質(zhì)發(fā)生泄漏震蒋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一躲庄、第九天 我趴在偏房一處隱蔽的房頂上張望查剖。 院中可真熱鬧,春花似錦噪窘、人聲如沸笋庄。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)直砂。三九已至,卻和暖如春浩习,著一層夾襖步出監(jiān)牢的瞬間静暂,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工谱秽, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留洽蛀,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓疟赊,卻偏偏與公主長(zhǎng)得像郊供,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子近哟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容