国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

從Bug中學習--Bug根因分析法

linkin / 2335人閱讀

摘要:總結根因分析法是很有價值的,但并不是每一個都需要這樣刨根問底的分析,也沒有這樣的精力和時間允許我們這樣做。所以,在進行根因分析時,要以的價值作為選取標準。

一提起測試,大多數人很容易就會聯想到Bug。的確,測試的日常工作離不開Bug,測試工作很重要的一部分就是發現Bug。但是,發現Bug、解決Bug,就足夠了嗎?肯定不是的。

Bug是我們測試人員寶貴的財富,通過Bug我們可以獲得經驗,這種經驗又能用在以后的測試中,幫助我們更早、更快地找到同類的Bug。

Bug最大的價值不在于找到并解決它,而在于通過對Bug的分析,使我們增加一些經驗、掌握一些規律,以便更好地進行測試。

在對Bug進行分析時,一般很容易能想到的問題有:

這個Bug是什么?

為什么會出現這個Bug?

實際上,如果做Bug分析,只做到這個層次,還遠遠不夠,上面只對Bug產生的原因進行分析,除此之外,還要更加注意:

Bug的發現階段

Bug的產生階段

在這方面,獨立顧問邰曉梅老師總結了一套方法,即T-RCA缺陷根因分析法(T-RCA,Test Root Cause Analysis),主要目的是基于缺陷的過程改進(開發的改進、測試的改進、組織的改進),通過問10個問題來對Bug進行根因分析,看似很簡單,實則重在引導和交流。

我在T-RCA的基礎上,結合自己的理解,認為分析Bug要分為四個步驟:

第一步,認識Bug

Bug是什么?(有什么影響?)

為什么會出現Bug?(什么場景下會出現?)

第二步,Bug的發現

在哪個階段發現的?

應該在哪個階段發現?

為什么在這個階段沒有發現?

如何才能在這個階段發現?

第三步,Bug的產生

在哪個階段產生的?

為什么會在這個階段產生?

如何避免Bug的產生?

第四步,Bug的改進

如何改進,做到Bug預防?

下面來詳細說說。

1、認識Bug

在這一步驟中,要清晰全面地認識Bug,包括

通過問“這個Bug是什么”,來清楚描述這個Bug,包括向開發人員提Bug時也要用到這個描述

通過問“Bug有什么影響”,來判斷這個Bug需要修復的優先級和影響的嚴重程度,對于優先級高的Bug要盡快上線,對于嚴重程度高的Bug可通過T-RCA方法進行根因分析

通過問“為什么出現這個Bug”來快速找到原因,一般我們通過詢問開發人員或自己定位得到這個原因,并且這個原因大多是代碼層面的原因,要知道根因分析,不能止于代碼層面

通過問“什么場景下會出現”來復現Bug,并且最重要的是,可以反思自己在測試時是否遺漏了測試場景,測試覆蓋是否不夠

這一步可以說是測試人員的基礎能力,遇到Bug后我們自然而然就能想到的問題。對于大多數的Easy Bug,做到這一步也足夠了,畢竟我們的測試總是要在有限的時間和資源下做平衡,分析Bug也不例外。

Easy Bug,是指不需要精心的測試設計、不需要復雜的測試場景,就可以驗證出來,隨便找一個人來點點點,就可以發現的Bug。注意,驗證和測試是完全不同的兩個概念。但很可惜,大多數業務測試都是在做驗證,而不是在做測試。
2、Bug的發現

在這一步驟中,要著重對Bug的發現進行分析,根據盡早測試原則,Bug發現越早,修復的成本也就越低,所以分析Bug的發現過程,也十分有價值。

“Bug是在哪個階段發現的”,軟件研發的階段,不論是瀑布式開發、迭代式開發,還是敏捷開發,細分下來大體可以是需求定義階段、需求分析階段、開發設計/測試設計階段、開發編碼階段、聯調階段、 測試階段、改Bug回歸階段、預生產環境測試階段、部署上線階段、線上釋放階段等等,越晚發現的Bug,更應該去反思為什么沒有更早地發現它

“Bug應該在哪個階段發現”,較晚階段的Bug應該盡早發現,早期階段的Bug也不應該遺留到較晚階段才發現,大多數人會認為Bug就是應該測試階段發現的,但是如果可以做到今早發現,比如在需求分析階段就從測試的角度提出一些風險,那規避風險的成本就會小得多

“為什么在這個階段沒有發現”,對于線上Bug很容易理解,為什么這些Bug會被遺漏到線上,而不是在測試階段就發現呢?通過問這個問題,我們能很好地反思我們的測試,究竟是在測試設計的時候沒有考慮到這種場景,還是測試的時候巧合地漏掉了Bug,還是修改Bug時影響到了其他的業務邏輯而沒有回歸

“如何才能在這個階段發現?”,針對上面的問題,繼續刨根問底,我們的測試永遠有可以優化的地方

3、Bug的產生

這一步驟中是對Bug的產生進行分析,之所以把產生放到了發現的后面,是因為我認為Bug的發現相比于Bug的產生來說更重要。作為測試人員,你對發現Bug的控制,要更強于產生Bug,也就是說,預防Bug是很難做到的,而盡早發現Bug,卻是我們都應該做到的。

