原始問(wèn)答
Q:最近我們組想自己審視一下軟件質(zhì)量尼变,但是缺少相關(guān)的經(jīng)驗(yàn)知識(shí)(組內(nèi)沒(méi)有qa)。 想向你了解一下浆劲,現(xiàn)在常用的軟件質(zhì)量評(píng)估方法? 你有關(guān)于軟件質(zhì)量相關(guān)的文章推薦嗎蛉威? 或者有哪些書(shū)籍推薦?
A:軟件質(zhì)量評(píng)估,我暫時(shí)還一時(shí)想不起來(lái)走哺。對(duì)于軟件質(zhì)量(測(cè)試)相關(guān)的書(shū)籍我這有基本蚯嫌,具體的可以參考我之前參加的播客:https://music.163.com/#/program?id=903513756 和 http://codetimecn.com/episodes/test,里面有書(shū)籍的介紹丙躏。
單純的評(píng)估這塊择示,我之前做過(guò)一個(gè)軟件測(cè)試成熟度模型,可以用于評(píng)估團(tuán)隊(duì)的測(cè)試能力晒旅。
Q: 其實(shí)我有一個(gè)問(wèn)題栅盲,軟件質(zhì)量該如何體現(xiàn)。感覺(jué)測(cè)試何軟件質(zhì)量有區(qū)別废恋,但是我說(shuō)不出來(lái)谈秫。特別是現(xiàn)在客戶非常依賴手動(dòng)測(cè)試,有專門的測(cè)試部門
A: 首先鱼鼓,質(zhì)量是個(gè)很大的概念拟烫,本質(zhì)是一種主觀感受。我們通常所指的狹義質(zhì)量為可靠性迄本,軟件的可靠性可以通過(guò)線上bug數(shù)來(lái)衡量(或者數(shù)量的變化趨勢(shì))硕淑。 更加準(zhǔn)確的計(jì)算為線上bug數(shù)/開(kāi)發(fā)中的bug數(shù)。
這個(gè)指標(biāo)是量化可靠性的其中一種理論,由于業(yè)界本身對(duì)于軟件質(zhì)量的度量還沒(méi)有統(tǒng)一的結(jié)論置媳,我們可以采用這個(gè)值作為相對(duì)值進(jìn)行對(duì)比于樟。例如當(dāng)比率很大時(shí),可靠性質(zhì)量很不好拇囊。
還有一個(gè)評(píng)估方法是工業(yè)界的的質(zhì)量體系隔披。也就是說(shuō),你的開(kāi)發(fā)流程需要符合一定的標(biāo)準(zhǔn)寂拆,我就認(rèn)為你的質(zhì)量是有保證的奢米。但是這個(gè)方式比較復(fù)雜而且不好量化
線上bug數(shù)屬于簡(jiǎn)單粗暴型,用比例會(huì)準(zhǔn)確一下是因?yàn)楫a(chǎn)品的規(guī)模不同纠永,線上bug數(shù)是不同的鬓长。
修正與總結(jié):
在回答了上述問(wèn)題后,我對(duì)自己的答安并不十分自信尝江,因?yàn)槲业挠^點(diǎn)是來(lái)源于自己的經(jīng)驗(yàn)加上一些碎片話的知識(shí)涉波。
更加準(zhǔn)確的定義
為了更加準(zhǔn)確的找尋關(guān)于“軟件質(zhì)量” 的概念,我再次查閱了維基百科:https://en.wikipedia.org/wiki/Software_quality炭序。
如上所示軟件質(zhì)量的定義與軟件測(cè)試一樣啤覆,并沒(méi)有統(tǒng)一的定義。大的有三個(gè)維度的定義:
- 滿足需求
- 客戶價(jià)值
- 缺陷級(jí)別
這段話的最后部分也指出了最早的質(zhì)量定義是主觀的感受惭聂。后面還提到了用戶滿意度窗声。
總之,準(zhǔn)確的定義軟件質(zhì)量依然是困難的辜纲,不過(guò)笨觅,我們還是有一些可以依據(jù)的定義,他們采用的是質(zhì)量模型:
如 ISO/IEC 9126的定義的: https://en.wikipedia.org/wiki/ISO/IEC_9126
以及 CISQ's quality model
更加準(zhǔn)確的評(píng)估方法
由于軟件質(zhì)量定義暫時(shí)難已統(tǒng)一耕腾,并且是主觀的感受见剩。那么評(píng)估它也就顯得比較主觀了。
當(dāng)然扫俺,最簡(jiǎn)單的非軟件測(cè)試莫屬苍苞,那么Bug數(shù)毫無(wú)疑問(wèn)的成為了一種可行的評(píng)估方式,因?yàn)檐浖y(cè)試最早的定義即是狼纬,“為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程”羹呵,其中的錯(cuò)誤,我們就可以狹義的理解為Bug畸颅。那這里又會(huì)存在一個(gè)問(wèn)題担巩,什么bug才有測(cè)量意義呢方援?
根據(jù)上述軟件質(zhì)量的定義,“用戶”,“客戶”送火,這些真正使用軟件的人的感受才是最能反應(yīng)質(zhì)量的拳话,所以說(shuō),“用戶”种吸, “客戶”遇到的bug 才是更加符合質(zhì)量的定義的可用于反應(yīng)軟件質(zhì)量的Bug類型弃衍。(也就是我們所說(shuō)的線上Bug)
另外坚俗,我們可以參考IT界的一些常用的定義來(lái)評(píng)估質(zhì)量,例如:
ISO 9126-3
所提到的質(zhì)量模型幢尚,我們可以通過(guò)檢查軟件開(kāi)發(fā)過(guò)程中,以及軟件自身是否具備某些特質(zhì)功蜓,以及對(duì)應(yīng)于該特質(zhì)相關(guān)的用于評(píng)估的屬性來(lái)評(píng)估軟件的質(zhì)量是好是壞园爷。例如:
我們通過(guò)右側(cè)的屬性來(lái)評(píng)估左側(cè)的質(zhì)量特性:
從而得到一個(gè)綜合的質(zhì)量評(píng)估結(jié)果。
盡管上面給出了很多屬性式撼,但是相信大家讀完了童社,依然疑惑,即便是有了這些屬性著隆,每個(gè)屬性本身也并非都是標(biāo)準(zhǔn)化扰楼,且容易度量的,如coding practices即是典型的例子美浦,里面提到了compliance with OO弦赖,可是這一點(diǎn)卻是評(píng)估的人不同,顯然量化的結(jié)果是不同浦辨,假如OO compliance的滿分是10分蹬竖,對(duì)于某OO設(shè)計(jì),打6,還是7分币厕,還是8列另,就仁者見(jiàn)仁,智者見(jiàn)智了旦装。
假如我們狹義的理解質(zhì)量為質(zhì)量模型中的可靠性页衙,需要check的點(diǎn):
盡管已經(jīng)有了這么多點(diǎn),上面最后一句依然表明了可靠性的衡量需要考慮被評(píng)估軟件本身的架構(gòu)以及使用的第三方庫(kù)阴绢,然后通過(guò)自定義的check點(diǎn)來(lái)做店乐。也就是說(shuō),這個(gè)需要可靠性的評(píng)估標(biāo)準(zhǔn)呻袭,需要因地制宜响巢,看情況而定。顯然這種措辭依然表達(dá)出了主觀標(biāo)準(zhǔn)的意思棒妨。
也正是如此踪古,我們身邊的日常用品的質(zhì)量往往會(huì)打著IOS9001/IOS9002質(zhì)量體系認(rèn)證,來(lái)表明其質(zhì)量是保證的券腔,也就是說(shuō)伏穆,我的產(chǎn)品是在質(zhì)量保證的流程體系下生產(chǎn)出來(lái)的。這樣以來(lái)纷纫,貌似這種評(píng)估定義枕扫,跟上述定義大體類似,實(shí)際上都是難以準(zhǔn)確度量的辱魁,更大的意義也許是跟沒(méi)有質(zhì)量保證的產(chǎn)品去分開(kāi)吧烟瞧。
總之,度量軟件質(zhì)量是如此的復(fù)雜染簇,且不一定真的能夠準(zhǔn)確量化質(zhì)量参滴。那倒不如就在開(kāi)發(fā)過(guò)程中時(shí)刻按照這些check list約束開(kāi)發(fā)過(guò)程,讓開(kāi)發(fā)過(guò)程是在有保證的情況下交付軟件锻弓。讓真正的質(zhì)量交給時(shí)間砾赔,交給我們的線上去體現(xiàn)吧。這也想汽車界的著名質(zhì)量雜志的JD Power的做法青灼,用線上故障數(shù)來(lái)評(píng)估質(zhì)量吧(對(duì)于汽車暴心,準(zhǔn)確的是每百輛故障數(shù))。