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