在做自動(dòng)化測試之前你需要了解的知識(shí)

什么是自動(dòng)化測用踩?

做測試好幾年了婉称,真正學(xué)習(xí)和實(shí)踐自動(dòng)化測試一年,自我感覺這一個(gè)年中收獲許多贤牛。一直想動(dòng)筆寫一篇文章分享自動(dòng)化測試實(shí)踐中的一些經(jīng)驗(yàn)惋鹅。終于決定花點(diǎn)時(shí)間來做這件事兒。

首先理清自動(dòng)化測試的概念殉簸,廣義上來講闰集,自動(dòng)化包括一切通過工具(程序)的方式來代替或輔助手工測試的行為都可以看做自動(dòng)化,包括性能測試工具(loadrunner般卑、jmeter),或自己所寫的一段程序武鲁,用于生成1到100個(gè)測試數(shù)據(jù)。狹義上來講蝠检,通工具記錄或編寫腳本的方式模擬手工測試的過程沐鼠,通過回放或運(yùn)行腳本來執(zhí)行測試用例,從而代替人工對系統(tǒng)的功能進(jìn)行驗(yàn)證叹谁。

當(dāng)然饲梭,我們更普遍的認(rèn)識(shí)把“自動(dòng)化測試”看做“?基于產(chǎn)品或項(xiàng)目UI層的自動(dòng)化測試”。

分層的自動(dòng)化測試

這個(gè)概念最近曝光度比較高本慕,傳統(tǒng)的自動(dòng)化測試更關(guān)注的產(chǎn)品UI層的自動(dòng)化測試排拷,而分層的自動(dòng)化測試倡導(dǎo)產(chǎn)品的不同階段(層次)都需要自動(dòng)化測試。

相信測試同學(xué)對上面的金字塔并不陌生锅尘,這不就是對產(chǎn)品開發(fā)不同階段所對應(yīng)的測試么监氢!我們需要規(guī)范的來做單元測試同樣需要相應(yīng)的單元測試框架布蔗,如java的Junit、testNG浪腐,C#的NUnit纵揍,python的unittest、pytest等议街,幾乎所有的主流語言泽谨,都會(huì)有其對應(yīng)的單元測試框架。

集成特漩、接口測試對于不少測試新手來說不太容易理解吧雹,單元測試關(guān)注代碼的實(shí)現(xiàn)邏輯,例如一個(gè)if分支或一個(gè)for循環(huán)的實(shí)現(xiàn)涂身;那么集成雄卷、接口測試關(guān)注的一是個(gè)函數(shù)、類(方法)所提供的接口是否可靠蛤售。例如丁鹉,我定義一個(gè)add()函數(shù)用于計(jì)算兩個(gè)參數(shù)的結(jié)果并返回,那么我需要調(diào)用add()并傳參悴能,并比較返回值是否兩個(gè)參數(shù)相加揣钦。當(dāng)然,接口測試也可以是url的形式進(jìn)行傳遞漠酿。例如冯凹,我們通過get方式向服務(wù)器發(fā)送請求,那么我們發(fā)送的內(nèi)容做為URL的一部分傳遞到服務(wù)器端记靡。但比如Web?service?技術(shù)對外提供的一個(gè)公共接口谈竿,需要通過soapUI?等工具對其進(jìn)行測試。

UI層的自動(dòng)化測試摸吠,這個(gè)大家應(yīng)該再熟悉不過了空凸,大部分測試人員的大部分工作都是對UI層的功能進(jìn)行測試。例如呀洲,我們不斷重復(fù)的對一個(gè)表單提交,結(jié)果查詢等功能進(jìn)行測試啼止,我們可以通過相應(yīng)的自動(dòng)化測試工具來模擬這些操作道逗,從而解放重復(fù)的勞動(dòng)。UI層的自動(dòng)化測試工具非常多献烦,比較主流的是QTP滓窍,Robot?Framework、watir巩那、selenium等吏夯。

