產(chǎn)品的軟件質(zhì)量對(duì)于產(chǎn)品的重要性眾所周知著洼,但不同公司在產(chǎn)品軟件處于研發(fā)階段的質(zhì)量管理卻是相距甚遠(yuǎn)。今天葉子就用西游世界中的天而叼、地郭脂、神、人澈歉、鬼五種仙級(jí)侃侃不同的公司在軟件研發(fā)質(zhì)量管理方面修煉到何種仙級(jí)?
一屿衅、質(zhì)量管理全無(wú)—鬼仙級(jí)
讀研期間埃难,我到導(dǎo)師朋友的公司A公司實(shí)習(xí),A公司的主要業(yè)務(wù)是出售**行業(yè)軟件和根據(jù)自行開發(fā)的軟件平臺(tái)實(shí)施客戶項(xiàng)目的二次開發(fā)。
當(dāng)時(shí)A公司的研發(fā)人員10人左右涡尘,其中包含了我們4個(gè)實(shí)習(xí)生忍弛。我進(jìn)入的團(tuán)隊(duì)里,其實(shí)就是一個(gè)資深的系統(tǒng)架構(gòu)師+ 4個(gè)實(shí)習(xí)生考抄。我們實(shí)習(xí)生的工作是在已經(jīng)搭建好的軟件架構(gòu)上各負(fù)責(zé)一個(gè)模塊的開發(fā)细疚,每隔一到兩天,系統(tǒng)架構(gòu)師就會(huì)把我們叫到面前川梅,將我們開發(fā)的代碼合入到他的源代碼版本中疯兼,build過(guò)程有問(wèn)題就解決一下,沒有問(wèn)題就直接合入了贫途。當(dāng)時(shí)我睜大了眼睛吧彪,心想我這一實(shí)習(xí)生寫的代碼就進(jìn)入到平臺(tái)了?平臺(tái)就可以拿出去做客戶項(xiàng)目的軟件實(shí)施了丢早?要知道我只是在本地電腦上稍微測(cè)試了兩把姨裸。可看到架構(gòu)師淡定的樣子怨酝,就啥也沒提傀缩。和我一起開發(fā)的另一個(gè)男實(shí)習(xí)生,他對(duì)自己要求高些农猬,他經(jīng)常想出各種方法測(cè)試他開發(fā)的模塊赡艰,以自己最大努力保證不出現(xiàn)bug。
可以說(shuō)那時(shí)盛险,A公司沒有一個(gè)專職的人來(lái)測(cè)試這個(gè)軟件平臺(tái)瞄摊。軟件研發(fā)的質(zhì)量只存在于開發(fā)人員隨機(jī)的責(zé)任心,公司也沒有明確要求軟件工程師要詳細(xì)自測(cè)苦掘,要自己負(fù)責(zé)自己模塊的質(zhì)量换帜。
即便如此,在當(dāng)年鹤啡,我們開發(fā)的軟件平臺(tái)在**行業(yè)軟件測(cè)評(píng)中還是榮獲了“推薦軟件”的最高榮譽(yù)惯驼,也許當(dāng)時(shí)**行業(yè)其他的國(guó)產(chǎn)軟件更爛吧。
當(dāng)時(shí)A公司递瑰,可以說(shuō)產(chǎn)品在研發(fā)端的質(zhì)量管理全無(wú)祟牲,葉子將其等同為西游世界的“鬼仙”級(jí)別,“鬼仙”代表人物是山神抖部、土地说贝,能以鬼魂之體長(zhǎng)期存活,但因?yàn)槭枪砘曛w慎颗,在許多方面會(huì)受到天地法則的克制乡恕。一旦利用該軟件平臺(tái)實(shí)施一個(gè)現(xiàn)實(shí)的客戶項(xiàng)目言询,軟件質(zhì)量問(wèn)題都會(huì)隨之而來(lái)。
二 質(zhì)量控制活動(dòng)只有測(cè)試—人仙級(jí)
后來(lái)經(jīng)歷了公司總?cè)藬?shù)100人傲宜,40-50人研發(fā)團(tuán)隊(duì)的中小型公司B公司运杭。B公司的主要產(chǎn)品是集成軟硬件的終端產(chǎn)品。B公司相對(duì)于A公司而言函卒,在軟件研發(fā)的質(zhì)量管理實(shí)現(xiàn)了從無(wú)到有的跨越辆憔。
1、從人力設(shè)置來(lái)講报嵌,研發(fā)體系有獨(dú)立的測(cè)試部門虱咧,測(cè)試人員與開發(fā)人員的比例達(dá)到1:3。
2沪蓬、從過(guò)程控制來(lái)講彤钟,測(cè)試標(biāo)準(zhǔn)和測(cè)試用例都是集公司的最強(qiáng)技術(shù)實(shí)力評(píng)審而來(lái);公司有bug管理系統(tǒng)跟蹤測(cè)試提出問(wèn)題的解決情況跷叉;發(fā)布的軟件經(jīng)過(guò)測(cè)試部100%用例覆蓋的驗(yàn)證逸雹;針對(duì)產(chǎn)品發(fā)貨后的質(zhì)量問(wèn)題的改進(jìn)措施能夠循環(huán)到下一步產(chǎn)品改進(jìn)中。
B公司軟件研發(fā)質(zhì)量管理從A公司依賴于一個(gè)開發(fā)人員的隨機(jī)責(zé)任心修煉到依賴于一個(gè)測(cè)試部門的規(guī)范管理云挟,這是一個(gè)巨大的進(jìn)步梆砸。葉子將B公司軟件研發(fā)質(zhì)量管理列為“人仙”級(jí)別,西游世界中人仙的代表是觀音禪院中的老方丈园欣,他活了幾百歲帖世。B公司的產(chǎn)品在客戶環(huán)境中軟件質(zhì)量要求不算高,業(yè)務(wù)也不算復(fù)雜沸枯,所以B公司的軟件研發(fā)質(zhì)量管理暫時(shí)還能匹配B公司的業(yè)務(wù)發(fā)展日矫,能夠?qū)崿F(xiàn)正常的產(chǎn)品迭代。但是B公司的軟件研發(fā)質(zhì)量?jī)H僅依賴于產(chǎn)品測(cè)試绑榴,即便測(cè)試哪轿,也只開展了研發(fā)末端的系統(tǒng)測(cè)試,即便系統(tǒng)測(cè)試翔怎,也只開展了針對(duì)固定測(cè)試用例的手動(dòng)系統(tǒng)測(cè)試窃诉,這種最基本的研發(fā)質(zhì)量管理,碰到軟件質(zhì)量要求比較高的產(chǎn)品赤套,就難逃輪回之苦飘痛。
三? 系統(tǒng)性研發(fā)質(zhì)量管理—神仙級(jí)
職業(yè)生涯中有幸進(jìn)入了C公司,C公司當(dāng)時(shí)員工總數(shù)萬(wàn)級(jí)容握,主盈業(yè)務(wù)是**行業(yè)集成軟硬件的設(shè)備提供商宣脉。光我進(jìn)入的產(chǎn)品線,就有1個(gè)測(cè)試部加3個(gè)軟件開發(fā)部剔氏,測(cè)試人員與開發(fā)人員比例也接近1:3脖旱。進(jìn)入C公司之后堪遂,才發(fā)現(xiàn)軟件研發(fā)質(zhì)量管理的道道如此之多,那么C公司相對(duì)于B公司增加了哪些法術(shù)來(lái)提升產(chǎn)品的軟件研發(fā)質(zhì)量呢萌庆?
法術(shù)一:軟件部門落實(shí)編程規(guī)范,每個(gè)軟件部門按照自己的業(yè)務(wù)特點(diǎn)币旧,并吸收歷史上容易犯錯(cuò)的一些編碼方式形成部門級(jí)別的編程規(guī)范践险,全部門學(xué)習(xí)并且考試,通過(guò)這種低成本的方式預(yù)防軟件bug的產(chǎn)生吹菱。
法術(shù)二:開發(fā)過(guò)程中開展代碼review巍虫,代碼review是請(qǐng)?jiān)跇I(yè)務(wù)上有經(jīng)驗(yàn)的資深工程師review其他工程師的代碼。
法術(shù)三:重點(diǎn)產(chǎn)品軟件開展白盒鳍刷、灰盒測(cè)試占遥,C公司的測(cè)試部不只是在做系統(tǒng)級(jí)的黑盒測(cè)試,有一半的測(cè)試人員在做白盒及灰盒級(jí)別的測(cè)試输瓜。不過(guò)白盒和灰盒測(cè)試并不是針對(duì)所有產(chǎn)品軟件開展瓦胎,只有部分質(zhì)量要求很高的產(chǎn)品而且公司評(píng)估無(wú)法僅僅靠黑盒測(cè)試來(lái)提升質(zhì)量的才采用。
法術(shù)四:測(cè)試部門成立技術(shù)研究小組尤揣,提升測(cè)試人員業(yè)務(wù)能力搔啊。當(dāng)時(shí)測(cè)試部除了按照產(chǎn)品類型分為幾個(gè)業(yè)務(wù)小組之外,還成立幾個(gè)技術(shù)研究小組北戏,這些技術(shù)小組組織測(cè)試工程師研究協(xié)議標(biāo)準(zhǔn)负芋、自動(dòng)化測(cè)試方法等,并在部門內(nèi)互相學(xué)習(xí)和分享嗜愈。C公司的測(cè)試人員在對(duì)產(chǎn)品功能性能的測(cè)試要求和測(cè)試重點(diǎn)的把握上旧蛾,比開發(fā)人員更專業(yè)。
法術(shù)五:開展自動(dòng)化測(cè)試蠕嫁,自動(dòng)化測(cè)試的應(yīng)用使得測(cè)試效率大幅提升锨天,這樣固定的測(cè)試用例都會(huì)盡量采用自動(dòng)化方式,測(cè)試工程師的精力主要放在無(wú)測(cè)試用例參考的發(fā)散型測(cè)試上面拌阴。
法術(shù)六:增加客戶環(huán)境測(cè)試绍绘,在產(chǎn)品開發(fā)流程中增加實(shí)驗(yàn)局階段,實(shí)驗(yàn)局一般部署在能夠充分驗(yàn)證產(chǎn)品質(zhì)量的客戶場(chǎng)景迟赃。實(shí)驗(yàn)室的模擬測(cè)試環(huán)境跟真實(shí)的客戶環(huán)境還是有區(qū)別的陪拘,只有通過(guò)實(shí)驗(yàn)局客戶環(huán)境驗(yàn)證的產(chǎn)品,才能進(jìn)行批量出貨纤壁。
法術(shù)七:成立獨(dú)立的研發(fā)質(zhì)量保證部門左刽,專職的質(zhì)量保證人員監(jiān)控并且審計(jì)質(zhì)量管理過(guò)程的合規(guī)性和質(zhì)量活動(dòng)的有效性,負(fù)責(zé)組織年復(fù)一年的持續(xù)改進(jìn)活動(dòng)酌媒。例如總體方案設(shè)計(jì)欠痴、軟件模塊設(shè)計(jì)迄靠、測(cè)試用例設(shè)計(jì)都必須走同行評(píng)審,評(píng)審過(guò)程質(zhì)量部監(jiān)控喇辽。
C公司軟件研發(fā)質(zhì)量管理從人員配備掌挚、流程管控、質(zhì)量保證菩咨、質(zhì)量控制等方面都比B公司跨越了一個(gè)階梯吠式,實(shí)現(xiàn)了系統(tǒng)化的軟件研發(fā)質(zhì)量管理體系,并且該體系進(jìn)入持續(xù)改進(jìn)的良性循環(huán)中抽米,所以葉子將C公司的軟件研發(fā)質(zhì)量管理列為神仙級(jí)特占。神仙已經(jīng)脫離了六道輪回之苦,只要不發(fā)生大的天劫一般都能安然無(wú)恙云茸。C公司目標(biāo)是成為百年公司是目,葉子覺得有這個(gè)潛力。
四? 形神兼?zhèn)涞馁|(zhì)量管理—地仙級(jí)
D公司工作經(jīng)歷是最令人興奮标捺,D公司總?cè)藬?shù)萬(wàn)級(jí)以上懊纳,主盈業(yè)務(wù)同C公司一樣,是**行業(yè)集成軟硬件的設(shè)備提供商宜岛。在D公司长踊,俺才經(jīng)歷和體驗(yàn)什么是真正的軟件研發(fā)質(zhì)量管理。前面的C公司軟件研發(fā)質(zhì)量管理已經(jīng)完備了萍倡,那么D公司與C公司來(lái)比身弊,到底在什么方面不同呢,葉子認(rèn)為關(guān)鍵兩點(diǎn)如下:
1.?質(zhì)量管理形神中“神”的存在列敲,開發(fā)員工具備強(qiáng)烈的質(zhì)量意識(shí)阱佛。D公司一位開發(fā)人員說(shuō)的話,我至今記憶猶新戴而。那位開發(fā)人員說(shuō)每次代碼合入SVN的時(shí)候凑术,他都是膽顫心驚。而事實(shí)上所意,D公司每位開發(fā)人員在代碼合入之前淮逊,都在本地電腦上做過(guò)最大限度的自測(cè)試,也執(zhí)行了圈復(fù)雜度工具和靜態(tài)代碼走查工具的檢查扶踊,甚至有些重點(diǎn)模塊泄鹏,軟件開發(fā)經(jīng)理已經(jīng)安排過(guò)同行評(píng)審。即便這樣秧耗,在合入SVN的時(shí)候备籽,開發(fā)人員依然小心翼翼。在代碼合入之后分井,當(dāng)晚系統(tǒng)就會(huì)自動(dòng)執(zhí)行持續(xù)集成+冒煙測(cè)試车猬,第二天一早開發(fā)人員就會(huì)收到自己所開發(fā)模塊的bug郵件(如果有的話)霉猛。因?yàn)槊盁煖y(cè)試執(zhí)行的是比較基本的功能測(cè)試,開發(fā)人員如果多次持續(xù)集成收到較多bug的話珠闰,在績(jī)效方面肯定是受影響惜浅。還有一個(gè)問(wèn)題回歸不通過(guò),也是非常嚴(yán)肅的事情伏嗜。如果開發(fā)人員修改一個(gè)問(wèn)題后提交給測(cè)試部赡矢,測(cè)試反饋出來(lái)該問(wèn)題回歸不通過(guò),開發(fā)人員的績(jī)效也是受影響的阅仔。嚴(yán)重時(shí),QA可以要求軟件開發(fā)團(tuán)隊(duì)啟動(dòng)內(nèi)部回溯。正是這些細(xì)致的切身可見的質(zhì)量管理措施弧械,提高了大家的質(zhì)量意識(shí)八酒。相對(duì)于那些概念型的質(zhì)量管理培訓(xùn),那些遙遠(yuǎn)的質(zhì)量案例刃唐,這些更能讓研發(fā)人員感同身受羞迷。
2.?項(xiàng)目管理中流程清晰、質(zhì)量目標(biāo)明確画饥、質(zhì)量控制活動(dòng)經(jīng)過(guò)細(xì)致地策劃衔瓮。在D公司,項(xiàng)目計(jì)劃出來(lái)的同時(shí)抖甘,項(xiàng)目的質(zhì)量控制活動(dòng)計(jì)劃和質(zhì)量目標(biāo)已經(jīng)給出并且經(jīng)過(guò)評(píng)審热鞍。整個(gè)項(xiàng)目開發(fā)過(guò)程中QA會(huì)密切監(jiān)控質(zhì)量計(jì)劃和目標(biāo)的達(dá)成情況。當(dāng)時(shí)我在D公司的項(xiàng)目正好碰到瀑布開發(fā)模式向敏捷開發(fā)模式轉(zhuǎn)換衔彻。軟件SE在需求規(guī)格分析分解清楚之后薇宠,將所有需求拆分為一個(gè)個(gè)story,軟件開發(fā)經(jīng)理將這些story根據(jù)緊急程度和基礎(chǔ)程度計(jì)劃到幾輪迭代中艰额,并用JIRA工具管理起來(lái)澄港,所有人都可以看到整個(gè)迭代開發(fā)的進(jìn)展?fàn)顟B(tài)。當(dāng)時(shí)我們的項(xiàng)目計(jì)劃了三輪迭代柄沮,每輪迭代里面都安排集中的代碼review+系統(tǒng)測(cè)試回梧。當(dāng)然因?yàn)楫a(chǎn)品的商業(yè)用途,敏捷里面所提倡的“測(cè)試驅(qū)動(dòng)開發(fā)”“結(jié)對(duì)編程”因成本投入太大祖搓,沒有開展狱意,白盒和灰盒測(cè)試也因?yàn)橥度胩螅瑳]有開展棕硫。其他關(guān)鍵的質(zhì)量控制活動(dòng)和質(zhì)量目標(biāo)都定義的非常清晰髓涯。下面表格給出部分質(zhì)量控制活動(dòng)以及對(duì)應(yīng)的目標(biāo)定義,供大家理解和參考哈扮。
所以葉子將D公司的軟件研發(fā)質(zhì)量管理列為地仙級(jí)纬纪。西游世界中蚓再,最厲害的地仙是鎮(zhèn)元子。鎮(zhèn)元子的人參果包各,九千年成熟一次摘仅,聞一聞人參果,就能活三百六十歲问畅;吃一顆娃属,就能活四萬(wàn)七千年。 試想护姆,D公司的這些管理精髓如果其他公司能學(xué)到矾端、用到,是不是有人參果的功效呢卵皂。有了人參果秩铆,D公司已經(jīng)是法力無(wú)邊,即使遭遇天劫也有渡劫之法灯变。
五 只在書上見過(guò)沒有經(jīng)歷過(guò)的質(zhì)量管理—天仙級(jí)
至于天仙級(jí)別的軟件研發(fā)質(zhì)量管理公司殴玛,葉子沒有經(jīng)歷過(guò)。畢竟A添祸、B滚粟、C、D四家公司都是以民用產(chǎn)品為主刃泌,并且產(chǎn)品本身不直接涉及到人身性命安全凡壤。葉子想,醫(yī)療器械蔬咬、航空設(shè)備鲤遥、汽車設(shè)備這些與大眾生命密切相關(guān)的產(chǎn)品,應(yīng)該比D公司執(zhí)行更加嚴(yán)格的研發(fā)質(zhì)量管理林艘,在質(zhì)量管理上面理應(yīng)更高一籌盖奈。
六 小結(jié)
A、B狐援、C钢坦、D四家公司規(guī)模不同,發(fā)展階段不同啥酱,所處的行業(yè)也不完全相同爹凹,本文也闡述了他們軟件研發(fā)質(zhì)量管理層次也是有差距的。質(zhì)量管理的首要原則是 “以顧客為中心”镶殷,產(chǎn)品的質(zhì)量要求因產(chǎn)品的使用場(chǎng)景不同客戶要求也不同禾酱,當(dāng)然每個(gè)公司都是把“客戶的滿意度”放到第一位,但在質(zhì)量管理方面每個(gè)公司都會(huì)盡力做到投入收益比的最佳狀態(tài),所以對(duì)一個(gè)公司而言颤陶,合適的質(zhì)量管理很重要颗管。但葉子只是想說(shuō),即使目前的軟件研發(fā)質(zhì)量管理沒有拖業(yè)務(wù)發(fā)展的后腿滓走,管理者也需要知道從哪些方面去提升垦江,更高一個(gè)層次的質(zhì)量管理是什么樣子的,需要了解不同層次的質(zhì)量管理帶來(lái)投入和產(chǎn)出是什么搅方,需要知道自己所在的團(tuán)隊(duì)是否在當(dāng)前的質(zhì)量管理投入下做到了卓越比吭。比如說(shuō),你所研發(fā)的產(chǎn)品也許不需要白盒這種級(jí)別的測(cè)試姨涡,但軟件編程規(guī)范和代碼review這些極低成本質(zhì)量提升手段衩藤,是否可以實(shí)施呢?
本文的內(nèi)容純屬個(gè)人工作中一些感想和拙見涛漂,如果能夠給讀者帶來(lái)一些啟發(fā)慷彤,就已經(jīng)非常感動(dòng);如果有寫得不到位的地方怖喻,還想讀者海涵包容!
另本文用的幾個(gè)英文縮寫岁诉,解釋如下:
QA:Quality Assurance
SE: System Engineer
DI:? ?Defect Index
PMO:?ProjectManagement Office
SVN:?Subversion