時間:2022-07-16 08:58:49
序論:在您撰寫淺談軟件測試工程師的工作時,參考他人的優(yōu)秀作品可以開闊視野,小編為您整理的1篇范文,希望這些建議能夠激發(fā)您的創(chuàng)作熱情,引導您走向新的創(chuàng)作高度。
摘要:為了培養(yǎng)創(chuàng)新能力強、適應社會經(jīng)濟發(fā)展需要的軟件測試人才,本文結合常熟理工學院《軟件測試與質(zhì)量保證》課程建設經(jīng)驗,以中小企業(yè)對軟件測試人才的需求為導向開展實驗教學改革,分別從實驗教學改革基本思路、教學內(nèi)容組織等方面探討應用技術大學建設背景下軟件測試課程實驗教學改革措施。
關鍵詞:軟件測試;軟件質(zhì)量保證;教學改革;軟件測評師;實驗教學
一、引言
隨著我國軟件產(chǎn)業(yè)迅速發(fā)展,企業(yè)面臨著開發(fā)高質(zhì)量軟件系統(tǒng)的巨大壓力,軟件測試、軟件質(zhì)量保證受到越來越多的重視。軟件企業(yè)對承擔軟件測試、質(zhì)量保證工作的軟件測試人才需要劇增,軟件測試工程師的職業(yè)價值、發(fā)展前景得到前所未有的提升。為此,國內(nèi)高校開設了軟件測試相關課程。但是,由于其重理論、輕實踐的教學模式使得培養(yǎng)出的學生軟件測試實戰(zhàn)能力差,導致大量畢業(yè)生應聘軟件測試相關職位時受到冷遇。
為培養(yǎng)創(chuàng)新能力強、適應社會經(jīng)濟發(fā)展需要的軟件測試人才,《軟件測試與質(zhì)量保證》實驗教學亟需改變傳統(tǒng)的教學理念,改進教學方法,更新教學內(nèi)容。筆者結合自身教學科研和工程實踐經(jīng)驗,分別從改革思路、實驗教學內(nèi)容設計等方面,論述常熟理工學院《軟件測試與質(zhì)量保證》實驗教學改革的措施和體會。
二、實驗教學面臨諸多挑戰(zhàn)
筆者調(diào)研國內(nèi)高校軟件測試課程的建設情況,發(fā)現(xiàn)普遍存在重理論、輕實踐的教學傾向,實驗教學環(huán)節(jié)存在諸多問題:
1.企業(yè)對軟件測試工程師的能力要求是綜合性的,要求軟件測試人員具有軟件項目經(jīng)驗,具備軟件測試、軟件質(zhì)量保證知識,能夠獨立開展軟件測試工作。但是,國內(nèi)高校教學計劃制定時片面強調(diào)軟件測試的作用,對軟件測試與軟件質(zhì)量保證之間的天然聯(lián)系缺乏理解,對軟件質(zhì)量保證相關實驗的重視程度,課時安排存在嚴重不足。
2.目前,《軟件測試與質(zhì)量保證》實驗教材選擇面臨無書可選的尷尬局面。課程實驗設計只能全憑任課教師把握,使得實驗教學過程中存在較多風險。
3.國內(nèi)高校在實驗設計方面,多以基礎性實驗為主。這種單一的實驗設計方式,難以適應軟件測試工程實踐能力培養(yǎng)的需要。
三、實驗教學改革措施
在應用技術大學建設驅(qū)動下,以中小企業(yè)對軟件測試人才的需求和軟件測試工程師認證大綱為導向,我們整合已有的校企合作課程資源,按照Daniel Galan軟件質(zhì)量保證框架組織實驗教學內(nèi)容,采用項目驅(qū)動的案例教學法開展實驗教學,讓學生在實驗實踐中加深對軟件測試與質(zhì)量保證專業(yè)知識的理解,培養(yǎng)學生軟件測試實踐能力。
(一)教學改革基本思路
軟件企業(yè)對軟件測試人才的需求是軟件測試課程改革的源動力和驅(qū)動力,軟件測試相關的從業(yè)資格認證是學生入職的敲門磚。為此,在應用技術大學建設背景下,我們以切合中小企業(yè)對軟件測試人才的需求為導向,結合全國計算機等級考試軟件測試工程師認證、全國計算機技術與軟件專業(yè)技術資格考試軟件評測師認證的考試大綱要求,選擇朱少民老師編寫的《全程軟件測試》[1]和NIIT培訓教程《Software Testing and Quality Assurance:Student Guide》[2]作為課程教材,按照Daniel Galin軟件質(zhì)量保證框架組織教學內(nèi)容。Daniel Galin軟件質(zhì)量保證框架[3]指出軟件質(zhì)量保證是建立企業(yè)軟件質(zhì)量文化所需的一些列活動的集合,認為軟件測試是一種典型的軟件質(zhì)量保證措施,軟件測試的目的是為了發(fā)現(xiàn)潛在的軟件缺陷,軟件測試工作貫穿軟件項目的始終。按照Daniel Galin軟件質(zhì)量保證框架組織課程內(nèi)容有助于保持軟件測試與軟件質(zhì)量保證之間的內(nèi)在聯(lián)系,符合軟件企業(yè)軟件測試與質(zhì)量保證的最新經(jīng)驗。
(二)實驗設計
如何在有限的實驗課時內(nèi),最大限度地加深學生對軟件測試、軟件質(zhì)量保證的理解,增強其軟件測試實踐能力,是實驗教學的主要任務。我們設計了導入性實驗、基礎性實驗、創(chuàng)新項目實踐三種類型的課程實驗。導入性實驗要求學生應用已修課程(包括程序設計、數(shù)據(jù)庫設計、軟件工程等)知識進行軟件調(diào)試,在軟件調(diào)試過程中理解軟件調(diào)試與軟件測試、軟件質(zhì)量保證之間的關系,實現(xiàn)到本課程學習的過渡;基礎性實驗目的在于強化課程基礎理論、原理的理解,讓學生在實驗中理解所學知識,掌握軟件測試工具的使用;創(chuàng)新項目實踐以課程實訓項目為載體,為學生運行所學知識解決軟件測試實踐過程中涌現(xiàn)的各類問題,鍛煉學生的動手實踐能力、自主學習能力,從而提高學生的工程實踐素養(yǎng)。
1.導入性實驗。軟件測試的目的是發(fā)現(xiàn)軟件系統(tǒng)中潛在缺陷,而缺陷的解決則通過軟件調(diào)試手段實現(xiàn)。為此,設計導入性實驗“軟件調(diào)試”。本次實驗以員工工資核算軟件Employee作為實驗對象,要求學生發(fā)現(xiàn)Employee中人為注入的軟件缺陷,然后應用Java調(diào)試器的斷點調(diào)試功能,結合回歸測試手段修訂所發(fā)現(xiàn)的缺陷。
通過導入性實驗,學生體驗了改正軟件缺陷的艱辛,在教師引導下思考如何發(fā)現(xiàn)軟件缺陷、如何提高軟件質(zhì)量。教師適時點撥學生,指出發(fā)現(xiàn)軟件缺陷是軟件測試工程師的職責,軟件測試工程師需運行軟件測試方法、技術和工具才能發(fā)現(xiàn)潛在的軟件缺陷。教師進一步啟發(fā)學生:提高軟件質(zhì)量需要開展包括軟件測試在內(nèi)的各項軟件質(zhì)量保證工作。
2.基礎性實驗?;A性實驗旨在加深學生對課程基本概念、原理的理解,讓學生在動手實踐中加深對基礎概念、原理的理解。課程安排8次基礎性實驗,實驗2、3、4和5屬于軟件質(zhì)量保證實驗,6、7、8和9是軟件測試實驗。
(1)實驗2:軟件度量實踐。實驗2關注軟件度量問題,介紹軟件規(guī)模、項目工作量和軟件成本之間的關系,要求學生掌握軟件規(guī)模估算、工作量估算和成本估算的方法和過程。通過本次實驗,學生可以應用USC CoCoMo II進行軟件成本估算。(2)實驗3:基于Microsoft Project的軟件項目管理。軟件項目計劃及進度管理,是軟件質(zhì)量保證中重要的管理部件,也是開展軟件測試活動的前提。實驗3要求學生使用Microsoft Project建立軟件項目計劃、運用跟蹤甘特圖追蹤項目進度,等等。(3)實驗4:版本控制軟件CVSNT。CVSNT是當前最流行的版本控制系統(tǒng),是中小企業(yè)進行版本控制的利器。實驗4講解CVSNT的安裝和使用,要求學生掌握CVSNT的操作技巧。(4)實驗5:BugFree軟件缺陷管理。軟件缺陷管理貫穿軟件測試項目的始終,記錄軟件缺陷從發(fā)現(xiàn)、修復直至關閉軟件缺陷的全過程。實驗5介紹開源缺陷管理軟件BugFree的軟件缺陷管理思想,要求學生掌握BugFree安裝與配置、軟件缺陷管理等技能。(5)實驗6:軟件靜態(tài)測試。軟件靜態(tài)測試是軟件測試技術中發(fā)現(xiàn)軟件缺陷效率最高的技術。我們安排“軟件靜態(tài)測試”專題講座,講解軟件制品閱讀、靜態(tài)分析的技巧,還介紹如何運用CheckStyle、FindBugs等靜態(tài)測試工具分析程序源代碼、目標程序中潛在缺陷。本次實驗有學生利用課后時間,自主實踐。(6)實驗7:JUnit單元測試。實驗7介紹單元測試工具JUnit的使用,要求理解JUnit單元測試框架,掌握單元測試腳本的編寫技巧。本次實驗還推薦學有余力的學生自學JMock,綜合應用JUnit和JMock進行對Java應用系統(tǒng)進行集成測試。(7)實驗8:軟件功能測試。軟件功能測試是檢驗目標軟件是否正確實現(xiàn)了客戶需求,是軟件測試執(zhí)行的重要內(nèi)容。實驗8要求學生使用QuickTest Professional(簡稱QTP)對機票預訂系統(tǒng)進行功能測試。本次實驗要求學生能夠獨立完成功能測試腳本的錄制和編輯,掌握QTP檢查點設計的方法及技巧。(8)實驗9:軟件性能測試。實驗9介紹軟件性能的概念和原理,講述如何運用HP Mercury LoadRunner對Web系統(tǒng)進行性能測試,讓學生在實驗過程中理解虛擬用戶技術,掌握基于LoadRunner的性能測試技術的過程及技巧。此外,本次實驗要求學生利用課余時間使用開源的性能測試工具JMeter進行軟件性能測試。
3.創(chuàng)新項目實踐。為了培養(yǎng)學生的工程實踐能力,我們從學生課程項目、畢業(yè)設計、大學生創(chuàng)新項目、開源軟件項目等中篩選出軟件規(guī)模適中的軟件系統(tǒng)作為課程實訓項目,讓學生對課程實訓項目進行系統(tǒng)化的軟件測試,要到學生主動動手實踐,在軟件測試項目實踐中培養(yǎng)工程素養(yǎng)。
在課程教學過程中,我們還加強對基礎扎實、動手能力強、思維活躍的學生的培養(yǎng),推薦這些學生參與到教師科研項目中,為學生在科研項目中積累軟件評測經(jīng)驗。
四、結束語
《軟件測試與質(zhì)量保證》通過十余年的建設已形成了較完善的課程體系,十多輪的授課實踐積累了豐富的教學經(jīng)驗,課程實驗教學體系也日趨完善。
當前,我校正轉(zhuǎn)型應用技術大學,這將對本課程的教學內(nèi)容、教學方法、教學手段等提出更多、更高的要求。鑒于此,本課程教學團隊正嘗試通過校企合作模式開展課程教學活動,編寫校本教材,多措并舉提升學生軟件測試能力。
摘要:當前軟件測試工程師績效考核存在的問題主要表現(xiàn)在:考核定位模糊并存在偏差,重考核、輕管理,重結果、輕過程,考核主體單一,企業(yè)管理者沒有承擔起績效管理的責任,績效考核指標不全、標準不明。測試工程師績效考核要明確考核的目標,突出測試人員在考核中的主體地位,構建一體化績效管理體系。
關鍵詞:測試工程師;績效管理;體系
軟件測試工程師績效考核是IT企業(yè)根據(jù)發(fā)展戰(zhàn)略和使命要求,對測試工程師的工作業(yè)績進行考察和評估,包括工作行為和工作效果。隨著中國軟件業(yè)的迅猛發(fā)展,軟件產(chǎn)品的質(zhì)量控制與質(zhì)量管理正逐漸成為企業(yè)生存與發(fā)展的核心。為了保證軟件在出廠時的“健康狀態(tài)”,幾乎所有的IT企業(yè)在軟件產(chǎn)品前都需要大量的質(zhì)量檢測工作。測試工程師作為軟件質(zhì)量控制中的重要一環(huán),其績效考核成為企業(yè)了解測試人員隊伍狀況,監(jiān)控測試人員工作過程的重要手段。
軟件測試工程師績效考核是IT企業(yè)人力資源管理的中心環(huán)節(jié),是測試人員薪酬、晉升、人事調(diào)整、職稱評定等決策的基礎,并且為企業(yè)制定測試人員的培訓、開發(fā)計劃及長期職業(yè)生涯發(fā)展規(guī)劃提供依據(jù)。測試工程師績效考核的有效性直接影響到人力資源制度的激勵效果和企業(yè)管理的公平性,并對測試人員的工作滿意度有重要影響。然而,現(xiàn)實的績效考核工作往往不盡如人愿。許多測試工程師遇到考核時深感不安,產(chǎn)生焦慮,害怕甚至反對考核;很多測試人員認為考核是走過場,抱著無所謂態(tài)度。理論上的必要性和重要性與現(xiàn)實中的困惑形成強烈反差。為此,我們有必要對測試工程師績效考核存在的問題進行反思,從而構建能滿足企業(yè)和測試工程師共同發(fā)展的績效管理體系。
一、軟件測試工程師績效考核存在的誤區(qū)及其分析
(一)考核定位模糊并存在偏差
考核定位,就是通過績效考核解決什么問題??己硕ㄎ荒:饕憩F(xiàn)在考核缺乏明確的目的,僅僅是為了考核而進行考核,這樣做的結果往往導致考核流于形式??己硕ㄎ黄钪饕w現(xiàn)在片面看待考核的目標上,對考核目的定位過于狹窄。目前許多IT企業(yè)績效考核的目的僅僅是為了期末發(fā)獎金或津貼,將考核定位于確定利益分配的依據(jù)和工具。
(二)重績效考核輕績效管理
績效考核和績效管理既有本質(zhì)上的區(qū)別,又有一定聯(lián)系。傳統(tǒng)績效考核以管理者為中心,強調(diào)服從和外部控制,著眼于過去,注重成果,是一種被動反應、事后解決問題的管理方法。現(xiàn)代績效管理則以測試工程師為中心,強調(diào)承諾和自我控制,著眼于過去、現(xiàn)在和將來的有機統(tǒng)一,是一種主動開發(fā)型、在過程中解決問題的管理系統(tǒng)。績效管理是一個完整的系統(tǒng),績效考核只是績效管理中一個不可或缺的組成部分和環(huán)節(jié),絕不能將其等同于績效管理。
(三)重考核結果輕考核過程
績效是工作成果與工作行為的統(tǒng)一。許多IT企業(yè)重視對績效中的工作結果考核,而忽視了績效中的行為指標,這表現(xiàn)在許多項目組重視項目完成進度而輕視測試過程,重視項目的數(shù)量而輕視其質(zhì)量,尤其是輕視與測試工程師行為有關的工作動機、熱情度、忠誠感等“周邊績效”考核點。這可能與企業(yè)受功利主義思想影響、追求短期利益有關,或者可能與工作結果容易量化,而行為不易評估有關。
許多項目組在項目初期給工程師布置測試任務和預期應完成的指標,期末予以檢查,而對工程師完成任務和指標的過程不管不問,既不對完成任務過程中出現(xiàn)的問題予以及時糾正,也不對測試人員在工作中遇到困難和阻力時提供幫助和支持。這種秋后算賬的做法容易造成管理者與被考核者的對立,不利于測試人員的成長與進步。
(四)考核主體單一
目前,項目經(jīng)理考核測試工程師已成為一種普遍運用的評價方式甚至是唯一的評價方式。項目經(jīng)理考核有一定可信性,但也存在一些弊端,如測試人員一味地迎合項目經(jīng)理的指令,淡化了整個團隊的溝通協(xié)作,忽視一些測試人員不可控制因素的影響而造成考核不公正等。測試工程師在考核時處于一種被動地位,或者消極被迫接受,或者導致內(nèi)部沖突升級。項目組也不重視同行專家的評估意見或根本不吸收同事參與考核。
(五)績效考核指標不全,標準不明
考評項目和指標的選擇是否恰當,是否全面、相關,定義是抽象含混還是具體明確,對考核結果影響很大。如果績效考核標準不明,則不同的考核者可能對優(yōu)、良、一般、差等績效標準做出不同的解釋,從而造成考評者偏松或偏緊或趨中傾向,造成考核結果的誤差。以測試人員業(yè)績考核為例,業(yè)績考核包括整體工作效率、工作結果、過程控制三項一級指標。其中,工作結果可以分為測試用例的數(shù)量和質(zhì)量、bug的數(shù)量和質(zhì)量、測試自動化程度及收效等多項二級指標,若不對這些定性指標給出明確定義,則考評時易出現(xiàn)主觀隨意現(xiàn)象。因此,界定應具體明確。如bug的數(shù)量和質(zhì)量可定義為:提交bug的數(shù)量(根據(jù)項目的不同而確定經(jīng)驗值)、提交bug的時間段(具體統(tǒng)計在測試的每個階段)、發(fā)現(xiàn)bug的比例等。
二、軟件測試工程師績效管理體系的構建
(一)明確測試工程師績效考核目標
Bevan和Thompson(1991)認為績效管理的主要目的是“促進人力資源管理不同組成部分的整合,并使它們與公司的經(jīng)營目標緊密聯(lián)系在一起。”測試工程師績效考核的目標,一是為企業(yè)的發(fā)展服務,支撐企業(yè)使命和戰(zhàn)略的實現(xiàn);二是服務于工程師個人需要及其職業(yè)進步。
(二)構建一體化績效管理體系
績效管理就是根據(jù)組織的要求,對雇員進行指導和支持,使雇員盡可能地以更高的效率完成自己的工作。從狹義角度理解,績效管理系統(tǒng)由制定績效計劃,持續(xù)的績效溝通與績效信息收集,績效考核,績效反饋、診斷與輔導等部分組成。從廣義上講,績效管理系統(tǒng)由績效管理的影響力量、狹義的績效管理系統(tǒng)、績效管理的運用和目標等部分構成。
廣義的績效管理系統(tǒng)包括以下3部分:對影響測試工程師績效的原因進行分析,尤其是從企業(yè)內(nèi)部的組織結構、領導方式、企業(yè)文化、招聘和聘任制度、崗位分析等方面探討與測試工程師績效有關的因素;狹義的績效管理系統(tǒng);績效管理的目標,包括績效管理要達到的組織目標和測試工程師個人發(fā)展目標(見圖1)。
制定績效計劃和考核目標的目的是為了清楚地說明企業(yè)期望測試工程師達到的結果以及為達到該結果所期望測試人員表現(xiàn)出來的行為和技能。管理者通過與被考核者協(xié)商,共同制定與企業(yè)使命相關的具有挑戰(zhàn)性、可實現(xiàn)性、具體明確且有時間限制的績效計劃。持續(xù)的、動態(tài)的績效溝通就是管理者和被考核者共同工作,以分享有關信息的過程。這些信息包括工作進展情況,潛在的障礙和問題,可能的解決措施以及管理者如何才能幫助被考核者。這些信息必須是有據(jù)可查、準確真實的且與績效相關的信息。管理者可通過面談,向其他同事了解意見,查看被考核者的工作記錄等方式獲取信息。績效考核包括測評內(nèi)容、何時測評、哪些人參加測評、測評方式及責任等??冃г\斷與輔導,是管理者和被考核者雙方合作,共同尋找導致績效低的原因,以及幫助被考核者提高未來績效的方法,涉及處理矛盾、準備反饋面談、解決問題和重新設定目標等內(nèi)容。
(三)實現(xiàn)測試工程師績效考核主體的多元化
在傳統(tǒng)的測試工程師績效考核中,將工程師排斥在外,測試人員作為被考核者處于被動應考的地位,被考核者與考評者的這種對立狀態(tài)造成測試人員不認同、不支持考核,使其考核失去應有價值。雖然測試工程師可能由于認知或自利性偏差(根據(jù)歸因理論,測試人員可能將自己的成功歸之于自身的能力與努力等內(nèi)因,而將其失敗或績效不理想歸之于工作難度和機遇等外因;而對別人的成功與失敗歸因與自身歸因相反)和自我防御心理的原因,測試工程師有高估自身的業(yè)績,而看不到或有意掩蓋自身存在的問題的可能性,但可以通過構建系統(tǒng)化的績效管理系統(tǒng),明確績效考核的目標,管理者與被考核者的平等溝通,以及通過考核主體的多元化(除測試工程師本人外,還有領導、同事、客戶等)等方法來避免這些弊端。
(四)構建測試工程師績效考核合理分工、各司其職的組織管理機構
對測試工程師的績效管理是企業(yè)人力資源部和項目組的共同責任。人力資源部主要從事組織、指導和協(xié)調(diào)工作,具體職責包括培訓考核者、規(guī)范考核制度、制定各種考核表格、發(fā)放及統(tǒng)計等工作。考核由項目組具體組織實施,包括測試工程師工作任務的安排、考核指標與內(nèi)容的確定、考核方法與時間的確定、考核主體的組織、考核結果的反饋、績效改進與提升等工作。項目經(jīng)理首先應當是一名合格的人力資源管理者,應把人力資源管理工作如激勵、員工發(fā)展、績效管理納入企業(yè)的議事日程,并構成企業(yè)管理者對項目經(jīng)理考核的重要內(nèi)容。當然,這需要改變目前IT企業(yè)高度集中的人事管理體制,將部分人事管理權由企業(yè)下放至項目組。
(五)根據(jù)測試工程師的工作特征,建立考核內(nèi)容全面、結果與行為(過程)并重的績效考核機制
測試工程師作為專業(yè)人員和知識工作者,在其需求和工作方面存在以下特征:追求工作自主,不愿意受過多的外部控制;個人品性對測試工作及其事業(yè)影響很大;需求具有多樣性和復雜性,既追求較低層次的需要,如生理、安全需要,又追求較高層次的需要,如受人尊重、自我實現(xiàn)的需要;工作具有分散性、個體性等。這些特征要求在測試工程師績效考核時注意以下方面:一是績效考核內(nèi)容要全面,德、知、能、勤、績一樣都不能少。測試工程師品德潛移默化影響其對測試工作的態(tài)度;知識包括測試工程師應掌握的專業(yè)技能及業(yè)務知識、個人素養(yǎng);能力包括軟件測試能力、溝通與團隊協(xié)作等方面。二是測試工程師績效考核堅持結果與行為(過程)考核并重。Brumbrach(1988)認為“績效指行為和結果。行為由從事工作的人表現(xiàn)出來,將工作任務付諸實施。(行為)不僅僅是結果的工具,行為本身也是結果,是為完成工作任務所付出的腦力和體力的結果,并且能與結果分開進行判斷。”Borman和Motowidlo(1993)認為行為績效包括任務績效和關系績效(周邊績效)兩個方面。任務績效指正式工作職責和所規(guī)定的行為,關系績效指自發(fā)性行為或超職責行為。由于測試工程師工作的效果難以量化,且具有滯后性和共同屬性。因此,在堅持完善目前通過測試工作量和測試用例等結果指標衡量測試工程師績效的同時,企業(yè)還要重視對測試人員行為,包括團隊合作行為的考核,尤其要關注關系績效的考核,這對克服測試人員工作分散化,形成合作的團隊以及按質(zhì)按量地完成項目組的目標有重大意義。
(作者單位:北京化工大學經(jīng)濟管理學院)
摘要:本文針對軟件測試課程培養(yǎng)的學生與卓越軟件測試工程師要求的差距,分析了目前軟件測試教學中存在的不足,提出了“方法―過程―工具―案例”四位一體的教學方法,旨在培養(yǎng)理論扎實、工程能力強的卓越軟件測試工程師,以實現(xiàn)與軟件測試行業(yè)的銜接。
關鍵詞:測試工程師;軟件測試;教學改革;工程能力
隨著軟件產(chǎn)業(yè)的迅猛發(fā)展,軟件的復雜性也日益增加,導致對軟件產(chǎn)品的質(zhì)量提出了更高的要求,這也使得軟件測試工程師成為每個軟件企業(yè)都不可或缺的技術人才。目前許多軟件工程專業(yè)教育者進行了積極的探索,許多學校也提出了一些方案,做了有益的嘗試。
中國石油大學(華東)的軟件工程專業(yè)入選了山東省卓越工程師培養(yǎng)計劃,為了執(zhí)行國家對軟件工程專業(yè)卓越工程師培養(yǎng)的精神,融合學校的“三三三”培養(yǎng)體系的頂層設計,為培養(yǎng)卓越的軟件測試工程師,我們也在軟件測試課程的培養(yǎng)方案、課程結構、教學方法和考評體系等方面進行了一系列的改革和探索。軟件測試課程作為軟件工程專業(yè)的一門核心課,是對理論性和工程性都有很高要求的課程,一方面要求學生必須有扎實的理論基礎知識,另一方面要求學生能夠熟練地應用理論基礎知識轉(zhuǎn)化為實際的工程應用。
雖然已有的教學改革改善了教學效果,但目前的軟件測試課程教學依然存在幾個比較突出的問題:第一,教學內(nèi)容抽象,學生學習興趣不高;第二,教學內(nèi)容碎片化,學生沒有完善的測試知識體系;第三,輕視測試工具應用,培養(yǎng)的學生與企業(yè)需求難以銜接;第四,教學案例簡單,學生沒有完整的測試思路;第五,學生對軟件測試存在認識偏差,缺乏從事軟件測試職業(yè)的意愿。
為了解決上述問題,我們提出了“方法為基、過程引導、工具跟進、案例貫穿”的“方法―過程―工具―案例”四位一體的教學方法,旨在培養(yǎng)理論扎實、功能能力強的卓越軟件測試工程師,以實現(xiàn)與軟件測試行業(yè)的銜接。
一、課程體系與教學內(nèi)容設計
根據(jù)國際標準的SWEBOK軟件核心知識體系中軟件測試的知識域,充分調(diào)研軟件行業(yè)中對卓越軟件測試工程師的需求,建立軟件測試能力培養(yǎng)標準,明確各培養(yǎng)標準與軟件測試課程內(nèi)容的對應關系。表1為我們初步建立的軟件測試能力培養(yǎng)標準列表。
四位一體的教學方法,就是以講授軟件測試的基本理論與方法與基礎,按照軟件開發(fā)過程與測試過程為主線引導,輔以介紹典型軟件測試工程的應用,并在課程教學中選擇一個案例貫穿整個教學。具體教學路線如圖1所示。
為此,我們重新規(guī)劃了教學內(nèi)容,教學內(nèi)容的組織如圖2所示。
二、具體教學內(nèi)容
四位一體的教學方法圍繞著測試方法、測試過程、測試工具以及測試案例進行展開。在具體實施過程中,構建了測試工具箱與測試案例庫,并編寫了適合該教學方法的教材。
(一)測試工具箱的構建
工具的掌握是工程能力的重要一環(huán),因此在軟件測試課程及相應實踐課上有必要掌握一些典型測試工具的使用。軟件測試方法體系龐大,造成軟件測試工具眾多,而且一些商業(yè)化的測試工具價格不菲,為了適應課堂教學的實際,需要對各種測試工具進行比較篩選,選擇合適的測試工具并構造測試工具箱。在多年的軟件測試課程教學中我們已經(jīng)積累了一些適合教學的測試工具,包括測試管理工具TestCenter、功能測試工具AutoRunner、源代碼缺陷檢測工具在選擇測試工具FindBugs與DTS、性能測試工具Jmeter等。我們將繼續(xù)本著覆蓋多個測試方法、開源工具優(yōu)先等原則完善測試工具箱,并對工具箱的工具進行分層次、分類別的維護更新。
(二)測試案例庫的建立
案例教學是促進對理論知識消化、掌握實際問題解決策略的一種有效教學方法。軟件測試課程要求所選案例能夠體現(xiàn)測試方法與工具的應用。為構建適合教學的測試案例庫,我們一方面需要對已有的案例進行刻意的改造,也選擇了一些新型示范應用項目,另外選取了一些有代表意義的開源工程,以及教師科研轉(zhuǎn)化項目、學生優(yōu)秀實習項目與課外設計項目等完善測試案例庫。目前的軟件測試教學中,我們選擇了一個所在學院使用的本科畢業(yè)設計管理系統(tǒng)作為案例進行了講解,起到了較好的教學效果。
(三)融合軟件測試的方法、過程、工具、案例的教材的編寫
為適應四位一體教學方法,我們自主編寫了軟件測試教材。教材以RUP的四個階段為線,將測試方法與工具分化在不同階段進行介紹,加強了測試管理內(nèi)容。軟件測試理論按照魚骨圖式的組織,例如對于白盒測試技術的介紹,分解為兩章,其中在RUP的細化階段介紹了邏輯覆蓋測試、基本路徑覆蓋測試,在RUP的構造階段介紹了數(shù)據(jù)流測試、變異測試,這種組織安排有利于學生根據(jù)軟件測試過程循序漸進地掌握相關知識。
(四)“方法―過程―工具―案例”四位一體教學方法
該方法基于所修訂的軟件測試教材與測試工具箱、測試案例庫,沿用RUP的四個階段進行教學的安排,在教學中以測試理論與方法介紹為根本,并輔以案例介紹以加深對實際測試的理解,再選用合適的測試工具,具體實施如圖1所示?!胺椒榛⑦^程引導、工具跟進、案例貫穿”的教學將培養(yǎng)學生既具備扎實的理論基礎,又擁有工程實踐能力,符合卓越軟件測試工程師的要求。
三、結語
該次軟件測試課程教學改革圍繞卓越軟件測試工程師的培養(yǎng)目標,注重理論素養(yǎng)與工程能力的雙重提高。教學實踐表明,“方法―過程―工具―案例”四位一體的教學方法,有一個圍繞軟件測試過程的邏輯性強的理論知識體系,輔以工具的訓練,再以實際案例貫穿介紹測試方法與測試工具的應用,學生學習的積極性和主動性都得到了大幅提升,有意識地增加了軟件測試的內(nèi)容,說明學生已經(jīng)意識到了軟件測試的重要性,并能夠在軟件項目開發(fā)中執(zhí)行軟件測試的諸多活動。初步的課程改革取得了一定的效果,筆者今后將對軟件測試適合敏捷等流行的軟件開發(fā)過程進行改造已有的方法,并擴充完善已有的測試工具箱與案例庫,以培養(yǎng)卓越的軟件測試工程師,滿足軟件測試行業(yè)的需求。
【摘要】 軟件質(zhì)量越來越受到人們的關注,軟件測試作為新興行業(yè)有很多不完善的地方。很多從事軟件測試工作的同行處于迷茫之中,如何提高,如何解決測試工作中的實際問題,困惑著每一個人。本文總結了一下個人經(jīng)驗,希望對大家有幫助。
【關鍵詞】 軟件測試 軟件 測試學習 軟件測試工程師
我最初參加測試工作的時候,不知道什么是軟件測試,集成測試和系統(tǒng)測試的概念經(jīng)常混淆, cmm 是什么就更加不知道了。那時候最簡單的開關機也是通過直接拔插電源完成,安裝系統(tǒng)對我來說簡直是有史以來人類的最高技能,對于那些拿著螺絲刀安裝機器的人就認為是宇內(nèi)超級高手,身具殺人于無形之絕世秘技。拿破侖說不想當將軍的士兵不是好士兵,我最初的夢想就是想成為軟件測試的高手,傲視天下。所以不斷偷師,總結經(jīng)驗,自認為掌握了成為高手的幾個秘技,這幾年混跡 “ 江湖 “ 還算無往而不利。不敢獨享,望與吾輩測試人員切磋,早日總結成功密技之大成,助新進人員早日入門,也算不愧對東北活雷鋒的稱號。
第一招 學會利用網(wǎng)絡
剛參加工作面對浩瀚的網(wǎng)絡世界,當時如劉姥姥進大觀園,什么都新奇,什么都想要,從網(wǎng)上下載很多源程序的代碼,軟件技術文檔之類,恨不得把所有的好東西收集到手中,其實有些在他人看起來就是垃圾一堆。當時覺得有了這些 “ 武林秘籍 “ ,成為高手指日可待。最初參加工作由于自己工作努力有幸轉(zhuǎn)為開發(fā),加入項目組后我的習慣還是沒有改,反而變本加厲,手中的資源更加多,上網(wǎng)的時間更加頻繁。
一次項目經(jīng)理分配任務,覺得依靠手中的秘籍加上自己的 “ 聰明才智 “ 很快會完成,不料短短的時間,所有的一切變成了馬奇諾防線。解決問題很慢,思路不清晰,項目經(jīng)理在對我施壓的過程中教會了我終身難忘的一招,學會利用網(wǎng)絡尋找要解決問題的答案,從此 google 成了我的最愛,關鍵字成了我變化的招數(shù)。在軟件測試工作中,他幫我解決了很多疑難問題,解答了很多令我迷惑的地方。也是我?guī)椭鷾y試同行解決問題手段之一,很多軟件測試新手,甚至老手都沒有意識到自己手上就握有 “ 無敵秘籍 “ ,所以只要你耐心找,答案就在身邊。
這里總結一下利用網(wǎng)絡搜索引擎的技巧:
組合搜索
每次搜索某個文件,如果只給出一個單詞進行搜索,經(jīng)常會出現(xiàn)成千上百萬計的匹配網(wǎng)頁。然而如果再加上一個單詞,那么搜索結果會更加切題。
選擇表述內(nèi)容的詞組
一般我在網(wǎng)頁搜索引擎的時候,選擇一些可以表達我要查找內(nèi)容的關鍵詞組,用來縮小搜索范圍,從而找到搜索結果是最好的辦法。運用詞組搜索涉可以先先簡單地輸入一個問題作為詞組搜索,如果仍然找不到合適的,那就用多個可以表達要查詢內(nèi)容的關鍵字進行查詢。
定位信息來源
有的時候用詞組搜索不到或者無法準確表達所需信息??梢杂昧硪环N方法直接到信息源,就是直接到到提供某種信息的站點去??梢杂霉?“www. 公司名 .com” 去猜測某一組織的特點。從而得到所要搜索的信息的主要詞組
其實網(wǎng)絡上還有很多關于搜索技巧的文章,大家可以自行學習。千萬要記住搜索引擎是幫助你成功的有力武器。
第二招 學會動手
參加軟件測試工作后,隨著工作經(jīng)驗的增長自我感覺越來越好。在公司里也逐漸受到同事領導的重視,一次針對公司的新的軟件功能進行測試的時候,像往常一樣 “ 隨手 “ 測試出了幾個 bug ,然后 “ 仔細 “ 的填寫了 bug 單(這個 bug 的現(xiàn)象已經(jīng)出現(xiàn)了很多次了)。這時候測試經(jīng)理走過來,重新復查了一下填寫的 bug 。他在重現(xiàn)我的 bug 的過程中,簡化了我的輸入變化, bug 神奇的又出現(xiàn)了,同樣的現(xiàn)象,他關閉軟件重新變化輸入,擴展出 10 幾個變化后,軟件不動了,內(nèi)存不斷上升。終于他找到了產(chǎn)生軟件的 bug 的原因,然后對我說 “ 尋找 bug 要準確定位,我們開發(fā)團隊是一個整體,時間是等量的,時間不在你身上浪費,就是在他身上浪費。如果測試人員每次發(fā)現(xiàn)的 bug 描述不清楚,并且多個問題潛在的錯誤原因是一個,雖然操作可能稍微有些變化。這樣開發(fā)人員在重現(xiàn) bug 的時候他要調(diào)試跟蹤判斷,很花費時間,而且效率低。如果測試人員發(fā)現(xiàn) bug 的時候多動手可以更加準確的定位 bug 步驟和原因,給開發(fā)人員最精確的步驟和準確的描述,這樣整個團隊才能高效,所以需要大家協(xié)作!。 “ 。
在以后的日子里,每次解決問題的時候我都記得多試驗幾次,多嘗試。網(wǎng)上很多朋友還有同事問我問題的時候,其實他們只是萬里長征就差一步,只要再多動手實驗一次就可以達到目的了。所以多動手,多嘗試。
第三招 思考自己所作的
剛開始入行的時候,總是思考如何做好軟件測試。認為公司的測試流程混亂總是很郁悶,認為自己學不到東西,如何才能測試好產(chǎn)品,常說心動不如行動,以前看到古龍小說中經(jīng)常出現(xiàn)的場景無名小子不斷挑戰(zhàn)高手,總結積累。我總結了有些經(jīng)驗是實戰(zhàn)中得到的,所以不斷嘗試引入新的測試流程然后評估,這個過程雖然很痛苦,但是從中積累了不少經(jīng)驗。這段時間讓我學習到了很多東西,接觸了 iso,cmm ,測試管理工具,自動化工具(因為公司不正規(guī)給了我很多學習的機會,后來到了比較大的軟件公司后,以前的經(jīng)歷給了我更多的發(fā)展機會,因為大公司非常正規(guī)了,公司內(nèi)部人員分工明確,所以能力的鍛煉反倒少了)。由于工作中經(jīng)常寫報告反倒養(yǎng)成了總結教訓的習慣,因為紙面上的東西是永遠也忘不掉的。在寫的過程中可以不斷補充擴展,整個過程是思想升華的過程,當年達摩面壁九年就是融會貫通的典型例子,如果他不是有個思考的過程,他也不能成為一代大家。如果后來不時有人把他的絕技記錄下來,也就不能有后來的少林寺七十二絕技。
所以善于思考,總結經(jīng)驗,也是成為高手之路的不二法決。
第四招 學會利用論壇資源
其實測試新兵和測試高手之間的區(qū)別,往往是不會利用現(xiàn)有資源。在論壇中我們會看到很多新手不斷的提問,但是有很多問題其實都是已經(jīng)別人提過了,或者已經(jīng)有解決方案的。所以經(jīng)常會看到 “測試高手“的身影,并且不提問題,而且還能“鋤強扶弱“,是測試新丁的救命稻草。好像是高手們無所不能,其實摘掉這層耀眼的光環(huán),他們并沒想像得那么厲害,只不過通過自己的搜索找到的答案,然后幫助其他人。當然也有很多人都是通過自學,然后在論壇中交流得到了很多經(jīng)驗,高手其實也是因為善于思考問題,親自動手解決問題。所以動手和利用論壇資源的過程中他們也在不斷提高。
很多時候看到論壇中有人提問,問題描
述不清,很多人看了很困惑。發(fā)貼題目動不動請高手幫忙,救命之類的,好像天下大亂,世界末日。雖然這個題目很招人,但是無法讓那些想幫助你的人幫你,因為題目不清晰,而且高手字樣嚇阻了很多人。其實問問題也是個思路整理的過程,描述清晰,讓人理解清楚,才能望文知意知道你的當前發(fā)生問題的環(huán)境,才能讓那些想幫你的人解決問題,否則給人無從下手的感覺,解決問題效率不高。
第五招 學習和你所測試的軟件產(chǎn)品相關的知識
要想成為好的測試人員,還要了解你要測試的軟件的相關知識。要了解軟件產(chǎn)品的架構是什么樣的。要了解軟件的市場需求,在接觸軟件之初要可以多看看用戶的反饋信息,這些才是用戶最關心的,也是你在測試中需要注意的問題,滿足客戶是最大的需要。但是了解軟件需求之后要學會要多讀些軟件系統(tǒng)的技術文檔,軟件設計文檔,這些文檔可以幫助你了解產(chǎn)品如何工作。還有多看看公司 bug 庫中的問題,這些存在的問題可以幫助你了解軟件產(chǎn)品那些地方存在缺陷,軟件系統(tǒng)那些地方會出現(xiàn)錯誤。軟件是運行在一個大環(huán)境中,如果對系統(tǒng)不熟悉,那么有些問題你不能從一個更廣闊的層面考慮,學習操作系統(tǒng)的知識,有助于你發(fā)現(xiàn)缺陷,定位問題更加準確。比如軟件運行在 windows 或者 linux ,如果你不懂操作系統(tǒng),你就無法建立測試環(huán)境,有些時候時候軟件的組件發(fā)生問題,就是你系統(tǒng)配置造成的,對系統(tǒng)不熟悉,你會把外在原因歸結為軟件本身。所以要學習關于和軟件系統(tǒng)相關的知識,比如編程,網(wǎng)絡,數(shù)據(jù)庫等。不一定你要學習到多好的程度,只是通過這些擴展的知識面,你可以在發(fā)現(xiàn)問題,解決問題上不會局限在狹小的圈子里。
和一切相關的人員交流,不同的交流渠道,獲取消息是不同的,角度也不同。和客戶交流,你會在測試中從客戶的角度發(fā)現(xiàn)問題;和開發(fā)人員交流,你會了解開發(fā)人員怎么實現(xiàn)軟件功能的;和項目管理人員交流,你會知道開發(fā)進度以及遇到的困難。