為什么要畫成一個(gè)金字塔形此蜈,則不是長方形?或倒三角形呢??這是為了表示不同階段所投入自動(dòng)化測試的比例噪生。如果一個(gè)產(chǎn)品從沒有做單元測試與接口測試裆赵,只做UI層的自動(dòng)化測試是不科學(xué)的,從而很難從本質(zhì)上保證產(chǎn)品的質(zhì)量跺嗽。如果你妄圖實(shí)現(xiàn)全面的UI層的自動(dòng)化測試战授,那更是一個(gè)勞民傷財(cái)?shù)呐e動(dòng),投入了大量人力時(shí)間桨嫁,最終獲得的收益可能會(huì)遠(yuǎn)遠(yuǎn)低于所支付的成本植兰。因?yàn)樵酵蠈樱渚S護(hù)成本越高瞧甩。尤其是UI層的元素會(huì)時(shí)常的發(fā)生改變钉跷。所以,我們應(yīng)該把更多的自動(dòng)化測試放在單元測試與接口測試階段進(jìn)行肚逸。

既然UI層的自動(dòng)化測試這么勞民傷財(cái),那我們只做單元測試與接口測試好了彬坏。NO!因?yàn)椴还苁裁礃拥漠a(chǎn)品朦促,最終呈現(xiàn)給用戶的是UI層。所以栓始,測試人員應(yīng)該更多的精力放在UI層务冕。那么也正是因?yàn)闇y試人員在UI層投入大量的精力,所以幻赚,我們有必要通過自動(dòng)化的方式幫助我們“部分解放”重復(fù)的勞動(dòng)禀忆。

在自動(dòng)化測試中最怕的是變化,因?yàn)樽兓闹苯咏Y(jié)果就是導(dǎo)致測試用例的運(yùn)行失敗落恼,那么就需要對自動(dòng)化腳本進(jìn)行維護(hù)箩退;如何控制失敗,降低維護(hù)成本對自化的成敗至關(guān)重要佳谦。反過來講戴涝,一份永遠(yuǎn)都運(yùn)行成功的自動(dòng)化測試用例是沒有價(jià)值。

至于在金字塔中三種測試的比例要根據(jù)實(shí)際的項(xiàng)目需求來劃分钻蔑。在《google測試之道》一書啥刻,對于google產(chǎn)品,70%的投入為單元測試咪笑,20%為集成可帽、接口測試,10%為UI層的自動(dòng)化測試窗怒。

我為什么要做自動(dòng)化測試映跟?

根據(jù)51testing的《中國軟件測試從業(yè)人員調(diào)查報(bào)告》蓄拣,手工測試占到的89%?,相對開發(fā)來說申窘,測試的門檻底弯蚜,薪資普遍較底,所要求的知識(shí)面雖然有一定廣度剃法,但缺乏深度碎捺。這是測試的普遍現(xiàn)狀。

正因?yàn)槭止y試人門檻不高贷洲,使大量的畢業(yè)生收厨,甚至是非專業(yè)人員涌入這個(gè)行業(yè)。從而增加了這個(gè)行業(yè)的激烈競爭优构。對于工作幾年扔處于手工測試的人員來說都會(huì)有強(qiáng)列的危機(jī)感诵叁。由于工作的技術(shù)含量不高,薪資的漲幅遇到瓶頸钦椭,另一方面受到新進(jìn)入者的威脅拧额,同樣的工作公司花5K招來的人就可以做,那么就不會(huì)花8K的招彪腔。

好吧侥锦,這個(gè)問題不應(yīng)該出現(xiàn)討論技術(shù)的話題中,但他的確是大多測試人員不得不面對的一個(gè)問題德挣。所以恭垦,從測試人員自身的發(fā)展來說,我其實(shí)非常需要通過自動(dòng)化技術(shù)來增加自己有競爭力格嗅。當(dāng)然番挺,做到一定年限測試人員會(huì)選擇轉(zhuǎn)管理或其它崗位,這又是另一個(gè)話題了屯掖。

從測試行業(yè)的發(fā)展來說玄柏,國內(nèi)產(chǎn)品由于產(chǎn)品特點(diǎn),世界級的產(chǎn)品不多懂扼,技術(shù)含量相對不高禁荸,質(zhì)量要求相對要求不高,外包國外項(xiàng)目阀湿,測試人力成本低廉赶熟,所以需要大量的手工測試人員。

所以陷嘴,在不遠(yuǎn)的未來映砖,我認(rèn)為純的工手測試人員的需求是遞減,公司更需要更高技術(shù)能力的測試灾挨。質(zhì)量需要測試邑退,測試行為永遠(yuǎn)不會(huì)消失竹宋,但純的手工測試人員是否消失是有可能的。

