某甲問道:「測試做太多的話呀舔,會不會使得bug解不完?」
某乙回答:「還不簡單扩灯。只要不做測試媚赖,就沒有bug≈椴澹」
上述對話惧磺,反應出許多軟件工作人員對于測試的想法。對多數(shù)軟件開發(fā)人員而言捻撑,測試大概是僅次于維護之外磨隘,最令人討厭的工作。對軟件研發(fā)主管來說顾患,測試是必要之惡:做得不夠后患無窮番捂,做得過多又增加成本,延誤商機江解。因此设预,如何能夠規(guī)畫與執(zhí)行一個最經濟有效的測試工作,當是軟件研發(fā)主管們須研究的一個課題犁河。
軟件測試的困難鳖枕,在于它不僅是產品的測試,更是產品設計程序的檢驗呼股。由于關乎設計的測試耕魄,準則不易尋找画恰,經驗未必得以再用彭谁,他山之石也有應用的局限性,因此難度頗高允扇。欲提高測試的效益缠局,有賴全盤的規(guī)畫,確實的執(zhí)行考润,與事后的檢討改進動作狭园。許多小型軟件研發(fā)單位,對于軟件測試并不重視糊治,但從許多稍具規(guī)模的軟件公司均配置常設測試人員唱矛,乃至于測試品保部門來看,測試工作顯然有其學問與價值的。
測試工作沒有最佳方法可依循绎谦,是因為不同的軟件所需的測試手段不同管闷。譬如小型軟件與大型系統(tǒng)的做法不同;訂制軟件與軟件包的要求不同窃肠;系統(tǒng)軟件的測試往往無法采用應用軟件所使用的技巧包个;游戲軟件與庫存系統(tǒng)有其各自需面對的測試標的。因此冤留,測試人員必須因應軟件的特性與資源的限制碧囊,加上過去相關的經驗,規(guī)畫最適合的測試方式纤怒。并隨著經驗的累積糯而,不斷改進作法,才能找出最佳的測試方法泊窘。
由此可知歧蒋,要做好有效的測試,不只是埋頭苦干而已州既,它需要良好的管理谜洽,使整件工作獲致最佳的成果。關于測試的管理工作吴叶,可從組織阐虚、規(guī)畫、執(zhí)行與檢討幾個角度來探討蚌卤。以下謹就筆者粗淺的經驗野人獻曝一番实束,希望提供讀者基本的協(xié)助。
測試組織之設計
由于人性總自認為自己的最好最正確逊彭,完全由軟件開發(fā)人員兼任測試人員咸灿,并不值得推薦。實務上往往因軟件開發(fā)單位的經濟規(guī)模不夠侮叮,使得開發(fā)人員經常兼任測試人員避矢。但若可行,研發(fā)單位應盡可能配置專任的測試人員囊榜,尤其是獨立于開發(fā)小組之外的測試負責人員审胸。盡管是否應設置獨立測試小組業(yè)界仍有爭議,許多人甚至以為保障軟件品質唯有從改進軟件開發(fā)的程序做起卸勺,但大部份美國的軟件公司均設有獨立測試或品保人員乃至于部門砂沛,這說明了獨立測試仍有其不可搖撼的地位。
許多的軟件研發(fā)單位將測試視為次等的工作曙求,從而配置次等人員負責相關工作碍庵。如此一來映企,優(yōu)秀人員無從參與,也缺乏意愿參與測試工作静浴。結果軟件品質不易度量卑吭,研發(fā)的成果常常被不佳的品質抵銷,實為令軟件開發(fā)人員泄氣之事马绝。主管是否能體認到軟件測試的重要性豆赏,通常是成功的關鍵。軟件測試固然是支持性工作富稻,仍應配置合理的資源掷邦,以獲取整體之成效。在當前的環(huán)境下椭赋,給予測試人員較多的關注抚岗,毋寧是必要的作法。
測試工作規(guī)畫
測試工作的規(guī)畫哪怔,至少包含兩項要點:測試目標的訂定與測試資源的配置宣蔚。攻擊需要目標,測試亦然认境。測試的目的在于找出軟件的問題胚委,提供改進之參考。目標若不明叉信,測試人員即不知如何著手亩冬。
測試目標的訂定,最重要的在于軟件通過的準則硼身,亦即測試何時方可結束硅急。常見的情形是:軟件開發(fā)的進度不斷落后,最后剩余的時間僅有兩個星期佳遂,于是測試人員的目標就是把最后兩周用完营袜,盡人事聽天命。究竟測試多完整丑罪,隱藏的多少錯誤荚板,測試工作的生產力如何?皆一概不知巍糯。反正產品賣出去或上線后有的是時間改進啸驯。然而產品銷售后再改進客扎,成本往往大幅增高祟峦,甚至原有開發(fā)人員離職他調,連亡羊補牢都倍感困難徙鱼。經驗一再顯示宅楞,事前的測試除錯絕對比事后維護省時省錢针姿,唯有賣不出去或不能用的軟件例外。
對于測試的要求可簡單區(qū)分為二:一種是通過目標所訂之軟件品質厌衙;一種是在既定資源內達到最佳成效距淫。前者要求山頭一定要攻下,不達目的絕不停止婶希。譬如目標為單位測試時間的錯誤發(fā)現(xiàn)率須低于某數(shù)字榕暇,若超過了就得延長測試。此種方式適用于品質要求較高的軟件喻杈。至于后者則是上市時間已宣布彤枢,無法更改者,其目標著重于鏟除最嚴重的錯誤筒饰。此種測試較著重測試的準備缴啡、經常對測試執(zhí)行與除錯設定時限與數(shù)量要求,其中最容易遵循的準則即為:重要功能永遠先測瓷们。這兩類測試的需求不同业栅,足以影響到測試的計劃、測試的順序與關心的重點谬晕。讀者不可不察碘裕。
至于測試資源配置適當性,則是評估測試目標能否達成的重要參考指標攒钳。測試人員需要合理的測試資源娘汞,譬如要求總研發(fā)人力的20%以上∠ν妫總時程的1/3以上你弦。人力不足,測試流于形式燎孟,時程過短禽作,找到錯誤也來不及除錯,均不可取揩页。除了測試在研發(fā)的比重旷偿,也需注意測試工作本身在規(guī)畫管理、規(guī)格個案訂定爆侣、測試執(zhí)行萍程、回歸測試、訓練準備工作的人力分配兔仰。人員的訓練與設備的安排尤其容易輕忽茫负,需加以注意。不同階段測試的資源配置乎赴,也必須加以考量忍法,如此可避免測試集中于功能測試潮尝,忽略系統(tǒng)測試。這些工作的適切安排饿序,有助于協(xié)助測試工作時時都執(zhí)行最重要勉失,也最有效的測試。
測試執(zhí)行與管理
測試工作執(zhí)行在管理上原探,首先需使測試與開發(fā)人員了解輕重緩急乱凿。測試人員常常不考慮測試的效果,而只依照測試的方便性來進行測試咽弦。譬如軟件有十大模塊告匠,每一模塊有50個測試個案,于是他從第一個模塊的第一個個案開始測离唬,測完一整個模塊后专,再進行第二個模塊的測試,執(zhí)行全部完成或無法進行為止输莺。事實上戚哎,測試應從重要且常用的項目測起。
開發(fā)人員的除錯嫂用,則往往從好改的改起型凳。于是100個錯誤改了90個,系統(tǒng)主要的缺陷仍為克服嘱函。測試管理人員需特別注意此事甘畅,確保測試工作的效率。
進行測試管理的好處在于隨時可掌握狀況往弓,并因應需求及時調整測試策略疏唾。譬如測試一段時間后,發(fā)現(xiàn)某子系統(tǒng)的問題特別多函似,即可調整人力槐脏,增強該部份的測試∑材或是某些人的測試績效較差顿天,則可調整工作之分配,以求整體效果蔑担。當然牌废,這些數(shù)據(jù)的取得有賴相關信息的搜集,包括數(shù)量與時間之信息啤握。如果可行鸟缕,可記錄不同測試工作耗用的人力時數(shù),計算耗用成本恨统,以便未來進行測試規(guī)劃時擁有更精確的參考數(shù)據(jù)叁扫。
進行相關資料的統(tǒng)計與分析三妈,最好運用工具來幫忙畜埋,以節(jié)省人力并增進效果莫绣。如果市面已有的測試管理工具符合需求,也可徑行采用悠鞍。測試結果的統(tǒng)計資料对室,不妨公布在大家的眼前,使得測試成果可為大家了解咖祭,亦能促進工作同仁求取更佳的成績掩宜。附圖所顯示為一簡單的統(tǒng)計圖表,顯示每周的測試成果么翰、除錯成果牺汤,與產品殘存的問題量,可協(xié)助主管決定測試終止及發(fā)行產品的時間浩嫌。
測試結果分析與改進
當(階段)測試結束后檐迟,測試管理人員可以進行測試成果的分析。有關預定目標與實際執(zhí)行結果的差異码耐,可作為下一版軟件測試檢討改進的依據(jù)追迟。譬如預定開立的測試個案數(shù)是否達成目標,執(zhí)行與通過數(shù)是否可接受骚腥?投入的測試甚至除錯人力是否足夠敦间?均可視狀況計算依標準工作量,作為未來執(zhí)行測試工作之預估標準束铭。經由分析軟件錯誤的生命周期廓块,可以研究縮短的方法,例如加速除錯與重測周期契沫,或在分析設計階段減少錯誤發(fā)生的機率剿骨,以縮短測試時程。
由測試結果可分析出不同測試的效益埠褪,與應改進之處浓利。以下表為例。單元測試耗用大部份的人力钞速,可能使整合與系統(tǒng)測試不完全贷掖。再以發(fā)現(xiàn)的錯誤數(shù)觀之,整合測試發(fā)現(xiàn)一個錯誤的成本遠低于另兩項渴语。由此可見在有限的人力時間下測試苹威,單元測試做得太多,整合測試又太少驾凶。此意謂著對于單元測試所需耗用的人力資源過度樂觀牙甫,或是在測試工作的配置不盡理想掷酗,應予改進。
除了以上的測試成效分析窟哺。如行有余力時應再對錯誤發(fā)生的原因加以分析泻轰,力求從問題的根源加以解決。這包含測試工作的改進與開發(fā)工作的流程改進且轨。以前者而言浮声,可考慮對測試人員施以較充分的訓練,避免測試工作因準備不周浪費寶貴的人力與時間旋奢。測試標準程序的建立泳挥,也有助于測試工作效率的提升。至于后者至朗,可由錯誤發(fā)生的原因研究預防之道屉符。例如對需求變更未確實記載,導致設計錯誤的問題發(fā)生锹引,或是軟件的設計未加充分的考慮再撰寫程序矗钟,導致設計不良造成的大量錯誤,均應加以預防粤蝎,如此可望從根本解決軟件的問題真仲。
結語
欲提升軟件品質與生產力,得先掌握現(xiàn)況初澎。測試工作既是必要之惡秸应,就需擬定最好的方法來面對。有關軟件測試方法論的書籍文章為數(shù)固然不少碑宴,在應用上仍須因應自身的情形加以調整软啼。自動化軟件測試工具的出現(xiàn),也應該隨時關注和嘗試延柠。獲得好品質不能靠檢驗祸挪,而是來自改善工作流程。因此贞间,測試工作只是一項起步贿条。如何藉由測試工作,了解改善軟件品質與生產力之道增热,才是我們追求的目標整以。愿祝各位軟件品質的捍衛(wèi)者,在工作崗位順利前進峻仇,為測試工作贏得榮耀公黑,更為你們的成功產品喝采。