軟件品質(zhì)與上帝視角
軟件的品質(zhì)
在籌備《質(zhì)量三人行》新一期的錄制時(shí),亂入的健總分享了一個(gè)很有意思的觀點(diǎn):“軟件的品質(zhì)”。后來我們展開了激烈的討論,過程不表,先上結(jié)論:
品質(zhì)=設(shè)計(jì)+質(zhì)量
設(shè)計(jì):包括跨產(chǎn)品設(shè)計(jì)一致性,用戶體驗(yàn)、交互優(yōu)化、UI…
質(zhì)量:包括功能性質(zhì)量,非功能性質(zhì)量(安全、性能、可用性)……
品質(zhì)和質(zhì)量可能不太好理解,以下有兩個(gè)例句,大家體會(huì)一下其中的區(qū)別:
- 這人的談吐體現(xiàn)了生活品質(zhì)。→ 有質(zhì)量,且有精神層面的積極追求
- 我們要保障老年人的基本生活質(zhì)量,做到老有所養(yǎng)?!?質(zhì)量是基線,未達(dá)基線難言其他

比如我們說 iPhone 有品質(zhì),其實(shí)包含了兩個(gè)方面:不但設(shè)計(jì)好,而且質(zhì)量也好。錘子手機(jī)就只是設(shè)計(jì)很好,但質(zhì)量參差不齊,過分追求設(shè)計(jì)細(xì)節(jié)到幾近偏執(zhí),但卻在手機(jī)應(yīng)具備的基礎(chǔ)功能上頻頻翻車。
因此,品質(zhì)是一體的,“有質(zhì)無品”和“有品無質(zhì)”都不能可持續(xù)工作。 但在不同的上下文背景下,對品質(zhì)的追求策略是不同的。產(chǎn)品型的公司會(huì)非常注重品質(zhì),用戶會(huì)用腳投票,一旦品質(zhì)降低就會(huì)流失用戶。而在用戶沒有太多選擇的情況下,對低品質(zhì)的容忍度就會(huì)相對較高。如以下兩類軟件,用戶的選擇范圍不同,對軟件品質(zhì)的容忍度也不同。


上帝視角
由品質(zhì)的討論,我們得出:產(chǎn)品具有高品質(zhì)是指產(chǎn)品能夠恰好滿足用戶的需求,大白話講就是用戶用著爽。用戶無所謂體驗(yàn)設(shè)計(jì)、可用性、兼容性這些概念,也無所謂研發(fā)內(nèi)部是如何分工協(xié)作的……不管是設(shè)計(jì)缺陷,還是出Bug了,用戶都會(huì)覺得用著不爽。
而角色的分工、各角色工件的質(zhì)量、過程管理和優(yōu)化……這些都是“支撐性需求”,用戶可能并不實(shí)際感知,但卻對軟件外在品質(zhì)的表現(xiàn)起著重要作用。因此為了提升品質(zhì)的外在表現(xiàn),研發(fā)內(nèi)部的提升也是很重要的。
品質(zhì)決定價(jià)值,價(jià)值影響品質(zhì),兩者是“雞與蛋”的關(guān)系,相生相克,相愛相殺。我們做軟件,本質(zhì)是做服務(wù),toC 就是服務(wù)于全網(wǎng)用戶,toB 就是服務(wù)于企業(yè)。服務(wù)行業(yè)講究“顧客就是上帝”,用戶/客戶就是軟件從業(yè)者的“上帝”,誰擁有了用戶視角,也就更容易在激烈競爭中立于不敗之地。
分工?術(shù)業(yè)有專攻
想到最近關(guān)于QA轉(zhuǎn)角色的討論,以及去測試化的持續(xù)熱議,不由得引起我對分工這個(gè)話題的興趣。