好吧地技,你可以說測試多朝陽的行業(yè)蜈七,我純屬在危言聳聽。不管未來如何莫矗,我們都需要提升自身的技能對吧飒硅!

什么項(xiàng)目適合做自動(dòng)化測試?

假如你已經(jīng)決定要學(xué)習(xí)自動(dòng)化測試了作谚,如何學(xué)習(xí)是要面臨的下一個(gè)問題三娩?這個(gè)問題以被測試產(chǎn)品為出發(fā)點(diǎn)進(jìn)行分析,假如你所學(xué)的技術(shù)不能得到應(yīng)用(驗(yàn)證)妹懒,將會(huì)使你的學(xué)習(xí)過程寸步難行雀监。

首先考考慮產(chǎn)品是否適合做自動(dòng)化測試。這方法比較普遍的共識(shí)是從三個(gè)方面進(jìn)行權(quán)衡眨唬。

軟件需求變動(dòng)不頻繁

測試腳本的穩(wěn)定性決定了自動(dòng)化測試的維護(hù)成本筋搏。如果軟件需求變動(dòng)過于頻繁嫌吠,測試人員需要根據(jù)變動(dòng)的需求來更新測試用例以及相關(guān)的測試腳本流酬,而腳本的維護(hù)本身就是一個(gè)代碼開發(fā)的過程蓉驹,需要修改、調(diào)試搂橙,必要的時(shí)候還要修改自動(dòng)化測試的框架,如果所花費(fèi)的成本不低于利用其節(jié)省的測試成本笛坦,那么自動(dòng)化測試便是失敗的区转。

項(xiàng)目中的某些模塊相對穩(wěn)定,而某些模塊需求變動(dòng)性很大版扩。我們便可對相對穩(wěn)定的模塊進(jìn)行自動(dòng)化測試废离,而變動(dòng)較大的仍是用手工測試。

項(xiàng)目周期較長

由于自動(dòng)化測試需求的確定礁芦、自動(dòng)化測試框架的設(shè)計(jì)蜻韭、測試腳本的編寫與調(diào)試均需要相當(dāng)長的時(shí)間來完成。這樣的過程本身就是一個(gè)測試軟件的開發(fā)過程柿扣,需要較長的時(shí)間來完成肖方。如果項(xiàng)目的周期比較短,沒有足夠的時(shí)間去支持這樣一個(gè)過程未状,那么自動(dòng)化測試便成為笑談俯画。

自動(dòng)化測試腳本可重復(fù)使用

自動(dòng)化測試腳本的重復(fù)使用要從三個(gè)方面來考量,一方面所測試的項(xiàng)目之間是否很大的差異性(如C/S系統(tǒng)和B/S系統(tǒng)的差異)司草;所選擇的測試工具是否適應(yīng)這種差異艰垂;最后泡仗,測試人員是否有能力開發(fā)出適應(yīng)這種差異的自動(dòng)化測試框架。

選擇什么工具進(jìn)行自動(dòng)化測試

假如你已經(jīng)確認(rèn)了XX項(xiàng)目適合做自動(dòng)化測試猜憎,那么接下來你要做的就是選測試工具了娩怎。

首先要先確認(rèn)你所測試的產(chǎn)品是桌面程序(C/S)還是web應(yīng)用(B/S)。

桌面程序的工具有:QTP胰柑、AutoRunner

web應(yīng)用的工具有:QTP截亦、AutoRunner、Robot?Framework旦事、watir魁巩、selenium

由于B/S架構(gòu)的諸多優(yōu)勢,早幾年前大量C/S架構(gòu)的應(yīng)用轉(zhuǎn)為B/S結(jié)構(gòu)姐浮。從而也推動(dòng)了web開發(fā)與測試技術(shù)的發(fā)展谷遂。假如,被測試有產(chǎn)品是C/S架構(gòu)的卖鲤,那么推薦QTP肾扰,QTP在UI自動(dòng)化測試領(lǐng)域占到了一半的試用率。所以蛋逾,足以說明QTP在自動(dòng)化領(lǐng)域強(qiáng)大集晚,易用性等。學(xué)習(xí)主流的工具也可以使你獲得更多的機(jī)會(huì)区匣。市面上關(guān)于QTP的書籍也非常豐富偷拔。當(dāng)然,要想學(xué)好QTP亏钩,你必須要掌握VBS腳本語言莲绰。

