嵌入式軟件測試的10種方法

學(xué)號:16020188037? ? ?姓名:崔岸婧

【嵌牛導(dǎo)讀】:嵌入式軟件測試的秘訣

【嵌牛鼻子】:嵌入式锨亏、軟件測試

【嵌牛提問】:怎樣高效的測試嵌入式軟件蜜宪?是否有能夠幫助我們提供效率的軟件杖小?測試過程中有哪些容易忽視? ? ? ? ? ? ? ? ? ? ? ? ? ? ?的重要問題伴榔?

【嵌牛正文】:

這十條秘訣在業(yè)界廣為流傳紊浩,使很多人受益评腺。本文圍繞這十條秘訣展開論述切蟋。?

1.懂得使用工具?

通常嵌入式系統(tǒng)對可靠性的要求比較高忱辅。嵌入式系統(tǒng)安全性的失效可能會導(dǎo)致災(zāi)難性的后果焰宣,即使是非安全性系統(tǒng)霉囚,由于大批量生產(chǎn)也會導(dǎo)致嚴(yán)重的經(jīng)濟(jì)損失。這就要求對嵌入式系統(tǒng)匕积,包括嵌入式軟件進(jìn)行嚴(yán)格的測試盈罐、確認(rèn)和驗證。隨著越來越多的領(lǐng)域使用軟件和微處理器控制各種嵌入式設(shè)備闪唆,對日益復(fù)雜的嵌入式軟件進(jìn)行快速有效的測試愈加顯得重要盅粪。?

就像修車需要工具一樣,好的程序員應(yīng)該能夠熟練運(yùn)用各種軟件工具悄蕾。不同的工具票顾,有不同的使用范圍,有不同的功能帆调。使用這些工具库物,你可以看到你的系統(tǒng)在干些什么,它又占用什么資源贷帮,它到底和哪些外界的東西打交道戚揭。讓你郁悶好幾天的問題可能通過某個工具就能輕松搞定,可惜你就是不知道撵枢。那么為什么那么多的人總是在折騰個半死之后才想到要用測試工具呢民晒?原因很多精居,主要有兩個。一個是害怕潜必,另一個是惰性靴姿。害怕是因為加入測試工具或測試模塊到代碼需要技巧同時有可能引入新的錯誤,所以他們總喜歡寄希望于通過不斷地修改重編譯代碼來消除bug磁滚,結(jié)果卻無濟(jì)于事佛吓。懶惰是因為他們習(xí)慣了使用printf之類的簡單測試手段。下面來介紹一些嵌入式常用的測試工具垂攘。?

源碼級調(diào)試器[Source-levelDebugger]這種調(diào)試器一般提供單步或多步調(diào)試维雇、斷點設(shè)置、內(nèi)存檢測晒他、變量查看等功能吱型,是嵌入式調(diào)試最根本有效的調(diào)試方法。比如VxWorksTornadoII提供的gdb就屬于這一種陨仅。?

簡單實用的打印顯示工具[printf]printf或其它類似的打印顯示工具估計是最靈活最簡單的調(diào)試工具津滞。打印代碼執(zhí)行過程中的各種變量可以讓你知道代碼執(zhí)行的情況。但是灼伤,printf對正常的代碼執(zhí)行干擾比較大(一般printf占用CPU比較長的時間)触徐,需要慎重使用,最好設(shè)置打印開關(guān)來控制打印狐赡。?

ICE或JTAG調(diào)試器[In- circuitEmulator]ICE是用來仿真CPU核心的設(shè)備锌介,它可以在不干擾運(yùn)算器的正常運(yùn)行情況下,實時的檢測CPU的內(nèi)部工作情況猾警。像桌面調(diào)試軟件所提供的:復(fù)雜的條件斷點孔祸、先進(jìn)的實時跟蹤、性能分析和端口分析這些功能发皿,它也都能提供崔慧。ICE一般都有一個比較特殊的CPU,稱為外合(bond-out)CPU.這是一種被打開了封裝的CPU穴墅,并且通過特殊的連接惶室,可以訪問到CPU的內(nèi)部信號,而這些信號玄货,在CPU被封裝時皇钞,是沒法 “看到”的。當(dāng)和工作站上強(qiáng)大的調(diào)試軟件聯(lián)合使用時松捉,ICE就能提供你所能找到的最全面的調(diào)試功能夹界。但I(xiàn)CE同樣有一些缺點:昂貴;不能全速工作隘世;同樣可柿,并不是所有的CPU都可以作為外合CPU的鸠踪,從另一個角度說,這些外合CPU也不大可能及時的被新出的CPU所更換复斥。 JTAG(JointTestActionGroup)雖然它最初開發(fā)出來是為了監(jiān)測IC和電路連接营密,但是這種串行接口擴(kuò)展了用途,包括對調(diào)試的支持目锭。?