分工是怎么來的
先來看看分工是什么:
- 分工是指各種社會(huì)勞動(dòng)力的劃分與獨(dú)立化。(基本解釋)
- 分工是指按不同技能或社會(huì)要求分別做各不相同而又互相補(bǔ)充的工作。(引申含義)
再來看看分工的目的:
- 提升品質(zhì):隨著熟練度的增加,產(chǎn)量和品質(zhì)都會(huì)有所提升。
- 提高效率:
- 如果沒有分工,工序的轉(zhuǎn)換會(huì)損失時(shí)間,分工則避免了工序切換的時(shí)間損失
- 隨著對工序的理解加深,可以發(fā)明更有效率的機(jī)械和工具,以提高產(chǎn)量
由此我們大致可以得出:分工是為了提升品質(zhì)和效率,而讓擁有不同技能的人分別從事各種不同而又互相聯(lián)系的工作。
術(shù)業(yè)有專攻
分工是在一定條件下產(chǎn)生的,而當(dāng)這個(gè)條件發(fā)生變化時(shí),分工的演變是必然的結(jié)果。
以前沒有軟件缺陷的概念,當(dāng)那只蛾子飛進(jìn)電腦,第一個(gè)Bug產(chǎn)生了。以前也沒有軟件測試,當(dāng)人們發(fā)現(xiàn)找Bug這件事需要專業(yè)技能時(shí),軟件測試行業(yè)就誕生了,開發(fā)和測試的分工也就因此產(chǎn)生。

在研發(fā)體系中,體驗(yàn)設(shè)計(jì)師、產(chǎn)品經(jīng)理、開發(fā)、測試、項(xiàng)目管理,這些角色的劃分完美的滿足了分工的定義,這些角色既需要擁有不同的技能,又分別從事著側(cè)重點(diǎn)不同的工作,而他們的工作又有著緊密的聯(lián)系(都是為了交付最終產(chǎn)品)。
- 產(chǎn)品經(jīng)理/需求分析師:挖掘痛點(diǎn)、定義問題,將用戶需求翻譯成產(chǎn)品需求
- 體驗(yàn)設(shè)計(jì)師:產(chǎn)品的體驗(yàn)設(shè)計(jì)和交互設(shè)計(jì),品質(zhì)中“品”的體現(xiàn)
- 開發(fā):軟件設(shè)計(jì)與實(shí)現(xiàn)
- 測試(狹義的):軟件質(zhì)量的保障,品質(zhì)中“質(zhì)”的體現(xiàn)
- 項(xiàng)目經(jīng)理:團(tuán)隊(duì)和外部、團(tuán)隊(duì)內(nèi)各角色之間的樞紐,確保軟件如期的交付
只有這些角色各司其職,又緊密合作,才能達(dá)成最終的目標(biāo),讓用戶用著爽。
認(rèn)識你自己

我在上面提到測試角色時(shí)用了“狹義的”字眼,這是因?yàn)椤皽y試”相關(guān)的工作可以有多種不同的釋義:
- 測試:設(shè)計(jì)并執(zhí)行測試用例
- 測試開發(fā):以自動(dòng)化的方式設(shè)計(jì)和執(zhí)行測試,工作內(nèi)容既有測試又有開發(fā)
- 質(zhì)量保障/質(zhì)量分析:事前干預(yù)、過程中分析和事后改進(jìn),關(guān)注質(zhì)量產(chǎn)生的過程和結(jié)果
- 質(zhì)量經(jīng)理/總監(jiān):管理質(zhì)量和質(zhì)量相關(guān)資源(人和物)
- 不同質(zhì)量領(lǐng)域的測試:性能測試、安全測試、Web/無線測試
- 不同業(yè)務(wù)領(lǐng)域的測試:大數(shù)據(jù)測試、AI測試、測試運(yùn)維
看上去挺多,抽象一下就兩類:
- 質(zhì)檢員:工作模式都是事后驗(yàn)證,輸入(軟件/用例/數(shù)據(jù))→判斷→輸出(通過/不通過),工作目標(biāo)是確保生產(chǎn)出來的軟件質(zhì)量沒問題
- QA:能對質(zhì)量進(jìn)行事前干預(yù),沒有固定的工作模式,工作目標(biāo)是確保能生產(chǎn)出滿足品質(zhì)需求的軟件