如果,被測產(chǎn)品是B/S結(jié)構(gòu)姑丑,那么推薦selenium蛤签,為什么不是QTP或其它工具?因?yàn)閟elenium對B/S應(yīng)用支持很好栅哀,更重要的一點(diǎn)震肮,它支持多語言的開發(fā),真正的試用selenium留拾,你所要掌握的不僅僅是一個(gè)工具而已戳晌,你還需要學(xué)習(xí)一門語言。我為什么要選擇selenium间驮?還要學(xué)一門語言躬厌,這無疑增加了我的學(xué)習(xí)成本。增加成本的同時(shí),也增加的你的競爭力扛施,而且鸿捧,在這個(gè)過程中你不單單只是學(xué)會(huì)了一個(gè)自動(dòng)化工具而已,你完全可以使用所學(xué)的語言去做更多的事情疙渣。

好吧匙奴!假如你決定試用selenium了之后,你又面臨了一個(gè)新的問題妄荔,選擇一門語言泼菌。selenium是支持java、python啦租、ruby哗伯、php、C#篷角、JavaScript?焊刹。

從語言易學(xué)性來講,首選ruby恳蹲,python

從語言應(yīng)用廣度來講虐块,首選java、C#嘉蕾、php贺奠、

從語言相關(guān)測試技術(shù)成度(及?資料)來講:ruby?,python?,java

或者你可以考慮整個(gè)技術(shù)團(tuán)隊(duì)主流用什么語言,然后選擇相應(yīng)的語言错忱。

selenium?用前須知

OK儡率!經(jīng)過上的過程,我相信你一定做出的相應(yīng)的選擇以清,如果你選擇的是selenium?工具喉悴,那么接著往下閱讀。

首選你在開始selenium之前玖媚,需要花一到兩個(gè)月時(shí)間去學(xué)一門語言,這里是根據(jù)沒有語言基礎(chǔ)的同學(xué)而定的婚脱。我推薦ruby?,python?,java?任意一門語言來進(jìn)行學(xué)習(xí)今魔。

當(dāng)然,已經(jīng)如果有很好的語言基礎(chǔ)略過這個(gè)環(huán)節(jié)障贸,或者你的豐富的java編程能力错森,那么學(xué)習(xí)python?可能只需要幾天時(shí)間或更短。

假如篮洁,你已經(jīng)搞定了一門語言的基礎(chǔ)涩维,接下來你需要先了解selenium?,selenium?并不是單純的一個(gè)工具,他是一組工具的集合瓦阐,而且蜗侈,他還有1.0與2.0之分,當(dāng)然3.0也已經(jīng)到來睡蟋。

selenium?也不是簡單一個(gè)工具踏幻,而是由幾個(gè)工具組成,每個(gè)工具都有其特點(diǎn)和應(yīng)用場景戳杀。

selenium?IDE

selenium?IDE?是嵌入到Firefox瀏覽器中的一個(gè)插件该面,實(shí)現(xiàn)簡單的瀏覽器操作的錄制與回放功能。那么什么情況下用到它呢信卡?

快速的創(chuàng)建bug重現(xiàn)腳本隔缀,在測試人員的測試過程中,發(fā)現(xiàn)了bug之后可以通過IDE將重現(xiàn)的步驟錄制下來傍菇,以幫助開發(fā)人員更容易的重現(xiàn)bug猾瘸。

IDE錄制的腳本可以可以轉(zhuǎn)換成多種語言,從而幫助我們快速的開發(fā)腳本桥嗤,關(guān)于這個(gè)功能后而用到時(shí)再詳細(xì)介紹须妻。

selenium?Grid

Selenium?Grid是一種自動(dòng)化的測試輔助工具,Grid通過利用現(xiàn)有的計(jì)算機(jī)基礎(chǔ)設(shè)施泛领,能加快Web-app的功能測試荒吏。利用Grid,可以很方便地同時(shí)在多臺(tái)機(jī)器上和異構(gòu)環(huán)境中并行運(yùn)行多個(gè)測試事例渊鞋。其特點(diǎn)為:

·?并行執(zhí)行

·?通過一個(gè)主機(jī)統(tǒng)一控制用例在不同環(huán)境绰更、不同瀏覽器下運(yùn)行。