ROM監(jiān)視器[ROMMonitor]ROM監(jiān)控器是一小程序评汰,駐留在嵌入系統(tǒng)ROM中,通過串行的或網(wǎng)絡(luò)的連接和運(yùn)行在工作站上的調(diào)試軟件通信痢虹。這是一種便宜的方式被去,當(dāng)然也是最低端的技術(shù)。它除了要求一個通信端口和少量的內(nèi)存空間外世分,不需要其它任何專門的硬件。并提供了如下功能:下載代碼缀辩、運(yùn)行控制臭埋、斷點、單步步進(jìn)臀玄、以及觀察瓢阴、修改寄存器和內(nèi)存。因為ROM監(jiān)控器是操作軟件的一部分健无,只有當(dāng)你的應(yīng)用程序運(yùn)行時荣恐,它才會工作。如果你想檢查CPU和應(yīng)用程序的狀態(tài)累贤,你就必須停下應(yīng)用程序叠穆,再次進(jìn)入ROM監(jiān)控器。?

Data監(jiān)視器[DataMonitor]這種監(jiān)視器在不停止CPU運(yùn)行的情況下不僅可以顯示指定變量內(nèi)容臼膏,還可以收集并以圖形形式顯示各個變量的變化過程硼被。?

OS監(jiān)視器[OperatingSystemMonitor]操作系統(tǒng)監(jiān)視器可以顯示諸如任務(wù)切換、信號量收發(fā)渗磅、中斷等事件嚷硫。一方面,這些監(jiān)視器能夠為你呈現(xiàn)事件之間的關(guān)系和時間聯(lián)系始鱼;另一方面仔掸,還可以提供對信號量優(yōu)先級反轉(zhuǎn)、死鎖和中斷延時等問題的診斷医清。?

性能分析工具[Profiler]可以用來測試CPU到底耗在那里起暮。profiler工具可以讓你知道系統(tǒng)的瓶頸在那里、CPU的使用率以及需要優(yōu)化的地方会烙。?

內(nèi)存測試工具[MemoryTeseter]可以找到內(nèi)存使用的問題所在鞋怀,比如內(nèi)存泄露双泪、內(nèi)存碎片、內(nèi)存崩潰等問題密似。如果發(fā)現(xiàn)系統(tǒng)出現(xiàn)一些不可預(yù)知的或間歇性的問題焙矛,就應(yīng)該使用內(nèi)存測試工具測測看。?

運(yùn)行跟蹤器[ExecutionTracer]可以顯示CPU執(zhí)行了哪些函數(shù)残腌、誰在調(diào)用村斟、參數(shù)是什么、何時調(diào)用等情況抛猫。這種工具主要用于測試代碼邏輯蟆盹,可以在大量的事件中發(fā)現(xiàn)異常的那些。?

覆蓋工具[CoverageTester]主要顯示CPU具體執(zhí)行了那些代碼闺金,并讓你知道那些代碼分支沒有被執(zhí)行到逾滥。這樣有助于提高代碼質(zhì)量并消除無用代碼。?

GUI測試工具[GUITester]很多嵌入式應(yīng)用帶有某種形式的圖形用戶界面進(jìn)行交互败匹,有些系統(tǒng)性能測試是根據(jù)用戶輸入響應(yīng)時間進(jìn)行的寨昙。GUI測試工具可以作為腳本工具有開發(fā)環(huán)境中運(yùn)行測試用例,其功能包括對操作的記錄和回放掀亩、抓取屏幕顯示供以后分析和比較舔哪、設(shè)置和管理測試過程(Rational 公司的robot和Mercury的Loadrunner工具是杰出的代表)。很多嵌入式設(shè)備沒有GUI槽棍,但常匙皆椋可以對嵌入式設(shè)備進(jìn)行插裝來運(yùn)行GUI測試腳本,雖然這種方式可能要求對被測代碼進(jìn)行更改炼七,但是節(jié)省了功能測試和回歸測試的時間缆巧。?

