Bug背后的故事-缺陷技能提升

周六再一次參加邰曉梅老師的專業(yè)軟技能培訓(xùn)課,軟件缺陷技能,收獲遠(yuǎn)超預(yù)期, 再此記錄一下。

軟件中的缺陷( bug)是如何被發(fā)現(xiàn)

? 如果別人發(fā)現(xiàn)一個(gè)bug, 自己卻沒有發(fā)現(xiàn),這個(gè)是為什么?是靠運(yùn)氣。 如果自己發(fā)現(xiàn)一個(gè)bug,別人沒有發(fā)現(xiàn)? 是運(yùn)氣,還是另有一番玄機(jī)? 感覺背后隱隱約約有一些思考的套路,卻說不出來? 抑或這份玄機(jī)只可意會(huì)不可言傳?? 如果有人可以將這個(gè)bug背后的故事,如何思考的鏈條可視化的展示出來,并且對(duì)常見思考套路歸納出來,相信對(duì)于后來學(xué)習(xí)的人將是一筆財(cái)富。 這個(gè)就是今天學(xué)到的 DDI( Debug Discovery Insight), 缺陷發(fā)現(xiàn)洞察。? ? DDI里面包含三個(gè)過程, Trigger, E&E( Exploration & Experiment) 和Test Oracle。

T-E&E-I model

Trigger

針對(duì)一個(gè)特定的場(chǎng)景,會(huì)觸發(fā)大腦的思考, 大腦會(huì)根據(jù)已有的知識(shí)信息經(jīng)驗(yàn),構(gòu)造出用例 。多么神奇的大腦! 但是這個(gè)黑盒對(duì)于學(xué)習(xí)本身于事無補(bǔ),如果刻意打開看看神奇大腦如何工作?那么刻意改造他。可惜現(xiàn)在達(dá)不到。但是下面的辦法刻意去引導(dǎo)大腦,讓其按照你期望的去工作。

當(dāng)與軟件交互的過程中,需要關(guān)注情緒。

比如測(cè)試有道字典的快速取詞功能。 這個(gè)挺有意思,好奇那就玩一下。拍照與物體大小遠(yuǎn)近有關(guān)系。 那么聯(lián)想到字體大小不同; 那么試試不同類型的字形,宋體的寬體的? 再試試大號(hào)字與小號(hào)字? 更大與更?。?合在一起呢? 再試試字體擺法,是不是水平的,斜著試試,倒立會(huì)怎么樣? 圓柱上面上的字體?字符間距有關(guān)系嗎? 這個(gè)字怎么顏色不同,字體顏色有關(guān)系嗎?那么會(huì)有背景色干擾嗎?那么有光線有關(guān)也試試? ...... 簡(jiǎn)直停不下來:)

發(fā)現(xiàn)一個(gè)英譯漢提示,怎么發(fā)現(xiàn)居然可以識(shí)別漢字?藏有彩蛋(文字不一致), 那么試試其他語言?日語, 果然可以識(shí)別,但是沒有翻譯出來。 原來沒有做完就發(fā)布沒有做完嗎:) . 那試試韓語?不行,而且將韓文識(shí)別出中文?哎什么鬼? 找找有沒有其他彩蛋?

在這個(gè)過程互動(dòng)過程中,是會(huì)有心情變好,千萬別丟掉自己這種感覺。感覺會(huì)引導(dǎo)我們?nèi)ジ玫奶剿鳌?br>分享 魯班發(fā)明鋸子的故事,據(jù)說魯班接到一個(gè)大項(xiàng)目,去山里尋找木材,山路滑不小心給摔一跤差點(diǎn)滾下去,趕緊去抓旁邊的小草,才逃過一劫好險(xiǎn)。但是怎么手上有血? 這么小的草怎么會(huì)滑坡我粗糙的手(好奇)。仔細(xì)觀察原來小草的是齒輪狀的。 再看發(fā)現(xiàn)旁邊一只蟲子在大口吃草葉,蟲子的牙齒也是齒輪狀的。齒輪有這么厲害? 回家研究研究,后面就有了鋸子的發(fā)明。 這個(gè)是好奇驅(qū)動(dòng)他發(fā)明,如果忘記好奇,那么也就沒有鋸子發(fā)明估計(jì)也沒什么事情了。

我們常用的有哪些情緒會(huì)啟發(fā)引導(dǎo)發(fā)現(xiàn)bug:

1. 關(guān)聯(lián) (Association)

2 矛盾 (Contradiction )

3. 趨勢(shì)( regular? trend)楊輝三角規(guī)律

4. 好奇 ( Curiosity)

5. 驚訝 ( Unexpected)

6.? 熟悉問題( Familiar Problem)

7.? 偶然( Coincidence)

E&E(Exploration & Experiment)

這個(gè)有上面觸發(fā)問題,很自然就到一個(gè)探索求證的過程。 大膽假設(shè)小心求證。千萬別忘記,沒有上面的觸發(fā),這個(gè)探索過程很難解釋。

note: 發(fā)散和關(guān)注

在探索中發(fā)現(xiàn)其他的問題,克制住自己的被帶偏的沖動(dòng),先記下來,待會(huì)回過頭再收拾;(推廣 樹形筆記,不重不漏,條理清晰,同時(shí)復(fù)盤回顧的時(shí)候,幫助你重現(xiàn)思考的過程)

Test Oracle

