軟件是多個”人”長期構(gòu)思,協(xié)同作業(yè)下的成果,不可能不出錯。若沒有配置相當(dāng)?shù)娜肆ξ锪Y源,分階段把關(guān)測試,將隨著系統(tǒng)規(guī)模漸大而逐漸失去控制的能力。 @小標(biāo):被疏忽的一環(huán) 筆者在赴制造業(yè)授課時,看到偌大的辦公大樓內(nèi),整個樓層的品保(QA)專業(yè)人員,使用華麗的軟硬件,針對制造流程上的瑕疵缺點做各種的良率分析,但該企業(yè)的 MIS 開發(fā)卻沒有測試人員的配置。換句話說,為支持品保所成立的軟件團(tuán)隊,在開發(fā)軟件時,本身沒有品保的支持。 投資出錢的企業(yè)老板們往往不清楚軟件開發(fā)的困難與復(fù)雜,一般大眾也充滿著對軟件工業(yè)的誤解。如筆者任職顧問的報業(yè)集團(tuán),其建立了首屈一指的編審制度,企業(yè)內(nèi)全盛時期,有八到十位軟件工程師花費(fèi)近兩年的時間,開發(fā)給上千位編輯使用的系統(tǒng)環(huán)境,為得就是對上千位記者所撰寫的文字內(nèi)容嚴(yán)格把關(guān)。 但沒有軟件專業(yè)人員為系統(tǒng)開發(fā)把關(guān),讓筆者斗膽做個對照,若程序設(shè)計師撰寫程序代碼如同記者撰寫文稿,則我們沒有測試工程師如同編輯來編審與校稿,也就是沒有 code review與測試。軟件開發(fā)團(tuán)隊也缺乏如編輯們對整份報紙的版面編排與改稿,也就是沒有軟件的重構(gòu)(refactoring)。甚至對程序代碼的錯誤追蹤和版本控管都還不如編輯們對文稿修改所提追蹤功能之要求。 換句話說,每個產(chǎn)業(yè)都有其專業(yè),卓越企業(yè)的管理階層對該公司之品管一定都有嚴(yán)格的標(biāo)準(zhǔn),如本書第九章所描述的全面質(zhì)量管理(TQM Total Quality Management)。但對支持品管的信息系統(tǒng)本身之品管卻由于無知而導(dǎo)致漠視。 既然全面質(zhì)量管理是大大小小的”計劃(Plan)、執(zhí)行(Do)、檢查(Check)、處理(Act)”等 PDCA 循環(huán)流程,沒道理提升公司競爭力的信息系統(tǒng)沒有”檢查”。而純由腦力合作建構(gòu)的信息系統(tǒng)又沒有容易施行與監(jiān)督的標(biāo)準(zhǔn)步驟(SOP),則更應(yīng)該強(qiáng)化軟件測試,以提升質(zhì)量。 軟件測試在國內(nèi)往往是被忽略的一環(huán),光從筆者對書籍中專有名詞的翻譯感到陌生可作為一個指標(biāo) ,因為專有名詞的翻譯是約定俗成的,若大家朗朗上口,且對定義清楚明了,代表該技術(shù)在此已經(jīng)落地生根行之有年。反之,則代表大家還在啟蒙階段,雖然美國早在上個世紀(jì) 70 年代就已經(jīng)建構(gòu)理論,近年更提出開發(fā)與測試人員的比例最少 3 比 1 的要求(本書中描述微軟的開發(fā)與測試人員視項目的不同,比例是 1比 1.5 到 1 比 3,也就是一個程序撰寫人員配置三個測試人員)。 而我曾經(jīng)和國內(nèi)一家軟件開發(fā)商的美籍品管工程師聊天,他說他在美國曾待過四家公司,不管規(guī)模如何,沒有一家公司沒有專業(yè)的品保人員。但他在臺灣沒看過具專業(yè)品保流程與品保工程師的軟件公司或 MIS 部門。 @小標(biāo):建構(gòu)體系 軟件生命周期中,大分有分析、設(shè)計、開發(fā)、測試、上線、維護(hù),若越晚發(fā)現(xiàn)問題,修正錯誤所付出的代價越大。任何階段的工作與產(chǎn)出皆有可能出錯,因此如「以測試驅(qū)動開發(fā)(Test-Driven Development TDD)」方法論所提倡的,在分析的初始,應(yīng)該就同時撰寫測試案例(Test Case),亦及以測試來驗證對需求的了解程度,并規(guī)范接下去的設(shè)計與開發(fā)不至于偏離。 也就是在分析時期,要撰寫如何測試是否符合使用者需求的文件,在設(shè)計時期,要提出模塊與架構(gòu)間整合測試的方式,以確認(rèn)架構(gòu)與接口定義的正確性。而在開發(fā)時期,同時撰寫單元測試,以驗證個別程序代碼的正確性。同時,說明文件的正確性也要一并測試。讓 V&V(Verification and Validation)的精神貫穿整個開發(fā)過程,時時驗證(Verification)是在做使用者需要的產(chǎn)品,并確認(rèn)(Validation)把事情做對。 軟件測試?yán)碚搹?1970 年代建構(gòu)至今,已經(jīng)自成體系。隨著 ISO、CMMI、Agile 的盛行,不管是 CMMI 的 Support process areas,或是 Agile 的 TDD、Pair Programming,都規(guī)范了軟件質(zhì)量的基本要求,確保質(zhì)量的構(gòu)成要素,以及實踐的方向?;蛟S,這是當(dāng)今軟件項目管理人員不可或缺的常識。 瀏覽書中所架構(gòu)的測試定位與流程讓自己一身冷汗,忝為教人做軟件的講師或顧問,自認(rèn)稍有涉獵軟工中的測試環(huán)節(jié),但從未在心中建立出一套完整的測試架構(gòu)?;蛟S是疏于找尋,滿足于浮面的知識,以往總以人力資源不足,項目時間短促等理由自欺欺人,而讓測試流于形式。 當(dāng)我們永遠(yuǎn)陷在資源不足的窘境中時,如何拿捏資源分配應(yīng)是首要問題。而不是把不熟的領(lǐng)域直接割舍。若心中沒有整個測試的輪廓,如何能夠取舍該做多少? @小標(biāo):軟件測試之定位 書中提出對軟件測試定位的認(rèn)知,或許值得你參考:
- 提高軟件測試的效率和產(chǎn)出依靠功力,好的測試人員不僅要掌握各種測試技術(shù),還要具備豐富的程序編寫和對 bug 的敏感度。
- 經(jīng)驗對軟件測試至關(guān)重要,有無經(jīng)驗的測試人員實有天壤之別。軟件測試有復(fù)雜專業(yè)的技術(shù),且需要測試項目本身的項目管理。
- 軟件測試有規(guī)范與理論,不是隨心所欲愛做多少做多少,需要分配時間、人力、財力。
- 開發(fā)與測試是相輔相成的過程,開發(fā)與測試兩個團(tuán)隊間的交流、協(xié)助是提高整體效率的重要因素。
- 軟件生命周期中的「測試階段」表明該階段的主要工作是測試,但不是說測試工作只發(fā)生在該階段。通常「測試階段」的主要任務(wù)是執(zhí)行測試與撰寫報告,但準(zhǔn)備工作如測試計劃,案例(test case)以及測試程序的編寫要在更早階段完成。
開發(fā)過程中交互執(zhí)行著單元測試(unit test),若干單元或全部集結(jié)后的測試,在日漸高漲的軟工理論 TDD 中,要求周期性的甚至到每天編譯(build)后執(zhí)行測試計劃,第二天看分析報表。
- 軟件測試是一種有效提高軟件質(zhì)量的手段,但不能百分之百地發(fā)現(xiàn)所有質(zhì)量的隱憂。
@小標(biāo):工欲善其事,必先利其器 由于應(yīng)用程序的開發(fā)方式繁多,如采用 C++、Visual Basic、Java、Delphi、.NET、D2K…等,存取接口也大不相同,如批次作業(yè)、Web、Windows Form。而我們的測試目的,除了上述開發(fā)流程中的配套作業(yè)外,尚有安全、壓力等測試。廣義而言,你還需要測試使用者的專業(yè)能力(或許使用者的無知,是系統(tǒng)損毀、安全疑慮的最大來源),系統(tǒng)災(zāi)難復(fù)原的能力、隨著軟硬件迭代更新的兼容性等等。因此,測試工程師需要選擇適合的軟件工具,建構(gòu)獨立的測試環(huán)境,并有程序?qū)懽?、整合軟硬件平臺,協(xié)調(diào)開發(fā)人員的能力,同時在人格特質(zhì)上喜歡找問題,挑毛病。這其實與軟件開發(fā)工程師喜歡堆積木,無中生有創(chuàng)造系統(tǒng)的特質(zhì)不同。 當(dāng)我們定出軟件測試的流程后,若沒有強(qiáng)悍、整合、易上手且自動化的工具程序,則推廣的結(jié)果可能是流于空談,畢竟測試是一再重復(fù)而枯燥的流程。 本書中除了對 ISO、CMM、TQM 等規(guī)范與軟件測試之關(guān)系,各種開發(fā)階段所應(yīng)進(jìn)行的測試工作,不同類型的測試之定位有明確解說外,于后半冊廣泛介紹了在軟件測試領(lǐng)域著名的廠家,也詳列了著名的軟件測試工具,并分門別類地介紹工具之使用。擷取操作的屏幕畫面,以逐步介紹的方式解說。 @小標(biāo):閱讀建議 這本書有點流于教科書的繁雜,且部份細(xì)部章節(jié)的編排上稍嫌紊亂。書中有些過于理論的說明,需要讀者耐得住性子 。且受限于項目經(jīng)費(fèi)、時程與人力,若要將書中的建議全部落實于我們?nèi)粘5膱F(tuán)隊合作,似乎仍有一段落差。 建議你先廣泛地瀏覽一下書籍內(nèi)所談到的內(nèi)容,如操做測試的黑箱/白箱進(jìn)行方式,配合開發(fā)流程而對應(yīng)的測試流程,如單元、整合、確認(rèn)、系統(tǒng)、平行驗收等測試。有了概念后,在軟件開發(fā)的過程中,再擇要精讀。 由于導(dǎo)入測試的效益要明顯呈現(xiàn),恐怕是在兩三個案子之后,這種先期需要投資,但下兩三個案子才見效益的規(guī)劃,對項目經(jīng)理而言,可能更需要謹(jǐn)慎拿捏資源配置的比例。 @小標(biāo):相關(guān)閱讀 對于國內(nèi)廣大的微軟產(chǎn)品愛用者而言,這本書有點可惜的是于此主題著墨不多。若你需要從事 Microsoft .NET 開發(fā)相關(guān)的測試,可以參考以下的書籍: Test-Driven Development in Microsoft.NET,作者為 James W. Newkirk、Alexei A. Vorontsov。出版社 Microsoft。 此書有介紹 TDD 的概念,以及免費(fèi)軟件工具 NUnit 搭配 C#/.NET Framework 開發(fā)與測試的使用方式。 Working with Microsoft Visual Studio 2005 Team System,作者為 Richard Hundhausen。出版社 Microsoft。 此書是本入門書,介紹 VSTS 的架構(gòu),與實做軟件生命周期管理之方式。并對于 VSTS 所提供的測試管理:Test Manager、Test View、Test Project、Test Results,以及測試類型 Unit Test、Code Coverage、Profiling、Manual Test、Web Test、Load Test 稍有介紹。 若要強(qiáng)化軟件質(zhì)量,重構(gòu)是可考慮的過程,而重構(gòu)更與測試密不可分。你可參考與重構(gòu)相關(guān)的書籍: 重構(gòu)—改善既有程序的設(shè)計(Refactoring : Improving The Design of Existing Code),作者為 Martin Fowler,譯者 侯捷/熊節(jié),碁峰出版。 除了書籍外,以下這個網(wǎng)站也蠻有趣的,值得去逛逛:周思博趣談軟件(http://chinesetrad./index.html)
@書名:軟件測試?yán)碚撆c實作 @飛思科技產(chǎn)品研發(fā)中心 編著 @博碩文化出版
|