自制工具[Home-madetester]在嵌入式應(yīng)用中,有時候為了特定的目的豌拙,需要自行編寫一些工具來達(dá)到某種測試目的盅蝗。本人曾經(jīng)編寫的視頻流錄顯工具在測試視頻會議數(shù)據(jù)流向和變化上幫了大忙,幫公司找到了幾個隱藏很深的bug姆蘸。?

2.盡早發(fā)現(xiàn)內(nèi)存問題?

內(nèi)存問題危害很大墩莫,不容易排查,主要有三種類型:內(nèi)存泄露逞敷、內(nèi)存碎片和內(nèi)存崩潰狂秦。對于內(nèi)存問題態(tài)度必須要明確,那就是早發(fā)現(xiàn)早“治療”推捐。在軟件設(shè)計中裂问,內(nèi)存泄露的“名氣”最大,主要由于不斷分配的內(nèi)存無法及時地被釋放,久而久之堪簿,系統(tǒng)的內(nèi)存耗盡痊乾。即使細(xì)心的編程老手有時后也會遭遇內(nèi)存泄露問題。有測試過內(nèi)存泄露的朋友估計都有深刻地體驗椭更,那就是內(nèi)存泄露問題一般隱藏很深哪审,很難通過代碼閱讀來發(fā)現(xiàn)。有些內(nèi)存泄露甚至可能出現(xiàn)在庫當(dāng)中虑瀑。有可能這本身是庫中的bug湿滓,也有可能是因為程序員沒有正確理解它們的接口說明文檔造成錯用。?

在很多時候舌狗,大多數(shù)的內(nèi)存泄露問題無法探測叽奥,但可能表現(xiàn)為隨機(jī)的故障。程序員們往往會把這種現(xiàn)象怪罪于硬件問題痛侍。如果用戶對系統(tǒng)穩(wěn)定性不是很高朝氓,那么重啟系統(tǒng)問題也不大;但主届,如果用戶對系統(tǒng)穩(wěn)定很高赵哲,那么這種故障就有可能使用戶對產(chǎn)品失去信心,同時也意味著你的項目是個失敗的項目岂膳。由于內(nèi)存泄露危害巨大誓竿,現(xiàn)在已經(jīng)有許多工具來解決這個問題磅网。這些工具通過查找沒有引用或重復(fù)使用的代碼塊谈截、垃圾內(nèi)存收集、庫跟蹤等技術(shù)來發(fā)現(xiàn)內(nèi)存泄露的問題涧偷。每個工具都有利有弊簸喂,不過總的來說,用要比不用好燎潮∮黯總之,負(fù)責(zé)的開發(fā)人員應(yīng)該去測試內(nèi)存泄露的問題确封,做到防患于未然除呵。?

內(nèi)存碎片比內(nèi)存泄露隱藏還要深。隨著內(nèi)存的不斷分配并釋放爪喘,大塊內(nèi)存不斷分解為小塊內(nèi)存颜曾,從而形成碎片,久而久之秉剑,當(dāng)需要申請大塊內(nèi)存是泛豪,有可能就會失敗。如果系統(tǒng)內(nèi)存夠大,那么堅持的時間會長一些诡曙,但最終還是逃不出分配失敗的厄運(yùn)臀叙。在使用動態(tài)分配的系統(tǒng)中,內(nèi)存碎片經(jīng)常發(fā)生价卤。目前劝萤,解決這個問題最效的方法就是使用工具通過顯示系統(tǒng)中內(nèi)存的使用情況來發(fā)現(xiàn)誰是導(dǎo)致內(nèi)存碎片的罪魁禍?zhǔn)祝缓蟾倪M(jìn)相應(yīng)的部分荠雕。?

