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