緒論:寫作既是個人情感的抒發(fā),也是對學(xué)術(shù)真理的探索,歡迎閱讀由發(fā)表云整理的11篇軟件測試范文,希望它們能為您的寫作提供參考和啟發(fā)。
1.組件測試
組件測試又稱單元測試,其目的就是驗證應(yīng)用程序能夠很好的工作,以及盡早的發(fā)現(xiàn)錯誤。所謂組件測試其實就是測試單個組件的過程,是一種細粒度的測試。組件測試其實就是一個缺陷測試的過程,基本上使用結(jié)構(gòu)化測試即白盒測試來對組件進行測試。在軟件中,組件算是最小的單元,因此,組件測試可以對多個組件來進行。
1.1組件測試的類型
在組件測試階段,需要測試不同類型的組件(對象內(nèi)的單個函數(shù)或方法、有多個屬性和方法的對象類、有不同對象或是函數(shù)組成的復(fù)合組件)。組件測試的內(nèi)容主要有模塊接口、局部數(shù)據(jù)結(jié)構(gòu)測試、路徑測試、錯誤處理測試以及邊界測試。從測試的類型可以看出,比較簡單的就是對單個函數(shù)或方法的測試,但是當測試多個組件組成的復(fù)合組件時,測試組件間的接口是否能正確執(zhí)行是首要關(guān)心的問題,而這個測試中的關(guān)鍵就是對組合組件的接口測試。
1.2接口測試
接口測試是組件測試中最常用的一種測試。測試符合組件間的接口就是接口測試。由于在符合組件之間存在很多交互行為,因此,在對復(fù)合組件中的單個組件進行訪問時,是要通過接口來對它們進行調(diào)用。所以,接口測試就成為組件測試中的重點。
復(fù)雜系統(tǒng)中最常見的錯誤形式包括接口錯誤,接口錯誤主要指接口誤用、計時錯誤、接口誤解等等。一般情況在不尋常的條件下、交互雙方都存在接口缺陷,而這是很難發(fā)現(xiàn)的,因此,接口測試是非常重要的。
組件的開發(fā)和測試都是交叉進行的,組件的設(shè)計者對組件是十分熟悉的,因此,由組件的設(shè)計者來進行組件測試是在合適不過了。
2.集成測試
所謂集成測試就是指測試時將組件集成為系統(tǒng)來進行。集成測試的目的就是檢查在一起的組件是否工作,能否正確及時進行組件與組件間的交互。集成測試就是將與接口相關(guān)的錯誤找出,從而使得添加的功能模塊確保沒有傳播不期望的副作用,并且使得由于新模塊的添加引起的變更不引入需求外的行為或是增加額外的錯誤。集成測試過程如圖1所示。
圖1 集成測試過程
2.1集成系統(tǒng)的策略
集成順序不同,集成測試也將不同,二者密切相關(guān)。集成系統(tǒng)的策略從理論上來講,其可分為自上而下的集成和自底而上的集成。但是在實際中,大多數(shù)的集成策略都是混合型的。自上而下的集成就是指先把系統(tǒng)框架開發(fā)出來,然后再向其中添加組件。這種方法存在一個非常普遍的問題,即在測試下一層時,還要兼測上一層。自底而上的集成就是指集成和測試都是從組件開始。不管使用哪種策略,開發(fā)額外的代碼是必須的,通過額外代碼的開發(fā)來仿真其他組件,從而使得系統(tǒng)運行起來。
對錯誤的定位就是集成測試中存在的主要問題。由于組件之間有復(fù)雜的交互行為存在,因此,當發(fā)現(xiàn)一個錯誤時,很難將其出錯的位置找到。
2.2集成測試的方法
集成測試通常采用增量法來進行測試,從而使得集成測試中的主要問題得以解決。使用增量法,從一個集成度最小的系統(tǒng)配置開始,然后測試這個系統(tǒng),測試完成后,一個增量一個增量地往系統(tǒng)中增加組件,每次增加組件后再進行測試。這種方法其優(yōu)點在于易于分離和糾正錯誤以及徹底測試接口。這種方法的缺點在于在測試過程中經(jīng)常會出現(xiàn)重復(fù)測試。
2.3回歸測試
回歸測試就是指把測試過的再進行測試。回歸測試雖然出現(xiàn)重復(fù)測試,但是其能夠保證新增模塊后不會給原系統(tǒng)組件間的行為產(chǎn)生不期望的變更。回歸測試是保證軟件的正確運行的必要條件,但是,對測試過的再進行重新測試明顯會產(chǎn)生不必要的浪費。
要想在使用回歸測試時減少系統(tǒng)資源的浪費,可以從以下幾個方面進行:(1)引進自動化測試。這種方法的引入,使得測試自動地重復(fù),從而回歸測試對系統(tǒng)資源的浪費得以減少;(2)嚴格規(guī)定增加快增加順序。先增加最常用的功能塊,從而對最常用的組件進行多次測試,確保在各種情況下常用功能能夠?qū)崿F(xiàn)。
集成測試的必要性還在于一些模塊雖然能夠單獨地工作,但并不能保證連接起來也能正常工作。程序在某些局部反映不出來的問題,有可能在全局上會暴露出來,影響功能的實現(xiàn)。此外,在某些開發(fā)模式中,集成測試的意義還在于它能間接地驗證概要設(shè)計是否具有可行性。
3.性能測試
性能測試就是測試系統(tǒng)對在非正常條件下的運行情況。它的任務(wù)是驗證軟件的功能和性能及其他特性是否達到了需求規(guī)格書上的要求。一般情況下包括恢復(fù)測試、安全測試、壓力測試、性能測試。恢復(fù)測試是通過各種方式強制地讓系統(tǒng)發(fā)現(xiàn)故障并驗證其能夠重新恢復(fù)的一種系統(tǒng)測試。安全測試是驗證在系統(tǒng)內(nèi)的保護機制是否能夠?qū)嶋H保護系統(tǒng)不受非法入侵。壓力測試是以一種要求反常數(shù)量、頻率或容量的方式執(zhí)行系統(tǒng)的測試方法。
4.接收測試
接收測試是對將要分給客戶的系統(tǒng)版本的測試過程。通常是一個黑盒測試過程,將軟件與計算機的其他系統(tǒng)元素結(jié)合在一起,在實際運行環(huán)境下,由用戶通過真實的數(shù)據(jù)測試對軟件在內(nèi)的計算機系統(tǒng),以求能發(fā)現(xiàn)系統(tǒng)需求定義中的錯誤和遺漏。同時也期望能發(fā)現(xiàn)因系統(tǒng)的設(shè)施不能滿足用戶的需求或系統(tǒng)的性能無法接受的錯誤。
4.1接收測試的方法
接收測試的最好測試方法是基于腳本的測試,先設(shè)計出多個腳本然后再從腳本中開發(fā)錯測試用例。
4.2接收測試的分類
接收測試根據(jù)用戶的不同可以分為α測試和β測試。無論是α測試還是β測試都是在實際的使用環(huán)境下進行的。α測試是測試為特定的用戶開發(fā)的系統(tǒng),且由最終用戶在開發(fā)者在場的情況下進行的,開發(fā)者在旁邊記錄用戶所遇到的錯誤和使用問題,α測試要持續(xù)進行直到開發(fā)者和用戶雙方都對最后交付的系統(tǒng)滿意。β測試的對象是一個將要在市場上銷售的軟件產(chǎn)品,β測試是所有愿意使用該軟件的用戶在使用該軟件是所遇到的所有問題,然后在反饋給開發(fā)者,開發(fā)者再根據(jù)反饋回來的信息決定對軟件做如何處理。通常情況下β測試能暴露開發(fā)者無法預(yù)見得錯誤。
隨著軟件應(yīng)用越來越廣,所要求的設(shè)計也越來越復(fù)雜,所需的開發(fā)周期越來越短,而質(zhì)量要求越來越高,那么軟件企業(yè)目前面臨著巨大的挑戰(zhàn)。由此,軟件測試變得越來越重要,軟件測試可以有效地提高軟件質(zhì)量。重視軟件測試過程和技術(shù)是軟件企業(yè)快速發(fā)展的有效途徑。
居住地:上海
電 話:153********(手機)
E-mail:
最近工作 [ 1年7個月 ]
公 司:XX計算機軟件有限公司
行 業(yè):計算機服務(wù)(系統(tǒng)、數(shù)據(jù)服務(wù)、維修)
職 位:軟件測試
最高學(xué)歷
學(xué) 歷:本科
專 業(yè):軟件測試
學(xué) 校:西北大學(xué)
自我評價
本人熟悉軟件開發(fā)測試流程,豐富的自動化測試經(jīng)驗,善于學(xué)習(xí)。能在成功與失敗中完善自己,活潑開朗,樂觀向上,適應(yīng)力強,勤奮好學(xué),認真負責。待人誠懇,做事踏實細心,對工作有熱情有責任心。
求職意向
到崗時間: 一周之內(nèi)
工作性質(zhì): 全職
希望行業(yè): 計算機軟件
目標地點: 上海
期望月薪: 面議/月
目標職能: 軟件測試
工作經(jīng)驗
2012 /12—至今:XX計算機軟件有限公司[ 1年7個月]
所屬行業(yè):計算機服務(wù)(系統(tǒng)、數(shù)據(jù)服務(wù)、維修)
測試部 軟件測試
1.負責需求分析,制定測試計劃,編寫測試計劃和測試案例;
2.負責測試環(huán)境的搭建;
3.負責使用JIRA 缺陷管理系統(tǒng), 管理跟蹤BUG;
4.負責系統(tǒng)的功能測試,以及處理客戶的回饋,重現(xiàn)問題;
5.負責熟練使用LINUX腳本語言,實現(xiàn)測試環(huán)境的自動安裝和定時運行,并進行日志的查看及排錯等;
6.負責根據(jù)用戶需求,編寫用戶使用說明手冊;
7.負責系統(tǒng)的安裝及配置,負責客戶版本升級。
2011 /1—2011 /12:XX軟件科技有限公司[ 11個月]
所屬行業(yè):計算機軟件
事業(yè)部 軟件測試
1、負責根據(jù)軟件開發(fā)年度進程表,與美國微軟測試及開發(fā)團隊溝通,確定各階段測試目標;
2、負責在項目測試過程中,制定測試計劃,參與測試用例的編寫、修改和審核;
3、負責定期組織技術(shù)交流會議,以提高組員工作效率;
4、負責及時處理客戶對軟件提出的問題,執(zhí)行測試定位問題,以幫助產(chǎn)品的修復(fù)。
2010 /7—2011 /1:XX網(wǎng)絡(luò)游戲有限公司[ 6個月]
所屬行業(yè):娛樂/休閑/體育
技術(shù)部 軟件測試
1、負責了解軟件的測試流程,并制定測試流程;
2、負責編寫測試用例,BUG提交給開發(fā)人員;
3、負責開發(fā)人員修復(fù),進行回歸測試;
4、負責根據(jù)需求寫測試大綱、編寫測試用例、測試報告。
教育經(jīng)歷
2006 /9--2010 /7 西北大學(xué) 軟件測試 本科
證 書
2009 /6 大學(xué)英語六級
0 概述
(1)軟件測試現(xiàn)狀
隨著軟件的快速發(fā)展,軟件產(chǎn)品質(zhì)量面臨著前所未有的挑戰(zhàn),提高測試的效率、降低測試的成本,對軟件產(chǎn)品提高質(zhì)量和應(yīng)對日趨激烈的市場競爭有著重要意義,而軟件質(zhì)量的提升主要靠軟件測試來實現(xiàn)。
統(tǒng)計表明,在典型的軟件開發(fā)項目中,軟件測試的工作量往往占到總工作量的40%以上,而在總成本中,測試成本要占30%~50%。盡管目前大部分公司已經(jīng)非常重視軟件測試,但軟件質(zhì)量提升的實際效果不盡人意,一部分原因是軟件測試方面的投入不足,更大一部分原因是軟件開發(fā)人員、甚至軟件測試人員的測試意識不足,測試時間不足,導(dǎo)致無法展開快速、有效的軟件測試。
(2)軟件測試面臨的問題
首先,國內(nèi)軟件相對起步較晚,現(xiàn)在在軟件開發(fā)上投入了大量的人力物力,相對而言在軟件測試方面]有引起足夠的重視,更沒有進行成熟的軟件測試研究,軟件測試環(huán)境等測試資源國內(nèi)暫時沒有形成完善的氛圍。
其次,軟件測試人員較少,難以投入足夠的人力展開大規(guī)模的、規(guī)范的軟件測試,甚至在大部分公司軟件測試人員地位收入要低于軟件研發(fā)人員,軟件測試遠遠沒有引起重視。
第三,軟件時間緊湊,開發(fā)時間緊張,測試時間就會被大大縮短。測試的效果會大打折扣。
軟件日益復(fù)雜,軟件錯誤日益增多,軟件測試手段不成熟,測試人員不足,測試時間緊張等種種原因?qū)е履壳皣鴥?nèi)測試水平較差,軟件測試沒有完全展開。針對現(xiàn)狀思考,綜合考慮測試時間和測試效果兼顧,制定程序靜態(tài)掃描的單元測試與探索性測試的系統(tǒng)測試相結(jié)合,先進行程序靜態(tài)掃描的單元測試,通過后再進行探索性測試的系統(tǒng)測試的快速測試策略。
1 快速軟件測試策略
軟件測試是為了更快、更早的將軟件產(chǎn)品中存在的缺陷找出來,并敦促軟件開發(fā)人員盡快解決軟件缺陷,向客戶提供高質(zhì)量的產(chǎn)品。確定有效的軟件測試策略可快速找出軟件中的缺陷。
1.1 單元測試
單元測試是檢查軟件單元是否正確實現(xiàn)了詳細設(shè)計中的各項功能、性能要求,發(fā)現(xiàn)軟件單元內(nèi)可能存在的各種缺陷。
1.1.1 測試策略
針對單元測試目的,結(jié)合實際開發(fā)現(xiàn)狀,擬采用靜態(tài)測試工具對源代碼進行程序靜態(tài)掃描。
程序靜態(tài)分析是:在不運行代碼的前提下,通過詞法分析、語法分析、控制流等白盒測試技術(shù)對軟件源代碼進行掃描,驗證源代碼是否滿足規(guī)范性、安全性的一種代碼分析技術(shù)。
1.1.2 常用靜態(tài)分析技術(shù)
1.1.3 程序靜態(tài)掃描的優(yōu)缺點
程序的靜態(tài)分析與動態(tài)分析是相對應(yīng)的兩種代碼分析技術(shù),主要實現(xiàn)方式是通過對程序代碼的自動掃描發(fā)現(xiàn)隱含的程序缺陷,主要具有以下兩條優(yōu)點:
a)不執(zhí)行程序,對源程序不會產(chǎn)生任何破壞。程序靜態(tài)掃描不運行源代碼,只是通過靜態(tài)掃描對源代碼進行語法、結(jié)構(gòu)等方面的分析;
b)執(zhí)行速度快、效率高。成熟的程序靜態(tài)分析工具每秒可完成上萬行代碼的掃描,具有執(zhí)行速度快、效率高的特點。
程序靜態(tài)掃描的缺點也比較明顯:誤報率比較高,目前國際最好的程序靜態(tài)分析工具誤報率在5-10%之間,還是比較高的一個狀態(tài)。
在軟件程序?qū)崿F(xiàn)的過程中使用程序靜態(tài)分析工具對程序進行掃描,有助于快速發(fā)現(xiàn)代碼缺陷,提高代碼的質(zhì)量,是一種在節(jié)省人力物力的前提下快速的提升源代碼質(zhì)量的有效手段。
1.2 系統(tǒng)測試
系統(tǒng)測試的目的是:在真實或者仿真環(huán)境下檢驗軟件程序是否滿足“軟件研制任務(wù)書”和“軟件需求規(guī)格說明”規(guī)定的功能、性能等要求。
1.2.1測試策略
針對系統(tǒng)測試目的,結(jié)合人員緊張、開發(fā)時間短的實際開發(fā)現(xiàn)狀,擬采用使用探索性測試的測試策略對軟件程序進行功能、性能的合格性驗證。
探索性測試首先假設(shè)軟件存在某缺陷,然后對提出的假設(shè)進行逐步驗證。在進行探索性測試的過程中,學(xué)習(xí)知識、測試設(shè)計和測試執(zhí)行是在同一時間交叉進行的。探索性測試的核心是依據(jù)測試的實際情況,即時設(shè)計測試用例并在軟件程序上進行驗證,測試結(jié)束后將測試的結(jié)果整理形成“軟件測試報告”。
1.2.2探索性測試常用方法
探索性測試是對傳統(tǒng)測試技術(shù)的補充,它的關(guān)注點更多是有目的性地驗證程序是否存在某個缺陷。所以,探索性測試適用于所有的系統(tǒng)測試,但作為一種新興的軟件測試理論,它有著自己獨特的測試方法和管理方式。一般使用如下兩種方法來進行測試:
(1)結(jié)對測試法
結(jié)對測試的一般測試形式是兩名測試人員共同對一套軟件程序或者一臺機器展開測試。它要求必須有一名測試組長來負責統(tǒng)籌測試全程,進行合理的測試安排。測試組長制定合理的軟件測試計劃,依據(jù)計劃,測試成員兩兩組隊,分工合作。在測試過程中,兩位測試人員各有分工,一位進行測試操作,另一位主要負責提出建議、記錄測試發(fā)現(xiàn)的缺陷、提出測試過程中對程序的探索性問題等。
結(jié)對測試要求測試人員都能清晰地進行交流,因為當一名測試人員將自己的探索性想法與其他測試人員進行溝通時,極有可能會觸發(fā)其他測試人員的靈感,這種發(fā)散性的交流方式會碰撞出更多的思維火花,設(shè)計出更加準確、完整、符合實際測試情況的的軟件測試用例,這比傳統(tǒng)測試中要求測試人員按照固定的測試計劃進行軟件測試更有效率。除了以上優(yōu)點,結(jié)對測試還有以下優(yōu)點:
a)輕松的測試環(huán)境:輕松的測試環(huán)境將避免測試過程中測試人員產(chǎn)生的的枯燥和無聊情緒,明顯提高軟件測試效率;
b)良好的連續(xù)性:結(jié)對測試中,兩位測試人員分工明確,一名軟件測試人員專注于執(zhí)行測試,另一名軟件測試人員負責記錄及文檔整理,分工明確將大大增加測試的連續(xù)性,使測試具有更好的可持續(xù)性;
c)降低外界干擾:兩人組成一個小的團隊,其他無關(guān)人士前來打擾測試的機會將會大大降低,排除外界干擾 ,提高工作效率;
d)清晰的報告測試結(jié)果:結(jié)對測試中一人專注負責記錄和整理測試結(jié)果,這將使測試報告的數(shù)據(jù)清晰完整;
e)有利于培養(yǎng)新的測試人員:結(jié)對測試,兩兩結(jié)對,有經(jīng)驗的測試前輩趁此機會將探索性測試中規(guī)律性的經(jīng)驗傳授給新的測試人員,新的測試人員一邊學(xué)習(xí)一邊實踐,幫助新人快速成長,提升測試技能。
(2)會話測試法
探索性測試的創(chuàng)始人James Bach提出過另一種有效的測試方法:會話測試法。這種測試方法的優(yōu)點是既不影響探索性測試靈活性和探索性的特點,又能避免探索性測試人員松散不服從統(tǒng)一管理。目前是探索性測試所有方法中比較公認的一個有效的測試方法。
會話測試法中的會話主要包括兩部分:一部分是明確的測試主題,另一部分是可以被檢查的測試過程。“測試主題”指的是測試中想要發(fā)現(xiàn)的軟件缺陷或計劃完成被測試的功能。“可以被檢查”是指階段性的軟件測試報告,該軟件測試報告來表征會話測試期間的工作成果。
持續(xù)時間1.5小時的會話測試為最優(yōu)會話測試,但這不是絕對的時間限制,一般而言小于45分鐘的會話測試稱之為短會話測試,大于2個小時的會話測試稱之為長會話。一般情況,每天可以使用會話測試法對軟件程序進行三輪測試。
會話測試中沒有固定的模式對測試步驟及測試用例進行規(guī)定和限制,依據(jù)測試人員和測試主題來進行靈活選擇和執(zhí)行,例如測試人員可能會從某項功能開展測試,也有可能從頻繁出現(xiàn)的缺陷打開測試入口。
1.2.3 探索性測試的優(yōu)缺點
探索性測試最大的特點是具有強大的缺陷發(fā)現(xiàn)能力,作為一種高效率的測試方法,主要具有以下優(yōu)點:
a)測試方式靈活、富有創(chuàng)造性和主觀能動性。它比傳統(tǒng)的測試方法更加靈活,例如探索性測試對測試文檔的要求沒有傳統(tǒng)測試那么嚴格,但是它能夠發(fā)現(xiàn)正常測試用例執(zhí)行以外的缺陷,更有效地發(fā)現(xiàn)隱性缺陷,發(fā)現(xiàn)很多正常途徑無法發(fā)現(xiàn)的缺陷也能夠激發(fā)測試人員的創(chuàng)造性和主觀能動性。
b)測試時間短,執(zhí)行效率高。測試學(xué)習(xí)、測試設(shè)計和測試執(zhí)行交叉進行,只對測試缺陷進行詳細的記錄,會大大縮短測試時間,為項目的整體開發(fā)節(jié)省大量時間。據(jù)統(tǒng)計,有經(jīng)驗的測試人員在使用探索性測試方法進行測試時,執(zhí)行測試的時間能占到測試總時間的80%,而測試設(shè)計只占總測試的20%。
探索性測試的缺點也是顯而易見的:對軟件測試工作沒有一個整體的規(guī)劃,不利于測試的規(guī)范化、標準化;重復(fù)性測試的幾率比傳統(tǒng)測試要大很多,很難確定哪些測試已經(jīng)執(zhí)行過。
在測試時間短、測試資源不充足的情況下,使用探索性的測試策略展開系統(tǒng)測試,可以有效快速地發(fā)現(xiàn)軟件缺陷,提高軟件質(zhì)量。
2 結(jié)論
軟件質(zhì)量是軟件的生命,由于軟件缺陷而造成經(jīng)濟損失、導(dǎo)致嚴重后果的事例屢見不鮮,軟件測試作為軟件質(zhì)量保證的重要手段一直都是軟件工程研究和應(yīng)用的熱點。在有限的人力物力情況下,如何展開有效的軟件測試,顯著提升軟件質(zhì)量更是每個軟件研發(fā)人員的關(guān)注重點。
程序靜態(tài)掃描提升源代碼質(zhì)量、探索性測試保證軟件功能的合格性,二者有效地結(jié)合,在極短的時間內(nèi),節(jié)省開發(fā)人員精力的前提下,可以有效地_到軟件測試的目的,是一種有效的測試策略。
【參考文獻】
[1]張曉明,黃琳譯.軟件測試的藝術(shù),機械工業(yè)出版社.
[2]朱少民編.軟件測試方法和技術(shù),清華大學(xué)出版社,2005.
[3]汪穎譯.人月神話,清華大學(xué)出版社.
0 引言
隨著Intemet的普及和電子商務(wù)應(yīng)用的深入。Web應(yīng)用程序得到越來越廣泛的應(yīng)用,B/$架構(gòu)也逐漸代替C/S架構(gòu)成為主流的應(yīng)用模式。與傳統(tǒng)軟件相比,Web應(yīng)用程序具有分布式、并發(fā)、多用戶異構(gòu)等特點,這些特點對軟件測試提出了新的要求。Web測試是保證Web應(yīng)用程序質(zhì)量的有效手段,目前在Web測試的方法和技術(shù)以及相關(guān)工具等方面的研究已進行了一些嘗試。軟件測試的自動化技術(shù)有助于開發(fā)出更高質(zhì)量的產(chǎn)品,并且可以節(jié)省開發(fā)時間和開支。
1 Web軟件體系結(jié)構(gòu)
Web應(yīng)用程序采用B/S結(jié)構(gòu),它是伴隨著Intemet技術(shù)的不斷進步,由C/S結(jié)構(gòu)改進和發(fā)展起來的新型體系結(jié)構(gòu)。B/S結(jié)構(gòu)利用不斷成熟和普及的瀏覽器技術(shù)實現(xiàn)原來需要復(fù)雜專用軟件才能實現(xiàn)的強大功能。是一種全新的軟件系統(tǒng)構(gòu)造技術(shù)。這種結(jié)構(gòu)已成為當今應(yīng)用軟件開發(fā)的首選體系結(jié)構(gòu)。
Web系統(tǒng)的基本工作過程是:在客戶端,用戶通過瀏覽器向Web服務(wù)器中的控制模塊和應(yīng)用程序輸入查詢要求,Web服務(wù)器將用戶的數(shù)據(jù)請求提交給數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)庫管理系統(tǒng)DBMS;在服務(wù)器端,數(shù)據(jù)庫服務(wù)器將查詢的結(jié)果返回給Web服務(wù)器,再以網(wǎng)頁的形式發(fā)回給客戶端。在此過程中,對數(shù)據(jù)庫的訪問要通過Web服務(wù)器來執(zhí)行。Web系統(tǒng)的基本體系結(jié)構(gòu)及工作過程如圖1所示。
從上面的體系結(jié)構(gòu)可以看出,Web測試應(yīng)該分為三個層次,客戶端測試、服務(wù)器端測試和數(shù)據(jù)庫測試。客戶端主要測試用戶瀏覽器的基本功能和頁面現(xiàn)實情況;服務(wù)器端主要測試用戶請求響應(yīng)情況;數(shù)據(jù)庫端主要測試數(shù)據(jù)一致性和輸出錯誤。
2 Web軟件測試的主要特點與難點
Web軟件由于其分布式應(yīng)用、具有各種運行時行為、涉及多種標準協(xié)議,可能在硬件、軟件、通信、對象管理等環(huán)節(jié)出現(xiàn)各種缺陷。其體系結(jié)構(gòu)和應(yīng)用的復(fù)雜性,以及技術(shù)和規(guī)范不斷地發(fā)生變化,對測試提出了新的挑戰(zhàn)。Web軟件測試的特點與難點主要體現(xiàn)在以下幾個方面:
(1)Web軟件的開發(fā)環(huán)境與其應(yīng)用環(huán)境有很大的不同,在之前,很難對其實際的運行場景進行預(yù)測,如用戶類型、并發(fā)用戶數(shù)量、Web服務(wù)調(diào)用的裝載模式和訪問方式等,這些差異和應(yīng)用的不確定性都增加了Web服務(wù)測試的困難。
(2)Web軟件測試主要基于軟件接口進行設(shè)計和實現(xiàn),因此必須采用自動化測試方法,與傳統(tǒng)的需要大量人工干預(yù)的測試方法截然不同。
(3)Web軟件由于其分布特征,會出現(xiàn)大量用戶通過不同的環(huán)境訪問同一個服務(wù)的情形,因此,性能和可擴展性是Web軟件測試的重要方面。
(4)Web軟件及軟件集成的、發(fā)現(xiàn)和綁定都是動態(tài)完成的,其過程的不確定性和不可見性增加了測試難度。
(5)Web軟件訪問接口和訪問方法后增加了Web軟件的安全隱患,提高了被系統(tǒng)攻擊的機會。此外,對于所調(diào)用的分散、異構(gòu)的外部Web服務(wù)的安全性的管理也非常困難。如何提高Web軟件的安全性也是測試者要考慮的重要問題。
(6)Web軟件的應(yīng)用通常涉及到軟件提供者、者和使用者三種角色,都需要參與到測試的不同階段,其分布式合作的特征使得測試的組織、缺陷管理、結(jié)果評估等活動都更加困難。
目前。針對Web軟件的測試方法和技術(shù)的研究還處于初始階段,代表性的研究主要有基于形式化方法對協(xié)議及規(guī)格說明的驗證(如WSFL驗證技術(shù)、SOAP驗證)和Web服務(wù)的集成測試。
3 傳統(tǒng)軟件測試與Web軟件測試
傳統(tǒng)軟件測試經(jīng)常是靜態(tài)、離線的測試,盡管這些傳統(tǒng)的測試技術(shù)也可以應(yīng)用到Web服務(wù)的測試當中,然而相當有意義的一部分Web軟件測試都必須是動態(tài)的和在運行時間內(nèi)的即時測試。Web軟件這種動態(tài)和即時測試對傳統(tǒng)的測試理論提出了新的挑戰(zhàn)和要求。表1比較了傳統(tǒng)軟件和Web軟件測試的差別。
4 Web軟件測試的內(nèi)容和方法
Web測試主要目標是確保提交高質(zhì)量的Web軟件。對于錯綜復(fù)雜的Web軟件,從什么地方開始測試。哪些方面是測試的核心,有限的測試資源如何分配,這些都是Web軟件測試需要重點考慮的問題。下面介紹Web軟件測試的主要內(nèi)容和方法。
4.1 功能測試
鏈接測試 鏈接是Web應(yīng)用系統(tǒng)的一個主要特征,它是在頁面之間切換和指導(dǎo)用戶去一些不知道地址的頁面的主要手段。鏈接測試可分為三個方面:①測試所有鏈接是否按指示的那樣確實鏈接到了該鏈接的頁面。②測試所鏈接的頁面是否存在。③測試Web應(yīng)用系統(tǒng)上有無孤立的頁面。所謂孤立頁面是指沒有鏈接指向的頁面,只有知道正確的URL地址才能訪問。
表單測試 單元當用戶給Web應(yīng)用系統(tǒng)管理員提交信息時,就需要使用表單操作。例如用戶注冊、登陸、信息提交等。在這種情況下,我們必須測試提交操作的完整性,以校驗提交給服務(wù)器的信息的正確性。例如:用戶填寫的出生日期與職業(yè)是否恰當,填寫的所屬省份與所在城市是否匹配等。
Cookies潮試Cookies通常用來存儲用戶信息和用戶在某應(yīng)用系統(tǒng)的操作。當一個用戶使用Cookies訪問了某一個應(yīng)用系統(tǒng)時,Web服務(wù)器將發(fā)送用戶的信息,把該信息以Cookies的形式存儲在客戶端計算機上,這可用來創(chuàng)建動態(tài)和自定義頁面或者存儲登錄等信息。如果Web應(yīng)用系統(tǒng)使用了Cookies。就必須檢查Cookies是否能正常工作而且對存儲的信息已經(jīng)加密。測試的內(nèi)容可包括Cookies是否起作用,是否按預(yù)定的時間進行保存,刷新對Cookies有什么影響等。
設(shè)計語言測試 Web設(shè)計語言版本的差異,例如使用不同版本的HTML等,可以引起客戶端或服務(wù)器端嚴重的問題。在分布式開發(fā)環(huán)境中,開發(fā)人員都不在一起,這個問題就顯得尤為重要。除了HTML的版本問題外,不同的腳本語言,例如Java、JavaSeript、ActiveX、VBScript或Perl等也要進行驗證。
數(shù)據(jù)庫測試 數(shù)據(jù)庫為Web應(yīng)用系統(tǒng)的管理、運行、查詢和實現(xiàn)用戶對數(shù)據(jù)存儲的請求等提供空間。在使用了數(shù)據(jù)庫的Web應(yīng)用系統(tǒng)中,一般情況下,可能發(fā)生兩種錯誤,分別是數(shù)據(jù)一致性錯誤和輸出錯誤。數(shù)據(jù)一致性錯誤主要是由于用戶提交的表單信息不正確而造成的,而輸出錯誤主要是由于網(wǎng)絡(luò)速度或程序設(shè)計問題等引起的。針對這兩種情況,可分別進行測試。
4.2 性能測試
網(wǎng)站的性能測試對于網(wǎng)站的運行而言異常重要,但是目前對于網(wǎng)站的性能測試做得不夠,我們在進行系統(tǒng)設(shè)計時也沒有一個很好的基準可以參考,因而建立一整套網(wǎng)站的性能測試方案將是至關(guān)重要的。
連接速度測試 用戶連接到Web應(yīng)用系統(tǒng)的速度根據(jù)上網(wǎng)方式的變化而變化,他們或許是電話撥號,或是寬帶上網(wǎng)。當下載一個程序時,用戶可以等較長的時間,但如果僅僅訪問一個頁面就不會這樣。連接速度太慢。還可能引起數(shù)據(jù)丟失,使用戶得不到真實的頁面。
負載測試 負載測試是為了測量Web系統(tǒng)在某一負載級別上的性能,以保證Web系統(tǒng)在需求范圍內(nèi)能正常工作。負載級別可以是某個時刻同時訪問Web系統(tǒng)的用戶數(shù)量,也可以是在線數(shù)據(jù)處理的數(shù)量。例如:Web應(yīng)用系統(tǒng)能允許多少個用戶同時在線;如果超過了這個數(shù)量,會出現(xiàn)什么現(xiàn)象。
壓力測試 壓力測試是指實際破壞一個Web應(yīng)用系統(tǒng),測試系統(tǒng)的反映。壓力測試是測試系統(tǒng)的限制和故障恢復(fù)能力,也就是測試Web應(yīng)用系統(tǒng)會不會崩潰,在什么情況下會崩潰。黑客常常提供錯誤的數(shù)據(jù)負載,直到Web應(yīng)用系統(tǒng)崩潰,接著當系統(tǒng)重新啟動時獲得存取權(quán)。
4.3接口測試
服務(wù)器接口 第一個需要測試的接口是瀏覽器與服務(wù)器的接口。測試方式一般是,測試人員提交事務(wù),然后查看服務(wù)器記錄,并驗證在瀏覽器上看到的正好是服務(wù)器上發(fā)生的。測試人員還可以查詢數(shù)據(jù)庫,確認事務(wù)數(shù)據(jù)已正確保存。
外部接口有些Web系統(tǒng)有外部接口,例如,網(wǎng)上商店可能要實時驗證信用卡數(shù)據(jù)以減少欺詐行為的發(fā)生,測試的時候,要使用Web接口發(fā)送一些事務(wù)數(shù)據(jù),分別對有效信用卡、無效信用卡和被盜信用卡進行驗證。
錯誤處理 最容易被測試人員忽略的地方是接口錯誤處理。通常我們試圖確認系統(tǒng)能夠處理所有錯誤,但卻無法預(yù)期系統(tǒng)所有可能的錯誤。為此,可以嘗試在處理過程中中斷事務(wù),看看會發(fā)生什么情況,訂單是否完成,嘗試中斷用戶到服務(wù)器的網(wǎng)絡(luò)連接,系統(tǒng)能否正確處理這些錯誤。
4.4 兼容性測試
平臺測試市場上有很多不同類型的操作系統(tǒng),最常見的有Windows、Unix、Macintosh、Linux等。Web應(yīng)用系統(tǒng)的最終用戶究竟使用哪一種操作系統(tǒng),取決于用戶系統(tǒng)的配置。這樣,就可能會發(fā)生兼容性問題,同一個應(yīng)用可能在某些操作系統(tǒng)下能正常運行,但在另外的操作系統(tǒng)下運行可能會失敗。因此,在Web系統(tǒng)之前,需要在各種操作系統(tǒng)下對其進行兼容性測試。
瀏覽器測試 瀏覽器是Web客戶端最核心的構(gòu)件。來自不同廠商的瀏覽器對JavadavaScript、ActiveX或不同的HTlML規(guī)格有不同的支持,例如,ActiveX是Microsoft的產(chǎn)品,是為Intemet Explorer而設(shè)計的,JavaScript是Netscape的產(chǎn)品,Java是Sun的產(chǎn)品等等。測試瀏覽器兼容性的一個方法是創(chuàng)建一個兼容性矩陣,在這個矩陣中,測試不同廠商、不同版本的瀏覽器對某些構(gòu)件和設(shè)置的適應(yīng)性。
4.5 安全測試
景登 現(xiàn)在的Web應(yīng)用系統(tǒng)基本采用先注冊,后登錄的方式,因此,必須測試有效和無效的用戶名和密碼。要注意到系統(tǒng)是否對大小寫敏感,可以試行登錄多少次,是否可以不登錄而直接瀏覽某個頁面等。
日志文件為了保證Web應(yīng)用系統(tǒng)的安全性,日志文件是至關(guān)重要的。需要測試相關(guān)信息是否寫進了日志文件、是否可追蹤。
正確性測試又稱功能測試,它檢查軟件的功能是否符合規(guī)格說明。由于正確性是軟件最重要的質(zhì)量因素,所以其測試也最重要。
基本的方法是構(gòu)造一些合理輸入,檢查是否得到期望的輸出。這是一種枚舉方法。倘若枚舉空間是無限的,那可慘了,還不如回家種土豆有盼頭。測試人員一定要設(shè)法減少枚舉的次數(shù),否則沒好日子過。關(guān)鍵在于尋找等價區(qū)間,因為在等價區(qū)間中,只需用任意值測試一次即可。等價區(qū)間的概念可表述如下:
記(A,B)是命題f(x)的一個等價區(qū)間,在(A,B)中任意取x1進行測試。
如果f(x1)錯誤,那么f(x)在整個(A,B)區(qū)間都將出錯。
如果f(x1)正確,那么f(x)在整個(A,B)區(qū)間都將正確。
上述測試方法稱為等價測試,來源于人們的直覺與經(jīng)驗,可令測試事半功倍。
還有一種有效的測試方法是邊界值測試。即采用定義域或者等價區(qū)間的邊界值進行測試。因為程序員容易疏忽邊界情況,程序也“喜歡”在邊界值處出錯。
例如測試的一段程序。憑直覺等價區(qū)間應(yīng)是(0,1)和(1,+∞)。可取x=0.5以及x=2.0進行等價測試。再取x=0以及x=1進行邊界值測試。
有一些復(fù)雜的程序,我們難以憑直覺與經(jīng)驗找到等價區(qū)間和邊界值,這時枚舉測試就相當有難度。
在用“白盒測試”方式進行正確性測試時,有個額外的好處:如果測試發(fā)現(xiàn)了錯誤,測試者(開發(fā)人員)馬上就能修改錯誤。越早改正錯誤,付出的代價就越低。所以大多數(shù)軟件公司要求程序員在寫完程序時,馬上執(zhí)行基于單步跟蹤的“白盒測試”。
2容錯性測試
容錯性測試是檢查軟件在異常條件下的行為。容錯性好的軟件能確保系統(tǒng)不發(fā)生無法意料的事故。
比較溫柔的容錯性測試通常構(gòu)造一些不合理的輸入來引誘軟件出錯,例如:
(1)輸入錯誤的數(shù)據(jù)類型,如“猴”年“馬”月。
(2)輸入定義域之外的數(shù)值,上海人常說的“十三點”也算一種。
粗暴一些的容錯性測試俗稱“大猩猩”測試,除了不能拳打腳踢嘴咬,什么招術(shù)都可以使出來。這里我舉不出例子,因為我沒有對程序粗暴過,并且這輩子也不打算學(xué)會粗暴。
3性能與效率測試
性能與效率測試主要是測試軟件的運行速度和對資源的利用率。有時人們關(guān)心測試的“絕對值”,如數(shù)據(jù)送輸速率是每秒多少比特。有時人們關(guān)心測試的“相對值”,如某個軟件比另一個軟件快多少倍。
在獲取測試的“絕對值”時,我們要充分考慮并記錄運行環(huán)境對測試的影響。例如計算機主頻,總線結(jié)構(gòu)和外部設(shè)備都可能影響軟件的運行速度;若與多個計算機共享資源,軟件運行可能慢得像蝸牛爬行。
在獲取測試的“相對值”時,我們要確保被測試的幾個軟件運行于完全一致的環(huán)境中。硬件環(huán)境的一致性比較容易做到(用同一臺計算機即可)。但軟件環(huán)境的因素較多,除了操作系統(tǒng),程序設(shè)計語言和編譯系統(tǒng)對軟件的性能也會產(chǎn)生較大的影響。如果是比較幾個算法的性能,就要求編程語言和編譯器也完全一致。
性能與效率測試中很重要的一項是極限測試,因為很多軟件系統(tǒng)會在極限測試中崩潰。例如,連續(xù)不停地向服務(wù)器發(fā)請求,測試服務(wù)器是否會陷入死鎖狀態(tài)不能自拔;給程序輸入特別大的數(shù)據(jù),看看它是否吃得消。
4易用性測試
易用性測試沒有一個量化的指標,主觀性較強。調(diào)查表明,當用戶不理解軟件中的某個特性時,大多數(shù)人首先會向同事、朋友請教。要是再不起作用,就向產(chǎn)品支持部門打電話。只有30%的用戶會查閱用戶手冊。[Cusumano1995]
一般認為,如果用戶不翻閱手冊就能使用軟件,那么表明這個軟件具有較好的易用性。
5文檔測試
文檔測試主要檢查文檔的正確性、完備性和可理解性。好多人甚至不知道文檔是軟件的一個組成部分。
正確性是指不要把軟件的功能和操作寫錯,也不允許文檔內(nèi)容前后矛盾。
頭信息包括:測試軟件名稱、版本號、缺陷或錯誤類型、可重復(fù)性、測試平臺、平臺語言、缺陷或錯誤范圍。要求填寫完整、準確。
簡述是對缺陷或錯誤特征的簡單描述,可以使用短語或短句,要求簡練、準確。
操作步驟是描述該缺陷或錯誤出現(xiàn)的操作順序,要求完整、簡潔、準確。對命令、系統(tǒng)變量、選項要用大寫字母,對控件名稱等加雙引號。
注釋一般是對缺陷或錯誤的附加描述,一般包括缺陷或錯誤現(xiàn)象的圖像,包括其他建議或注釋文字。
書寫專業(yè)軟件問題報告的技巧
書寫軟件問題報告的目的是為了正確地重復(fù)缺陷或錯誤,從而在后續(xù)工作中可以準確驗證并加以處理。因此,基本要求是準確、簡潔、完整、規(guī)范。為了正確書寫專業(yè)的軟件問題報告,應(yīng)該注意以下要點:
每個軟件問題報告只書寫一個缺陷或錯誤
這樣可以每次只處理一個確定的錯誤,定位明確,提高效率,也便于修復(fù)錯誤后方便的進行驗證。
對錯誤的描述要做到簡潔、準確、完整,揭示錯誤實質(zhì)
描述要準確反映缺陷或錯誤的本質(zhì)內(nèi)容,簡短明了。為了便于在答數(shù)據(jù)庫中尋找,包含錯誤發(fā)生時的用戶界面是個良好的習(xí)慣。例如記錄對話框的標題、菜單、按鈕等控件的名稱。
明確指明錯誤類型和嚴重程度
根據(jù)錯誤的現(xiàn)象,總結(jié)判斷錯誤的類型和嚴重程度,例如,是功能錯誤?還是界面布局錯誤?該錯誤是屬于特別嚴重的錯誤還是一般錯誤?是否影響軟件的后續(xù)開發(fā)和?
每一個步驟盡量只記錄一個操作
簡潔、條理井然,容易重復(fù)操作步驟,以便確認、修復(fù)、驗證該錯誤.
復(fù)現(xiàn)的操作步驟要完整,準確,簡短
保證快速準確的重復(fù)錯誤,完整即沒有缺漏,準確即步驟正確,簡短即沒有多余的步驟。
附加必要的錯誤特征圖像
為了直觀的觀察缺陷或錯誤現(xiàn)象,通常需要附加錯誤出現(xiàn)的界面,作為附件附著在記錄的附件部分。為了節(jié)省空間,又能真實反映缺陷或錯誤本質(zhì),可以捕捉缺陷或錯誤產(chǎn)生時的全屏幕,活動窗口和局部區(qū)域。
附加必要的測試用例
拋開具體的軟件工程的具體模型,一般的產(chǎn)品周期流程可以如下劃分
3、第2階段:功能測試;工作方向:功能/手工測試;市場價值:薪資可達到7000元/月以上
一般地,項目啟動過程組包括兩個過程:即制定項目章程和制定項目初步范圍說明書;而項目規(guī)劃過程組則會綜合項目的成本、范圍、時間、質(zhì)量、風險、人力、溝通、采購等因素制定項目計劃,該項目計劃將用于指導(dǎo)項目的實際執(zhí)行。
對任一項目而言,有三個文件是非常重要的。即:項目章程、項目范圍說明書,項目管理計劃。這三個文件均產(chǎn)生于項目啟動階段和項目規(guī)劃階段。其中項目章程被認為是三大文件之首(項目章程、項目范圍說明書,項目管理計劃)。一個項目,不論大小,都應(yīng)該有項目章程。
項目章程由項目發(fā)起人(Sponsor)簽發(fā),自簽發(fā)之日起,項目經(jīng)理即獲得法定權(quán)力。
項目經(jīng)理在獲得法定權(quán)力之后的第一動作是制定項目初步范圍說明書。為了制定這份文檔,他/她將廣泛地收集來自項目發(fā)起人的需求,以便在項目計劃正式編制之前,與項目發(fā)起人在項目范圍的理解上達成一致。項目初步范圍說明書還將在后續(xù)項目范圍規(guī)劃過程中進一步細化,并融入項目客戶、執(zhí)行組織、項目干系人等各方面需求,進而形成完整的項目范圍說明書。
項目初步范圍說明書編制完成以后,項目經(jīng)理將進入項目計劃編制階段。這個階段將會涉及項目管理方方面面的規(guī)劃、計劃。有經(jīng)驗的項目經(jīng)理在此過程中總是會認真聽取和吸收團隊骨干成員和同行們的經(jīng)驗意見,從而形成廣為認可和接受的規(guī)劃、計劃。
經(jīng)過權(quán)衡和必要的調(diào)整,這些文檔最終將被集成到一個完整的項目管理計劃中。項目管理計劃經(jīng)由項目發(fā)起人、高級管理層審批以后,即可生效。
此后,項目經(jīng)理將召開項目開工會議,宣布項目正式開始進入執(zhí)行階段。
項目啟動階段的項目章程和項目初步范圍說明書,也可以體現(xiàn)在分包或采購合同中。這在軟件外包服務(wù)型企業(yè)中最為常見。
通常,伴隨合同到達項目經(jīng)理手中的還有項目建議書,項目建議書由項目發(fā)起人制定,內(nèi)容和項目章程中有關(guān)產(chǎn)品、可交付成果的描述大致類似,此外,還應(yīng)包括對項目經(jīng)理成功完成此項目的一些指導(dǎo)性建議。項目經(jīng)理進行綜合考慮,與相關(guān)干系人磋商,在項目團隊相關(guān)專家的幫助下,制定出合適的項目管理計劃。
上面討論的是一般項目啟動過程組與規(guī)劃過程組。具體到測試項目的啟動與規(guī)劃,工作內(nèi)容也是類似的。讀者朋友請根據(jù)所在測試項目的特點做適當調(diào)整。需要交待清楚的是測試項目啟動與規(guī)劃過程組有可能與其他六個過程組(測試需求分析、測試設(shè)計、測試執(zhí)行、測試項目收尾、測試交付、測試項目監(jiān)控與調(diào)整)在項目實施過程中有頻繁的迭代關(guān)系(參見圖1)。
比如,規(guī)劃過程組有可能在整個項目生命期內(nèi)都有更新和完善。
對于整周期軟件開發(fā)項目的測試而言,上述過程組的內(nèi)容會有較大的差異。
比如:項目章程將重點關(guān)注開發(fā),而不會過多討論測試相關(guān)的工作。對于這一類型的軟件測試,筆者建議在任命開發(fā)項目經(jīng)理的同時,由項目經(jīng)理[適用于項目型或強矩陣組織]或高層經(jīng)理[適用于弱矩陣或職能型組織]指定項目測試經(jīng)理。測試經(jīng)理應(yīng)根據(jù)項目章程、項目初步范圍說明書和項目建議書盡早開始軟件測試相關(guān)規(guī)劃和設(shè)計,并和項目經(jīng)理溝通、協(xié)調(diào),以將一些重要的信息及時反映給項目經(jīng)理,從而使項目計劃能較好地支持測試工作的開展。
軟件測試需求分析
理論上,軟件測試需求是源于軟件需求的,而軟件需求又是源于用戶需求的。然而,有些時候在分析軟件測試需求時并不存在已經(jīng)文檔化的軟件需求規(guī)格說明。
在這種情況下,要分析軟件測試需求可能仍然需要追溯到用戶需求。由于后者涉及需求工程的專門知識,本文略過不做細述;這里重點討論前者。在一個規(guī)范化的軟件需求規(guī)格說明中,用戶需求是由更高層次的業(yè)務(wù)需求(體現(xiàn)在項目章程、SOW、項目建議書等文檔中)細化而成,它通常描述了用戶使用該軟件系統(tǒng)會涉及到的不同的執(zhí)行路徑、工作邏輯以及所預(yù)期的處理結(jié)果。在UML表示方法中,用戶需求通常通過Use Case來進行刻畫。
接下來,用戶需求將進一步轉(zhuǎn)化為三類需求項,即功能需求項、性能需求項以及約束性需求項。這三類需求項就是通常意義上的軟件需求項。管理這三類需求項的矩陣被稱為需求矩陣。
理論上,在測試資源許可并且確有必要的前提下,測試的使命將是驗證和確認待開發(fā)的軟件及其中間產(chǎn)品滿足需求矩陣各個需求項。(注意:為了簡化討論,這里筆者沒有把需求的驗證與確認納入進來,實際上這部分工作也是軟件測試工作的重要組成部分。)
然而,幾乎沒有幾個公司或開發(fā)團隊能夠提供這類測試所需的諸多的資源,此時,一種可行的策略是將待測試的軟件需求項按照優(yōu)先關(guān)系進行排序,以幫助測試經(jīng)理決策在既定資源的情況下,應(yīng)該如何統(tǒng)籌安排測試工作。
軟件需求項是測試需求分析的起點,這一點在工程實踐中并不絕對。對于不同階段的測試(這里主要指單元測試、集成測試、系統(tǒng)測試和驗收測試,暫不考慮驗證技術(shù)和需求和設(shè)計的確認),測試需求開發(fā)所涉及的工作內(nèi)容和方法都會略有差異。例如,如果是一個驗收測試,那么,除了個別的需求需要做進一步明確外,幾乎可以將測試需求等同于用戶需求和業(yè)務(wù)需求(由于該類測試是以客戶為主體,因此并不需要向下追溯到軟件需求)。
又如,如果是系統(tǒng)測試,除了需要對不具備可測試性的軟件需求項進一步開發(fā)外,幾乎可以對軟件需求和測試需求不做區(qū)分。
再如,如果是集成測試,測試需求應(yīng)該從概要設(shè)計規(guī)格說明中導(dǎo)出。如果尚不存在概要設(shè)計規(guī)格說明,就需要從軟件需求規(guī)格說明出發(fā),與軟件設(shè)計人員協(xié)同工作,具體定出構(gòu)成系統(tǒng)的各個模塊、子系統(tǒng)、分系統(tǒng)的功能、性能、約束性條件以及相互接口關(guān)系。根據(jù)協(xié)同工作的結(jié)果,開發(fā)出對應(yīng)的測試需求。
最后,如果是單元測試,測試需求應(yīng)該從詳細設(shè)計規(guī)格說明中導(dǎo)出。如果項目不存在概要設(shè)計規(guī)格說明,就需要從概要設(shè)計規(guī)格說明出發(fā),與軟件設(shè)計人員明確每個模塊內(nèi)部的對象屬性與方法以及對象與對象間的通信關(guān)系。根據(jù)此結(jié)果,進一步開發(fā)相應(yīng)的測試需求。相應(yīng)地,上一節(jié)所說的對軟件需求項進行優(yōu)先關(guān)系排序在實踐中要變通地理解為對測試需求項進行優(yōu)先關(guān)系排序。
讀者朋友可能會問,對于整周期的開發(fā)項目,以上論述是否意味著測試需求開發(fā)的依據(jù)文檔是否要根據(jù)測試所處的階段而不斷調(diào)整呢?是的,筆者認為這也是完全必要的。我們不能指望軟件需求項能夠描述清楚集成或單元測試階段的測試需求。測試需求的開發(fā)總是有賴于相應(yīng)層次的軟件規(guī)格說明書
只有在開發(fā)團隊不能提供的情況下才確有必要循著“詳細設(shè)計規(guī)格說明->概要設(shè)計規(guī)格說明->軟件需求規(guī)格說明->用戶需求規(guī)格說明->項目章程、合同、項目建議書、工作說明書等”的順序往前追溯。通常相關(guān)依據(jù)文檔的可測試性越好,測試需求開發(fā)所需要的工作量越少。
軟件測評是保證軟件質(zhì)量的重要步驟,它在軟件運行之前對軟件進行分析、預(yù)測、試用等一系列的方法,找到軟件存在的問題和缺陷,以免為以后造成不必要的麻煩和損失。這樣可以使軟件穩(wěn)定、正常地運行,提高其可靠性。軟件可靠性評估是對軟件正確評估的重要手段。軟件的可靠性主要是指軟件在一定的時間和條件下達到預(yù)期的目的的能力。軟件的可靠性是軟件的固有特性,它表明的是軟件用戶對軟件的滿意度,可靠的軟件是完整的、能夠滿足用戶需求、正確的。它的要素主要有:一定的時間限制、特定的環(huán)境、特定的功能。
1 軟件測試與可靠性評估的現(xiàn)狀
就目前來看,軟件測試并沒有受到人們的充分重視,還存在著許多的誤區(qū),這樣不利于軟件質(zhì)量和性能的提高。首先,人們普遍認為軟件測試實在軟件開發(fā)后進行的,其實并不是這樣,軟件測試是貫穿整個軟件項目中的,在的每一個軟件活動中都要進行不同的測試,用以保證每個階段的正確性,從而來保證軟件的質(zhì)量。其次,在軟件發(fā)現(xiàn)問題之后,往往將責任歸咎于軟件測試人員,這是不正確的。軟件出現(xiàn)錯誤應(yīng)該要從多方面考慮,要查清楚原因再做定奪,否則會挫敗軟件測試人員的工作積極性。然后就是,對軟件測試的要求過低,工作人員的職業(yè)素質(zhì)比較低下。絕大多數(shù)人認為軟件測試是一項簡單的工作,任何人都有能力勝任,其實不然,軟件測試工作需要具備專業(yè)技能的人才,掌握了相關(guān)的知識,具有很強的責任心。此外,大部分人認為軟件測評只與測試人員有關(guān)。實際上,軟件測試還與程序員有關(guān)。因為軟件測試需要各個工作人員保持密切的聯(lián)系。最后,軟件測評往往會在時間比較緊時做少量的測試,而有充足的時間會做比較多大測試。
我國在軟件可靠性評估這一塊發(fā)展得比較晚,還存在著許多的不足。首先對軟件評估沒有一個完整規(guī)范的管理系統(tǒng),在軟件項目工作安排上缺乏科學(xué)有效性,導(dǎo)致各種評估誤差,影響軟件的進一步發(fā)展,影響到軟件占據(jù)市場的份額。此外,目前我國的軟件可靠性評估一般將重點放在軟件的研制階段,對軟件的評估程度不到位,導(dǎo)致軟件項目后期出現(xiàn)一定的誤差。而且我國關(guān)于軟件評估的可靠性沒有相對其他國家嚴謹規(guī)范的標準,對軟件的評估存在著許多的問題,再加上軟件評估人員的職業(yè)素質(zhì)有限,對其認識具有不一致性,導(dǎo)致無法有實際意義、正確、有效地進行評估,相關(guān)的部門得不到有用的信息,從而誤導(dǎo)軟件公司做出錯誤的決策,不利于企業(yè)的競爭與發(fā)展。
2 軟件測試與可靠性評估的意義
軟件測評與可靠性評估能夠發(fā)現(xiàn)軟件存在的錯誤與缺陷,促進軟件的完善與改進,讓其更好地為軟件用戶服務(wù),滿足軟件用戶的需求。然后,能夠有效定義軟件成分有低層到高層的組裝過程,便于日后軟件的維護與修改。此外,能夠有效驗證軟件那是否符合原有和相關(guān)規(guī)定要求,迫使企業(yè)軟件從開發(fā)到軟件投放市場,都有利于是軟件正規(guī)化,符合相關(guān)規(guī)章制度,避免一些非法操作的軟件投入市場,損害某些個人以及集體的利益。
3 使得軟件測試與可靠性評估有效的措施
軟件的測試與可靠性評估的方法是極為重要的,如何讓其高效、正確的為軟件服務(wù),是軟件研發(fā)、研究組織應(yīng)該為之努力的目標。其一,要科學(xué)的管理系統(tǒng),對軟件人員進行很好的管理,讓其充分發(fā)揮優(yōu)勢,使整個系統(tǒng)有組織、有次序的運行,既能節(jié)約資源,又能提高工作效率。其二,軟件人員要充分認識到軟件測試與可靠性評估的重要性,在工作當中認真負責,不能因為個人原因而影響了整個軟件開發(fā)運行的進度和質(zhì)量。其三,要注意對軟件測試與評估的宣傳,讓其他人認識到這不僅僅只是軟件檢測員與軟件評估員的事情,要求大家團結(jié)合作,避免某一環(huán)節(jié)出現(xiàn)錯誤。其四,要培養(yǎng)出一批具備專業(yè)水平的軟件測試與評估人才,充分發(fā)揮其作用。所以組織要對其進行定期的培訓(xùn),并要保證培訓(xùn)的質(zhì)量,不能僅僅將其當成一種形式與任務(wù),要將培訓(xùn)工作落到實處,真正提高工作人員的職業(yè)技能,要對培訓(xùn)過程中不認真的人進行一定程度的懲罰,每次培訓(xùn)完后要進行考核,檢測培訓(xùn)質(zhì)量,并為下一次的培訓(xùn)提供經(jīng)驗。這樣就能夠在很大程度上提高培訓(xùn)的效果,不至于培訓(xùn)無效,浪費人力、物力、財力。
4 軟件測試與軟件可靠性評估的原則
首先,軟件測試與評估應(yīng)該要及時,并且要增加測試、評估的力度,盡可能地多進行測試,進行評估。此外,要注意軟件開發(fā)過程的整體性,保證軟件測試貫穿于整個軟件設(shè)計當中,與其他步驟結(jié)合起來,及時發(fā)現(xiàn)錯誤的早期階段,降低組織軟件的成本,測試時要將相關(guān)的數(shù)據(jù)結(jié)合起來,比如說:測試的輸入數(shù)據(jù)與其對應(yīng)的輸出數(shù)據(jù)。要防止軟件工作人員檢測自己所設(shè)計的程序。要按計劃、全面地實施軟件測試。軟件評估要保證客觀、科學(xué),不能以主觀心態(tài)來評判,要有科學(xué)依據(jù)。采納一些比較科學(xué)的方法來進行評估。要遵循謹慎原則,不能過于隨意,要加強重視,以防止評估出現(xiàn)誤差,造成不必要的損失。
5 小結(jié)
軟件測試與可靠性評估對于軟件的進步發(fā)展有著重大的意義,相關(guān)的部門、組織要高度引起重視,客觀、正確、科學(xué)地看待軟件測試與評估,針對自己關(guān)于軟件測試與評估所出現(xiàn)的問題采取相關(guān)的措施,從而促進軟件自身的完善與發(fā)展,提高軟件的市場競爭力。由于本人的學(xué)識有限,如果本文存在著任何的缺點和不足,請大家諒解。
參考文獻
[1]科教導(dǎo)刊編輯部;軟件測試外包一站式人才培養(yǎng)模式的探索與實踐[J];科教導(dǎo)刊;2013年第33期
[2]易敏捷;基于多平臺的計算機軟件測試方法分析[J];科技傳播;2013年第20期
[3]王文斌、劉方舟、劉雪;基于云計算平臺的軟件測試策略[J];計算機光盤軟件與應(yīng)用;2013年第17期
作者簡介
1.課程的定位與教學(xué)設(shè)計
1.1 課程定位
《軟件測試》課程作為軟件專業(yè)二年級下學(xué)期的專業(yè)課,它的前導(dǎo)課程是《數(shù)據(jù)庫設(shè)計》、《數(shù)據(jù)結(jié)構(gòu)》、《軟件工程實施》,后續(xù)課程是課程實訓(xùn)及畢業(yè)實習(xí)。通過本課程的學(xué)習(xí),使學(xué)生加深對軟件測試基本理論和基本方法的理解與應(yīng)用,能熟練使用常用軟件測試工具,并能運用軟件測試工具完成應(yīng)用軟件的測試工作,提高學(xué)生對軟件的測試與維護能力,并進一步培養(yǎng)學(xué)生的的團隊協(xié)作能力。
1.2 課程設(shè)計思路
軟件測試是高職計算機軟件專業(yè)學(xué)生在以后的工作崗位上要用到的核心技能。因此,本課程應(yīng)該作為專業(yè)必修課程和核心課程,重點培養(yǎng)學(xué)生在以后的工作崗位上所需的職業(yè)能力:白盒測試、黑盒測試、自動化功能測試與性能測試。
《軟件測試》課程的總體設(shè)計思路是,轉(zhuǎn)變傳統(tǒng)的學(xué)科課程模式,不再以知識傳授為主,構(gòu)建以工作任務(wù)為中心的企業(yè)培訓(xùn)體系,引入企業(yè)項目,讓學(xué)生在真實的企業(yè)項目中完成相應(yīng)的工作任務(wù),從而儲備相關(guān)的專業(yè)知識,發(fā)展職業(yè)能力。授課內(nèi)容重點突出對學(xué)生職業(yè)能力的培養(yǎng)。課堂上不再單純地只講授理論知識,而是圍繞實際工作任務(wù)的需要來選取,這充分考慮了高職學(xué)生動手能力強,理論知識薄弱的特點。
2.教學(xué)設(shè)計
2.1 教學(xué)情境設(shè)計
本課程小組通過學(xué)院專業(yè)指導(dǎo)委員會、重慶亞德科技、重慶大佳、重慶港澳大家等軟件公司的企業(yè)技術(shù)人員進行實際調(diào)查,制定了適合高職學(xué)生的軟件測試課程體系與職業(yè)能力,確定了軟件測試課程典型的教學(xué)情景與子情景,在教學(xué)情景中給出具體的工作任務(wù)、工作方法以及要求學(xué)生掌握的知識與技能等,在教學(xué)中貫徹理論實踐一體化的教學(xué)模式,做到教、學(xué)、做三結(jié)合,充分體現(xiàn)工學(xué)結(jié)合的優(yōu)勢,培養(yǎng)學(xué)生的職業(yè)素質(zhì)。本課程的5個工作過程及11個典型工作任務(wù)如表1所示。
2.2 教材設(shè)計
(1)教材應(yīng)充分考慮軟件測試的實踐特性,以工作任務(wù)為導(dǎo)向,引入必須的軟件測試理論知識,讓學(xué)生在實際測試的過程中,循序漸進地掌握必要的理論知識。
(2)編寫的內(nèi)容要以項目驅(qū)動為原則,以企業(yè)的實際案例、場景模擬、工作過程錄像為載體,增強課后的能力拓展,并根據(jù)高職學(xué)生的職業(yè)能力所需知識的深度和廣度來編寫,并在具體的工作任務(wù)中使學(xué)生逐漸形成團隊協(xié)作意識。
(3)教材應(yīng)突出軟件測試技術(shù)的實用性、前瞻性和開放性,不能只是簡單地介紹一些技術(shù)上的操作,而忽略了軟件學(xué)生所需的職業(yè)能力,在教材中應(yīng)融入軟件測試技術(shù)中所用到的新規(guī)范、新技術(shù)、新標準、新工具、新知識,讓學(xué)生能系統(tǒng)地掌握軟件測試的前沿知識。
(4)教材應(yīng)充分引領(lǐng)學(xué)生主動、積極地去學(xué)習(xí),因此,文字表述要簡明扼要,內(nèi)容展現(xiàn)應(yīng)圖文并茂,內(nèi)容應(yīng)詳略得到。
2.3 教學(xué)方法設(shè)計
由于本課程的主要教學(xué)內(nèi)容涉及白盒測試、黑盒測試、自動化功能測試與性能測試等操作性很強的教學(xué)環(huán)節(jié),必須通過課程實訓(xùn)才能達到對項目作規(guī)范需求分析的培養(yǎng)目標。具體教學(xué)方法設(shè)計如下:
(1)全班學(xué)生分為N個項目小組,3人一小組,1人任組長,組長要求協(xié)調(diào)溝通能力比較強。
(2)在教學(xué)過程中應(yīng)加強學(xué)生對軟件總體的測試能力,采用任務(wù)驅(qū)動教學(xué),注重以任務(wù)引領(lǐng),提高學(xué)生學(xué)習(xí)興趣;
(3)組建軟件外包中心,引進企業(yè)項目,讓學(xué)生真實地體驗在軟件公司的測試流程。外包中心作為理論實踐一體化教室,達到理論和實際不脫節(jié)。
(4)教學(xué)過程中可參考軟件測試評師考試中規(guī)定的知識要求和技能等級職業(yè)標準。
(5)教師模擬企業(yè)的項目經(jīng)理,必須具有開拓精神,帶領(lǐng)團隊完成工作任務(wù),并在完成工作任務(wù)的過程中,探索基于工作過程的職業(yè)教育新模式,培養(yǎng)學(xué)生的軟件測試能力,構(gòu)建軟件測試知識體系。
2.4 教學(xué)評價設(shè)計
(1)突出過程評價,結(jié)合課堂提問、實作測試、課后拓展、任務(wù)考核等手段,加強實訓(xùn)教學(xué)環(huán)節(jié)的考核,并注重平時考核。
(2)強調(diào)目標評價和理論與實踐一體化評價,注重引導(dǎo)學(xué)生進行學(xué)習(xí)方式的改變。
(3)每個項目小組在完成課程后,要將所學(xué)的內(nèi)容做ppt,匯報本小組項目完成的情況以及體會。
(4)實行學(xué)習(xí)過程的過程化考核。平時作業(yè)、期中與期末考試均采用上機實訓(xùn)的方式考核,對于不合格者,在團隊的協(xié)作幫助下持續(xù)練習(xí),直至過關(guān)。這樣可以督促學(xué)生不斷地練習(xí),真正提高動手能力。
(5)課程的學(xué)期成績=平時作業(yè)(10%)+上課考勤(10%)+小組項目測試情況(30%)+小組ppt總結(jié)情況(10%)+期末成績(40%)
3.課程資源的開發(fā)與利用
(1)圍繞軟件測試課程,收集教師和學(xué)生必備的軟件測試工具,制作適宜教學(xué)的多媒體教學(xué)課件。
(2)組建軟件外包中心,搭建實訓(xùn)工作平臺,為學(xué)生實訓(xùn)提供真實的工作環(huán)境,從而提高其職業(yè)素養(yǎng)。
(3)要充分開發(fā)網(wǎng)絡(luò)課程,讓學(xué)生在課余時間可以自主學(xué)習(xí),彌補學(xué)生課本知識的不足。
(4)充分利用和開放實訓(xùn)中心,將教學(xué)與實訓(xùn)合一,將理論與實踐合一,滿足學(xué)生綜合能力培養(yǎng)的要求。
(5)積極利用電子書籍、電子期刊、數(shù)字圖書館、校園網(wǎng)、各大網(wǎng)站等網(wǎng)絡(luò)資源,使教學(xué)內(nèi)容從單一化向多元化轉(zhuǎn)變,通過企業(yè)技術(shù)人員的指導(dǎo),課程教師的輔導(dǎo),使學(xué)生知識和能力的拓展成為可能。
4.課程的實施效果
(1)基于項目化的授課內(nèi)容
建立軟件外包中心,引入企業(yè)項目內(nèi)容,軟件測試的授課內(nèi)容緊緊圍繞企業(yè)項目的典型工作任務(wù)開展,學(xué)生的能力與素質(zhì)參照軟件測試工程師的崗位要求,讓學(xué)生真實感受企業(yè)環(huán)境,就業(yè)零距離上崗。
(2)基于過程化的授課方式
老師授課不再單純地講解理論,完全按照企業(yè)的軟件測試流程開展,制定規(guī)范的軟件測試計劃、編寫測試用例、利用測試工具測試、編制測試報告,有利于學(xué)生養(yǎng)成職業(yè)化的學(xué)習(xí)習(xí)慣與工作習(xí)慣。
(3)基于理論實踐一體化的教學(xué)設(shè)備
學(xué)生在軟件外包中心上課以及實驗,真正實現(xiàn)了“做中學(xué),學(xué)中做”的企業(yè)工作環(huán)境。
(4)基于能力化的學(xué)習(xí)評價
學(xué)生的評價不再單純地以理論考試為依據(jù),而是從學(xué)生的軟件測試專業(yè)能力、利用軟件測試工具的能力、團隊溝通協(xié)調(diào)能力進行綜合地評價。
參考文獻
[1]鄭泳.基于工作過程系統(tǒng)化的高職《軟件測試》課程設(shè)計[J].漯河職業(yè)技術(shù)學(xué)院學(xué)院,2010(9).
[2]程茂,溫靜,吳玉潔.《軟件測試》課程的教學(xué)研究[J].河北師范大學(xué)學(xué)報,2010(4).