由于動態(tài)內(nèi)存管理的種種問題稳其,在嵌入式應(yīng)用中,很多公司干脆就禁用malloc/free的以絕后患炸卑。?

內(nèi)存崩潰是內(nèi)存使用最嚴(yán)重的結(jié)果既鞠,主要原因有數(shù)組訪問越界、寫已經(jīng)釋放的內(nèi)存盖文、指針計算錯誤嘱蛋、訪問堆棧地址越界等等。這種內(nèi)存崩潰造成系統(tǒng)故障是隨機(jī)的五续,而且很難查找洒敏,目前提供用于排查的工具也很少疙驾。?

總之函荣,如果要使用內(nèi)存管理單元的話,必須要小心挖息,并嚴(yán)格遵守它們的使用規(guī)則套腹,比如誰分配誰釋放。?

3.深入理解代碼優(yōu)化?

講到系統(tǒng)穩(wěn)定性电禀,人們更多地會想到實時性和速度鞭呕,因為代碼效率對嵌入式系統(tǒng)來說太重要了瓦糕。知道怎么優(yōu)化代碼是每個嵌入式軟件開發(fā)人員必須具備的技能咕娄。就像女孩子減肥一樣费变,起碼知道她哪個地方最需要減,才能去購買減肥藥或器材來減掉它圣贸。可見,代碼優(yōu)化的前提是找到真正需要優(yōu)化的地方,然后對癥下藥,優(yōu)化相應(yīng)部分的代碼明未。前面提到的profile(性能分析工具趟妥,一些功能齊全I(xiàn)DE都提供這種內(nèi)置的工具)能夠記錄各種情況比如各個任務(wù)的CPU占用率勇凭、各個任務(wù)的優(yōu)先級是否分配妥當(dāng)虾标、某個數(shù)據(jù)被拷貝了多少次傀蚌、訪問磁盤多少次箩艺、是否調(diào)用了網(wǎng)絡(luò)收發(fā)的程序读串、測試代碼是否已經(jīng)關(guān)閉等等。?

但是撒妈,profile工具在分析實時系統(tǒng)性能方面還是有不夠的地方恢暖。一方面,人們使用profile工具往往是在系統(tǒng)出現(xiàn)問題即CPU耗盡之后狰右,而 profile工具本身對CPU占用較大杰捂,所以profile對這種情況很可能不起作用。根據(jù)Heisenberg效應(yīng)棋蚌,任何測試手段或多或少都會改變系統(tǒng)運(yùn)行嫁佳,這個對profiler同樣適用!?

總之谷暮,提高運(yùn)行效率的前提是你必須要知道CPU到底干了些什么干的怎么樣蒿往。?

4.不要讓自己大海撈針?

大海撈針只是對調(diào)試的一種生動比喻。經(jīng)常聽到組里有人對自己正在調(diào)試的代碼說shit湿弦!可以理解瓤漏,因為代碼不是他寫的,他有足夠的理由去 shitbug百出的代碼颊埃,只要他自己不要寫出這種代碼蔬充,否則有一天同組的其它人可能同樣會shit他寫的代碼。為何會有大海撈針呢班利?肯定是有人把針掉到海里咯饥漫;那針為何會掉在海里呢?肯定是有人不小心或草率唄罗标。所以當(dāng)你在抱怨針那么難找的時候庸队,你是否想過是你自己草率地丟掉的积蜻。同樣,當(dāng)你調(diào)試個半死的時候彻消,你是否想過你要好好反省一下當(dāng)初為了尋求捷徑可能沒有嚴(yán)格地遵守好的編碼設(shè)計規(guī)范浅侨、沒有檢測一些假設(shè)條件或算法的正確性、沒有將一些可能存在問題的代碼打上記號呢证膨?關(guān)于如何寫高質(zhì)量請參考林銳的《高質(zhì)量c++/c編程指南》或《關(guān)于C的0x8本“經(jīng)書》如输。?

