我們之前說過 軟件 = 程序 + 軟件工程 這個公式七芭,那么軟件質量呢秘症?所以照卦,第一節(jié)主要介紹程序質量和軟件工程質量,第二節(jié)介紹測試這個角色的工作乡摹。
14.1 軟件的質量
14.1.1 程序的質量
程序的質量體現(xiàn)在軟件外在功能的質量役耕。例如,網站顯示查詢結果的速度聪廉;訂票網站能并發(fā)處理業(yè)務的吞吐量瞬痘;支持同時在線用戶的數(shù)量故慈。
我理解的程序的質量是代碼的好壞程度。框全。察绷。
14.1.2 軟件工程的質量
軟件工程要做到兩個要求:快、便宜津辩。軟件工程的質量體現(xiàn)在以下方面拆撼。
- 軟件開發(fā)過程的可見性(Visibility)
- 軟件開發(fā)過程的風險控制(Risk Manage-ment)
- 軟件內部模塊,項目中間階段的交付質量喘沿,項目管理工具的因素
- 軟件開發(fā)成本的控制(Cost Control)
- 內部質量指標的完成情況(Internal Bench-marks)
14.1.3 軟件工程的質量如何衡量
使用CMMI(全稱Capacity Maturity Model Inte-grated闸度,能力成熟度模型集成)。不僅降低了項目的成本蚜印,而且提高了項目的質量和按期完成率莺禁。
14.1.4 質量的成本
要達到一定的軟件質量,是要付出成本的窄赋。
這些成本有被動響應的(例如應付各種故障)睁宰,也有主動行動的(例如投資于學習或預防)。SWEBOK特別定義了軟件質量成本(Cost of Software Quality寝凌,CoSQ)的組成部分柒傻,其中包括預防、評審较木、內部故障红符、外部故障這四個方面,作者認為還要加上流程分析改進伐债、投資改進等各種成本预侯。
舉一個例子,碼農可能只花了20%時間用來開發(fā)新功能峰锁,而大部分時間就是花在上述的軟件質量成本:
預防:參加培訓萎馅,學習和應用新的測試框架。
評審:給同事做需求文檔復審虹蒋、Spec復審糜芳、代碼復審,檢查外包公司提交的軟件模塊的質量魄衅。
內部故障:忙著修復測試人員發(fā)現(xiàn)的代碼錯誤峭竣。
外部故障:忙著調查和修復用戶報告的錯誤。
流程分析改進:分析眾多Bug產生的原因晃虫,忙著和隊友討論如何改進流程皆撩。
提高職業(yè)技能:參加一些學習班和討論,琢磨如何提高自我管理能力哲银。
學習新的工具:學習新的開發(fā)工具扛吞。
14.2 軟件的質量保障工作
先弄清兩個角色的概念:
軟件測試(Test):運用一定的流程和工具呻惕,驗證軟件能實現(xiàn)預先設計的功能和特性,工作的流程和結果通常是可量化的滥比。例如亚脆,測試用例、Bug守呜、代碼覆蓋率、MTTF山憨、軟件效能的參數(shù)等等查乒。正因為流程和結果是明確定義的、可量化的郁竟,很多測試工作可以自動化玛迄。具體的測試分類可以看本書相關章節(jié)。
軟件質量保障工作(Quality Assurance):軟件團隊為了讓軟件達到事先定義的質量標準而進行的所有活動棚亩,包括測試工作蓖议。
14.2.1 測試的角色(Test)要獨立出來么
任何產業(yè)成熟到一定階段,獨立的質量保障角色都是必須的讥蟆,團隊內部有QA角色勒虾,團隊外部也有獨立的QA角色。以藥品和食品為例瘸彤,除了生產廠家自己的檢測之外修然,這些產品還要接受行業(yè)主管部門相關機構的檢測和認可(藥品檢驗,食品檢驗)质况,才能上市愕宋。出現(xiàn)爭議時,還要由第三方機構來進行測試或認證结榄。
14.2.2 和測試角色相關的問題
問題1 既然有專人負責中贝,那我就不用負責了!
生活中有一個常見的歪理:既然有清潔工臼朗,那我亂扔點兒垃圾算什么邻寿,這才是他們的工作啊视哑!盡管有專人負責測試工作老厌,但是保證質量仍然是所有成員的職責。
問題2 盲目信任“專業(yè)人士”扮演的角色黎炉。
每個角色的水平不一樣枝秤,水平最差的角色往往對軟件質量的影響最大。專業(yè)人士做完之后慷嗜,誰來負責測試淀弹?即使有專業(yè)人士扮演各種角色丹壕,還得有專人獨立地檢查驗證質量。
問題3 為了自己的角色而做績效優(yōu)化薇溃。
分工之后菌赖,每個角色為了自己的績效而優(yōu)化,會出現(xiàn)局部最優(yōu)而全局未必最優(yōu)的情況沐序。
問題4 畫地為牢的分工琉用。
有時分工導致鏈條過長,信息丟失策幼。分工還可能會導致一個軟件的靈魂被切碎分給各個“角色”邑时,每個功能都做得很賣力,但是整體就是不太行特姐,明顯看出來是費了老大的勁給強行“集成”起來的晶丘。
問題5 無明確責任的分工。
如果一個開發(fā)者擔當了開發(fā)和測試的工作唐含,那么就有可能出現(xiàn):
“這代碼就是我寫的浅浮,哪會有什么錯……”
這種想法。
The End
- 一個團隊應該如何培養(yǎng)和安排各個角色呢捷枯?
- 在初始階段(新項目滚秩,團隊進入一個新領域,人員剛進入一個項目)淮捆,每個團隊成員都要盡量打通各個環(huán)節(jié)叔遂,多負責,把所有事情都搞懂争剿,培養(yǎng)通才已艰。
- 當項目/產業(yè)發(fā)展到一定階段(進入陣地戰(zhàn)的時候),要大力提倡分工合作蚕苇,培養(yǎng)專才哩掺。
- 做好自己項目的架構和流程,讓所有人都能比較輕松地開展質量保障工作涩笤。
- 培養(yǎng)“大家都要做QA嚼吞,專人負責量化的測試,有條件多做測試自動化”的文化蹬碧。
- 弄清楚自己項目的特點舱禽,人員的特點,產業(yè)特點恩沽。避免簡單照搬別人的做法誊稚。不要聽說某某偉大的系統(tǒng)的開發(fā)/測試比例是多少,就哭著喊著也要同樣的比例……
- 測試人員的職業(yè)發(fā)展?
經過細致的分工之后,每人負責一小塊東西里伯,怎么才能體現(xiàn)出個人獨特而巨大的價值呢城瞎?例如,你剛到一個軟件公司疾瓮,領導讓你做“測試”這份工作脖镀,你怎么才能展現(xiàn)出你獨特的價值呢?