洞察到這些一些問題, 可能是潛在的bug。 但是需要進(jìn)一步驗(yàn)證。 其實(shí)就跟基準(zhǔn)做比較, 基準(zhǔn)不一樣就是bug。bug本來就是期望與實(shí)際的差異。 這個(gè)過程就是Test Oracle做的事情。(為什么交Oracle,誰幫我解答一下)

課堂上一個(gè)有意思的例子,比如有個(gè)三角形分類測(cè)試練習(xí),輸入三邊,判斷是一個(gè)什么三角形。 程序告訴(不等邊,等腰,等邊三角形), 但是與常見另外一套分類按照角度( 銳角,直角,鈍角三角形分類)不同,那這個(gè)是個(gè)bug嗎? 需要澄清和驗(yàn)證, 需要知道為什么采取這個(gè)按照邊分類而不是按照角度大小分類。

但是有哪些基準(zhǔn),其實(shí)Spec 里面并不會(huì)方方面面都會(huì)寫到。 和自己意圖, 產(chǎn)品行為是不是一致,同類產(chǎn)品比較,用戶的期望, 專業(yè)知識(shí)甚至常識(shí)去做對(duì)比。

同類產(chǎn)品比較

自己意圖

一致性。同一款產(chǎn)品,其行為前后是不是一致?

感覺這三部分都可以刻意練習(xí),來提高測(cè)試技能。比如下面兩個(gè)方式

1. 多個(gè)人同時(shí)去測(cè)試一個(gè)東西,去討論一下別人發(fā)現(xiàn)自己沒有發(fā)現(xiàn)的bug??纯磩e人是怎么思考的? 反思自己?jiǎn)柺裁礇]有想到?思考的時(shí)候?yàn)槭裁绰┑? 是哪方面欠缺? 如何避免下一次漏掉同樣的問題?比如課堂上用有道詞典的拍照取詞功能作為被測(cè)對(duì)象?;蛘呦旅孢@個(gè)刻意練習(xí)測(cè)試的網(wǎng)站,你會(huì)發(fā)現(xiàn)驚喜。

http://www.developsense.com/triangle/triangle.html

缺陷深入測(cè)試(DFT-defect followup Test)

發(fā)現(xiàn)一個(gè)bug,心情愉悅,就大功告成結(jié)束嗎? 如果到此為止,如果沒有經(jīng)驗(yàn)總結(jié),那么就是浪費(fèi)一次擴(kuò)大戰(zhàn)果的機(jī)會(huì)。? 下面介紹 RIM原則,幫助你更好做到。

RIM分別是 可重現(xiàn)Reproduce , 隔離Isolation,? 最大化Maximum .

Reproduce: 這個(gè)是最基本的。 但是如果出現(xiàn)發(fā)現(xiàn)不了的bug,請(qǐng)留意不要輕易放過。 需要對(duì)于這個(gè)bug保持一定敏感度。 可以查看log等。同時(shí)這一步將自己的干擾因素去除掉。

Isolation: 專業(yè)測(cè)試體現(xiàn)自己地方。 將bug中無關(guān)緊要的東西去除掉,盡可能簡(jiǎn)化步驟直達(dá)bug。這個(gè)需要假設(shè)和驗(yàn)證。

Maximum: 最大化這bug的影響。 從用戶角度上來看,影響是什么?不同因素組合起來將會(huì)發(fā)生什么?? 經(jīng)常bug會(huì)扎堆,可以確認(rèn)范圍,擴(kuò)大戰(zhàn)果。

最后就是記錄 一個(gè)bug,這個(gè)一個(gè)水到渠成的過程。

Bug 的描述(DD)

bug的描述,一般就是:Setup環(huán)境 、steps步驟、result結(jié)果、expect期望。 bug 就是期望與實(shí)際的差異。

DD里面同樣用了一個(gè)結(jié)構(gòu)化的描述 G-W-D-T-O-C. (Given-When-Due to - Then-Object-Cause). 信息更足一些。

缺陷分析(T-RCA, Tai-Root Cause Anlysis)

缺陷發(fā)現(xiàn),如果不加總結(jié)回顧,同樣的問題還會(huì)繼續(xù)犯下去。 那么從軟件整個(gè)生命周期里面來看如何做到缺陷分析。缺陷分析如何用10w + 5 hat框架, 同時(shí)是一個(gè)很好的引導(dǎo)方式。讓bug相關(guān)的人一塊嘗試發(fā)現(xiàn)這個(gè)bug的來龍去脈,去看這個(gè)bug的全景圖,從技術(shù)流程知識(shí)團(tuán)隊(duì)去改進(jìn)避免,同一個(gè)地方摔兩次。

10w + 5 hat

從左到右, 第一what,回答bug的背景信息,產(chǎn)品信息,簡(jiǎn)而言之bug及其上下文。第二個(gè)Why? bug 為什么產(chǎn)生? 三個(gè)where, bug是哪里發(fā)現(xiàn)的? bug是哪里引進(jìn)來? 不是應(yīng)該在哪里被發(fā)現(xiàn)?對(duì)于where,在繼續(xù)問why? 以及回答實(shí)踐中做如何避免。 這個(gè)之前做過,但是還是沒有這么系統(tǒng)的總結(jié)清楚。

最后回顧一下整天內(nèi)容:

缺陷技能全景圖

留下曉梅老師一張靚照,再次感謝:)


邰曉梅
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容