我們看回分工的第二個(gè)目的——提高效率,“隨著對工序的理解加深,可以發(fā)明更有效率的機(jī)械和工具,以提高產(chǎn)量”,這就是說,質(zhì)檢員是可以被自動(dòng)化機(jī)械和工具所取代的。這并不是說手工測試可以被自動(dòng)化測試取代,而是說手工測試中的那些大量重復(fù)的回歸用例可以被自動(dòng)化所取代。
基于以上的討論,我們來看一下第一個(gè)測試常見問題:手工測試有沒有出路? 如果是大量重復(fù)的執(zhí)行測試用例,沒有出路,完全可以被自動(dòng)化測試所取代;如果能設(shè)計(jì)出非常精準(zhǔn)的測試用例集,在發(fā)現(xiàn)大量缺陷的同時(shí)又不造成資源浪費(fèi),又或者是精通不可回歸的探索式測試,把測試人員的主觀能動(dòng)性發(fā)揮到極致,那么這樣的測試哪怕不寫代碼,也是有核心競爭力的,不愁沒出路。
再來看一下第二個(gè)測試常見問題:測試人員要不要寫代碼? 要不要寫看個(gè)人興趣,但基本的代碼能力是必需的。否則無法對軟件設(shè)計(jì)中的潛在問題有所察覺,無法提前預(yù)防缺陷產(chǎn)生,更無法跟開發(fā)高效的溝通和交流。如果對技術(shù)有興趣,想做自動(dòng)化或?qū)憸y試平臺(tái),那肯定要大量寫代碼。如果對技術(shù)不感興趣,寫不寫無所謂,不用看別人寫我也要寫。
持續(xù)精進(jìn)的第一步,認(rèn)識你是誰。 我現(xiàn)在所做的“QA”到底是質(zhì)檢員還是真QA呢?我是對技術(shù)有熱情還是對管理有興趣?亦或是對某一特定領(lǐng)域感興趣?我對質(zhì)量工作真的有熱情嗎?我愿意致力于打造質(zhì)量文化嗎?
忘了你是誰
再進(jìn)一步,測試要想發(fā)展好,必須由質(zhì)檢員轉(zhuǎn)向QA(能對質(zhì)量進(jìn)行事前干預(yù),沒有固定的工作模式,工作目標(biāo)是確保能生產(chǎn)出滿足品質(zhì)需求的軟件)。必須忘了你是誰,就像演員一樣演誰是誰。 不用受困于角色分工,找到自己真正想做的事情,戴什么帽子無所謂,只要還在致力于打造質(zhì)量文化,誰又能說你不是個(gè)QA呢?
之前跟其他角色伙伴請教問題,大家好奇我為什么想知道這些,我總是調(diào)侃:“為了生存,測試手伸不長,活不了啊~” 軟件行業(yè)整體對測試要求真的是越來越高了,測試左移、測試右移、質(zhì)量管理、測試運(yùn)維……測試就像個(gè)筐,啥都往里裝。調(diào)侃歸調(diào)侃,多了解點(diǎn)總歸沒壞處,咱進(jìn)可攻退可守啊,想嘗試其他角色也方便點(diǎn)兒不是。

QA永存
去測試化不會(huì)成為現(xiàn)實(shí),“能夠測試”并不代表:
- 能夠做好測試
- 質(zhì)量有所提升
- 整體品質(zhì)有所提升
- 軟件表現(xiàn)與品質(zhì)需求一致
- 用戶一定買單
- 團(tuán)隊(duì)合作順暢
- 投入和產(chǎn)出比理想
- 平穩(wěn)應(yīng)對大環(huán)境變化
- 良好適應(yīng)品位逐漸上升的用戶
- ……
本文說了這么多,就是想回答一下那些經(jīng)久不衰的問題:
- 測試能被取代么?質(zhì)檢員類的測試能被取代,QA不能。
- 測試要寫代碼么?最好有一定的理解,寫不寫看興趣。
- 測試要轉(zhuǎn)角色嗎?都行,看個(gè)人選擇,猶豫最浪費(fèi)時(shí)間。
- 測試會(huì)不會(huì)被優(yōu)化、被淘汰?有可能,得看個(gè)人是不是容易被取代。
- 測試沒有價(jià)值感怎么辦?人生本身也沒什么意義,活著活著就有意義了。要為自己找到意義呀~
不知道表達(dá)是否清楚,我想說:質(zhì)量話題涉及太廣,除非用戶不再追求品質(zhì),企業(yè)不再追求降本增效,或者AI可以完全取代人類……否則QA將永存。也許在行業(yè)演進(jìn)過程中,或者個(gè)人職業(yè)生涯發(fā)展中,角色名稱、工作形態(tài)會(huì)發(fā)生變化,但QA內(nèi)核將永存。

【參考閱讀】: