沈海波,朱雄泳
(廣東第二師范學(xué)院計算機科學(xué)系,廣州 510303)
隨著我國IT技術(shù)和行業(yè)的快速發(fā)展,軟件產(chǎn)品已廣泛應(yīng)用于各行各業(yè),軟件質(zhì)量成了企業(yè)的生命線,軟件產(chǎn)品的質(zhì)量控制與質(zhì)量管理正逐漸成為企業(yè)生存與發(fā)展的核心,甚至是構(gòu)建和諧社會的重要組成部分。隨著軟件項目越來越凸現(xiàn)大型化、復(fù)雜化,軟件開發(fā)中出現(xiàn)錯誤或缺陷的機會越來越多。所以,作為發(fā)現(xiàn)錯誤的重要手段的軟件測試在軟件項目實施過程中的重要性日益突出。軟件測試的地位和作用,越來越真正受到重視。同時,對軟件測試人才的需求也越來越大。軟件工程專業(yè)是培養(yǎng)軟件人才(包括軟件測試人才)的主戰(zhàn)場,而隨著互聯(lián)網(wǎng)的快速發(fā)展、廣泛應(yīng)用和互聯(lián)網(wǎng)+在國家層面的戰(zhàn)略實施,越來越多的傳統(tǒng)企業(yè)已經(jīng)開始結(jié)合互聯(lián)網(wǎng)優(yōu)勢(人工智能、大數(shù)據(jù)、云計算、物聯(lián)網(wǎng)等)來升級或者創(chuàng)造新的商業(yè)模式,而軟件測試順應(yīng)全球化和信息化發(fā)展趨勢,與這些都有密不可分的關(guān)系[1-2]。在互聯(lián)網(wǎng)模式的沖擊下,快速迭代、持續(xù)發(fā)布、不斷試錯成為軟件開發(fā)的關(guān)鍵字,這一切不斷沖擊著傳統(tǒng)軟件測試中賴以生存的“流程”、“規(guī)范”等優(yōu)勢,給軟件測試帶來了極大的沖擊,對軟件測試人才的能力需求也越來越高。因此,如何基于軟件測試來進(jìn)行軟件工程特色專業(yè)建設(shè),是值得我們深入思考的問題。
軟件工程是一門研究用工程化方法構(gòu)建和維護(hù)有效的、實用的和高質(zhì)量的軟件的學(xué)科。軟件質(zhì)量的內(nèi)涵包括三方面:完整的需求、正確的代碼和最少的缺陷。軟件測試,描述一種用來促進(jìn)鑒定軟件的正確性、完整性、安全性和質(zhì)量的過程。換句話說,軟件測試是一種實際輸出與預(yù)期輸出間的審核或者比較過程。軟件測試的經(jīng)典定義是:在規(guī)定的條件下對程序進(jìn)行操作,以發(fā)現(xiàn)程序bug(缺陷),衡量軟件質(zhì)量,并對其是否能滿足設(shè)計要求進(jìn)行評估的過程,可以盡可能減少研發(fā)、測試、售后的成本[3]。
在經(jīng)典的軟件工程瀑布式模型中,軟件生命周期分為需求、設(shè)計、軟件開發(fā)、軟件測試、部署五大階段??梢姡浖y試是在軟件投入運行前,對軟件需求分析、設(shè)計規(guī)格說明和編碼的最終復(fù)審,是軟件質(zhì)量保證的關(guān)鍵步驟,也是軟件質(zhì)量保證的重要手段之一,在軟件生命周期中占據(jù)重要的地位,被稱為軟件質(zhì)量的安全副駕駛。一個軟件的好壞、質(zhì)量的優(yōu)劣不僅取決于軟件的開發(fā)目標(biāo)及其可行性的評估、功能需求的分析、軟件的設(shè)計以及程序代碼的編寫,還取決于軟件測試。軟件測試的作用,可以概括為如下幾個方面:
第一是確認(rèn)軟件的質(zhì)量。通過測試發(fā)現(xiàn)所要交付軟件產(chǎn)品的bug,特別是盡可能地發(fā)現(xiàn)各種嚴(yán)重的bug,降低或消除產(chǎn)品質(zhì)量風(fēng)險,提高客戶的滿意度,從而擴大市場份額。需要注意的是,現(xiàn)在質(zhì)量的概念,已經(jīng)不僅僅是bug,還包括用戶體驗滿意度,包含感覺和情感的成分。
第二是提供信息。對產(chǎn)品質(zhì)量完成全面的評估,可以為軟件產(chǎn)品發(fā)布、軟件系統(tǒng)部署、軟件產(chǎn)品鑒定、第三方獨立測試的糾紛仲裁和其他決策提供信息。
第三是保持質(zhì)量的持續(xù)、全面改進(jìn)。通過持續(xù)的測試可以對軟件產(chǎn)品質(zhì)量提供持續(xù)的、快速的反饋,從而在整個開發(fā)過程中不斷地、及時地改進(jìn)產(chǎn)品的質(zhì)量,并減少各種返工,降低軟件開發(fā)的成本,提高用戶的滿意度。
第四是防止錯誤重現(xiàn)。通過對bug進(jìn)行分析,找出bug發(fā)生的根本原因(軟件過程中的問題,包括錯誤的行為方式)或總結(jié)出軟件產(chǎn)品的缺陷模式,避免將來犯同樣的錯誤或產(chǎn)生類似的產(chǎn)品問題,達(dá)到bug預(yù)防的目的。
我們通常把非互聯(lián)網(wǎng)的軟件稱為傳統(tǒng)軟件,傳統(tǒng)軟件產(chǎn)品通常以光盤、U盤為載體以類似于實物的方式進(jìn)行生產(chǎn)和出售,軟件的產(chǎn)出方式也是嚴(yán)格遵守軟件工程的流程,對傳統(tǒng)軟件的測試一般遵循軟件測試流程:需求分析-測試設(shè)計-用例設(shè)計-測試執(zhí)行-報告評審,重點在于測試過程。目的就是盡可能在測試前深入了解業(yè)務(wù)和實現(xiàn),設(shè)計出各種組合的測試用例,最終保證產(chǎn)品的質(zhì)量。但互聯(lián)網(wǎng)軟件的測試與傳統(tǒng)軟件的測試相比較,具有自己的一些特點。
(1)要求測試周期更短?;ヂ?lián)網(wǎng)軟件(特別是移動互聯(lián)網(wǎng)應(yīng)用)通常采用敏捷開發(fā)模式,設(shè)計-開發(fā)-運營,快速迭代,持續(xù)改進(jìn),更新速度快,從而快速響應(yīng)市場需求。在互聯(lián)網(wǎng)行業(yè),如果一個產(chǎn)品半年發(fā)布一次,那么很快就會失去市場競爭力,被市場淘汰。因此,軟件測試周期更短、更平、更快,通常采用持續(xù)自動化測試。
(2)要求測試工作前移。軟件的質(zhì)量很大程度上主要是代碼的質(zhì)量,所以提高開發(fā)提交的代碼質(zhì)量是一個很重要的問題。傳統(tǒng)的流程體系中,測試作為上線前的最后一道關(guān),一般接入版本的時機較晚,并且以獨立的測試工作為主,較少的參與項目需求和設(shè)計方面的工作。測試的介入時機提前,與分析和開發(fā)同步,可從產(chǎn)品的概念和設(shè)計階段就介入,參與需求的分析和討論,特別是由軟件開發(fā)人員進(jìn)行詳細(xì)的單元測試,將大大提高軟件的質(zhì)量,修復(fù)bug的代價也越小。當(dāng)然,測試工作的前移,需要以測試思維為主的思想。
(3)移動互聯(lián)網(wǎng)應(yīng)用測試面臨更多挑戰(zhàn)。隨著移動互聯(lián)網(wǎng)的深入發(fā)展,移動應(yīng)用在智能手機、平板電腦等移動終端設(shè)備中得到了廣泛應(yīng)用,并深受廣大用戶的喜愛。但由于移動設(shè)備的多樣化、操作系統(tǒng)平臺的多樣性、網(wǎng)絡(luò)基礎(chǔ)設(shè)施和協(xié)議的多樣性、海量的用戶、不同瀏覽器的兼容性、大量的測試接口、各種測試工具等,對移動互聯(lián)網(wǎng)應(yīng)用產(chǎn)品提出了更高的性能、安全性等方面的要求,也給移動互聯(lián)網(wǎng)應(yīng)用的測試帶來了獨特的挑戰(zhàn)。
(4)新型IT技術(shù)的發(fā)展和應(yīng)用帶來極大的挑戰(zhàn)?;谌斯ぶ悄?、云計算、物聯(lián)網(wǎng)、大數(shù)據(jù)等新型互聯(lián)網(wǎng)IT技術(shù)的發(fā)展和應(yīng)用,出現(xiàn)了人工智能測試、云測試、物聯(lián)網(wǎng)測試、大數(shù)據(jù)測試等需求,它們需要一些新的測試方法、技術(shù)、平臺和工具,這就需要測試人員不斷學(xué)習(xí)這些新技術(shù)、新方法和新工具,才能有針對性完成相應(yīng)應(yīng)用軟件的測試工作。
互聯(lián)網(wǎng)行業(yè)最大的特點是更新速度快,因此產(chǎn)品或業(yè)務(wù)也是不停地迭代從而快速響應(yīng)市場,適應(yīng)用戶體驗需求。從這個角度上說對測試人員的要求也更高,不僅僅需要傳統(tǒng)的測試技能,更需要深入理解業(yè)務(wù)需求,挖掘用戶潛在的需求,并做好風(fēng)險控制與防范,在做好功能測試的同時,對安全測試、兼容性測試、集成測試、接口測試以及用戶體驗性測試等方面提出了更高的挑戰(zhàn)。綜合各種IT企業(yè)的招聘需求,我們可以歸納出對軟件測試人員的總體能力要求:一個合格的軟件測試工程師應(yīng)具有專業(yè)的知識背景、實際的操作經(jīng)驗、逆向的思維能力、團(tuán)隊的合作精神、快速的學(xué)習(xí)能力、優(yōu)秀的書面表達(dá)能力、較強的溝通能力和責(zé)任心、工作細(xì)致認(rèn)真和耐心??梢钥闯觯ヂ?lián)網(wǎng)時代需要是既懂軟件開發(fā)技術(shù)、又懂軟件測試技術(shù)、還要懂項目管理的高端軟件測試人才。
我們可以進(jìn)一步把軟件測試人才的能力需求細(xì)分為基本、中級、高級三個層次?;灸芰π枨笾饕ǎ壕邆溆嬎銠C科學(xué)和軟件工程方面的基礎(chǔ)理論、基本知識、基本方法和基本技術(shù);擁有軟件測試基本能力(軟件測試基本知識、主要測試工具的使用);職業(yè)基本素質(zhì)能力(溝通和協(xié)作、書面表達(dá)能力、責(zé)任心和耐心)。這里要強調(diào)一點的是書面表達(dá)能力的重要性,撰寫測試計劃、測試方案、測試用例、測試報告、缺陷報告等各種測試文檔是測試工作必不可缺少的工作,它們是測試工作的重要成果。測試設(shè)計的基礎(chǔ)是分析,而分析的基礎(chǔ)是測試思維方式和思維能力,具備良好的開發(fā)能力且熟悉開發(fā)人員的思維和習(xí)慣,則可以更好地做好軟件測試工作。因此,中級能力需求主要包括:測試思維方式能力(逆向思維方式、組合思維方式、全局思維方式、兩極思維方式、比較思維方式、批判性思維方式等)、測試分析和設(shè)計能力(能根據(jù)需求設(shè)計出用戶場景、業(yè)務(wù)流程、分支流程和異常場景,并構(gòu)建測試用例)、開發(fā)者測試能力(較好的編程能力、能熟練進(jìn)行單元測試和集成測試等)。除了上述能力外,熟練掌握自動化測試工具,打造快速測試和持續(xù)交付能力,才能滿足互聯(lián)網(wǎng)應(yīng)用快速迭代更新的需求。對于測試人員來說,如果不了解產(chǎn)品和業(yè)務(wù),不理解產(chǎn)品的構(gòu)建技術(shù),測試工作很難開展。要成為測試領(lǐng)域技術(shù)專家、成為技術(shù)和測試團(tuán)隊管理者,一定的測試管理能力是不可缺少的。因此,高級能力需求主要包括:業(yè)務(wù)理解拓展能力(業(yè)務(wù)理解與建模能力、缺陷管理和根因分析能力等)、快速自動化測試能力(各種測試工具的熟練運用能力、測試腳本開發(fā)與調(diào)試能力、新型測試方法和策略的掌握與運用能力、各種專項測試能力等)、測試管理能力(團(tuán)隊領(lǐng)導(dǎo)能力、項目管理能力、決策與規(guī)劃能力等)。
上述能力需要相關(guān)的課程體系來培養(yǎng)。由于普通本科院校并沒有設(shè)置軟件測試專業(yè)(只有部分職業(yè)技術(shù)學(xué)院開設(shè))[4],因此在目前的教學(xué)體系中,軟件測試只是作為軟件工程專業(yè)的一門主干課程進(jìn)行開設(shè),分別設(shè)置有理論部分、課程實驗和課程設(shè)計,但隨著互聯(lián)網(wǎng)時代行業(yè)對軟件測試人才能力要求的提高,特別是移動應(yīng)用測試、Web安全測試、嵌入式測試、Web自動化測試的出現(xiàn),一門課程和有限課時的實驗,是遠(yuǎn)遠(yuǎn)達(dá)不到行業(yè)的需求。因此,以軟件測試作為軟件工程專業(yè)特色,針對互聯(lián)網(wǎng)時代對軟件測試人才的能力需求的三個層次,需要系統(tǒng)化地設(shè)置軟件測試課程體系[5-6],這個課程體系要服務(wù)于上述能力的培養(yǎng)。我們根據(jù)高等學(xué)校本科軟件工程專業(yè)應(yīng)用型人才培養(yǎng)指導(dǎo)意見(2016版),提出了課程體系,如表1所示。
表1 軟件測試課程體系
加強專業(yè)特色建設(shè)是提升專業(yè)核心競爭力的關(guān)鍵。隨著軟件全球化競爭的加劇,為了提高軟件質(zhì)量,降低軟件開發(fā)成本,軟件測試成為重要推動力。隨著互聯(lián)網(wǎng)+、移動互聯(lián)網(wǎng)、人工智能、云計算與大數(shù)據(jù)等IT新產(chǎn)業(yè)的迅速發(fā)展,專業(yè)化的軟件測試人才成為國內(nèi)IT行業(yè)、軟件企業(yè)的迫切需求。如何基于軟件測試來建設(shè)軟件工程特色專業(yè),本文作了一些有益的探索。
致謝:在本文的寫作過程中,參考了2017年8月在青島舉行的全國高校軟件測試教學(xué)師資培訓(xùn)班上同濟(jì)大學(xué)朱少民教授、南京大學(xué)陳振宇教授及其他老師的講義,在此特致以謝意。
[1]王磊,黃璞,徐力杰.移動互聯(lián)網(wǎng)時代高校課堂管理方式的改革探討[J].現(xiàn)代計算機(專業(yè)版),2017(4):51-52.
[2]張泳.軟件工程專業(yè)移動互聯(lián)網(wǎng)方向應(yīng)用型人才培養(yǎng)探索[J].中國大學(xué)教學(xué),2015(5):53-55.
[3]朱少民.軟件測試方法和技術(shù)(第3版)[M].北京:清華大學(xué)出版社,2014.
[4]盧克,吳建玉.高職軟件測試專業(yè)課程體系建設(shè)的探索與實踐[J].職教論壇,2013(20):46-48.
[5]李靜,趙志升.軟件測試專業(yè)課程體系建設(shè)和教學(xué)改革[J].教育與職業(yè),?2014(2):135-137.
[6]鞠小林,陳翔,文萬志,等.互聯(lián)網(wǎng)+背景下的軟件測試課程教學(xué)體系構(gòu)建[J].計算機教育,2017(5):112-116.