·?靈活添加變動(dòng)測試機(jī)

selenium?RC

selenium?RC?是selenium?家族的核心工具锡宋,selenium?RC?支持多種不同的語言編寫自動(dòng)化測試腳本儡湾,通過selenium?RC?的服務(wù)器作為代理服務(wù)器去訪問應(yīng)用從而達(dá)到測試的目的。

selenium?RC?使用分Client?Libraries和selenium?Server执俩,Client?Libraries庫主要主要用于編寫測試腳本徐钠,用來控制selenium?Server的庫。

Selenium?Server負(fù)責(zé)控制瀏覽器行為役首,總的來說尝丐,Selenium?Server主要包括3個(gè)部分:Launcher、Http?Proxy衡奥、Core爹袁。其中Selenium?Core是被Selenium?Server嵌入到瀏覽器頁面中的。其實(shí)Selenium?Core就是一堆JS函數(shù)的集合矮固,就是通過這些JS函數(shù)失息,我們才可以實(shí)現(xiàn)用程序?qū)g覽器進(jìn)行操作。Launcher用于啟動(dòng)瀏覽器,把selnium?Core加載到瀏覽器頁面當(dāng)中盹兢,并把瀏覽器的代理設(shè)置為Selenium?Server?的Http?Proxy邻梆。

selenium?2.0

搞清了selenium?1.0?的家族關(guān)系,selenium?2.0?是把WebDriver?加入到了這個(gè)家族中蛤迎;簡單用公式表示為:

selenium?2.0?=?selenium?1.0?+?WebDriver

需要強(qiáng)調(diào)的是确虱,在selenium?2.0?中主推的是WebDriver?,WebDriver?是selenium?RC?的替代品替裆,因?yàn)?selenium?為了向下兼容性校辩,所以selenium?RC?并沒有徹底拋棄,如果你使用selenium開發(fā)一個(gè)新自動(dòng)化測試項(xiàng)目辆童,強(qiáng)列推薦使用WebDriver?宜咒。那么selenium?RC?與webdriver?主要有什么區(qū)別呢?

selenium?RC?在瀏覽器中運(yùn)行JavaScript應(yīng)用把鉴,使用瀏覽器內(nèi)置的JavaScript?翻譯器來翻譯和執(zhí)行selenese命令(selenese?是selenium命令集合)故黑。

WebDriver通過原生瀏覽器支持或者瀏覽器擴(kuò)展直接控制瀏覽器。WebDriver針對各個(gè)瀏覽器而開發(fā)庭砍,取代了嵌入到被測Web應(yīng)用中的JavaScript场晶。與瀏覽器的緊密集成支持創(chuàng)建更高級的測試,避免了JavaScript安全模型導(dǎo)致的限制怠缸。除了來自瀏覽器廠商的支持诗轻,WebDriver還利用操作系統(tǒng)級的調(diào)用模擬用戶輸入。

如果是新項(xiàng)目直接學(xué)習(xí)webdriver?就OK了揭北,RC是過時(shí)技術(shù)扳炬。

selenium學(xué)習(xí)路線

配置你的測試環(huán)境,真對你所學(xué)習(xí)語言搔体,來配置你相應(yīng)的selenium?測試環(huán)境恨樟。selenium?好比定義的語義---“問好”,假如你使用的是中文疚俱,為了表術(shù)問好劝术,你的寫法是“你好”,假如你使用的是英語呆奕,你的寫法是“hello”夯尽。?所以,同樣有語義在不同的語言下會(huì)有不同的寫法(語法)登馒。

接著你需要熟悉webdriver?API?,API就是selenium?所定義一方法咆槽,用于定位陈轿,操作頁面上的各種元素。

先學(xué)習(xí)元素的定位,selenium?提供了id麦射、name蛾娶、class?name、?tag?name潜秋、link?text蛔琅、partial?link?text、?xpath峻呛、css罗售、等定位方法。xpath和css功能強(qiáng)大語法稍微復(fù)雜钩述,在這其間你可能還需要了解更多的前端知識(shí)寨躁。xml?,javascript等。

定位元素的目的是為了操作元素牙勘,接就要學(xué)習(xí)各種元素有操作职恳,輸入框,下拉框方面,按鈕點(diǎn)擊放钦,文件上傳、下載恭金,分頁操禀,對話框,警告框...等等蔚叨。