如果你確實已經(jīng)把針掉在海里是,為了防止在找到之前刺到自己央勒,你必須要做一些防范工作不见,比如戴上安全手套。同樣崔步,為了盡能地暴露和捕捉問題根源稳吮,我們可以設(shè)計比較全面的錯誤跟蹤代碼。怎么來做呢井濒?盡可能對每個函數(shù)調(diào)用失敗作出處理灶似,盡可能檢測每個參數(shù)輸入輸出的有效性,包括指針以及檢測是否過多或過少地調(diào)用某個過程瑞你。錯誤跟蹤能夠讓你知道你大概把針掉在哪個位置酪惭。?

5.重現(xiàn)并隔離問題?

如果你不是把針掉在大海了,而是掉在草堆里者甲,那要好辦些春感。因為至少我們可以把草堆分成很多塊,一塊一塊的找虏缸。對于模塊獨立的大型項目鲫懒,使用隔離方法往往是對付那些隱藏極深bug的最后方法。如果問題的出現(xiàn)是間歇性的刽辙,我們有必要設(shè)法去重現(xiàn)它并記錄使其重現(xiàn)的整個過程以備在下一次可以利用這些條件去重現(xiàn)問題窥岩。如果你確信可以使用記錄的那些條件去重現(xiàn)問題,那么我們就可以著手去隔離問題宰缤。怎么隔離呢颂翼?我們可以用#ifdef把一些可能和問題無關(guān)的代碼關(guān)閉,把系統(tǒng)最小化到仍能夠重現(xiàn)問題的地步撵溃。如果還是無法定位問題所在疚鲤,那么有必要打開“工具箱”了锥累≡堤簦可以試著用ICE或數(shù)據(jù)監(jiān)視器去查看某個可疑變量的變化;可以使用跟蹤工具獲得函數(shù)調(diào)用的情況包括參數(shù)的傳遞桶略;檢查內(nèi)存是否崩潰以及堆棧溢出的問題语淘。?

6.以退為進(jìn)?

獵人為了不使自己在森林里迷路诲宇,他常常會在樹木上流下一些標(biāo)記,以備自己將來有一天迷路時可以根據(jù)這些標(biāo)記找到出路惶翻。對過去代碼的修改進(jìn)行跟蹤記錄對將來出現(xiàn)問題之后的調(diào)試很有幫助姑蓝。假如有一天,你最近一次修改的程序跑了很久之后忽然死掉了吕粗,那么你這時的第一反映就是我到底改動了些什么呢纺荧,因為上次修改之前是好的。那么如何檢測這次相對于上次的修改呢颅筋?沒錯宙暇,代碼控制系統(tǒng)SCS或稱版本控制系統(tǒng) VCS(ConcurrentVersionControl,CVS是VCS的演化版本)议泵。將上個版本checkin下來后和當(dāng)前測試版本比較占贫。比較的工 具可以是SCS/VCS/CVS自帶的diff工具或其它功能更強(qiáng)的比較工具,比如BeyondCompare和 ExamDiff.通過比較先口,記錄所有改動的代碼型奥,分析所有可能導(dǎo)致問題的可疑代碼。?

7.確定測試的完整性?

你怎么知道你的測試有多全面呢碉京?覆蓋測試(coveragetesting)可以回答這個問題厢汹。覆蓋測試工具可以告訴你CPU到底執(zhí)行了那些代碼。好的覆蓋工具通承持妫可以告訴你大概20%到40% 代碼沒有問題坑匠,而其余的可能存在bug.覆蓋工具有不同的測試級別,用戶可以根據(jù)自己的需要選擇某個級別卧惜。即使你很確信你的單元測試已經(jīng)很全面并且沒有 deadcode厘灼,覆蓋工具還是可以為你指出一些潛在的問題,看下面的代碼:if(i>=0&& (almostAlwaysZero==0||(last=i)))如果almostAlwaysZero為非0咽瓷,那么last=i賦值語句就被跳過设凹,這可能不是你所期望的。這種問題通過覆蓋工具的條件測試功能可以輕松的被發(fā)現(xiàn)茅姜∩林欤總之,覆蓋測試對于提高代碼質(zhì)量很有幫助钻洒。?

8.提高代碼質(zhì)量意味著節(jié)省時間?