“在哪個階段產生的”,有人會認為,Bug都是開發寫出來的呀,自然就是開發階段產生的,這就陷入了一個誤區,我們做根因分析,就不能這么粗放地想當然,開發也不是拿到一個需求后上來就寫代碼的,也是需要分析、設計、code、review等幾個階段的,不同的開發人員之間還要經歷聯調階段,所以搞清楚Bug的產生階段,可以幫助我們更有針對性地注意在這個階段做一些事情,來及時發現Bug

“為什么會在這個階段產生”,如果這個Bug不是代碼Bug,而是開發從頭就把需求理解錯了,就要反思一下是不是我們需求細審時做得不夠,是產品講得不清楚, 還是測試沒有提出一些有價值的風險?其他階段如是,這也能幫助我們有針對性地改進

“如何避免Bug的產生”,其實有不少的Bug都是可以避免的,比如作為測試在需求階段從測試角度想到一些容易出Bug的風險或場景,作為開發在編碼之后的自測做得更好等等

4、Bug的改進

在這一步中要考慮的就是通過分析了Bug的根因,認識到了我們測試的不足之后,就要想辦法如何改進我們的測試過程,以幫助我們在以后的測試工作。比如是我們的需求階段沒有真正地理解需求,還是測試設計階段遺漏了一些測試場景,還是測試階段由于測試環境、測試數據等因素沒有發現Bug,還是Bug回歸階段沒有回歸其他收到影響的模塊等等。

5、總結

Bug根因分析法是很有價值的,但并不是每一個Bug都需要這樣刨根問底的分析,也沒有這樣的精力和時間允許我們這樣做。要選取那些有價值的Bug,分析完后真正能幫助我們思考和改進,比如我們公司,就會有分析線上Bug的這一環節,是因為線上Bug畢竟是遺留到了線上,普遍會具有一些價值。

除了線上Bug,我們在測試中發現的Bug,如果比較有價值,能帶給我們經驗的提升,也是應該做根因分析的。所以,在進行Bug根因分析時,要以Bug的價值作為選取標準

作為測試人員,一直是在有限的時間和資源下進行平衡,不存在零Bug的軟件,測試也是無窮無盡的,所以平衡資源一直是測試人員應該掌握的技巧,分析Bug也不例外,我們的最終目的不在于把Bug根因分析流程化,比如迭代開發中每個迭代都做一次,作為工作流程中的一環,而在于從Bug中進行反思、總結、學習、改進,以便更好地改進我們以后的測試工作

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/8848.html

相關文章

  • 編程小技巧

    摘要:最近比較忙,總結了一下,從書上和實際工程中學習到的一些小技巧,或者說是習慣命名規范命名最好遵循駝峰法和下劃線法,并且要清楚的表達變量的意思。 最近比較忙,總結了一下,從書上和實際工程中學習到的一些小技巧,或者說是習慣 1 命名規范 命名最好遵循駝峰法和下劃線法,并且要清楚的表達變量的意思。 相對于駝峰法而言,我更喜歡下劃線法。下劃線法可以更清楚的看出這個變量表示的意思。比如aBigGr...

    tianren124 評論0 收藏0
  • 編程小技巧

    摘要:最近比較忙,總結了一下,從書上和實際工程中學習到的一些小技巧,或者說是習慣命名規范命名最好遵循駝峰法和下劃線法,并且要清楚的表達變量的意思。 最近比較忙,總結了一下,從書上和實際工程中學習到的一些小技巧,或者說是習慣 1 命名規范 命名最好遵循駝峰法和下劃線法,并且要清楚的表達變量的意思。 相對于駝峰法而言,我更喜歡下劃線法。下劃線法可以更清楚的看出這個變量表示的意思。比如aBigGr...

    Jenny_Tong 評論0 收藏0
  • 一個JAVA開發一年的總結

    摘要:前言到今天為止,正好是工作一年了。一年里有過折磨痛苦,有過成就感,一年后很欣慰能看到自己是有所收獲的。自己做出了一件很棒的事情完全可以拿去和別人炫耀,比如你用了一個很好的設計模式,比如你優化了一個功能讓他快了倍,比如你開發了一個很棒的工具。 前言 到今天為止,正好是工作一年了。一年里有過折磨痛苦,有過成就感,一年后很欣慰能看到自己是有所收獲的。記錄如下,如有不當,還望指點。 技術 看...

    Reducto 評論0 收藏0
  • 代碼之髓讀后感——如何高效的學語言

    摘要:代碼之髓讀后感如何高效的學習語言技術讀后感王垠如何掌握程序語言代碼之髓這本書里提出了三種學習語言的方法如何高效的學習語言在比較中學習在歷史中學習在實踐中學習在比較中學習通過比較多種語言,總結出某種語言的獨有特點,以及多種語言的共有特點。 title: 代碼之髓讀后感——如何高效的學習語言date: 2017-07-08 17:17:00categories: 技術tags: 讀后感 ...

    ivyzhang 評論0 收藏0
  • Timer中學優先隊列的實現

    摘要:從中學習優先隊列的實現是定時器的實現,用來調度定時執行的任務和執行一次的任務,就像的和的意思,它也可以作為后臺程序運行。通過和的方法可以保證整個優先隊列的關系,保證的是最小的。作用是構建堆,可以從的數組構建堆,來表示優先隊列。 從Timer中學習優先隊列的實現 Timer是Java定時器的實現,用來調度定時執行的任務和執行一次的任務,就像JavaScript的setInterval和s...

    anquan 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<