經(jīng)過一段時(shí)間的學(xué)習(xí)床蜘,你可以游刃有余的模擬手工測試來操作頁面上的各種元素了。接著你需要做的就是把這些“用例”組織起來蔑水,統(tǒng)一來跑邢锯。

那么你需要做的就是學(xué)習(xí)并使用單元測試框架,單元測試框架本身就解決了用例的組織與運(yùn)行搀别。

當(dāng)你寫了一些“測試用例”?之后丹擎,你會(huì)發(fā)現(xiàn)用例中有大量重復(fù)的操作,能不能寫到一個(gè)單獨(dú)的文件中歇父,需要的時(shí)候調(diào)用這些操作蒂培?當(dāng)然可以,運(yùn)用你的編程能力來實(shí)現(xiàn)這一點(diǎn)將非常簡單榜苫。然后护戳,你又發(fā)現(xiàn)每個(gè)用例中都有一些數(shù)據(jù),這些數(shù)據(jù)也是一樣的垂睬,但如果變化了修改起來非常麻煩媳荒,你也可以把他寫到一個(gè)單獨(dú)的文件中進(jìn)行讀取抗悍。

接著你又遇到了新的疑問,我寫的腳本(用例)都是流水式的钳枕,我怎么知道用例運(yùn)行失敗還是成功缴渊。那么就需要在腳本中加一些驗(yàn)證與斷言。

接著你又有了更多的想法鱼炒,單元測試框架的log太簡陋了衔沼,能不能生成一張漂亮的測試報(bào)告出來。我能不能定時(shí)的來跑這個(gè)腳本昔瞧。能不能把每一次跑腳本的測試結(jié)果直接發(fā)到我的郵箱指蚁。能不能......

為解決這些問題,你不得不學(xué)習(xí)更多的編程技術(shù)硬爆,然后你的“測試結(jié)構(gòu)”會(huì)功能越來越強(qiáng)大欣舵,越來越靈活。產(chǎn)生了一定的通用性和移植性缀磕。一個(gè)有模有樣的自動(dòng)化測試框架誕生了缘圈。

假如,有一天你不再做UI的自動(dòng)化測試了袜蚕,你會(huì)發(fā)現(xiàn)你去做單元測試?或接口測試基本沒什么難度糟把。開發(fā)個(gè)測試工具之類的也不在話下,感謝selenium吧牲剃!順便也感謝一下我吧遣疯!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市凿傅,隨后出現(xiàn)的幾起案子缠犀,更是在濱河造成了極大的恐慌,老刑警劉巖聪舒,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辨液,死亡現(xiàn)場離奇詭異,居然都是意外死亡箱残,警方通過查閱死者的電腦和手機(jī)滔迈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來被辑,“玉大人燎悍,你說我怎么就攤上這事∨卫恚” “怎么了谈山?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長宏怔。 經(jīng)常有香客問我奏路,道長抗蠢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任思劳,我火速辦了婚禮,結(jié)果婚禮上妨猩,老公的妹妹穿的比我還像新娘潜叛。我一直安慰自己,他們只是感情好壶硅,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布威兜。 她就那樣靜靜地躺著,像睡著了一般庐椒。 火紅的嫁衣襯著肌膚如雪椒舵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天约谈,我揣著相機(jī)與錄音笔宿,去河邊找鬼。 笑死棱诱,一個(gè)胖子當(dāng)著我的面吹牛泼橘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播迈勋,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼炬灭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了靡菇?” 一聲冷哼從身側(cè)響起重归,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鼻吮,沒想到半個(gè)月后泳唠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年士鸥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了烤礁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鲤脏,靈堂內(nèi)的尸體忽然破棺而出猎醇,到底是詐尸還是另有隱情,我是刑警寧澤阻问,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布称近,位于F島的核電站曹鸠,受9級特大地震影響彻桃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜眠屎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一改衩、第九天 我趴在偏房一處隱蔽的房頂上張望驯镊。 院中可真熱鬧板惑,春花似錦、人聲如沸洽胶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至舔亭,卻和暖如春蟀俊,著一層夾襖步出監(jiān)牢的瞬間肢预,已是汗流浹背烫映。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工噩峦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人识补。 一個(gè)月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓凭涂,卻偏偏與公主長得像切油,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子孕荠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

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