引論:我們為您整理了13篇軟件測試項目總結范文,供您借鑒以豐富您的創作。它們是您寫作時的寶貴資源,期望它們能夠激發您的創作靈感,讓您的文章更具深度。
篇1
1信息系統軟件測試分析
信息系統軟件測試在不同研發模型中所分階段不同,而區別于不同的研發模型,整個軟件測試過程一般都需要經過測試策劃、測試設計、測試執行、測試總結四個基本活動。測試策劃活動主要進行需求分析,識別軟件測試項、測試所需軟硬件、人力資源等;測試設計活動主要根據識別的軟件測試項設計測試用例,包括手工測試用例、自動化測試用例等;測試執行活動通過手工、自動執行測試,發現軟件缺陷,進行軟件缺陷歸零驗證;測試總結活動對測試執行結果進行整理分析,編寫測試報告。同樣的,基于國產化平臺研發的信息系統軟件測試亦需要經過測試策劃、測試設計、測試執行、測試總結四個活動。1)測試策劃活動進行需求分析、識別軟件測試項依賴于軟件自身需求,其與研發平臺具有無關性,識別測試所需的軟硬件則取決于研發平臺。目前國產化平臺的測試工具也面臨著起步晚、發展時間短的問題,應用于國產化平臺的軟件測試工具種類遠沒有豐國產化平臺軟件測試工具豐富[2]。測試策劃過程中需要識別出可用于國產化平臺的測試軟件是其要解決的重要問題,一方面取決于已有的測試軟件,另一方面取決于信息系統的技術實現。2)測試設計活動所編寫的手工測試用例取決于被測信息系統軟件自身,而編寫自動化測試用例則取決于所使用的自動化測試平臺,不同的自動化測試平臺所適用的軟件類別不同。基于國產化的自動化測試平臺選擇范圍小,且成熟度相比于非國產化平臺并不高。因此測試設計階段所面臨的是被測信息系統軟件的可實現自動化測試的用例覆蓋程度問題。3)測試執行活動一方面是執行測試用例,另一方面還需要對軟件缺陷進行分析定位,對被測信息系統的內存、CPU、網絡、磁盤IO等指標進行監控,其對國產化平臺依賴性較高。國產化平臺的操作系統、數據庫、中間件乃至辦公軟件所提供的分析、監控工具直接影響著軟件測試的執行和軟件缺陷的分析定位。目前,國產計算機環境的應用面、規模相對較小,應對復雜環境時,兼容性、綜合性能、可靠性驗證不充分,缺乏有效的診斷分析工具和測試評估環境[1]。測試執行過程中面臨著如何充分利用國產化平臺所提供的分析和監控工具完成測試執行、如何通過第三方輔助軟件解決國產化平臺自身不具備的功能完成測試執行的問題。4)測試總結活動為測試過程的最后一個活動,對測試執行的結果進行整理分析。對于國產化平臺研發的信息系統,測試總結需要分析前幾項測試活動的結果形成測試報告,還需要對測試技術形成積累,為基于國產化平臺信息系統的軟件測試持續發展提供經驗。圖1為信息系統軟件測試活動圖以及基于國產化平臺進行軟件測試活動的所要解決的關鍵問題。
2軟件測試技術應用
2.1測試策劃
國產化平臺信息系統軟件測試策劃活動所面臨的主要問題是識別測試所需軟件項,應用于項目,需要結合項目自身特點。每個項目的系統架構、軟件開發語言、運行環境等各不一樣,因此在識別時結合被測軟件,從三個方面解決測用所需軟件:開源軟件[3]、商用軟件、自研軟件。圖2所示在項目測試過程中開源軟件、商用軟件、自研軟件選擇比重,其中開源軟件選擇優先,其次可通過自研軟件、商用軟件覆蓋測試所需。1)開源軟件具有成本低、靈活性高、自由的優勢,國產化平臺信息系統識別測試所需軟件項可以優先從開源軟件中選擇,獲取滿足項目軟件功能測試、性能測試、接口測試、安全測試、可靠性測試等測試類型的開源軟件。2)開源軟件在支持方面、文檔方面、穩定性方面不如商業軟件,對于測試軟件要求高的項目可選擇商用軟件進行支撐。商用軟件具有支持度高、日常更新、技術難度低的優勢,采用商用軟件可以避免測試過程中的一些無法解決問題。3)商用軟件所提供的是適用于大多數用戶需求的接口,對于被測軟件,在不同的測試階段、不同測試類型中,存在商用軟件無法實現測試內容的場景,需要項目通過研發專用測試工具以實現測試覆蓋,解決測試軟件問題。
2.2測試設計
測試設計過程中可以通過編寫自動化測試用例代替手工測試的反復操作,自動化測試用例覆蓋率高可以有效地提高測試用例復用率和執行效率。基于國產化平臺信息系統軟件自動化測試在采用的自動化測試平臺上,可以通過不同維度的測試用例設計增加自動化測試用例覆蓋率,即分別從單元測試、接口測試、GUI測試分別設計自動化測試用例[4]。自動化軟件測試用例設計一般遵循圖3所示的三角形用例覆蓋率比例,單元測試與代碼直接相關,軟件代碼改動對單元自動化用例的影響較小,單元測試自動化用例覆蓋率最高,其次是接口測試自動化用例。GUI自動化測試用例實現難度高,且受代碼改動影響大,因此其自動化測試用例覆蓋率最低。國產化平臺信息系統軟件自動化測試平臺缺少QTP、Loadrunner等工具,目前只有少數自動化平臺支持國產化操作系統,如kylinTOP自動化測試工具,除此之外,還可以采用Selenium、Python等實現自動化測試。此類軟件對于GUI自動化測試與非國產化軟件類似,因此國產化平臺信息系統自動化測試用例亦需要遵循圖3的測試用例覆蓋率。
2.3測試執行
在測試執行過程中需要對信息系統軟件缺陷進行分析定位、對信息系統的指標進行監控。信息系統的缺陷分析和指標監控包括兩部分,一部分與依賴的國產化平臺相關,另一部分與信息系統軟件自身相關。與國產化平臺相關的缺陷分析和指標監控可以采用國產化平臺自持軟件,目前國產操作系統、國產數據庫軟件、國產中間件軟件等均具備滿足監控平臺自身指標的工具[5]。基于國產化平臺的第三方測試工具如WGCLOUD、PIGOSS、SugarNMS等可以實現多平臺、分布式監控。表1為這三款工具軟件可支持的國產化平臺以及可用于信息系統軟件測試的監控項。
2.4測試總結
篇2
用戶對軟件產品質量的要求不斷提高,促使軟件企業把提高軟件質量作為增強競爭力的策略。提高軟件質量要素在哪里?可以通過采用軟件設計技術,加強軟件過程管理,實施軟件測試等方法。從提高軟件質量的顯著程度、投資回報率和可實施性等方面比較,實施有效的軟件測試,提高軟件測試的效率,是保證軟件質量的顯著方法。
軟件測試是通過技術、流程、工具、人員以及管理手段,檢測軟件文檔、軟件中間產品和最終產品,查找和報告軟件缺陷、錯誤以及隱患的專業技術。通過跟蹤缺陷、錯誤及隱患的修正過程,確保軟件產品、中間產品和文檔符合軟件工程過程需求和用戶的最終需求。
軟件測試創新之道
軟件測試在國內仍處于起步階段,各種軟件測試的方法、技術和標準都還在探索階段。國內軟件行業規模普遍偏小,缺乏大型軟件產品經驗,開發過程不夠規范,這決定了國內軟件質量和測試行業,必須根據國內行業現狀,確定軟件質量目標和測試策略方法,而不是照搬照抄國外成熟軟件企業的測試方法。
觀念創新
提高軟件質量的決定因素不是軟件測試技術,而是對軟件質量和測試的思想觀念。只有把提高軟件質量上升到企業戰略發展的高度,才能從根本上解決問題。長期以來,國內軟件行業對軟件質量重視程度不足,對于軟件測試的作用認識不夠,造成項目因質量問題造成進度推遲甚至失敗。
為了徹底改變這種被動現象,企業高層管理人員必須從管理思想、資源支持等方面為軟件質量和測試部門提供全力支持。軟件項目經理必須堅持軟件開發和軟件測試并行處理并且互相協調。軟件開發人員重視和配合軟件測試人員。
觀念創新不要僅停留在口頭上,而要落實在具體行動上,通過軟件質量和測試的有效流程進行推動,通過過程改進進行提高。通過有效組織管理,形成“以重視軟件質量為榮,以輕視軟件質量為恥”的工作氛圍。
流程創新
測試流程決定軟件質量。軟件測試如同軟件開發一樣,需要經過收集測試需求、確定測試策略、設計測試、執行測試、分析測試等流程。軟件測試不是軟件開發的最后階段,而是貫穿于軟件項目的整個生命周期。
軟件測試流程既不是僵化的生搬硬套,也不是隨機的增添取舍。軟件企業的質量管理部門和項目開發團隊需要根據公司技術、資源現狀,針對項目的特點和客戶需求,從保證軟件質量、項目進度和測試成本等方面,進行優化設計并且不斷改進流程管理。對于項目周期長、應用領域廣、對質量要求高的軟件,必須制定和遵守嚴格的測試流程。
測試流程創新的目標是在公司內部制定和執行完善的項目質量管理體系。優化項目生產方式,跟蹤和度量生產過程和產品,使得生產過程和各階段產品處于可控制和可度量狀態,保證產品符合客戶的功能和進度需求。
技術創新
軟件測試是一項軟件工程領域的專業技術,而不是簡單的把軟件測試認為隨便找個人運行幾次軟件,就可以發現全部的軟件問題。前文已經提到,軟件測試需求和測試設計是決定軟件測試效果的關鍵因素,因此,加強測試技術創新的重點是在測試需求和設計設計的創新。
在軟件測試技術創新方面,要避免陷入過度追求自動化測試技術的誤區。自動化測試確實可以在某些方面顯著提高測試效率和準確性,但是自動化測試只適合測試軟件的某些方面的質量,80%左右的軟件缺陷是靠測試人員手工測試發現的。
對于某些特別需要自動化測試的軟件特性,需要加強開發軟件測試工具,而不是全部依賴市場上的現有測試工具。這是因為商業工具功能繁多,價格昂貴,培訓和學習周期很長,選擇不當就會造成巨大浪費。
管理創新
軟件測試管理的目標是實現軟件質量、進度、成本之間的最佳平衡。有效的測試管理需要企業管理層、軟件開發團隊、質量保證與測試團隊通力合作,采用計劃、組織、領導、控制等手段,組建高效團隊,制定完善的測試流程,做好測試設計,有效執行測試,加強過程跟蹤,從而順利完成質量保證和測試任務。
測試管理創新的核心是軟件質量和測試的團隊建設,軟件質量和測試是技術密集型活動,團隊的知識結構、創造力和凝聚力是保證測試流程、測試技術充分實施的基礎。質量和測試團隊建設的重點是設置和培養各類技術和管理人才,進行有效交流,形成良好的評估和促進機制。
測試管理創新的另一個重點是測試管理平臺建設。包括構建測試項目管理的集成系統,實現公司產品和項目數據信息的有效管理和順序控制,使項目數據透明化,技術知識有效傳承,項目質量和進度數據化、圖形化。可以根據公司的現狀,購買軟件測試管理的商業工具,也可以內部開發軟件測試管理工具。
軟件測試技術路線圖
如果把軟件測試之道成為測試戰略,要發揮測試戰略的現實意義,需要把測試戰略轉化為測試戰術。測試的“道”與“術”的無縫集成,才能顯著地、持續地、逐步地提高軟件產品質量。實施軟件測試的戰術是一系列過程的組合,涉及測試團隊建設、流程設計、測試平臺、測試管理等多個方面。
測試團隊建設
測試團隊可以是測試部,也可以是測試組。公司規模決定了測試團隊的大小和組織形式。測試團隊建設需要執行兩個原則:第一,測試團隊必須獨立于開發團隊,而不是附屬于開發團隊,實現測試的獨立性和公正性;第二,測試團隊必須具有明確的工作目標,即發現和報告軟件缺陷,推動和確認缺陷修正,協助軟件開發的過程改進,提高軟件整體質量。
軟件測試團隊根據規模可以設置多個職位,每個職位具有明確的崗位職責。例如,測試部門經理、測試項目經理、測試組長、測試架構師、高級測試工程師、測試工程師等。對于剛剛成立的測試團隊,可以一個人兼任多個職位,完成多項測試任務。測試人員的總數應該與開發人員相適應,最好在1:1到1:2之間。
流程設計
測試流程設計必須與軟件設計流程相對應,基本測試流程包括測試需求分析、測試計劃設計、測試用例設計、測試執行、測試評價、測試總結等。
根據軟件需求和軟件設計規格說明進行測試需求分析,測試需求分析的目的是明確需要測試的對象、特征、范圍和方法,從而制定測試計劃,確定測試策略。
測試計劃設計是為了有效配置測試過程、人員和工具,充分利用現有的資源,按照項目計劃進度,組織有效的測試。測試計劃設計的輸出結果是測試計劃文檔,它是指導軟件測試活動的綱領性文檔。
測試用例設計是指導具體測試內容和方法的關鍵內容,如果需要執行自動化測試,還需要依靠測試用例設計生成對應的測試腳本。測試用例設計的輸出結果是不同類型的測試用例,這些測試用例必須以標準、一致的形式設計、評審、存儲、更新。
測試執行是報告軟件缺陷的階段,根據軟件計劃的進度,分配測試內容,構建測試環境,依靠測試用例運行測試程序和程序文檔。測試執行的輸出結果是缺陷報告、測試進度報告等。
測試評價是度量軟件測試執行效率和有效性的過程。測試評價的輸入是測試用例的執行情況,軟件缺陷的報告數據。測試評價的輸出包括測試用例的有效性分析,軟件缺陷的類型和有效性分析等,測試進度和有效性分析等。
測試總結包括測試過程每天或者每周的過程總結,也包括測試項目結束后的測試項目總結。測試總結的輸出是測試總結報告,總體評價軟件質量,指出測試存在的問題,提出改進的方法和進程,總計測試的有效經驗。
測試平臺設計
測試平臺設計包括測試技術平臺設計和測試管理平臺設計。測試技術平臺包括設計測試環境,設計或設置測試工具等。測試管理平臺設計包括測試文檔系統設計、測試版本配置管理、缺陷數據庫設計、測試進度和質量分析系統設計。
測試技術平臺設計需要根據測試計劃的測試內容和測試環境要求,組織軟件、硬件、數據庫和網絡等,這經常是一項較為耗時的工作,同時它影響著測試的正確性,必須盡快在測試開始階段完成,最好采用有效的方法把搭建的測試環境進行備份保存,以便今后可以快速恢復,重復利用。
測試管理平臺設計,影響測試管理的復雜度,好的測試管理平臺可以使測試管理人員,方便地跟蹤、查詢、分析測試進度,評估測試人員的工作績效,評價測試的總體質量。對于測試技術人員而言,可以方便的尋找測試對象和測試文檔,報告和輸出測試結果,共享測試數據,提高測試效率。
測試管理
測試管理關注人員、過程、產品三要素的互動與變化,測試管理包含項目計劃和組織結構管理,測試階段管理,時間、資源和質量管理,文檔管理和團隊管理等。測試部門經理、測試項目經理和測試組長是測試管理的主要執行者,需要與測試團隊成員、開發人員、公司管理人員密切配合。
篇3
2軟件測試過程中的風險應對分析
2.1風險識別與風險量化
對軟件進行項目風險管理,可以在最短時間內得到項目目標,項目風險管理以潛在風險最小化作為目標,軟件測試項目風險管理中包含軟件風險識別、軟件風險量化、軟件風險應對計劃制定以及軟件風險控制。其中,軟件風險識別需要工作人員在軟件測試項目風險管理開始之前進行,并在整個項目執行中不斷完成,軟件風險識別在項目整個生命周期以內屬于連續過程。軟件風險識別包含了風險來源確定、風險產生條件辨別,測試人員要詳細表述風險特征,確定這些風險是否會影響到軟件測試項目的正常運行,對于軟件測試項目風險管理來說,風險識別不是一次就能完成的,而是應該在項目的全過程進行。
2.2風險應對計劃與風險監控
針對風險量化結果,為了降低軟件測試項目的負面效應,測試人員會制定相應的解決措施和技術手段,做好風險管理計劃,完成風險認知,為風險監控提供技術基礎。人們可以使用多種方式作為風險控制方法,利用核對表對項目進行定期評估與凈值分析,風險監控的輸出包含對風險的錯誤糾正和軟件測試項目管理計劃更新,軟件測試項目中發現風險以后對其加以分析,確定相對重要性與影響程度,為來自內部與外部的風險提供標識,對每一種風險進行科學評估,計算出風險發生的可能性與最終結果,對風險進行分類,為風險處理提供可操作信息。在經典風險管理過程中,主要會使用到Boehm、CRM、Leavitt、Boehm等多種模型,使用這種方式很有可能造成人員不足或者成本不夠的問題,測試人員在開始進行軟件項目開發的時候就要對潛在風險進行總結,將所有的風險形成表格形式,并在軟件測試項目生命周期內進行會議討論,更新表格。應當對可能出現的惡劣后果因素進行準確評估,對于當前最緊急的風險進行決定和處理,制定控制風險的基本應對措施,評測和保證風險策略開展的有效性。
3總結
總而言之,人們從第三方軟件測試角度進行軟件測試時,不僅要進行完善的質量管理,還會進行項目風險管理,對風險進行評估與排序,確定不同風險給軟件帶來的影響,探究風險發生概率,進一步保證軟件的質量,降低產品維護費用,提高用戶滿意程度,降低軟件責任風險,提高經濟效益。
參考文獻
篇4
中圖分類號:G642.44 文獻標識碼:A 文章編號:1007-0079(2013)14-0126-02
近年來,隨著中國內需市場的增長和國內外外包企業的合作加深,我國的軟件外包行業得到了迅速發展。軟件測試作為軟件外包的主營業務之一,是加快軟件企業與國際接軌,實現產品國際化的重要手段。隨著軟件開發流程的系統化和規范化,我國軟件企業對軟件測試的需求逐步增大,因此高校計算機專業中的軟件測試人才具有良好的就業前景。
由于軟件測試工作的特殊性,需要從業者不僅掌握一定的軟件技術,同時也要對軟件測試的方法和流程具備相當的經驗。通過高校教育培養出來的計算機專業應屆畢業生,雖然能夠掌握基本的軟件開發技術和軟件測試理論,但是缺乏實際的測試經驗和相應的行業背景知識,離企業的需求尚有一定的差距。目前高校計算機專業中軟件測試教學仍以理論為主,實踐動手能力和項目背景經驗的培養相對不足,這些矛盾導致學生就業時很難適應企業的用人要求,企業也必須對招入的應屆畢業生進行培訓,花費相當的人力和物力。
項目實訓是解決高校和企業之間供需矛盾的有效手段。在日常教學計劃中引入項目實訓,以實際測試任務為驅動,按照企業規范進行流程管理,讓學生掌握測試過程中各階段的技能,理論聯系實踐地接受企業化的鍛煉。通過實訓課程,使學生不但能夠學習到實際測試經驗,而且能夠增強團隊意識,進一步縮小畢業生與職業測試工程師之間的差距。
一、軟件測試項目實施
1.測試項目簡介
本文所述的軟件測試實訓項目是基于校企共建模式,由南京工業大學(以下簡稱“我校”)軟件外包實驗室提供軟件測試的場所和專用的硬件設備,從合作的軟件公司引入相應的測試平臺、管理流程和測試報告文檔的測試項目。
本項目的內容是針對前期開發的教師管理系統進行測試。該系統是教學部門的業務管理支撐系統,測試主要圍繞教師信息的查詢和更新操作的管理。通過對這些功能模塊的測試,增強系統的易用性、穩定性、可配置性,消除信息孤島,進一步提高數據信息的應用水平。
在測試環境搭建過程中,服務器的軟硬件配置要與該系統的實際運行環境保持一致。對于測試計劃、測試方案和測試用例等文檔的修改、更新操作,則采用svn版本管理工具來進行控制。學生可以通過svn服務器平臺,按照進度提交每日的測試用例文檔,并填寫日志記錄測試進度和每天的測試工作。
2.實訓計劃和人員管理
軟件測試實訓安排在我校外包實驗室中進行,采用與企業相同的管理模式集中訓練,由相關教師和企業工程師來指導測試流程。測試團隊的成員來自于我校電子與信息工程學院計算機專業的大三、大四學生,以及對軟件測試感興趣的相近專業的學生。這些學生具備基本的軟件編程能力,并且對測試的基本理論有一定的了解。根據學生自身水平和對項目的熟悉程度,可以將其劃分為不同角色,其中包括開發人員和測試人員。開發人員由原來參與系統開發的部分學生擔任。測試人員可以分成不同的小組測試不同的模塊,每個小組設置一個測試組長,負責測試項目管理,其余組員則負責執行測試用例,各小組都有一名教師作為指導教師,控制模塊的測試進度。整個測試實訓項目安排在假期進行,用時半個月,每天工作8小時。每天早晨由測試組長安排當天的測試任務,并對前一天的測試結果進行總結。在每個時間節點,由指導教師和小組成員對相關測試文檔進行評審。
3.測試項目進程
本項目的實際流程圖如圖1所示,在項目初始階段,擔任開發人員角色的學生敘述產品需求和業務流程,為編寫測試計劃做準備。該測試項目主要分為5個階段:測試計劃制定、測試方案編寫、測試用例設計、多輪系統測試和測試系統報告提交。每個階段都力求達到規范化、細致化的測試目標,同時每個階段都要經過教師和各個組員之間的評審,如果評審通過,可以開始下一階段的工作;如果不通過,則需要完善后繼續評審直到通過。
(1)測試計劃制定。在了解了教師管理系統的需求以后,結合學生的基本情況、系統模塊數量和測試的周期來制定測試計劃。測試計劃要涵蓋測試的范圍和環境、測試人員的管理和測試進度安排。考慮到參與實訓項目的學生缺乏相關經驗,因此測試計劃要重點突出每個測試小組所對應的系統模塊,以及測試流程中每個階段所對應的完成日期。該測試計劃由各組組長和指導教師制定,最后需各小組評審后通過。
(2)測試方案編寫。測試方案是按照系統需求說明書詳細的分析測試的模塊,指導后續的測試用例的編寫工作,重點在于對模塊具體功能的理解和測試對象的分析。在這一階段,首先由擔任開發人員角色的學生來介紹系統模塊的基本功能,并以文檔的形式向對應測試組成員提交;然后由指導教師以具體測試點為例,介紹詳細的測試用例寫法;最后,由各組組長將測試任務分配給組員,各組員在理解的基礎上開始測試用例的設計。測試方案完成以后由各組組長匯總,并在組內進行評審。
(3)測試用例設計。測試用例的編寫是針對各功能模塊測試而設計的一組測試輸入、執行條件以及預期結果,也是本實訓項目的重點內容。在對模塊的特性和功能了解的基礎上,設計系統的測試點,設計時應考慮角色權限、驗證點和測試描述。在設計驗證點的過程中,鼓勵學生展開討論,力求做到無疏漏;同時在測試描述時,可以將等價類劃分、邊界值、錯誤推測等常用方法與書本理論相結合,通過具體的實例加深學生對所學知識的理解。最終的測試用例以Excel表格形式列出,其中包括編號、重要級別、操作步驟、預期輸出和實際測試結果等條目。
(4)多輪系統測試。按照測試用例的具體內容,可以進行多輪的系統測試。根據測試結果,扮演開發人員角色的學生對缺陷進行修改。通過這一過程,不但使學生認識到開發過程中存在的問題,而且積累了開發經驗,為今后規范化的編程打下了基礎。
(5)測試報告提交。通過半個月的實訓,學生經歷了規范化的測試流程,測試報告的編寫是對測試內容的概括和總結。報告的內容主要有以下三個方面:通過對測試結果的分析,得到對軟件質量的評價;總結本次的測試過程,為制定以后的測試計劃提供參考;評估本次測試計劃和測試執行是否符合規范。通過本次實訓,學生普遍體會到從理論知識到實踐的過程,明確了規范化的軟件測試方法,同時對軟件編寫中隱含的錯誤和缺陷也有了一定的認識,為今后的軟件開發打下一定的基礎。
二、軟件測試實訓存在的問題和解決辦法
本次軟件測試實訓基本達到了預期的效果,學生不但學到了規范化的測試流程,提高了職業軟件素養,而且通過互動和交流,發現了教學中存在的一些需要解決的問題。首先,本次軟件測試實訓是針對上一次實訓開發的系統,離企業的實際系統測試尚有一些差距;其次,參與的學生缺乏實際經驗,對軟件測試認識不足,導致測試方案和測試用例編寫不夠規范、完善;另外,相應的管理需要加強,在實訓過程中存在遲到、早退以及缺席的現象,從而影響了測試進度。
針對以上問題,在今后的實訓過程中,測試項目要盡量切合企業的實際需求,同時在測試方案和測試用例的評審中,要加強教師和學生的溝通,強調測試流程的規范性,可以多鼓勵高水平的學生帶低水平的學生。另外,可以采取企業現行管理方式對實訓進行管理,如引入考勤制度、評審制度等。
三、結語
軟件測試是我國軟件產業高速發展中需求缺口較大的一個行業,培養具有相關經驗和符合企業需求的軟件測試人才是目前高校計算機專業需要解決的核心問題之一。本文通過研究軟件測試實訓項目,探索了軟件測試專業人才的培訓方式以及在此過程中遇到的問題,對研究校企聯合的人才培養模式具有重要意義。
參考文獻:
篇5
Key words: software systems;testing;safety;quality;problems;influence;management
中圖分類號:TP311 文獻標識碼:A 文章編號:1006-4311(2014)19-0204-02
0 引言
隨著軟件市場的發展越來越成熟,人們對軟件作用的期望值逐漸增高,就使得人們將關注點轉移到軟件的質量和功能的可靠性上,因此軟件產業在中國市場產品測試領域有著嚴重的不足。我們不得不承認,國產軟件市場相對國際先進的軟件來看,無論在質量上還是成熟度上都存在著一定的差距。盡管國外軟件也存在不少錯誤和漏洞,但是很少存在由于低級失誤或大意而出現的軟件產品質量問題。但是國內由于低級錯誤而造成的嚴重產品質量問題卻時常發生,為了改變中國軟件產業的前途和命運必須提高軟件測試水平。因此,軟件測試對軟件產品質量、控制成本、軟件可靠性、企業的競爭力等方面起著重要的作用。
1 什么是軟件測試及軟件測試的目的
隨著軟件規模的不斷增大和軟件復雜性的日益增加,軟件測試也顯得越來越重要,軟件測試工作是非常講究策略和方法的工作,需要我們努力學習達到先進領域的頂峰。軟件測試就是在受控制的條件下對系統或應用程序進行操作并進行評價操作結果的一個過程,其中所謂控制條件主要就是兩種,即正常條件與非正常條件。而軟件測試主要是為了進行“探測”,通過探測發現軟件自身的毛病,加以改進。軟件測試貫穿于軟件開發的整個周期,其中軟件的規格說明書和結構設計的程序編碼等,都屬于軟件測試的對象。進行軟件測試的主要目的就是為了保證軟件產品的最終質量,因此,我們在進行軟件開發的過程中,就需要對產品的質量進行控制,以避免出現不合格的產品。
2 加強對軟件測試工作的項目管理
2.1 軟件測試的關鍵問題 軟件測試的關鍵問題就需要我們從以下四個方面進行分析:首先,測試由誰來執行。因此軟件產品的開發設計通常由軟件開發者和軟件測試者兩種角色組成。一般開發者主要通過開發形成產品,然后由測試者來檢驗產品中是否存在缺陷。通常的測試工作是由開發者負責完成自己所開發的代碼單元測試,然后測試者承擔系統測試。其次,測試什么。通常測試經驗表明,程序中的故障,并不一定是由于編碼導致的問題,所以為了排除故障就要追溯到前期的工作。但是很多時候,軟件需求分析、設計和實施階段是軟件故障的主要來源。第三,什么時候進行測試。軟件進行測試可以在開發中進行測試,可以在各個模塊完成一個整體的程序后進行測試。最后,怎樣進行測試。對軟件進行測試就是根據軟件的功能和規范說明以及程序的實現,就需要我們進行各種測試,然后生成有效的測試用例,對軟件進行測試。
軟件測試的目的就是為了證明程序中是否有故障存在,以此找出解決的問題,所以在進行測試的時候,要有周全的計劃,這樣才能從軟件中找出缺陷和錯誤,然后通過發現的問題進行處理。軟件測試的原則就是盡早并及時測試應用軟件,然后由專業人員進行軟件的測試,測試用例應完整完全,嚴格執行測試計劃,保存測試的分析報告以備今后應用。
2.2 軟件測試方法管理 軟件測試的方法主要有白盒測試法和黑盒測試法兩種。其中白盒測試法又稱之為結構測試、基于程序的測試和邏輯驅動測試,白盒測試法大部分用于單元測試中。而黑盒測試法又被稱為功能性測試、數據驅動測試或給予規格說明的測試,多數用于獨立測試中,并不考慮程序結構和內部特征,只在于檢查輸入與輸出之間的關系是否符合要求。
測試信息流程,測試過程中需要三類輸入:
①軟件配置:包括軟件需求規格說明、軟件設計規格說明、源代碼等。
②測試配置:包括測試計劃、測試用例、測試驅動程
序等。
③測試工具:為了提高測試效率,就需要我們采用測試工具以支持測試的工作,主要包括測試數據自動生成程序、驅動測試的測試數據庫等。但是測試工具不是萬能的,工具只能解決工具的問題,使用工具的畢竟是人。工具在解決效率問題上是非常擅長的。這個就類似我們看的武俠小說中寶劍和劍譜的關系,沒有武功心法,你拿到寶劍也沒用。
軟件測試的周期是測試改錯再測試再改錯這樣一個循環的過程測試終止的依據主要有五類標準:
①測試超過了預定時間,則終止測試。
②執行了所有的測試用例,但沒有發現故障,則終止測試。
③使用特定的測試用例設計方案作為判斷測試終止的基礎。
④正面指出終止測試的具體要求,即終止測試的標準可定義為查出某一預定數目的故障,如規定發現并修改了多少個故障就可以終止測試。
⑤根據單位時間內查出故障的數量決定是否終止
測試。
3 小結
綜上所述,軟件測試的事務性操作較多,但是進行這些操作,我們需要有一個良好的心態去對待。其中良好的團隊合作才能保證開發過程的順利進行,在工作過程中還需要我們進行總結,對于問題我們需要有則改之,無則加冕。因為軟件開發是一件比較辛苦的事情,我們只有在工作中對經驗多總結,才能找到符合自己的方式方法,才會在工作中事半功倍。在軟件開發中應掌握其中蘊含的軟件測試流程思想,并有效的將測試管理融入到項目管理中,優化軟件開發流程,提高產品質量。
中國軟件公司的規模和產品的開發層次在不斷的完善和發展中,因此很多公司開始謀求國家軟件的訂單,因此外包業務成為軟件行業一個新的增長點。但是由于國內的軟件測試水平與國外用戶的要求相差甚遠,就需要我國軟件行業無論是在人力、管理還是組織或技術上都有大幅度的提升,重視軟件測試,使之能夠與世界先進的軟件公司測試標準接軌,這也是我國軟件能夠邁出國門的重要前提前提因素。
參考文獻:
[1]孫俊若,席曉強,葉波,林潔.機載雷達軟件開發全周期測試技術研究[J].現代雷達,2010(01).
[2]徐宗云,王世偉.基于SOA架構的PDM系統與制造管理系統集成設計與實現[J].冶金自動化,2010(01).
[3]祝莎莎,陳勇,齊永陽,陳戈.虛擬現實軟件VRGIS的項目進度管理研究及應用[J].中國高新技術企業,2010(01).
[4]斌斌.掙值分析法在信息系統項目中的應用[J].網絡與信息,2010(01).
篇6
0 引言
軟件測試形成了一個新興的行業。軟件測試的工作貫穿于整個軟件產品生產過程的始終,是保證軟件質量的有效手段。軟件測試課程是軟件工程專業的必修課程之一,是一門理論性和實踐性都很強的專業課。該課程對于人才的培養目標是:掌握軟件測試和軟件質量的基本理論、常用的測試方法和自動化測試工具,能夠編寫測試計劃、設計測試用例、完成軟件初步測試。
目前軟件測試行業人才嚴重不足。據企業專職軟件測試人員分布調查,27.5%的企業目前沒有專業的軟件測試人員,43.5%的企業軟件測試人員的數量在1~10人之間。為了適應行業人才需求,國內高校紛紛開設軟件測試課程。但軟件測試在國內高校中尚屬一門新興的課程,缺少對不同開發方式和應用場景的軟件測試方法介紹,學生對軟件測試過程缺乏完整的認識,學習主動性不高,甚至認為軟件測試是一門文字性課程。如何進行軟件測試教學方法調整以適應業界需求已成為一個亟待解決的問題。
1 軟件測試課程教學存在的主要問題
1.1 學生學情分析
軟件測試是對軟件形成過程中的文檔、數據和程序等內容進行測試,而不僅僅是對程序進行測試,這需要學生對軟件工程的基礎理論,系統的分析設計,軟件的開發技術等有一定的了解。
在還沒有完全理解軟件工程相關理論時,就開始進行軟件測試課程的學習,會導致學生對軟件測試理解的偏差。例如,認為軟件測試就是找出軟件項目中的錯誤,是簡單而枯燥的工作,因而只重視開發技術的培養,不重視甚至忽略測試技術的掌握。
1.2 教學材料分析
軟件測試方面的書籍大多是翻譯的,而且多是培訓用書或介紹軟件測試工具的書,而能夠滿足高校軟件測試課程的教材較少。在當前市面上的軟件測試教材中,大部分也只是闡述空洞的理論,附加簡單而又陳舊的工具介紹,這些理念和工具很多已經被業界淘汰,這樣的教材難以適應當前市場對軟件測試人才的需求。
軟件測試工具較多、范圍廣、不易把握重點,而大部分測試工具如:LoadRunner、WinRunner、JUnit、C++Test等都是英文版本,工具書較難讀懂。教學過程中沒有相關的軟件產品供學生測試,以驗證所學的理論,達不到理想的教學效果。
1.3 教學方法分析
傳統教學手段是以課堂教授為主的“灌輸式”教學。教師授課時主要是在分析一門課程知識結構的基礎上,循序漸進地講授一門課程的知識點,學生按部就班地學習知識點。傳統教學法過于理論,學生往往在學了一堆理論知識后對如何測試實際項目還是很茫然。雖然傳統教學法在某些教學環節也會給出一些實例或小項目,但是對于整個課程來說,這些實例或小項目是孤立的、彼此沒有聯系的,以至學生掌握的知識也是零散的,不系統的,缺乏對課程的整體把握。
1.4 考核方式分析
課程考核是課程教學過程中的重要一環,是檢測和促進學生學習效果的重要手段。目前學生考核體系基本以閉卷形式的終結性考核成績為主,以考勤、課堂表現、作業等組成的平時成績為輔的考核方式。這種方式存在的問題主要是:以期末考試成績為重,考核內容相對片面,注重的是軟件測試基礎理論知識,對軟件測試應用知識的能力考查不夠,過分注重書本知識而忽略了軟件測試綜合應用能力的整體考查。
2 基于項目驅動的軟件測試教學法探索
欲改善上述局面,就應結合學生的專業特色,在教學過程中以實際工程項目為主線,把軟件項目的整體思想納入到本課程中來,讓學生在學習過程中積累項目測試經驗,掌握項目測試的流程,增加學生對課程目的性的認識,提高學生的積極性。
項目驅動式教學法是一種建立在建構主義學習理論基礎上的、有別于傳統教學的新型教學方法。建構既是對新知識的理解與掌握,同時又包含對原有經驗和知識的改造和重組,綜合形成新的知識建構。該方法提倡以學生為中心的學習。在整個教學過程中教師起組織者、指導者、幫助者和促進者的作用,教師利用情境、協作、會話等學習環境要素充分發揮學生的主動性、積極性和創造性,最終使學生有效地掌握當前所學知識。
2.1 軟件項目前期準備階段
項目是項目驅動教學的核心,整個教學過程都始終圍繞項目展開。項目設置的好壞將直接影響到教學效果,因此在設計項目上應注意以下幾點。
2.1.1 項目具有典型性
項目教學法中應選擇以解決身邊的現實問題為背景材料,從熟悉項目著手能充分激發學生的學習熱情。項目能覆蓋學生已經學習過的知識點,如:軟件工程的基礎理論,系統的分析設計,軟件的開發技術,從源頭上保證知識的完整性。
2.1.2 項目規模、難度適中
項目教學法中選擇的項目規模和難度都應適中。如果項目規模和難度過大,軟件測試用例的設計難度大,學生不容易完成。項目規模和難度過小,則涉及的知識點少,不能反映學生對軟件測試用例設計的理解程度。因此,設計的項目應保證學生通過努力能夠完成,這樣可以樹立學生完成任務的信心,充分調動學生的積極性和主觀能動性。
2.1.3 項目規范
由于軟件測試是對軟件形成過程中的文檔、數據、程序,以及所有相關文檔進行測試,所以被測軟件應該是按照軟件工程思想設計開發的,每個階段的工作都應當在文檔中體現出來,文檔撰寫有嚴格的標準和規范。
項目來源:
途徑1:所在學院的每門課程都有多名教師建立的課程群,測試案例可以由教授面向對象程序設計、綜合課程設計、系統分析與設計等課程的教師提出要求,選擇典型的作品充實案例庫。
途徑2:從畢業設計中選擇,大四的學生都要作畢業設計,教師可以從其提取一些典型系統,充實案例庫。
途徑3:來自學生科研項目,每年都有大量的學生申報科研項目,教師可以收集其優秀作品,充實案例庫。
途徑4:來自校企合作項目,教師在和企業合作開發項目時,在合同允許的情況下,將開發系統作為實際案例,充實案例庫。
2.2 基于項目驅動的軟件測試教學法實施
基于項目驅動的軟件測試教學法實施是在學生已完成軟件系統分析與設計的實踐,并有一定的編程能力的基礎上設計的,涉及兩種活動流:教學流和測試流。
⑴ 教學流
由于軟件測試課程的知識點前后關聯關系不大,教師在教學流過程中,不必在講清楚課程的基礎知識和基本技能后再進行項目的教學,可直接面對具體任務進行教學。在教師帶領學生分析解決具體項目的方法時,將相關聯的知識點串聯起來,讓學生在學習各階段的理論知識同時,完成軟件相應的測試活動。
基于項目驅動的教學流按照項目測試流程大體可分為三個階段:軟件測試基礎、軟件測試技術和軟件測試管理。
第一階段,學生主要進行部分軟件開發和相應產品的靜態測試。在開發的過程中通過規范的開發文檔和測試文檔,給學生展示單元測試、集成測試和系統測試的密切關系,讓學生深刻認識到軟件測試是緊密伴隨軟件開發過程而進行的活動。
第二階段,主要進行測試設計和實現。軟件測試中對具體項目常常有多種測試方法,教師可只講解其中最實用的方法。其他方法的應用作為討論、實驗、課外作業的形式由學生完成,讓學生在完成項目實踐的過程中學習知識、解決問題、提高技能。本階段的教學應只包括對重點教學內容的講解,其過程應該精練,以便為學生學習提供廣泛的空間,為學生順利完成項目打下良好的基礎。
第三階段,主要進行測試管理和報告。通過測試用例管理工具、案例以及規范的軟件測試報告的介紹和展示,讓學生深刻認識軟件測試需要規范的測試管理過程,軟件測試中測試需求、測試用例、測試業務組件、測試計劃、測試執行、測試結果、缺陷都需要進行合理的規劃和管理。
⑵ 測試流
基于項目驅動的測試流是由教師給定多個項目,并提出測試要求,教學過程中將團隊測試的思想貫穿始終,將學生分成若干小組,以小組為單位完成項目測試。每個小組由1個項目組長、1個測試組長和3個測試組員構成。小組內部責任明確,選擇有較強實踐能力和溝通能力學生擔任項目組長,負責制定測試方案、任務分配和人員協調工作。選擇有較強學習能力和技術能力學生擔任測試組長,負責分析軟件需求、獲得測試需求、制定測試策略方案、確定測試方法。小組內每個學生必須完成最基本的任務,即測試用例的設計、編寫、執行和維護等各項任務。
測試流執行過程中,學生探究性地學習相關的知識和技能,在知識運用中掌握實踐技能。通過任務的實施和完成,讓學生體驗到知識應用的成就感,增強學習的積極性,促使學生更加主動地、探索性地學習相關的知識和技能,使知識技能的掌握更加牢固。測試流執行過程中,教師為項目組提供相關的學習資料資源,引導學生有目的性、有針對性地學習,同時關注學生開展項目的全過程,嚴格要求按照項目的具體實施流程進行,比如軟件測試項目必須按照測試計劃、測試設計、測試執行和測試結果分析來進行,每個階段的工作必須撰寫規范的技術報告。
測試流的最后階段,教師組織各測試小組進行課程設計答辯。答辯時,組間相互評價,從文檔規范性、測試方法的正確性和有效性、測試技術應用的廣泛性等方面選出最優測試小組。最終經過教師對學生單人考核,結束本次測試流教學。
3 結束語
本文針對軟件測試課程教學中存在的問題,提出采用項目驅動的教學模式,通過教學流、測試流兩種活動流,將軟件測試理論知識融入到實踐活動中。該教學模式打破了傳統,激發了學生的學習興趣,有利于學生對測試過程形成一個整體認識,符合軟件工程系統化思想。由于軟件測試相關理論還在不斷完善,實驗理論、實驗方法手段、實驗技術正在飛速發展,這就需要我們在教學過程中不斷地探索、總結、完善軟件測試教學的內容和方法,進一步提高課程的教學效果和質量。
參考文獻:
[1] 龔宇輝.軟件測試課程教學改革研究[J].教育與職業,2010.24:
130-131
[2] 張向宏.軟件測試理論與實踐教程[M].人民郵電出版社,2009.
[3] 聶長海.關于軟件測試的幾點思考[J].計算機科學,2011.38(2):1-3
篇7
1 軟件測試中的質量問題及對進度的影響
在軟件測試過程中,影響質量的因素非常多,比如代碼的行數多少,它與最終的測試質量上反比的,代碼行數越少,測試質量就越高,測試的時間充分,測試的質量就越高。測試時間壓力對最終的測試質量影響非常大。工作人員的經驗水平還有很多其他因素都會對質量產生影響。質量有問題,就會影響整個工程的進度,所以為了保證質量就要對其采取措施。
1.1 軟件測試師的責任意識
作為軟件測試師而言,自身的技術水平與職業素養,對軟件測試的質量和進度會產生較大的影響。良好的職業技術水平能夠保證進行軟件測試的時候按照規范要求進行,對存在的問題能夠及時的發現,及時的處理,避免了由于自身技術不足造成的測試事故,因此,軟件測試師應該不斷的提高自身的職業技能和素養。
1.2 工程化的軟件測試管理
根據瀑布模型對軟件開發過程的階段劃分:“需求分析概要設計詳細設計編碼”。然后以此為參照對軟件測試予以劃分,從而有了相應的測試需求調研、需求分析提取、設計以及用例編寫等重要階段。然后對各階段建立相應的測試工作產品基線。在實施下一項工作階段之前,需要評審之前各階段的產品基線,確認合格后則可繼續下一工序。軟件測試的這種工程化管理保證的測試設計方法的全面、合理,測試覆蓋的全面性,同時也保證了測試中各階段產品的質量。要得到良好的軟件測試質量,需要建立規范的測試過程,從而保證測試結果的一致和質量。規范的軟件測試過程的第一步是劃分測試階段,各階段的測試如圖一所示。
在軟件測試工作當中,以所評測軟件的研制任務/需求和本次軟件測試需求之間建立一個追蹤關系,從而保證測試能夠覆蓋軟件需求文檔的規定需求;此外,和以往的項目經驗相結合,對文檔中沒有出現但是用戶實際需要的部分隱含要求予以補充,并編制成相對全面的測試需求說明,從而實現測試能夠滿足覆蓋的全面性。
1.3 軟件測試過程的監督
在實際的軟件測試工作當中,各軟件測試師之間是存在一定的差距的,如項目工作經驗、專業技術背景等。為了保證測試的質量和進度,以及各測試項目組測試結果的一致。那么就需在測試中實施監督制度,軟件測試師在監督制度下,從而實現高質量的軟件測試。軟件測試的各個環節中,分由各環節的軟件測試師進行測試,這個過程不僅僅是只進行軟件測試,還要進行監督,軟件測試師要對自己的測試范圍進行嚴格監督,防止將存在的問題遺漏掉。彼此之間也要互相進行監督,目的在于提高軟件測試的質量和進度。
2 軟件測試中的進度問題及對質量的影響
針對軟件測試的進度問題,業內對此有過專門的研究分析和總結,在時間規定上有很多項目要求測試時一天代碼走查量要少于300行,因為現在軟件研發時間被大大壓縮,所以在測試階段的時間就隨之更少,因為時間不夠,對整個開發和測試活動的質量影響后果都特別嚴重,導致不能充分地進行測試要想更好地保證測試質量,就一定結合測試軟件的規模來合理安排,不能因為測試的進度不合理,而影響了質量,才能滿足測試的目的。因為現在我國的軟件研發中一個最重要和常見的問題就是進度跟不上,而為了保證進度,而采用減少時間的方法,因此對質量產生壞的影響。
在軟件測試工作當中,有效的階段評審能夠保證測試進度的可行性與合理性;測試文檔的規范性、正確性和完整性;滿足軟件測試需求覆蓋的完整;合理全面的測試方法;保證測試用例的充分性、可行性以及正確性;最終實現測試結果的正確性和真是性。針對軟件測試各個基線或關鍵階段的轉階段評審的工作內容有測試的計劃、方案;測試就緒和總結等等。
軟件測試過程中的重要手段是引進過程質量保證,對測試產品建立“互審、組審、評審”的三審制度。即就是對整個測試過程中的所有測試工作產品均建立三審制度,如工作計劃,測試質量保證計劃,測試需求規格說明,配置管理計劃,測試說明、用例設計說明以及測試報告等等。編寫完測試工作產品后,將測試工作產品先由本組軟件測試師進行相互檢查、審查,經檢查確保無誤后再進行測試組的內部會審,之后再提交正式評審。
3 軟件測試中質量和進度達到雙贏
在整個軟件設計應用過程中,其最基本的前提條件是質量保證。故軟件測試過程中,測試質量也是軟件測試的重中之重。作為軟件測試師,在軟件測試設計過程中首先要明確測試目標,也就是要保證測試對象符合用戶的使用需求。只有明確了測試目標,才能夠為下一步的軟件測試提供便利。質量是整個測試過程中的關鍵,只有保證了測試質量,才能夠更深一步的提高測試進度。隨著當前信息技術的快速發展,各軟件的更新速度也在逐漸加快,這就無形的對軟件測試進度有了更迫切的要求。軟件測試的進度是通過測試計劃的控制來實現的。對于測試進度的提高,其關鍵是在測試設計過程中要有適當合理的人員配備以及測試各階段的工作安排,只有在完善的測試計劃上,才能夠進一步的提高軟件測試的進度。實際上,軟件測試是存在一定的風險的,因此需要加大對測試風險的排除,一旦發現風險,則需要以最快的速度進行人力協調,從而保證軟件的測試進度。下面用兩個例子說明:
如果在某一個項目當中,我們采取valgrind來對內存錯誤進行自動檢測,并且在一定時間內檢測出了很多錯誤。若是不采取這種方法,相同的錯誤就要浪費更多的時間來尋找,所以只需要采取更科學有效的技術測試的質量和進度就可以達到雙贏的結果。再比如我們用兩個工作人員來做行設計需求的評審,發現了很多的錯誤,它們會使后續開發引入更多的bug。但是如果用靜態測試的方法來檢測,缺陷消除就只需要幾人日的工作量,它比傳統的方法省時省力,效果更好。
4 結語
軟件測試的目的是利用測試過程中對發現問題,并對問題進行處理,從而實現增強軟件質量的目標,是一種確保軟件產品可靠性與良好質量的關鍵措施。作為軟件測試師而言,應該按照軟件測試規范要求進行軟件測試,通過改進質量活動的生產率,既提高質量,又能縮短研發進度。只有這樣,才能在測試軟件的時候取得質量和進度的雙贏。
參考文獻:
[1]鄭羽,龔懿.軟件測試質量的影響因素分析[J].計算機應用,2010(12).
[2]張洪春.基于質量屬性的軟件測試力系統分析架構[J].微型機與應用,2011(19).
篇8
1 軟件測試外包人才需求狀況
當前,軟件產業已經成為國際競爭的焦點和各國競相發展的戰略性先導產業。早在2007年,教育部等部門出臺的《關于進一步加強國家重點領域緊缺人才培養工作的意見》,將軟件等確定為12個國家重點領域緊缺人才培養。而在軟件行業中,為了提高軟件質量,降低軟件開發成本,分散軟件外包風險,軟件測試就成為重要推動力。但軟件測試業卻面臨著自身的嚴峻考驗——人才緊缺。據前程無憂招聘網統計,國內120多萬軟件從業者中,真正能擔當測試職位的不足5萬,人才缺口已超20萬并向30萬大軍挺進,并隨需求逐年增長。在國外,一般軟件測試人員與軟件開發人員的崗位設置比例是1:1。軟件測試人才需求量的加大,除了受產業先行的波及外,長期以來業界對軟件測試的不重視,導致高校未有效開展軟件測試人才的培養,出現教育滯后。教育滯后體現在多方面,包括專業設置、人才培養模式、人才培養方案的滯后與不協調等。
2 軟件測試職業發展及能力需求分析
2.1 軟件測試外包的特點
隨著軟件產業的發展,軟件產品的質量控制與質量管理正逐漸成為軟件企業生存與發展的核心。幾乎每個大中型IT企業的軟件產品在前都需要大量的質量控制、測試和文檔工作,而這些工作必須依靠擁有嫻熟技術的軟件測試工程師這樣專業的人士來完成。單獨設立測試部門,對測試人才有強烈需求的企業大多是規模較大的一些IT企業,外資企業居多。而一些企業為了降低軟件開發成本,專注于核心業務的發展,或因測試力量匱乏,往往會把軟件測試工作外包給專業的測試機構來完成。軟件測試外包的特點,一是涉及行業多,知識面廣。二是測試團隊比較大。三是接觸到大項目的機會比較多,軟件測試的類型包括行業應用軟件的測試、本地化和國際化測試、嵌入式軟件測試等。在行業軟件中,以手機、家電嵌入式軟件為代表的通信行業軟件和汽車、電子行業的中間件成為具有潛力的軟件外包領域。所以軟件測試外包對測試人員的素質提出了更高的要求。
2.2 軟件測試職業發展及能力需求分析
根據軟件測試職業崗位與工作內容的分析,綜合學院、企業、培訓機構專家訪談結果,網絡資料查詢調研結果,不同行業、不同企業同一崗位,其崗位工作任務不同,職業能力需求的側重點也不同。同一職業崗位在不同的行業領域對知識的要求也不同。按照軟件測試為崗位主線,通過對不同行業企業所需人才崗位工作職責、能力知識需求進行系統的分析與研究,總結提煉出軟件測試外包專業畢業生踏入工作崗位從初級測試工程師到成長為有豐富工作經驗的測試項目經理所具有的能力與素質要求。
初級測試工程師的工作職責是按照軟件測試方案和流程對產品進行功能測驗;檢查產品是否有缺陷;報告和跟蹤缺陷及進行驗證。其能力素質要求是熟悉常用的軟件測試方法、軟件工程知識;熟悉常用的軟件開發環境,編程工具;有良好的英語閱讀能力,具有良好的溝通能力。
中/高級測試工程師的工作職責是設計測試用例;搭建測試環境;根據測試設計對產品進行性能、功能等全面測試;測試工具等的開發、撰寫測試報告。其能力素質要求是掌握軟件測試原理流程、方法與規范;熟悉測試工具;熟練地編寫測試腳本,能夠進行缺陷分析及預防。具有較強的文檔編寫能力;較強的學習能力;高度的責任心,較強的溝通能力。
測試組長及測試主管:設計測試計劃及進行測試項目的管理;項目及測試流程和工具的選擇及優化;測試項目質量和進度控制。其能力素質要求是有一定的軟件測試經驗;能夠獨立完成各類測試任務;具有較好的解決問題的能力;有一定的分工協作能力。
軟件測試項目經理:構建測試團隊及進行測試團隊的管理;制定項目測試方案和測試計劃;協調測試資源,并對各種資源進行計劃、分工和管理;測試項目的質量及控制。其能力素質要求精通軟件測試理論、軟件測試管理和自動化測試技術;熟悉軟件測試開發和測試平臺、自動化測試與性能測試工具;較強的測試組織管理能力、溝通協調能力;有流利的英語讀寫表達能力;善于團隊合作,執行能力強。
3 構建并實施一站式人才培養模式
改革現有的軟件外包測試人才培養落后狀況,探索并實踐新型人才培養模式成為軟件測試外包人才培養的重中之重。煙臺職業學院對此作了多方面的探索與實踐,構建并實施一站式人才培養模式,為軟件測試外包人才規模化培養積累經驗。
3.1 軟件測試外包專業人才培養目標
根據企業的人才需求特點,學院、培訓機構、企業三方共同確定的高職軟件測試外包專業的培養目標為:培養掌握計算機基礎、軟件測試專業知識、熟悉軟件測試的基本方法、流程和規范,了解服務外包行業知識、發包方文化、商務禮儀,能利用測試工具對軟件產品進行功能和性能測試,設計和維護測試系統,對測試方案可能出現的問題進行分析與評估,具有軟件編程能力及軟件工程應用能力,可從事軟件外包及服務外包企業軟件測試、運行、維護及質量管理等崗位工作,具有較強的外語應用能力,良好的溝通能力、協調能力和語言表達能力的技能型人才。
其崗位的主要業務范圍是: 依據需求文檔及設計文檔,編寫測試用例;依據測試用例執行測試,完成產品的手工測試、集成測試與系統測試,反饋跟蹤產品BUG及用例缺陷;根據測試計劃,搭建測試環境; 測試工具/系統的研究和應用。軟件測試專業可考取的證書:計算機等級考試四級軟件測試工程師、ISTQB國際軟件測試工程師(初級)。
3.2 一站式人才培養模式內容
經過多年的實踐與總結,構建了以政府為引導,實行與培訓機構聯姻、與企業合作的一站式人才培養模式,完成畢業即就業的角色轉換。
政府引導:以我院牽頭成立的煙臺市服務外包職教集團為平臺,與當地政府、服務外包園區建立框架性戰略合作關系,根據政府出臺的優惠政策,提供的各種信息資源,通過學院與企業及產業園區的互動,形成校企雙方人力資源的可持續性需求供給與輸出。由政府協調當地服務外包企業,與學院建立緊密型的人才培養合作聯盟,聯盟單位派員參與專業建設指導、人才培養,并作為學院學生的實習實訓基地。
一站式培養的關鍵是學院通過與知名培訓機構、與企業實行三方合作,通過協議等約定方式,按企業所需的人才數量與規格,采用“聯合招生、委托培養、定向就業”的形式,實現人才培養的直接輸入與對口輸出。“聯合招生”指三方共同協商確定學生來源、招生數量、招生方案;“委托培養”指招收的學員全部在學校學習、在培訓機構實訓,培養目標受企業委托進行;“定向就業”指學生培養結束經過綜合考核評定,并參加由工信部全國注冊服務外包專業認證中心設置的面向服務外包產業的專業認證項目,獲得工信部相關技術等級認證,根據認證等級,由合作企業正式錄用為公司員工,安排到合適的崗位就業,不能直接就業的可推薦安置到合作聯盟單位或由合作企業、培訓機構推薦到其他單位就業。
3.3 課程建設及實施路徑
課程體系的構建和課程建設是人才培養中的關鍵因素。服務外包軟件測試專業課程集服務外包知識課程群、信息技術專業課程群、軟件測試專業課程群、管理課程、專業外語課程于一體,著力培養復合型軟件測試外包人才。按照課程之間的邏輯順序和人才職業成長規律安排課程。實施中采用分段式安排,教學團隊專兼教師合作授課。部分課程安排成為選修課,學生可以根據自己的就業意向和興趣選擇學習。圖1為主要課程框架體系圖及實施路徑。
技能儲備階段構建完整的工程知識體系。利用案例和項目強化學生對于各種知識點的理解,并通過實踐訓練達到一定熟練程度與規范性,完成基本知識的積累及基本技能的訓練。校企各有側重地承擔教學任務,通用專業基礎課程及其相關實踐課程由校內專任教師承擔。專業核心課程及相關實訓由企業人員承擔。時間安排為第一到第四個學期。
技能提升階段主要是針對外包項目的仿真實訓,建立學生的項目工程思想,根據項目分工完成工作任務,使學生充分演練項目中的多種職業角色,具備企業要求的基本職業素質。該階段的教學任務主要由企業人員在校內實訓基地完成,專任教師輔助教學。時間安排為第五學期的前半學期,同時開展軟件測試等級認證培訓。
崗位實訓階段,由仿真項目實訓逐步向真實產業外包項目實訓轉變。此階段根據學生的水平,將學生編入各項目組,參與到真實項目。通過完成外包項目,感知企業文化,熟悉工作環境,接受企業的管理,達到實戰訓練的崗位能力要求。這一階段的培養任務主要由企業人員承擔,專任教師協助輔導,企業工程師擔任項目經理。該階段的實訓任務主要在培訓機構完成,時間安排為第五學期下半學期。本階段完成軟件測試技術等級認證。
頂崗實習階段是根據學生的職業特長及發展需求,安排學生到合作企業實習,根據學生的水平及實習企業的用人計劃,成績優秀者可直接與企業簽約就業,學生的實踐情況由專人跟蹤幫助。對不合適的崗位,重新安排到其他企業實習就業。根據企業崗位標準的不同,時間安排為第六學期。
3.4 實行任務驅動、工學一體教學模式
樹立學習就是工作,工作就是學習的理念,采用任務驅動、工學一體教學模式開展教學活動。精選典型項目或案例作為教學內容,每一項目安排1~5個不等的任務,每一任務有針對性地包括一個或幾個必須掌握的知識點,學生的學習過程就是完成任務的過程,按照自主學習,仿真應用、工程應用的流程,完成學習任務。在自主學習階段,先給學生布置任務,然后指導學生展開自主學習,根據班級人數情況,靈活選擇以學生2~4人為一組的形式,進行咨詢、討論、制定工作計劃、提出任務實施方案,再指導學生進行仿真設計和測試,最后在實訓基地中指導學生進行工學結合實訓。每一任務完成情況選2~3組有代表性的作品進行展示與答辯,然后由其他組學生進行評價,提出意見與建議。不同組完成同樣的任務可能采用的方法不同。每一個項目完成后,提交項目報告,根據日常表現、實訓情況、創新能力、報告的完整性與準確性,給出評價結果。
4 結束語
軟件測試是一個新興職業,其具有的就業競爭小、薪資水平高、職業發展多元化的特點,吸引越來越多的人從事軟件測試工作,這為軟件測試人才的培養提供了很好的發展機遇。學院與企業、培訓機構合作,共同培養軟件測試人才可以實現畢業即就業的一站式人才培養。這種模式,把學院的教育資源、生源優勢,培訓機構的教學內容,企業的實訓優勢及就業優勢結合在一起,實現強強聯合、三方共贏。但在合作中,合作的各方要加強溝通,通過一定的機制規范和約束合作行為,并通過一定的保障措施確保合作持續長久。
基金項目:中國高等職業技術教育研究會“十二五”規劃項目 《基于校企合作服務外包人才培養模式的探索和實踐》編號:GZYGH2011014 主持人:姜永華
篇9
隨著軟件產業的發展、軟件規模的逐步擴大,軟件的質量問題日漸突顯,軟件測試與軟件質量監控也越來越受到軟件行業的重視。各類招聘信息中對軟件測試類人才的需求猛增,很多人由此而選擇了軟件測試,但其中不少人始終未能拿到軟件測試行業的“入場券”,原因何在?軟件測試行業是一個高速發展的新興行業,盡管當下認知程度不高,但有著廣闊的發展前景。如何才能更有效地進入軟件測試領域是本文的研究重點所在。
1軟件測試的誤區
軟件測試不斷受到重視,但總體上,國內軟件項目過程不夠規范,對軟件測試的重要性、測試方法和流程等還存在很多錯誤的認識,以致很多人在軟件測試領域走了不少彎路。對于測試人員以及準備進入軟件測試領域的人員來說,首先必須認清并更正這些錯誤觀點。
(1) 誤區一:軟件開發完成后才開始進行軟件測試
軟件從開始計劃、編制、測試,一直到公開使用的過程中都可能存在軟件缺陷。事實證明,需求規格說明書是導致軟件缺陷的最大原因。隨著時間的推移,修復軟件缺陷的費用呈幾何級數增長。
(2) 誤區二:軟件后如果發現質量問題,那是軟件測試人員的錯
軟件測試只能確認軟件存在錯誤,不能保證軟件沒有錯誤。軟件的高質量不是軟件測試人員測出來的,是靠軟件生命周期的各個過程設計出來的。應該分析軟件項目的各個過程,從過程改進方面尋找產生錯誤的原因和改進的措施。
(3) 誤區三:軟件測試要求不高,隨便找個人都可以完成這項工作
軟件測試涉及很多領域,簡單的點點鼠標、按按鍵盤的工作根本無法達到軟件測試的目的,若想立足于軟件測試領域必須掌握和學習很多方面的知識。
(4) 誤區四:項目進度吃緊時少做些測試,時間富裕時多做測試
縮短測試時間會導致測試不完整,無法達到測試的目的,測試效果也將大打折扣。軟件項目過程應該是有計劃的、可控制的,若項目過程管理混亂必然會降低軟件測試的質量。
(5) 誤區五:自動測試將取代手工測試
自動測試速度快、效率高、準確度和精確度高。但動測試只能測試某些軟件的部分特性,且無法靈活處理意外事件。手工測試可以更好地發揮人的主觀能動性、靈活性、隨機應變性,可以更好地適應并處理突發事件。無論自動測試技術多么發達,自動測試也不能取代手工測試。
2學習軟件測試的過程和方法研究
不同知識基礎的人,學習軟件測試技術、進入軟件測試領域的感受也有所不同,很多人在學習軟件測試知識的過程中非常盲目,沒有計劃、沒有方向,學習效率低下。在此,本人對學習軟件測試的過程和方法進行總結、研究和探討,以作交流學習之用。
2.1學習軟件測試的過程
(1) 第一步明確測試目的
有目的才有動力,有目標才有方向。軟件測試就是對軟件需求分析、設計規格說明、程序代碼以及軟件其他相關產品進行測試的過程,是軟件質量保證的關鍵步驟。明確軟件測試的目的和目標才能準確的定位測試并更有效的進行測試。
(2) 第二步結合實際項目,學習掌握測試方法、合理設計測試用例
常用的測試方法有黑盒測試和白盒測試。黑盒測試在完全不考慮程序內部結構和內部特性的情況下,針對軟件界面和軟件功能等進行測試,是最基本的測試方法。白盒測試允許測試人員利用程序內部的邏輯結構及有關信息設計或選擇測試用例進行測試。準確的理解和掌握這些技術及其相互關系是進行軟件測試的前提。
測試是有風險的行為,完全測試是不可能的。軟件測試用例是進行測試的核心,是測試人員測試過程中的重要參考依據,它的組織和編寫關系到整個測試工作和思路的正確性、有效性。測試用例的組織性和條理性是軟件測試成功的一個重要因素。因此,在學習軟件測試的過程中,要準確的把握測試方法并有條理的組織和設計測試用例。
同時,軟件測試重在實踐。理論的掌握只能達到紙上談兵的功效,若想真正領悟測試技術的真諦還需進行實際的項目測試。結合具體的測試項目,靈活運用各種測試方法組織編寫測試用例可以幫助初學者更好的理解和掌握這些技術。
(3) 第三步熟悉測試步驟
一個完整的軟件測試過程包括測試計劃、測試設計、測試開發、測試執行、缺陷跟蹤和測試評估。軟件測試管理工具可以系統地控制整個測試過程,實現從測試需求、測試設計、測試執行和缺陷跟蹤所有操作的全方位跟蹤管理,并為這幾個部分提供了關聯機制,使整個測試管理過程更加簡單和有組織。在此,本人建議在學習軟件測試技術的過程中,以一個測試管理工具(例:TestDirector)為平臺進行測試實踐,用心體會一個完整的測試過程。
(4) 第四步了解測試階段
軟件測試從軟件需求階段就已介入,基本貫穿軟件項目開發全程,不同階段有不同的測試點,需要不同的測試方法和技術。軟件測試可以大致分為需求評審、單元測試、集成測試、系統測試、驗收測試( 測試/ 測試)這幾個階段。明確各個階段的測試目的和內容才能選擇相對合適的方法進行測試。
(5) 第五步測試技術的提高和升級
軟件自動化測試是一項讓計算機代替測試人員進行軟件測試的技術,通常借助測試工具來執行。自動化測試可以模擬軟件實際運行效果,測試效率高、準確度和精確度高、可以持續測試而無須休息,彌補了手工測試的不足。
性能被列為系統質量的重要指標,并越來越受到人們的重視。性能測試是對軟件性能的表現進行測試,較功能測試更難實現。
在掌握基本的測試方法和技術之后,可以繼續深入研究自動化測試和性能測試,提高測試水平和測試能力。
2.2學習軟件測試的方法
學習方法的好壞和學習習慣對學習效果的影響非常大,以下是軟件測試初學者需要注意的幾個地方:
(1) 勤學好問、充分利用各類學習資源
問題積累是學習的攔路虎。時間越久,問題越多,給學習造成了很大的阻力,更甚者會讓初學者心生放棄。三人行必有我師,勤學好問,不要滋生“歷史”遺留問題。當然,對于一個復雜問題,如果在短時間內無法理解透徹時,可以先簡單的了解,然后在之后的學習和實踐過程中慢慢體會其含義。由簡入繁,勿鉆“牛角尖”。
軟件測試的學習資源非常豐富,書籍、網站、論壇、技術交流群等唾手可得。充分利用這些資源可以縮短學習和解決問題的周期,使學習更加高效。
(2) 實踐出真知
實踐是檢驗真理的唯一標準。要想真正學會測試,必須進行實際的測試。不要說沒有測試環境,想學的話,完全可以自己搭建環境。有了行動才能有收獲。
(3) 切莫“閉門造車”
軟件測試技術是解決實際軟件測試問題的技術,與現實世界密切相關,盲目的學習可能適得其反。因此,應多關注軟件測試行業的動態,了解軟件測試行業的真正需求,有目的的學習。
(4) 細心、耐心
軟件測試是對人技術和意志的一種考驗,不細心就有可能與缺陷擦肩而過,沒有耐心就無法將枯燥的測試進行到底。只有充分的細心和耐心才能適應和完成軟件測試工作。
(5)“懷疑”精神
定性思維往往是發生錯誤的根源,對于軟件測試人員來說,更應該具有“懷疑”精神,要考慮每個細節,不要想當然地接受任何假設。
(6) 溝通能力
軟件測試人員必須具有良好的人際關系和溝通能力。由于軟件測試工作的特殊性,軟件測試人員在項目小組中并不受歡迎。由于需要經常和開發人員、測試組其他成員進行溝通,軟件測試人員說話辦事必須穩重得當,不能隨意指責別人,否則會事倍功半,影響軟件測試的效率。在學習軟件測試的過程中,應把握各種機會,多與人進行溝通和交流。
3軟件測試的常用技巧
軟件測試雖然辛苦,但掌握一定技巧后將事半功倍。
(1) 邊界測試
邊界是最容易出錯的地方。在進行軟件測試時,應測試臨近邊界的合法數據(即最后一個可能合法的數據,以及剛超過邊界的非法數據)。
(2) 非法測試
人們在不了解軟件功能或使用方法的情況下,經常會不經意地輸入一些非法數據或進行一些非法操作而導致軟件出現意外情況。因此,在進行軟件測試的過程當中,應考慮進行類似的非法測試。例如在輸入數字的地方輸入字符、輸入郵件地址的地方輸入非法格式的數據、進行一些不合理的操作等。
(3) 接口測試
程序往往在接口的地方發生錯誤,在進行相關測試時切勿掉以輕心。
(4) 代碼重用測試
在開發過程中有些模塊功能幾乎相同,程序員在重用代碼時可能忘記在原有代碼的基礎上作修改或修改不全面而引發錯誤。在測試的過程中應更加留意這方面的測試。
(5) 失效恢復測試
當意外(如網絡突然中斷、系統崩潰等)發生時,用戶能否繼續使用系統,用戶將受到多大的影響也是測試要考慮的問題。
4結束語
軟件測試是一個入門易、深入難的工作。學習軟件測試技術沒有捷徑可言,一點點的努力才是正道。學習過程是指引,學習方法是手段,希望以上的方法和技巧能夠給大家以啟迪,也希望更多有識之士能夠與我們共同徜徉在軟件測試這五彩繽紛的世界之中。
參考文獻:
[1] 把冉. 軟件測試行業特別調查[J]. 中國經濟信息,2008(9):76-77.
[2] (美)Ron Patton. 軟件測試[M]. 周予濱,姚靜,等譯. 北京:機械工業出版社,2008.
[3] 路璐,王文莉. 淺談軟件測試技術[J]. 鄭州鐵路職業技術學院學報,2007,19(2):41-42.
[4] 黃茗云,王英龍,張洪亮. 軟件測試熱點淺析[J]. 研究與探討,2008(2):57-29.
[5] 康鋒. 軟件系統性能測試規劃[J]. 大眾科技,2007(8):65-66.
Research on Learning Process and Learning Method of Software Testing
TIAN Li-fang, LIU Shuan
篇10
軟件定義一切這一新興概念的提出,昭示著軟件界的競爭將越來越激烈,軟件技術的發展將越來越快。與此同時,軟件質量也得到軟件行業的重視。而確保軟件質量的方法有多種,如:在軟件開發過程中進行規范化管理,可以避免開發過程中的不規范、不安全的設計習慣;進行軟件測試則能發現軟件潛在的質量問題和驗證軟件使用中的可靠性等。
軟件對測試的需求,使從事軟件測試行業的人員快速增多。軟件測試技術的發展和用戶對第三方測試的需求,促進了軟件測試外包行業的發展和興起。另一方面,軟件測試外包還可以在一定程度上填補戰略目標所需的資源和企業自身資源之間存在的缺口。在多方面因素的共同作用下,越來越多的專業化測試團隊快速成長起來,軟件測試外包也越來越普遍。
為加強軟件測試外包的規范化管理,本文提出一種基于CMMI的軟件測試外包管理方法。該方法的實施可以有效地提高軟件工程化水平,使軟件測試外包活動可以更有效地進行,從而達到不斷提高軟件質量的目的。
1 軟件測試外包管理架構設計
1.1 基于CMMI的管理過程改進
CMMI是由卡內基梅隆大學軟件工程研究室開發的軟件成熟度模型,是一種集成過程改進模型。但是,CMMI模型只是規定了每個過程域應該“做什么”,并沒有指明每個過程域具體“怎么做”。
為了具體解決“怎么做”的問題,本文提出一種新的軟件過程管理架構。本文將軟件管理活動規范成進入準則、輸入、活動步驟及要求、輸出和完成準則等五個部分,如圖1所示。
其中,輸入是來自以前活動的工作產品;進入準則是判斷是否可以進入本次活動的依據;活動步驟及要求是本次活動的具體內容;完成準則是判斷本次活動是否完結的依據;輸出是通過本次活動創建的工作產品。
1.2 軟件測試外包管理過程架構
軟件測試外包是指甲方公司將項目完全交給乙方公司,由乙方公司出人力物力,完成軟件的測試工作,并按照客戶需求,提供測試計劃制定、測試用例編寫等一系列測試技術服務。本文提出的軟件測試外包管理過程由三個部分組成,分別是簽訂軟件測試外包合同、軟件測試外包活動的執行與管理、驗收軟件測試外包活動,如圖2所示。其中三個活動的具體執行分別遵循2.1節中提出的管理過程。
1.3 軟件測試外包人員角色
為加強軟件測試外包管理過程,需要定義的人員角色包括軟件技術負責人、軟件合同負責人、分包方代表、客戶代表、軟件質量師、軟件配置管理員。各人員分工主要為:
軟件技術負責人:提供軟件測試需要的代碼、程序和文檔,并負責相關解釋。
軟件合同負責人:負責軟件測試外包合同的起草、活動的管理和驗收。
分包方代表:負責參加軟件測試外包合同和驗收外包合同的評審,組織測試外包活動中的相關評審。
客戶代表:負責參加軟件測試外包合同和驗收外包合同的評審。
軟件質量師:監督整個軟件測試外包活動的過程符合性和產品符合性。
軟件配置管理員:對軟件測試外包活動產生的工作產品進行配置管理。
2 軟件測試外包管理具體實現
2.1 簽訂軟件測試外包合同
根據對軟件測試外包項目的技術特征和非技術特征所作的綜合評估,選擇合適的供方,與供方簽訂軟件測試外包合同。
2.2 進入準則
本活動的進入準則包括:
(1)軟件測試外包項目輸入已經明確,需要測試的代碼、軟件、文檔保持一致,測試輸入通過相關評審并已入庫。
(2)相關人員已經過選擇供方、洽談協議的有關技能的培訓。
根據不同的外包測試級別,所需要準備的文檔也不相同,如對于軟件單元測試和軟件部件測試需要提供的文檔是《軟件設計說明》,對于軟件配置項測試需要提供的文檔是《軟件需求規格說明》,對于軟件系統測試需要提供的文檔是《系統/子系統需求規格說明》。
2.2.1 輸入
本活動的輸入包括:《合格供方名錄》。
2.2.2 活動步驟及要求
(1)軟件技術負責人和軟件合同負責人根據項目需要,確定需要由外部提供軟件測試的產品和服務。a)在項目策劃或制定技術方案時,軟件技術負責人應組織確定需要由外部提供的軟件測試產品和服務,軟件合同負責人負責審核軟件技術負責人提出的測試產品和服務的完整性和合理性。b)軟件技術負責人將軟件測試外包的產品和服務列表,形成項目軟件測試外包清單。c)該軟件測試外包清單應納入軟件測試外包合同或《軟件開發計劃》。d)軟件合同負責人選擇供方。 ① 由軟件合同負責人組織供方評價,實施測試供方的選擇工作。優先從本組織的《合格供方名錄》中選取資質完整性好的供方。必須選擇經過評審,能滿足要求的分包方;在無客戶或法定管理機構指定的分包方時,優先選擇符合CNAS-CL01《檢測和校準實驗室能力認可準則》、CNAS-CL45《檢測和校準實驗室能力認可準則在軟件檢測領域的應用說明》及DILAC/AC01《檢測實驗室和校準實驗室能力認可準則》要求并獲得認可的實驗室。外包項目,供方必須具有同級的保密資質,并按本組織保密管理規定執行。
② 如果申請的供方在《合格供方名錄》中,軟件測試外包協議直接由軟件技術負責人簽署意見,主管領導審批;如果申請的供方不在《合格供方名錄》中,應按照本組織的合格供方評定程序進行正式選擇。將候選供方的資質調查情況按照合格供方評定程序執行,同時將其提供的相應的質量、保密等資質證明文件作為附件。
(2)建立并評審軟件測試外包合同。a)所有由外部提供軟件測試產品必須同供方簽訂軟件測試外包合同或其等效文件(以下均簡稱合同)。軟件合同負責人負責起草合同。b)軟件合同負責人需要和供方確定,定期檢查供方進展情況的監控計劃,將監控計劃或等效條款作為合同的一部分。監控計劃需要明確里程碑監控、聯合評審的時機、供方進度安排等。c)在供方協議執行前或做任何更改之前,項目軟件技術負責人按照軟件評審規程要求評審軟件測試外包合同。d)客戶有要求時,應邀請客戶或客戶代表參與對合同的評審。e)軟件技術負責人與分承制方仔細審查合同的每個條款,確保合同沒有錯誤和隱患,由組織領導或授權代表簽訂合同。
2.2.3 輸出
本活動的輸出包括:軟件測試外包合同及其附件。
2.2.4 完成準則
本活動的完成準則包括:軟件測試外包合同已經簽訂。
2.3 軟件測試外包活動的執行與管理
軟件合同負責人和供方共同執行軟件測試外包合同,監督供方協議的執行。
2.3.1 進入準則
本活動的進入準則包括:軟件測試外包合同已經簽訂。
2.3.2 輸入
本活動的輸入包括:軟件測試外包合同及其附件。
2.3.3 活動步驟及要求
(1)軟件合同負責人將外包項目的具體實施要求(文檔編寫要求、技術規范)及時傳遞給供方。
(2)依據合同中監控計劃的規定對供方進行監督,具體包括:a)按照供方合同/技術協議規定的里程碑,召開項目協調會或由供方提供跟蹤報告,跟蹤項目的進展情況、供方投入(人力、物力、財力)的充分性、項目風險情況等,并對供方提出改進意見和要求。b)軟件合同負責人應測量供方項目的進展、測試質量的情況,記錄合同執行過程中發現的偏差。
(3)軟件合同負責人參加里程碑監控、聯合評審,填寫里程碑評審報告,并保存評審報告/會議紀要/跟蹤報告的復制件。
(4)軟件合同負責人應協調和處理合同中出現的問題,包括:a)當供方進度或測試質量達不到要求時,軟件合同負責人應協調供方,分析原因并采取相應的措施,以確保產品符合要求。b)軟件合同負責人正式評審和監督活動中發現測試項目執行情況與項目計劃的偏差大于20%時,軟件合同負責人應與供方進行交流找出問題的原因,提出解決措施。
2.3.4 輸出
本活動的輸出包括:軟件測試產品、階段評審報告和實施過程的相關記錄。
2.3.5 完成準則
本活動的完成準則包括:合同規定的測試產品和服務完成且齊套,通過了相關的評審和檢查。
2.4 驗收軟件測試外包活動
對供方提交的軟件測試產品(一般指軟件測試需求規格說明、軟件測試計劃、軟件測試說明、軟件測試報告以及相關的記錄文件)進行驗收,證明供方提交的軟件測試產品能夠滿足合同規定的要求。
2.4.1 進入準則
本活動的進入準則包括:供方已經完成合同規定的軟件測試產品和服務。
2.4.2 輸入
本活動的輸入包括:
(1)軟件測試外包合同及其附件。
(2)供方提供的軟件測試產品。
(3)軟件測試外包活動中形成相關管理類記錄文件。
2.4.3 活動步驟及要求
(1)軟件合同負責人評價并驗收供方提交的軟件測試產品。
制定驗收大綱;在驗收前與供方一起,按照本組織軟件評審規程的要求評審驗收大綱;依據驗收大綱,組織召開供方產品驗收會,執行驗收評審,記錄在驗收中發現的問題,提交驗收報告,驗收結論設為: 通過:實施交付。有條件通過:實施交付,并形成會議紀要,提出解決問題的措施和確認計劃。未通過:不能交付。形成會議紀要,提出解決問題措施、確定再次交付/驗收的日期。軟件合同負責人測量供方提供的軟件測試產品的規模和驗收中發現的問題。軟件質量師跟蹤發現的問題,直至問題解決。
(2)軟件技術負責人組織軟件外包測試產品的移交和納入本組織的受控庫,在移交過程中應遵守合同。移交后,軟件合同負責人依據供方交付產品的情況,評價供方性能,并填寫供方監督記錄。
2.4.4 輸出
本活動的輸出包括:驗收報告。
2.4.5 完成準則
本活動的完成準則包括:供方提交的軟件測試外包產品已經移交完成。
3 總結
基于對CMMI模型的研究,本文提出了一種供方協議管理過程域在軟件測試外包領域的具體的實施方案,解決了“怎么做”的問題。本文的軟件測試外包活動三部分組成,分別是簽訂軟件測試外包合同、軟件測試外包活動的執行與管理、驗收軟件測試外包活動。簡述了這三個活動的具體步驟,保證每個步驟都有相關證據遺留,將軟件工程落到實處,對提高組織的軟件產品質量和軟件工程化水平將發揮重要作用。
參考文獻
[1]張衛.關于計算機軟件發展的研究[J].生物技術世界,2003.
[2]巨振樂,趙明輝.正在興起的軟件測試外包.時代經貿,2009(120).
篇11
1軟件測試工作的重要性
軟件測試工作的重要性主要體現在兩大方面:一是軟件測試可以提升開發效率。在軟件工程項目進行過程中,一般將質量、進度作為核心評價指標,很多項目負責人都會嘗試各種先進方法技術,以期望可以加快開發進度,一旦出現返工現象,會對項目進度產生巨大影響,這就突出軟件測試重要地位,可以通過合理的測試發現存在的問題,加快開發進度的同時避免出現返工現象。軟件測試工作擁有很多測試項目,其中包括集成測試、單元測試,可以第一時間發現軟件存在的BUG及實際問題,這樣就可以提供充足的修改時間,減少開發工作量。二是軟件測試可以保障軟件質量。在開展計算機軟件項目時,關注進度的同時還要關注質量,通過常規的軟件測試,可以發現系統問題,但是無法發現系統BUG,這時候就需要展開集成測試,可以讓模塊之間擁有更高的集成度,減少軟件錯誤。
2計算機軟件測試面臨的問題
2.1軟件測試自動化程度較低。
近些年,計算機軟件行業處于一個高速發展的狀態,也出現了自動化測試工具,但是這類工具本身技術不夠成熟,存在較多的缺陷,需要花費大量的成本費用,操作難度相對更高,無法實現快速拓展等,沒有達到大規模應用的要求,僅僅運用到一些軟件測試的特殊工作,在實際的軟件測試過程中,還需要大量的測試人員,特別是在嵌入式測試這一部分內容中,基本無法使用自動化測試軟件,需要人工校對測試,由于信息技術發展較為迅速,為計算機軟件開發提供充足的技術支持,軟件開發水平越來越高,軟件工程規模也在隨之擴張,但是現階段軟件測試仍然以人工測試為主,一方面會提高開發成本,導致人工費用占比不斷擴大,另一方面無法保證最終的軟件質量,人工測試很難達到零差錯,影響軟件質量,同時降低測試效率,增加項目運行風險。
2.2測試工作介入時間較晚。
正常情況下,軟件開發和測試呈現出相輔相成的關系,兩者相互搭配完成軟件開發工作,才能得到高質量的計算機軟件。為了充分發揮軟件測試的作用,就要控制好開發時間和測試時間,但是就調查發現,很多企業將全部精力都放在軟件開發工作上,缺乏對軟件測試環節的重視,經常將測試工作安排在較后的位置,導致軟件測試介入時間過晚,無法實現對軟件質量的科學管控。由于軟件測試介入時間較晚的原因,在開發后期才發現軟件存在的缺陷問題,只能展開返工,增加不必要的花費。
2.3測試方案與案例的利用率較低。
現階段,軟件測試管理體系還不夠完善,存在較多的漏洞,在軟件開發過程中,無法提供專用的測試案例庫,在后續的軟件測試期間,經常出現重復利用測試案例的現象,這就會造成不小的資源浪費。同時,現階段沒有完善的測試程序歸檔規范,在測試結束后沒有按照要求完成歸檔任務,導致測試案例庫得不到及時更新,只保存一些較為老舊的案例,無法發揮實質作用。在軟件測試的后期階段,即使發現與前期相似的測試工作,也沒有可以參考借鑒的案例,還需要重復測試工作,投入更多的時間精力,浪費資源的同時還會耽誤開發進度。
2.4缺乏穩定高效的測試團隊。
在軟件開發過程中,軟件測試成本占比較高,可以達到總開發成本的30%左右,需要一支專業的測試團隊,才能順利在規定時間內完成測試任務。但是現階段項目開發期間過于重視開發,對于軟件測試較為忽視,缺乏足夠的專業測試人員。在此同時,項目給軟件測試撥下的經費相對較少,甚至出現經費短缺的現象,導致軟件測試工作進展緩慢,逐漸發展成形式化工作。除此之外,由于忽視軟件測試的原因,無法培養出足夠的軟件測試后備力量,很多測試人員長時間重復同樣的測試工作,無法提升綜合能力,掌握的技能相對較為單一。可以看出,現階段大部分的軟件開發項目都缺少專業的測試團隊,測試人員掌握的專業技能較少,無法保證軟對的穩定性,這些都是急需解決的問題。
3計算機軟件測試工作的解決對策
3.1靈活使用軟件測試方法。
(1)強化自動化測試手段。雖然現階段自動化測試手段較少,但是仍然有一些較為成熟的手段,在軟件測試期間應該加強對這類手段的重視,選擇技術更為成熟的自動化測試手段。在選擇測試方法時,要展開綜合性的評估,考慮到軟件開發項目的實際情況,選擇最適合的一種,才能達到預計的測試效果,加快開發進度的同時提高軟件質量。在選擇自動化測試手段時,考慮到系統架構、數據庫平臺、軟件規模、復雜程度等,選擇適合的評估項,才能選擇最適合的開發工具,一方面可以提高測試質量,另一方面可以加快測試效率。同時,還要加強對軟件自動化測試手段的研發,結合市場需求推出新型產品,彌補市場上的空白。(2)學習借鑒及自主研發。在軟件測試過程中,要加強對先進案例的學習,國外一些發達國家的軟件開發工作起步更早,已經積累了豐富的開發及測試經驗,研發出完善的軟件自動化測試工具,要加強對寶貴經驗的借鑒,結合我國軟件開發測試的實際情況,取其精華去其糟粕,不斷提高我國軟件測試水平。同時,企業要可以加強對軟件自動化測試工具的研發,要考慮到自身的規模和需求,通過自主研發的方式,獲得的測試工具更符合企業需求,可以大幅度提高測試效率。
3.2構建軟件測試標準及軟件測試體系。
一是標準化軟件測試規范及體系。明確規定軟件測試工作流程、團隊建設模式、軟件測試不同階段工作內容以及預期取得的成果,統一化軟件測試工作文檔格式及內容,對軟件測試工作的不同階段內容制定可行性較高的標準體系。二是構建軟件測試案例庫。持續完善軟件測試案例庫,有助于提升軟件測試案例的利用率,能夠盡早確定系統問題的來源,縮短問題分析及問題解決方案制定所需要的時間,避免此類問題再次發生,真正提升軟件測試效率,保障軟件質量。
3.3軟件項目更加重視測試管理工作。
篇12
Analysis of Software Testing Process Work Request
Yuan Zhengjiang
(Jiangnan Institute of Mechanical and Electrical Engineering,Guiyang 550009,China)
Abstract:This paper divided software testing into requirements analysis,software testing planning,design and implementation,software testing and software testing summary execution phases,and the test process management requirements are described.
Keywords:Software test;Process management
一、前言
軟件測試是軟件質量保證的重要內容,隨著軟件規模的不斷擴大,復雜程度的不斷提高,測試質量更加難以度量。為促進軟件測試質量,應規范軟件測試過程管理。軟件測試過程包括:軟件測試需求分析、軟件測試策劃、軟件測試設計和實現、軟件測試執行和軟件測試總結等。本文對各軟件測試過程的工作要求進行了闡述。
二、軟件測試需求分析
根據軟件測試任務書、被測軟件的需求規格說明和設計文檔,對測試任務進行測試需求分析,分析的主要內容包括:
1.確定需要的測試類型及其測試要求。測試類型包括功能測試、性能測試、接口測試、安全性測試、人機交互界面測試、強度測試等;測試要求包括狀態、接口、數據結構、設計約束等。2.確定測試類型中各測試項及其優先級。3.確定每個測試項的測試充分性要求。根據被測軟件的重要性、測試項目和約束條件,確定每個測試項應覆蓋的范圍。4.確定每個測試項測試終止的要求,包括測試過程正常終止的條件和導致測試過程異常終止的可能情況。5.測試需求分析階段的工作產品:軟件測試需求規格說明文檔。
三、軟件測試策劃
根據軟件測評任務書、軟件需求規格說明和設計文檔、軟件測試需求規格說明文檔等進行測試策劃,策劃一般包括:
1.確定測試策略。2.確定測試需要的技術或方法,如測試數據生成與驗證技術、測試數據輸入技術、測試結果獲取技術。3.確定要受控制的測試工作產品,列出清單。4.確定用于測試的資源要求,包括軟硬件設備、環境條件、人員數量和技能等要求。5.進行測試風險分析,如技術風險、人員風險、資源風險和進度風險等。6.根據軟件測試任務書和被測軟件的特點確定測試任務結束條件。7.確定被測軟件的評價準則和方法。8.根據測試資源和測試項,確定進度。9.確定需采集的度量及采集要求。10.測試策劃階段的工作產品:軟件測試計劃文檔。
四、測試設計和實現
根據測試需求規格說明和測試計劃進行測試設計和實現,應完成如下工作:
1.按需求分解測試項。將需測試的測試項進行層次化的分解。2.說明最終分解后的每個測試項。說明測試用例設計方法的具體應用、測試數據的選擇依據等。3.設計測試用例;測試用例包括如下內容。(1)測試用例名稱和用例標識;(2)測試用例追蹤。說明測試所依據的內容來源,并跟蹤到相應的測試項;(3)測試用例說明。簡要描述測試的對象、目的和所采用的測試方法;(4)測試用例的初始化要求,包括硬件配置、軟件配置、測試配置、參數設置等初始化要求;(5)測試用例的輸入。包括:每個測試的名稱、用途和具體內容及其性質;測試輸入的來源,以及選擇輸入所使用的方法;測試輸入是真實的還是模擬的;測試輸入的時間順序或事件順序;(6)測試用例的期望結果;(7)測試用例的期望結果評估準則。評估準則用以判斷測試用例執行產生的中間或最后結果是否正確;(8)實施測試用例的執行步驟;(9)測試用例的前提和約束,如特別限制、參數偏差或異常處理;(10)測試終止條件。說明測試用例的測試正常終止和異常終止的條件;4.確定測試用例的執行順序;5.準備和驗證所有的測試用數據。針對測試輸入要求,設計測試用的數據;6.準備并獲取測試資源,如測試環境所必須的軟、硬件資源等;7.必要時,編寫測試執行需要的程序,如開發部件測試的驅動模塊、樁模塊以及測試支持軟件等;8.建立和校核測試環境,記錄校核結果,說明測試環境的偏差;9.測試設計與實現階段的工作產品:軟件測試說明文檔。
五、測試執行
按照測試計劃和測試說明的內容和要求執行測試。測試執行的要求如下:
1.如實填寫測試原始記錄,當結果有量值要求時,應準確記錄實際的量值;2.根據每個測試用例的期望測試結果、實際測試結果和評估準則,判定測試用例是否通過;3.當測試用例不通過時,應根據不同的缺陷類型,采取相應措施:對測試工作中得缺陷,進行記錄并實施相應的變更;對被測軟件的缺陷應記錄到軟件問題報告單中;4.當所有的測試用例都執行完畢后,根據測試的充分性要求和有關原始記錄,分析測試工作是否充分,是否需要進行補充測試;5.在執行測試的過程中,可根據測試的進展情況補充測試用例,但應留下用例記錄,并在執行測試后,變更測試說明;6.測試執行階段的工作產品:測試記錄、軟件問題報告單。
六、測試總結
根據軟件測試任務書、被測軟件文檔、測試過程文檔等,對測試工作和被測軟件進行分析和評價。測試總結的要求如下:
1.對測試工作進行分析和評價。總結測試是否符合過程管理要求,測試是否充分,是否滿足用戶要求等;2.對被測軟件進行分析和評價。總結被測軟件功能、性能、安全性、可靠性等是否滿足要求,對軟件缺陷影響進行描述,提出改進建議等;3.測試總結階段的工作產品:軟件測試報告。
七、結束語
只有把每個測試階段應完成的工作做好了,才能保證最終的軟件測試質量。軟件測試組織都應制定適合自己的軟件測試過程管理體系文件,確保過程管理規范,各階段工作做到位。
參考文獻:
篇13
探索性測試是解決嵌入式系統軟件測試需求變化快、軟件文檔缺乏、測試周期短等現實問題的可行手段之一。為了恰當運用,需要總結探索性測試的一般性應用方法體系,并探討其與嵌入式系統軟件測試體系的聯系和沖突。在此基礎上提出適用于嵌入式系統軟件測試的探索性測試應用模型。
1 探索性軟件測試的基本原理
探索性測試的概念形成較早,經過隨后的發展已形成了一定的應用體系。
1.1 探索性軟件測試的概念
傳統的軟件測試分為測試需求分析、測試策劃、測試用例設計、測試執行和測試總結等主要階段,依次開展。傳統軟件測試流程依賴于完整、詳實的軟件需求和設計文檔作為輸入。而在現實的測試任務中,軟件需求和設計文檔往往有誤或不完備,這導致腳本測試活動無法正常有效開展。
“探索性測試是同時進行學習、測試設計和測試執行的一種測試方法;也就是說,測試沒有事先通過確定的測試計劃定義,而是動態地被設計、執行和修改”。探索性測試(也稱為探索式測試)最早于1983年提出,并在實踐中發展 。與傳統腳本測試相比,探索性測試具有以下技術特點:
(1) 測試活動的同時性。鼓勵在測試執行的過程中,同時進行對被測軟件的學習和測試設計。
(2) 關注測試任務。更關注于被測軟件本身和需要測試的問題。
(3) 測試中的演繹推理。通過前一個測試活動的結果來指導后期測試的開展。
(4) 利用人的優勢。關注于人本身的優勢,如判斷、分析、應變和協作的能力。
作為一種敏捷軟件測試方法,探索性測試弱化了對測試的預先設計和測試流程的嚴格要求,而強調測試的同時性以及人的經驗和創造性,關注于發現軟件缺陷,持續優化測試工作。測試人員在測試?理解?再細化測試的迭代中,通過測試活動本身不斷深入學習被測軟件,從而能夠縮減測試準備時間,發現更多缺陷,并使得軟件測試可以在被測軟件說明或文檔不齊全的情況下開展。
1.2 探索性軟件測試的主要方法
探索性測試的概念提出后,經過工業界和學術界人士的工作,已初步形成包含經驗運用、執行策略、管理模型的體系。
1.2.1 探索方法
探索性測試強調對測試人員的知識和經驗的運用。這些經驗和知識可分為領域知識、系統知識和一般的軟件工程知識。領域知識指領域規則、客戶流程和操作場景等,包括用戶使用和具體應用領域知識。系統知識是關于待測軟件的特性和技術細節的具體知識,包括系統級的交互以及個體功能細節。一般的軟件工程知識即不需要對被測軟件系統和應用領域的具體知識。
豐富的知識和經驗是對探索性測試人員的基本要求,以此為基礎,探索性測試的發揮人的創造性,并由此增強了測試過程的適用性。從工程應用的實踐中,已總結出了一些有用的啟發式方法。運用這些策略和啟發式方法,可以幫助軟件測試人員在具備了基本的知識和經驗的情況下,盡快熟悉被測系統,并在測試過程中充分運用經驗和創造性。
在開展具體的測試活動時,測試人員則可以借助一些啟發式方法在測試活動中“探索”被測軟件。這些啟發式的方法是測試中為了發現可能的缺陷,測試人員常用的一些技巧 。這其中典型的有Hendrickson的檢查單以及Whittaker的漫游方法。這些方法的共同特性是提醒測試人員:
(1) 應關注軟件最主要的功能,并在測試的過程中對軟件的行為進行聯想、質疑并發散,充分利用逆向輸入、邊界情況、近似值、錯誤輸入和特殊值(如0),通過軟件行為的原因、表現等舉一反三;
(2) 應刻意構造一些特殊的行為,如嘗試遍歷所有輸出、嘗試最長操作路徑、嘗試關注關鍵數據的演化、打散或集中事物、長時間運行軟件等;
(3) 應構造測試檢查軟件主要功能往往不關注的情景,例如啟動和退出、全選、空值、資源過量和緊張、取消操作、重復、同時運行等。
傳統方法假設軟件文檔中說明了軟件的各種預期行為,因而可以通過分析文檔來提取測試預期(Test Oracles)。然而,在軟件信息不完備的情況下,測試預期則無法提前預知。HICCUPPS的啟發式方法,從歷史(History)信息、顧客形象(Image)在軟件中的恰當映射、類似軟件的對照(Comparable Products)、與軟件和商業聲明(Claims)、用戶預期(User’s Expectations)、同類產品本身(the Product itself)、明顯的意圖(Purpose)和法律規章(Statutes)等角度,幫助測試人員在判定測試是否通過。
1.2.2 管理模型
良好的測試管理模型是保證測試質量、提高測試效率的必要保障。基于會話的測試管理(SBTM)是探索性測試領域中最常用的管理實踐。SBTM將軟件測試活動分解為若干會話(Session)。會話特征如下:
會話圍繞主旨(Charter)開展:即待測試的任務和目標;會話時間較短:時間長度在90 min左右;會話需要記錄:借助會話記錄單;每輪會話需要計劃和總結:一輪會話執行通常是一天,其中包含若干個會話測試。
基于會話的測試過程如圖1所示。當接到測試任務時,測試小組通過對測試任務進行分析討論,確定各會話的主旨。會話主旨包含被測軟件的主題、測試人員的角色、目的、條件、優先級、參考文檔、 數據、思路、預期等信息。測試項目負責人分配各會話測試人員,隨后開展首輪會話執行。一輪會話執行通常為一天。每輪會話執行結束后,需組織會話總結,主要借助以下維度進行:會話執行情況、筆記、缺陷、問題、數據、時間分解、人員安排等。通過總結確定下一輪會話、資源分配。下一輪會話執行按照相似的方式開展。在測試達到預期時間和充分度要求后,測試結束,并根據每輪會話報告單整理測試報告。
圖1 基于會話的測試管理示意圖
會話還可以根據需要進行擴展,例如可以包含對會話的風險評估和資源統計,也可以將會話延伸為對特定問題的關注,形成測試的線索。
1.3 探索性測試工具
探索性測試的有效開展同時依賴于工具的輔助。已有一些探索性測試的工具可供參考,例如Microsoft Test Manager(與Visual Studio組件),BBTestAssistant、TestExplorer,Session Tester,Rapid Reporter,Wink。這些工具通過基于錄制回放、截屏和輔助文字信息的方式幫助測試人員記錄探索性測試的執行過程,其中Session Tester、Rapid Reporter和Wink是免費的,Session Tester和Rapid Reporter則專門針對會話機制進行了設計和優化。
雖然這些基于錄制回放原理的工具能夠輔助測試人員整理測試報告,但是卻缺少對測試人員運用其知識和經驗的指導,對探索性測試的執行也缺少引導作用。目前沒有專門的探索性測試流程管理工具,不能起到控制測試流程的作用。有必要針對具體應用研發相應的輔助工具。
2 探索性測試的應用及其效果
經過發展,探索性測試已在多個企業運用。人們對探索性測試方法的優缺點也有了更加明確的認識。
2.1 探索性測試在工業界的應用
微軟是較早實踐探索性測試方法的軟件企業。微軟在Windows 2000系統徽標認證、必應搜索引擎和地圖、Visual Studio、Windows Media Player等系統、網絡和桌面應用中廣泛使用了探索性測試的技巧和方法,尤其是漫游探索法。在其他公司,探索性測試也成功的運用于互聯網應用行業以及信息系統的軟件測試中。這些測試任務往往在軟件文檔不全、測試時間緊、企業對采用傳統的腳本測試流程不滿意的背景下開展,通過運用基于會話的方法,測試團隊都能夠高效的完成測試任務,甚至發現了采用傳統方法在類似項目中遺漏的缺陷,在系統上線后也沒有發生重大問題,軟件項目組對測試團隊的滿意度有提升。
雖然可能沒有直接說明采用探索性測試,開源軟件的測試往往具有探索性測試的特點。這些測試往往在沒有詳細的軟件文檔和測試用例設計的基礎上,利用志愿測試人員的經驗和興趣開展 。在敏捷軟件研發團隊中,探索性測試的方法也多有運用。成功案例包括與XP和Scrum敏捷軟件開發的結合。
除了在工業界的運用,也有學者對敏捷軟件測試的應用進行了系統的研究和討論。Itkonen等人在芬蘭多個軟件公司中研究了測試人員對探索性測試的使用方法、效果和評價,對探索性測試的優缺點、應用條件合場景以及推薦的方法進行了總結;通過研究和實驗,發現了探索性測試在缺陷檢測能力上能達到甚至超過傳統腳本測試的水平。Naseer,史亮和高翔也總結了探索性軟件測試在瑞典軟件公司、國內的微軟和淘寶等企業運用的經驗,對探索性測試的活動進行了總結。Bach等人還成立了公司專門從事測試方面的研究和推廣。另外,也有一些研究將探索性測試思想與測試自動化方法結合,或利用探索性測試的思想提高測試效率和質量的工作。
從目前的應用情況來看,探索性測試技術多數是在桌面應用、B/S架構信息系統等領域的應用,在嵌入式系統軟件測試中的應用較少。
2.2 探索性測試的優缺點
經過實踐,總結上述對探索性測試的應用,能夠發現,探索性測試尤其適用于要求在短時間內發現被測軟件一些重要缺陷或事先沒有能夠進行詳細測試設計的情況;但也具有測試過程不易控制、測試文檔不全等問題。因此,在具體領域中運用探索性測試技術時,有必要根據領域特性,設計適合的測試流程,揚長避短。
一般認為探索性測試的主要優點和缺點如下:
優點:便于利用人員經驗;適合于從用戶角度的測試;適用于缺少軟件文檔、測試時間緊情況;靈活且適應性強;對測試人員和開發人員的反饋較快;能夠為測試帶來新內容,降低“殺蟲劑”效應。
缺點:缺少足夠的文檔,不易度量覆蓋率;測試統計數據不足,不利于決策;對測試人員經驗要求較高;在測試人員經驗不足、管理不嚴格的情況下,可能會影響測試質量;如缺少恰當工具,則不利于缺陷復現。
3 探索性測試在嵌入式系統中的應用
探索性測試技術卻是能夠應對嵌入式系統軟件測試中軟件需求變化快、測試周期短、軟件文檔不全等現實問題的可行方法之一。本文首先分析探索性測試在嵌入式軟件測試中應用的需求和困難,然后探討探索性測試技術與嵌入式系統軟件測試體系的結合方法,對應用模型提出建議,并對應用中可能的問題和后續研究進行討論和展望。
3.1 探索性測試一般性方法的適用性
隨著IT技術的發展和各國在國防、智能電網、物聯網、智能手機等行業投入的加大,嵌入式軟件產品越來越多,測試任務越來越重,往往難以保證充裕的測試時間。軟件需求和開發文檔存在不準確、不完備的情況。而同時,嵌入式軟件的測試具有較強的領域特性,領域內測試人員對被測系統的經驗比較豐富。因此,需要也有條件在嵌入式系統軟件中開展探索性測試,以降低對軟件需求和設計規約的依賴、發揮探索性測試對軟件變化的適應性和充分利用測試人員經驗的優勢。
然而,探索性測試技術在嵌入式領域中的應用卻較少。探索性測試的通用方法沒有直接用于嵌入式系統軟件測試的原因主要是 :
(1) 軟件測試文檔:探索性測試不鼓勵測試花費精力在策劃和準備上,而測試執行記錄風格隨意性較大,不利于形成統一、完備的測試文檔;這與按照國標和軍標中對完整的軟件測試文檔的要求沖突。
(2) 軟件測試充分性度量:不易度量測試覆蓋率,不易評價測試質量。
(3) 軟件測試過程控制:缺少對配置和測試流程的系統性管理,可能造成測試過程失控。
3.2 探索性測試應用模型探討
為了解決嵌入式系統測試中軟件需求變化快、測試周期短、軟件文檔不完備等現實問題,有必借鑒探索性測試技術在信息系統、網絡應用、操作系統等方面的成功經驗,將其融入嵌入式系統軟件測試體系中來。為了與相應的軟件測評體系和標準匹配,必須對探索性測試通用方法進行調整,設計探索性測試在嵌入式系統軟件測試的應用模型。
一種可參考的“腳本會話模型”如圖2所示,是以探索性測試一般性理論、探索性測試各特性在各型產品軟件的適用性研究為基礎,將探索性測試與傳統腳本測試相結合的軟件測試模型。為充分利用兩者的優勢,腳本會話模型的整體仍以傳統腳本方法為基礎,從而利用腳本測試管理中測試文檔完備和過程管理控制完善等優點,而在測試執行過程中充分發揮探索性測試的靈活、高效優點,引入會話、漫游測試法等探索性測試等方法,同時借助嵌入式系統軟件測試典型數據復用庫來實現對測試人員經驗的固化和復用。
圖2 嵌入式系統軟件腳本會話測試模型
如圖3所示,腳本會話模型整體流程遵循經典的腳本測試流程,但發揮了探索性測試對經驗的利用和靈活性的特點。
圖3 腳本會話測試模型流程框架
包含以下步驟:
(1) 測試策劃和設計階段;借助領域軟件測試典型數據復用庫(測試人員經驗的固化體現)形成測試項、構造測試用例,降低對軟件需求和設計文檔的依賴,初步完成測試需求的提取和測試用例的設計。
(2) 測試執行階段:測試執行以基于會話的方式開展,并對一般會話進行擴展。根據測試設計和計劃,確定每個會話的主旨、用例和測試方法。在每一次會話中,測試人員可以結對開展測試執行,根據預先指定的漫游策略和啟發式方法,針對一個測試項進行探索,并補充測試用例。測試人員在會話結束后整理會話記錄單。根據本輪會話執行情況,記錄缺陷、改善測試設計,并準備下一輪會話。如此迭代直到測試結束條件滿足,測試執行結束。
(3) 測試總結階段:借助測試執行中各個會話報告單,總結和報告缺陷。
3.3 討論和展望
探索性測試在互聯網和桌面應用已經成功實踐,而在嵌入式領域應用仍然較少。在嵌入式系統軟件測試中運用諸如腳本會話模型的探索性測試技術時,應注意以下三點問題:
(1) 測試過程管理和文檔。必須重視探索性測試的過程管理以保證測試過程受控。同時在適當的階段應編寫相應文檔作為測試階段性成果,并在測試執行完成后更新相應文檔。
(2) 結合具體領域。具體領域的軟件測試典型數據復用庫可以看作是對該領域軟件測試人員測試經驗的固化,是軟件測試團隊的組織資產,有助于團隊新成員快速熟悉被測系統,提高探索性測試的效率。
(3) 針對測試團隊和項目制定具體策略。制定探索性測試中的典型方法的應用策略,并注意收集反饋,在實踐中持續改進。
探索性測試作為一種在互聯網、操作系統等領域成功運用多年的測試技術和理念,可以與其他軟件測試技術結合,共同推進嵌入式軟件測試質量的提升。可能的結合方向包括(但不限于):
(1) 基于模型的測試和驗證。借助軟件模型可發現隱藏在軟件界面和正常使用流程下的交互,其中可能隱藏了大量的缺陷;借助模型檢驗工具提供的反例,測試人員還可以對軟件進行更加深入的探索;
(2) 測試自動化。嵌入式系統軟件需要處理傳感器送來的大量數據,采用自動化方法能夠有效減少測試人員的工作量;結合探索性測試的技術,也能夠為測試用例約簡和測試預期問題提供解決途徑;
基于剖面的測試:構造嵌入式系統的操作剖面和用戶剖面,輔助測試人員能有選擇性地對系統進行探索。
4 結 語
探索性測試技術經過研究和發展,已形成了一套可行的體系。探索性測試在嵌入式系統軟件測試中的應用還較少。經過對探索性測試體系的全面研究,能夠更好的理解這種方法在嵌入式系統軟件測試中的適用性,并為融合探索性測試與傳統嵌入式軟件測試方法,形成適用于嵌入式系統軟件測試的探索性測試應用模型提供思路和方向。
參考文獻
康一梅,張永革,李志軍,等.嵌入式軟件測試.北京:機械工業出版社,2008.
BACH J. Session?based test management . Software Testing and Quality Engineering, 2000, 2(6): 1?4.
WHITTAKER J A.探索式軟件測試.北京:清華大學出版社,2010.
LYNDSAY J, VAN EEDEN N. Adventures in session?based testing . . http://stickyminds.com/articl.
TUOMIKOSKI J, TERVONEN I. Absorbing software testing into the scrum method . Lecture Notes in Business Information Processing, 2009, 32: 199?215.