有研究表明軟件開發(fā)的時間超過80%被用在下面幾個方面:調(diào)試自己的代碼(單元測試)奋姿。調(diào)試自己和其他相關(guān)的代碼(模塊間測試)。調(diào)試整個系統(tǒng)(系統(tǒng)測試)素标,更糟糕的是你可能需要花費(fèi)10-200倍的時間來找一個 bug称诗,而這個bug在開始的時候可能很容易就能找到。一個小bug可能讓你付出巨大的代價头遭,即使這個bug對整個系統(tǒng)的性能沒有太大的影響寓免,但很可能會影響讓那些你可以看得到的部分癣诱。所以我們必須要養(yǎng)成良好的編碼和測試手段以求更高的代碼質(zhì)量,以便縮短調(diào)試的代碼袜香。?

9.發(fā)現(xiàn)它撕予,分析它,解決它?

這世界沒有萬能的膏藥蜈首。profile再強(qiáng)大也有力不從心的時候实抡;內(nèi)存監(jiān)視器再好,也有無法發(fā)現(xiàn)的時候欢策;覆蓋工具再好用澜术,也有不能覆蓋的地方。一些隱藏很深的問題即使用盡所有工具也有可能無法查到其根源猬腰,這時我們能做的就是通過這些問題所表現(xiàn)出來的外在現(xiàn)象或一些數(shù)據(jù)輸出來發(fā)現(xiàn)其中的規(guī)律或異常鸟废。一旦發(fā)現(xiàn)任何異常,一定要深入地理解并回溯其根源姑荷,直到解決為止盒延。?

10.利用初學(xué)者的思維?

有人這樣說過:“有些事情在初學(xué)者的腦子里可能有各種各樣的情況,可在專家的頭腦里可能就很單一”鼠冕。有時候添寺,有些簡單的問題會被想的很復(fù)雜,有些簡單的系統(tǒng)被設(shè)計得很復(fù)雜懈费,就是由于你的“專家思維”计露。當(dāng)你被問題難住時,關(guān)掉電腦憎乙,出去走走票罐,把你的問題和你的朋友甚至你的小狗說說,或許他們可以給你意想不到的啟發(fā)泞边。?

  總結(jié):嵌入式調(diào)試也是一門藝術(shù)该押。就想其它的藝術(shù)一樣,如果你想取得成功阵谚,你必須具備智慧蚕礼、經(jīng)驗并懂得使用工具。只要我們能夠很好地領(lǐng)悟Oracle這十條秘訣梢什,我相信我們在嵌入式測試方面就能夠取得成功奠蹬。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市嗡午,隨后出現(xiàn)的幾起案子囤躁,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件割以,死亡現(xiàn)場離奇詭異金度,居然都是意外死亡应媚,警方通過查閱死者的電腦和手機(jī)严沥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來中姜,“玉大人消玄,你說我怎么就攤上這事《撸” “怎么了翩瓜?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長携龟。 經(jīng)常有香客問我兔跌,道長,這世上最難降的妖魔是什么峡蟋? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任坟桅,我火速辦了婚禮,結(jié)果婚禮上蕊蝗,老公的妹妹穿的比我還像新娘仅乓。我一直安慰自己,他們只是感情好蓬戚,可當(dāng)我...
    茶點故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布夸楣。 她就那樣靜靜地躺著,像睡著了一般子漩。 火紅的嫁衣襯著肌膚如雪豫喧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天幢泼,我揣著相機(jī)與錄音嘿棘,去河邊找鬼。 笑死旭绒,一個胖子當(dāng)著我的面吹牛鸟妙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播挥吵,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼重父,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了忽匈?” 一聲冷哼從身側(cè)響起房午,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎丹允,沒想到半個月后郭厌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體袋倔,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年折柠,在試婚紗的時候發(fā)現(xiàn)自己被綠了宾娜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡扇售,死狀恐怖前塔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情承冰,我是刑警寧澤华弓,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站困乒,受9級特大地震影響寂屏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜娜搂,卻給世界環(huán)境...
    茶點故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一迁霎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧涌攻,春花似錦欧引、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至因痛,卻和暖如春婚苹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鸵膏。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工膊升, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谭企。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓廓译,卻偏偏與公主長得像,于是被迫代替她去往敵國和親债查。 傳聞我的和親對象是個殘疾皇子非区,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,492評論 2 348

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