簡述 軟件測試
工程師作為
軟件質(zhì)量的把關(guān)者,其職能在于保證交付到客戶手中的軟件可靠好用,運行暢通無阻。從產(chǎn)品定義到產(chǎn)品開發(fā)再到產(chǎn)品維護,都離不了軟件測試。
按其級別和職位的不同,可分為三類,即: 高級軟件測試工程師,熟練掌握軟件測試與開發(fā)技術(shù),且對所測試軟件對口行業(yè)非常了解,能夠?qū)赡艹霈F(xiàn)的問題進(jìn)行分析評估;
中級軟件測試工程師,編寫軟件測試方案、測試文檔,與項目組一起制定軟件測試階段的工作計劃,能夠在項目運行中合理利用測試工具完成測試任務(wù);
初級軟件測試工程師,其工作通常都是按照軟件測試方案和流程對產(chǎn)品進(jìn)行功能測驗,檢察產(chǎn)品是否有缺陷。
軟件項目開發(fā)是個分工明確的系統(tǒng)工程,不同的人員扮演了不同的角色,包括部門經(jīng)理、產(chǎn)品經(jīng)理、項目經(jīng)理、系統(tǒng)分析師、
程序員、測試工程師、質(zhì)量保證人員等。可見,軟件測試工程師只是軟件項目開發(fā)中的一個角色而已。
測試工程師承擔(dān)的任務(wù)角色決定工作內(nèi)容和承擔(dān)的任務(wù)。測試工程師的角色應(yīng)該承擔(dān)什么任務(wù)呢?這沒有統(tǒng)一的答案。因為,這與軟件公司的規(guī)模,軟件
項目管理制度,公司領(lǐng)導(dǎo)和項目經(jīng)理的管理風(fēng)格,以及具體軟件項目自身的特點有很大關(guān)系。而且,測試工程師也有普通和高級之分。
籠統(tǒng)的答案列舉如下:
設(shè)置軟件測試環(huán)境,安裝必要的軟件工具。
運行軟件,發(fā)現(xiàn)和報告
軟件缺陷或錯誤。尤其需要快速定位軟件中的嚴(yán)重的錯誤。
對軟件整體質(zhì)量提出評估
確認(rèn)軟件達(dá)到某種具體標(biāo)準(zhǔn)
以最低的成本,最短的時間,完成高質(zhì)量的測試任務(wù)
......
在這其中,最重要的是要明確,程序員的責(zé)任和目標(biāo)。在執(zhí)行任何具體測試任務(wù)前,都要在項目組內(nèi)對于責(zé)任和目標(biāo)達(dá)成共識,以免帶來后續(xù)工作的相互推諉。
提高測試質(zhì)量的要訣 另外一個值得注意的方面就是工作效率和質(zhì)量,或許高級測試工程師與普通測試工程師的主要區(qū)別在于高級測試工程師可以更快地發(fā)現(xiàn)更多軟件中的嚴(yán)重錯誤。對此,有什么可以借鑒的訣竅嗎?請嘗試以下方法,保證不會使您失望。
首先
測試程序的核心功能,然后測試輔助功能。
首先測試功能,然后測試性能。
首先測試常見情況,然后測試異常情況。
首先測試經(jīng)過變更的部分,然后測試沒有變更的部分。
首先測試影響大的問題,然后測試影響小的問題。
首先測試必須測試的部分,然后測試可選或沒有要求測試的部分
測試工程師是項目團隊中的服務(wù)員 需要強調(diào)的一點是,無論你是多么高級的測試
工程師,都要明白無論測試需要的工具多么復(fù)雜,測試步驟多么冗長,測試工程師在軟件項目開發(fā)中始終都是扮演服務(wù)員的角色,這是由測試工作的特點決定的。任何服務(wù)都有被服務(wù)對象—客戶,測試工程師的服務(wù)對象有哪些呢?
最重要的客戶是軟件的用戶。測試工程師需要站在客戶的使用和
需求角度測試軟件,報告問題。
項目經(jīng)理也是客戶。測試工程師需要報告測試工作進(jìn)度和發(fā)現(xiàn)的問題,尤其是嚴(yán)重的問題。
程序員是最經(jīng)常打交道的客戶。為了便于程序員重復(fù)報告的錯誤,盡量提供良好的軟件問題報告,以便程序員可以更快的修復(fù)
軟件錯誤。
技術(shù)文檔工程師、市場開發(fā)人員和
技術(shù)支持工程師也都是測試工程師的服務(wù)對象。
測試工程師避免犯的幾個錯誤 前文已經(jīng)指出測試工程師應(yīng)該明確角色,明確任務(wù)和責(zé)任。知道哪些是自己份內(nèi)的事,哪些是不屬于自己的事。一定要盡最大努力完成份內(nèi)的事,不要做不屬于自己的事情,以免弄巧成拙。
為了更好的扮演軟件測試工程師的角色,盡量避免犯下面的錯誤:
1、承諾完成測試的軟件沒有質(zhì)量問題
軟件測試只是保證質(zhì)量的一種方法,軟件測試工程師的工作不會直接提高軟件質(zhì)量,因為絕大多數(shù)軟件錯誤都需要程序員修復(fù)。軟件測試只能證明軟件存在錯誤,不能保證軟件沒有錯誤,不可能找出全部軟件錯誤。個人的能力和對質(zhì)量的影響范圍很小,軟件質(zhì)量的提高要靠軟件項目團隊全體成員的共同努力。
2、承擔(dān)軟件的發(fā)布權(quán)利
不要因為軟件中存在還沒有修復(fù)的錯誤,而試圖提出更改軟件發(fā)布的計劃。也不要認(rèn)為已經(jīng)完成了
測試計劃,自己決定可以發(fā)布軟件。因為,改變軟件發(fā)布計劃可能要失去進(jìn)入市場的良機和很多客戶,對此造成的經(jīng)濟和公司市場的損失將不是測試工程師能夠承擔(dān)的。另外,軟件發(fā)布后,如果用戶發(fā)現(xiàn)了新的軟件錯誤,公司領(lǐng)導(dǎo)或項目經(jīng)理可能將過錯加在
軟件測試人員的頭上,因為他們同意發(fā)布軟件。通常軟件發(fā)布的權(quán)利由產(chǎn)品經(jīng)理、項目經(jīng)理、測試經(jīng)理、市場經(jīng)理共同集體討論決定。
3、扮演過程改進(jìn)成員的角色
軟件測試工程師必須報告錯誤,有時也要分析錯誤的類型、特征和產(chǎn)生錯誤的原因。但是,不要主動提出改進(jìn)
軟件過程的具體改進(jìn)措施,更不要直接干涉程序員的工作方式,以免出力不討好,影響今后的愉快合作。
軟件過程改進(jìn)的方法是軟件質(zhì)量控制部門的事情,這是他們的本職工作。
[1] 軟件測試就是使用人工或自動手段,來運行或測試某個系統(tǒng)的過程。其目的在于檢驗它是否滿足規(guī)定的需求或弄清
預(yù)期結(jié)果與實際結(jié)果之間的差別。開發(fā)工作的根本是盡量實現(xiàn)軟件用戶的需求,測試工作的根本是檢驗
軟件系統(tǒng)是否滿足軟件用戶的需求。
軟件測試工程師簡單的說是
軟件開發(fā)過程中的質(zhì)量檢測者和保障者,負(fù)責(zé)軟件質(zhì)量的把關(guān)工作。軟件測試工程師
具體工作有: 1 、使用各種測試技術(shù)和方法來測試和發(fā)現(xiàn)軟件中存在的軟件缺陷。測試技術(shù)主要分為
黑盒測試和
白盒測試兩大類。其中黑盒測試技術(shù)主要有
等價類劃分法、邊界值法、因果圖法、狀態(tài)圖法、測試大綱法以及各類典型的軟件故障模型等;白盒測試的主要技術(shù)有語句覆蓋、分支覆蓋、判定覆蓋、基本路徑覆蓋等;
2 、測試工作需要貫穿整個軟件開發(fā)生命周期。完整的軟件測試工作包括單
元測試、集成測試、確認(rèn)測試和系統(tǒng)測試工作。單元測試工作主要在編碼階段完成,由開發(fā)人員和軟件測試工程師共同完成,其主要依據(jù)是詳細(xì)測試。集成測試的主要工作測試軟件模塊之間的接口是否正確實現(xiàn),基本依據(jù)是
軟件體系結(jié)構(gòu)設(shè)計。確認(rèn)測試和系統(tǒng)測試是在軟件開發(fā)完成后,驗證軟件的功能與需求的一致性、驗證軟件在相應(yīng)的硬件條件下的系統(tǒng)功能是否滿足用戶需求,其主要依據(jù)是用戶需求。
3 、測試人員將發(fā)現(xiàn)的缺陷編寫成正式的缺陷報告,提交給開發(fā)人員進(jìn)行缺陷的確認(rèn)和修復(fù)。缺陷報告編寫最主要的要求是保證缺陷的重現(xiàn)。要求測試人員具有很好的文字表達(dá)能力和語言組織能力。
4 、測試人員需要分析軟件質(zhì)量。在測試完成后,測試人員需要根據(jù)測試結(jié)果來分析軟件質(zhì)量,包括缺陷率、缺陷分布、缺陷修復(fù)趨勢等。給出軟件各種質(zhì)量特性包括有功能性、可靠性、易用性、安全性、時間與資源特性等的具體度量。最后給出一個軟件是否可以發(fā)布或提交用戶使用的結(jié)論。
5 、測試過程中,為了更好地組織與實施測試工作,測試負(fù)責(zé)人需要制定測試計劃,包括有測試資源、測試進(jìn)度、測
試策略、測試方法、測試工具、測試風(fēng)險等。
6 、測試人員為了更好更有效地進(jìn)行測試,保證測試工作質(zhì)量,需要在執(zhí)行測試工作之前首先需要設(shè)計測試
用例,形成測試用例報告。設(shè)計測試用例是保證測試質(zhì)量的核心工作,很多測試技術(shù)都可以用來指導(dǎo)設(shè)計用例。為了提高測試用例的設(shè)計效率,BTEST培訓(xùn)課程專門開設(shè)了高效設(shè)計測試用例一門課來講授各種設(shè)計用例的技術(shù)與方法。
7 、為了提高工作效率或提高測試水平,測試工作需要引進(jìn)自動化測試工具,測試人員需要學(xué)會使用自動化測試工具,編寫
測試腳本,進(jìn)行性能測試等。
8 、測試負(fù)責(zé)人在測試工作中,還需要根據(jù)實際情況不斷改進(jìn)測試過程,提高測試水平,進(jìn)行測試隊伍的建設(shè)等。
編輯本段職業(yè)發(fā)展
測
試組長這類測試人員通常是測試項目的負(fù)責(zé)人,既要具備較高的測試技術(shù)能力,還要具備一定的管理能力。主要職責(zé)是制定測試計劃、編寫測試計劃、監(jiān)控和管理整個測試過程。測試組長可以向上發(fā)展為測試部經(jīng)理、質(zhì)量經(jīng)理,也可以橫向發(fā)展為項目經(jīng)理,而且通常待遇相對較高些。
測試分析師
主要職責(zé)是對系統(tǒng)的測試結(jié)果進(jìn)行綜合的分析,例如缺陷分析、性能分析等。測試分析師不但測試技術(shù)能力較強,還要具備
數(shù)據(jù)庫、操作系統(tǒng)等多方面的技術(shù)知識。這類職務(wù)的發(fā)展空間也不錯,可以發(fā)展成
系統(tǒng)設(shè)計師等。
自動化測試工程師、測試開發(fā)工程師
主要職責(zé)是編寫測試
程序、執(zhí)行自動化測試任務(wù)。這類職位的測試人員至少要達(dá)到初級程序員的能力,因為經(jīng)常和程序打交道。發(fā)展空間也不錯,例如可以發(fā)展為程序員。
編輯本段職業(yè)素質(zhì)
計算機專業(yè)技能
計
中國國內(nèi)軟件測試人才現(xiàn)巨大缺口
算機領(lǐng)域的專業(yè)技能是測試工程師應(yīng)該必備的一項素質(zhì),是做好測試工作的前提條件。盡管沒有任何IT背景的人也可以從事測試工作,但是一名要想獲得更大發(fā)展空間或者持久競爭力的測試工程師,則計算機專業(yè)技能是必不可少的。計算機專業(yè)技能主要包含三個方面:
1. 測試專業(yè)技能
測試專業(yè)知識很多,本書內(nèi)容主要以測試人員應(yīng)該掌握的基礎(chǔ)專業(yè)技能為主。測試專業(yè)技能涉及的范圍很廣:既包括黑盒測試、白盒測試、
測試用例設(shè)計等基礎(chǔ)測試技術(shù),也包括
單元測試、
功能測試、
集成測試、
系統(tǒng)測試、
性能測試等測試方法,還包括基礎(chǔ)的測試流程管理、缺陷管理、自動化測試技術(shù)等知識。
2. 軟件編程技能
“軟件編程技能實際應(yīng)該是測試人員的必備技能之一,在
微軟,很多測試人員都擁有多年的開發(fā)經(jīng)驗。因此,測試人員要想得到較好的職業(yè)發(fā)展,必須能夠編寫程序。只有能給編寫程序,才可以勝任諸如單元測試、集成測試、性能測試等難度較大的測試工作。
此外,對軟件測試人員的編程技能要求也有別于開發(fā)人員:測試人員編寫的程序應(yīng)著眼于運行正確,同時兼顧高效率,尤其體現(xiàn)在與性能測試相關(guān)的測試代碼編寫上。因此測試人員要具備一定的算法設(shè)計能力。依據(jù)資深測試工程師的經(jīng)驗,測試工程師至少應(yīng)該掌握J(rèn)ava、C#、C++之類的一門語言以及相應(yīng)的開發(fā)工具。
3. 網(wǎng)絡(luò)、操作系統(tǒng)、數(shù)據(jù)庫、中間件等知識
與開發(fā)人員相比,測試人員掌握的知識具有“博而不精”的特點,“藝多不壓身”是個非常形象的比喻。由于測試中經(jīng)常需要配置、調(diào)試各種測試環(huán)境,而且在性能測試中還要對各種系統(tǒng)平臺進(jìn)行分析與調(diào)優(yōu),因此測試人員需要掌握更多網(wǎng)絡(luò)、操作系統(tǒng)、數(shù)據(jù)庫等知識。
在網(wǎng)絡(luò)方面,測試人員應(yīng)該掌握基本的網(wǎng)絡(luò)協(xié)議以及網(wǎng)絡(luò)工作原理,尤其要掌握一些網(wǎng)絡(luò)環(huán)境的配置,這些都是測試工作中經(jīng)常遇到的知識。
操作系統(tǒng)和中間件方面,應(yīng)該掌握基本的使用以及安裝、配置等。例如很多應(yīng)用系統(tǒng)都是基于Unix、linux來運行的,這就要求測試人員掌握基本的操作命令以及相關(guān)的
工具軟件。而
WebLogic、
Websphere等中間件的安裝、配置很多時候也需要掌握一些。
數(shù)據(jù)庫知識則是更應(yīng)該掌握技能,現(xiàn)在的應(yīng)用系統(tǒng)幾乎離不開數(shù)據(jù)庫。因此不但要掌握基本的安裝、配置,還要掌握SQL。測試人員至少應(yīng)該掌握
Mysql、MS
Sqlserver、
Oracle等常見數(shù)據(jù)庫的使用。
行業(yè)知識
行業(yè)主要指測試人員所在企業(yè)涉及的行業(yè)領(lǐng)域,例如很多IT企業(yè)從事石油、電信、銀行、電子政務(wù)、電子商務(wù)等行業(yè)領(lǐng)域的產(chǎn)品開發(fā)。行業(yè)知識即業(yè)務(wù)知識,是測試人員做好測試工作的又一個前提條件,只有深入地了解了產(chǎn)品的業(yè)務(wù)流程,才可以判斷出開發(fā)人員實現(xiàn)的產(chǎn)品功能是否正確。
很多時候,軟件運行起來沒有異常,但是功能不一定正確。只有掌握了相關(guān)的行業(yè)知識,才可以判斷出用戶的業(yè)務(wù)需求是否得到了實現(xiàn)。
行業(yè)知識與工作經(jīng)驗有一定關(guān)系,通過時間即可以完成積累。
個人素養(yǎng)
作為一名優(yōu)秀的測試工程師,首先要對測試工作有興趣:測試工作很多時候都是顯得有些枯燥的,因此熱愛測試工作,才更容易做好測試工作。因此,除了具有前面的專業(yè)技能和行業(yè)知識外,測試人員應(yīng)該具有一些基本的個人素養(yǎng),即下面的“五心”。
1.專心:主要指測試人員在執(zhí)行測試任務(wù)的時候要專心,不可一心二用。經(jīng)驗表明,高度集中精神不但能夠提高效率,還能發(fā)現(xiàn)更多的軟件缺陷,業(yè)績最棒的往往是
團隊中做事精力最集中的那些成員。
2.細(xì)心:主要指執(zhí)行測試工作時候要細(xì)心,認(rèn)真執(zhí)行測試,不可以忽略一些細(xì)節(jié)。某些缺陷如果不細(xì)心很難發(fā)現(xiàn),例如一些界面的樣式、文字等。
3.耐心:很多測試工作有時候顯得非常枯燥,需要很大的耐心才可以做好。如果比較浮躁,就不會做到“專心”和“細(xì)心”,這將讓很多軟件缺陷從你眼前逃過。
4.責(zé)任心:責(zé)任心是做好工作必備的素質(zhì)之一,測試工程師更應(yīng)該將其發(fā)揚光大。如果測試中沒有盡到責(zé)任,甚至敷衍了事,這將會把測試工作交給用戶來完成,很可能引起非常嚴(yán)重的后果。
5.自信心:自信心是現(xiàn)在多數(shù)測試工程師都缺少的一項素質(zhì),尤其在面對需要編寫測試代碼等工作的時候,往往認(rèn)為自己做不到。要想獲得更好的職業(yè)發(fā)展,測試工程師們應(yīng)該努力學(xué)習(xí),建立能“解決一切測試問題”的信心。
“五心”只是做好測試工作的基本要求,測試人員應(yīng)該具有的素質(zhì)還很多。例如測試人員不但要具有
團隊合作精神,而且應(yīng)該學(xué)會寬容待人,學(xué)會去理解“開發(fā)人員”,同時要尊重開發(fā)人員的勞動成果——開發(fā)出來的產(chǎn)品。
編輯本段外包軟件測試工程師
外包軟件測試工程師主要承接外包軟件測試工作,外包軟件測試就是指
軟件企業(yè)將軟件項目中的全部或部分測試工作,交給提供軟件外包測試服務(wù)的公司,由他們?yōu)檐浖M(jìn)行專門的測試。這樣做的好處有兩個:一方面軟件企業(yè)可以更好地專注核心競爭力業(yè)務(wù),同時降低軟件項目成本;另一方面,由第三方專業(yè)的測試公司進(jìn)行測試,無論在技術(shù)上還是管理上,對提高軟件測試的有效性都具有重要意義。
外包軟件測試行業(yè)前景非??春?,發(fā)展空間很大。IDG的數(shù)據(jù)顯示,最近幾年,
中國的軟件外包產(chǎn)業(yè)年均增長率為36.5%,正處于快速發(fā)展的階段,2008年預(yù)計已達(dá)到16.9億美元的市場規(guī)模。目前韓日、歐美國家的軟件企業(yè)紛紛關(guān)注
中國市場,而作為軟件外包強國的
印度,在其國內(nèi)處于前幾位的軟件外包服務(wù)商也準(zhǔn)備來“分一杯羹”。從目前市場來看,選擇將部分軟件測試工作進(jìn)行外包的公司主要是微軟、IBM等國際軟件
旗艦企業(yè),他們利用第三方專業(yè)軟件測試公司,在產(chǎn)品發(fā)布前對軟件進(jìn)行一系列的集成測試和系統(tǒng)測試,即保證了測試工作的全面性,又節(jié)省了人力、物力的開銷。最重要的是,測試結(jié)果往往好于這些軟件企業(yè)最初的預(yù)期,效果非常令人滿意。軟件企業(yè)和提供軟件外包測試服務(wù)的公司進(jìn)行合作,只要達(dá)成雙贏,兩方皆大歡喜,這樣的合作就會越來越多,項目也會越做越大。
主要業(yè)務(wù)類型
·本地化軟件測試
·
國際化軟件測試主要測試的范圍
·本地化語言質(zhì)量測試
·國際化軟件的功能和性能測試
測試工作主要方式
·公司內(nèi)部(In house)執(zhí)行的測試
·派駐客戶開發(fā)中心的現(xiàn)場測試(On site)。
編輯本段《軟件測試工程師指南》
作者簡介:
Timur 趙,Nortel 高級測試主管,浙大博士;
當(dāng)你生活于
網(wǎng)絡(luò)時代,只要原地不動就很容易落伍了。
沒有經(jīng)驗,不知如何躋身于測試工程師的行列?以下幾個基本方向能使你從新手成為軟件測試的行家里手。
軟件工業(yè)是自動化工業(yè)的一部分。而且是最活躍發(fā)展最迅速的一個方面。到底有多迅速?任何人的想像力都不夠!正如我們不會把我們的事務(wù)托付給不可靠的經(jīng)紀(jì),任何有分量的公司都不會采用沒有質(zhì)量保障的軟件。軟件測試人員,我是說有水平有經(jīng)驗的軟件測試人員永遠(yuǎn)是供不應(yīng)求的。軟件
測試經(jīng)理不得不花很多的時間去面試有潛力的應(yīng)聘者。一些應(yīng)聘者在軟件方面或者軟件測試方面毫無實際經(jīng)驗,明知道軟件測試工作是一個高回報的和最合適的軟件工業(yè)入門,就是無法抓住一個又一個機會。這些人真正需要的是一個指南能告訴他們?nèi)绾纬蔀橐粋€軟件測試工程師。
首先,進(jìn)入軟件測試需要哪些技能? 1、
軟件工程技能 你必須了解軟件軟件工程(設(shè)計、開發(fā)和簡單測試),應(yīng)用,系統(tǒng),自動測試編程,及操作系統(tǒng),數(shù)據(jù)庫,網(wǎng)絡(luò)系統(tǒng)和協(xié)議的設(shè)計和使用。
?。病⒔涣骷记伞∪绻氪_定軟件缺陷,你應(yīng)當(dāng)能夠指出什么時候的缺陷算是缺陷。
?。?、組織技能 如果你在別人都頭腦發(fā)昏的時候保持清醒,你就可能是一個好的軟件測試工程師。在網(wǎng)絡(luò)時代軟件測試是一項有壓力的復(fù)雜性工作,但如果你能從這些紛繁中找到一種途徑,它就是一項回報豐厚的事業(yè)。
?。?、實踐技能 當(dāng)一個工作需要經(jīng)驗,而你又需要一個工作去豐富你的經(jīng)驗時該怎么辦?這并不完全是一個兩難的問題,你可能采用幾種方式去獲得實際經(jīng)驗。
5、態(tài)度 除了技術(shù)水平,你需要理解和采取適當(dāng)?shù)膽B(tài)度去做軟件測試。
(Software Engineering Skills)
軟件工程技能可以分成三大塊:理解軟件工程的規(guī)則,了解計算機編程和操作系統(tǒng)知識。
理解軟件工程“規(guī)則”。有一種過時的眼光認(rèn)為軟件工程只是由一些在工作期限之前瘋狂編程、靠著非凡的協(xié)調(diào)能力和超人般的咖啡消耗整夜不睡,不停地設(shè)計和測試程序的“專家”們組成的。這種現(xiàn)象確實存在,但你只有了解了軟件開發(fā)的真正過程,才會是一個專業(yè)人員。
從哪開始呢?先到圖書館去走一走。你需要建立軟件測試知識的
軟件工程基礎(chǔ)。我的建議是閱讀Roger Pressman的軟件工程:A Practitioner's Approach, fifth edition (職業(yè)入門,第五版,McGraw Hill, 2000年版)和 Glenford Myers的The Art of Software Testing(軟件測試藝術(shù),John Wiley & Sons, 1979年版)。Pressman的書是一個對軟件工程原理的全面介紹。有很多關(guān)于軟件技巧、項目管理、要求分析和軟件設(shè)計等軟件工程方面的好書,但Pressman對這些方面在一本書里作了介紹。Glenford Myers不到二百頁,1979年發(fā)行,卻是軟件測試方面的圣經(jīng)。Myers定義及詮釋的測試方法論已成為軟件測試的基本模塊。
Myers還考查了軟件測試中的經(jīng)濟(缺陷的代價)和心理學(xué)方面(測試的目標(biāo)就是發(fā)現(xiàn)失誤及不成功之處),以及主導(dǎo)軟件開發(fā)和測試的基本原則。
對參考書進(jìn)行基本研究是一個好的開端,但這只是單方對話。如果你能和上千個直接具有軟件工程和測試經(jīng)驗的人以及想進(jìn)入這一領(lǐng)域的人對話是不是再好不過了呢?感謝那些網(wǎng)絡(luò)電子部落,你已經(jīng)可以做到了。Comp.software-eng覆蓋了設(shè)計、編程、項目管理等軟件工程的各個方面。Comp.software.testing涵蓋了軟件測試的自動化、培訓(xùn)、技巧等方面。
等等,別只停留在這里!你是不是應(yīng)當(dāng)經(jīng)常訪問這些網(wǎng)址呢?Bug-Net(http://65.54.244.250/cgi-bin/linkrd...%2ebugnet%2ecom)是有關(guān)軟件缺陷的在線雜志。閱讀有關(guān)缺陷的文章是學(xué)習(xí)如何工作及失敗的極好方式。你也應(yīng)當(dāng)查閱軟件測試及質(zhì)量工程雜志(http://65.54.244.250/cgi-bin/linkrd...ww%2estqe%2ecom)。STQE 是確定網(wǎng)絡(luò)軟件測試資源很好的始發(fā)站。
計算機編程。不能想像有的人喜歡測試產(chǎn)品卻從不閱讀、檢查和理解組成產(chǎn)品的軟件一樣。
不要誤解我的意思。你不必花所有的時間去讀
源代碼,但任何你做過的有關(guān)自己程序的設(shè)計、編寫和糾錯都能大大地有助于測試別人編寫的程序。
你怎樣學(xué)習(xí)編程?通過編程??梢試?yán)肅地說,開始學(xué)習(xí)寫計算機程序是最簡單的事。記住我說的是“開始學(xué)習(xí)”。軟件編程環(huán)境,例如 Microsoft Windows Foundation Classes (MFC) or Sun's Java Foundation Classes (JFC, also called "Swing")不斷變得越來越復(fù)雜,越來越難跟得上。
但我在努力超越自己。你應(yīng)當(dāng)怎樣學(xué)習(xí)編程呢?
首先,買Microsoft Visual Basic。不要讓名字騙了你。你能用這套組件建立相當(dāng)復(fù)雜的程序。而且它只要一百元左右。下一步呢?等等,是visual編程警告的時候了!
現(xiàn)在你為你的PC買一個程序語言的時候,你其實是買了一個集成開發(fā)系統(tǒng)或稱為IDE。這些IDE通過對編程的簡化把開發(fā)過程流水線化。這些IDE其實會幫你寫很多編碼。這非常有利于盡早開發(fā)出一個產(chǎn)品,卻不利于你學(xué)習(xí)編程。如果你用Windows產(chǎn)生程序,你別無選擇,因為環(huán)境介入太多使你無法從頭編程。如果你從Unix系統(tǒng)產(chǎn)生程序,你能自己寫所有的編碼。
一旦你習(xí)慣了與參量、控制結(jié)構(gòu)、
對象、輸入輸出及更重要的Visual Basic糾錯打交道的時候,你就可以開始學(xué)習(xí)C語言了。學(xué)習(xí)C能使你熟悉十六進(jìn)制系統(tǒng),通過指針分配和參考內(nèi)存,存取個體位碼及建立
程序模塊。
我總是認(rèn)為在學(xué)Java之前最好先學(xué)會C,因為C強迫你自己去完成許多任務(wù)而Java會自動處理(例如,釋放未用的空間)。用C工作比Java難,但你能學(xué)到編程更多的基本方面。你其實能用
Visual C++ IDE從頭寫C程序,但最好還是在Unix系統(tǒng)中學(xué)C。
操作系統(tǒng)知識。你已經(jīng)把它交給了在Redmond, Washington的那些人了。在短短的幾年內(nèi),Windows NT已經(jīng)成為世界上大部分計算機的標(biāo)準(zhǔn)操作系統(tǒng)。如果你要用NT工作,你需要了解它的寄存地址。(它是一種用于存儲你的系統(tǒng)結(jié)構(gòu)的各個方面的數(shù)據(jù)庫。)我發(fā)現(xiàn)Peter Norton寫的Inside
Windows NT 4.0 (SAMS, 1998)是一本很好的介紹書。但是,如果你的應(yīng)用或系統(tǒng)要求高的保密度、產(chǎn)出、可靠性及靈活性,Unix依然是最好的選擇。
如果你想成為一個成功的
軟件工程師,你必須能在Unix的世界里工作,如果你想從頭學(xué)習(xí)編程,也要在Unix下進(jìn)行。
你的選擇是什么?你可以到當(dāng)?shù)氐膶W(xué)校或大學(xué)學(xué)習(xí)課程,或者在家建立一個Unix系統(tǒng)。別昏過去了,你所需要的只是一臺PC和一份能讓你從網(wǎng)絡(luò)免費下載的Linux拷貝。(你大約花二十九元能買一份在一個
CD-ROM中帶了所有文件的拷貝。)Linux不是Unix的“玩具”版,它是真實的。它已經(jīng)發(fā)行了七百萬份拷貝,一些主要的PC生產(chǎn)商甚至先替你裝載了它。
好了,你已經(jīng)到了Unix或Linux系統(tǒng)了。你應(yīng)當(dāng)學(xué)些什么?文件和目錄結(jié)構(gòu),標(biāo)準(zhǔn)輸入輸出和錯誤流,背景(background,也稱為"daemon")處理,從C調(diào)用系統(tǒng)功能,好,我可以接下去了。一個好的開端是讀Arnold Robbins的Unix in a Nutshell (O'Reilly & Associates, 1999)或者是Ellen Siever的Linux in a Nutshell (O'Reilly & Associates,1999)。
(Communications Skills)
能寫出計算機程序卻寫不出一個完整句子的軟件工程師現(xiàn)在還有。但不幸的是,要成為一個成功的軟件測試工程師,你需要清楚的交流。
你怎么去學(xué)習(xí)寫?通過寫。如果文字水平太粗糙,上一門創(chuàng)造性寫作的課。每天寫工程流水記錄或發(fā)email。關(guān)鍵是學(xué)習(xí)(或重新學(xué)習(xí))怎樣用清晰可懂的語言表達(dá)你的思想。一個好的寫作參謀是William Strunk Jr.和E.B. White寫的The Elements of Style(Allyn & Bacon, 2000),它一點也不象初中教科書。
測試工程師必須把產(chǎn)品測試的技術(shù)寫成文件。測試計劃提供指導(dǎo)并把測試設(shè)計轉(zhuǎn)化為設(shè)置、實現(xiàn)測試和評估結(jié)果的步驟指導(dǎo)。具有一般軟件和產(chǎn)品特性不同層次經(jīng)驗的工程師都能使用這樣一個詳細(xì)的測試計劃。如此測試設(shè)計者或測試方案作者之外的工程師也能能進(jìn)行測試。
測試計劃也幫著佐證測試策略的正確性。項目中的每個人都應(yīng)當(dāng)參與審查(即市場、開發(fā)、支持、技術(shù)寫作及測試人)。計劃的審查是必不可少的,因為盡管測試工程師盡最大努力來達(dá)成一個對產(chǎn)品的全面定義,這一測試設(shè)計者所基于的定義不一定是完整或準(zhǔn)確的。此外,就象開發(fā)者很難測試他們自己的編碼一樣,測試工程師也很難明確評估他們自己的測試計劃。每一個計劃審查者都可能根據(jù)其經(jīng)驗及專長建議修改,有時候?qū)彶檎哌€能提供測試工程師在組織產(chǎn)品定義時不具備的信息。例如,一個市場人員可能了解到了新的客戶要求,一個軟件支持專家可能從有關(guān)的產(chǎn)品領(lǐng)域了解到了一個新的缺陷報告。
測試計劃強調(diào)測試計劃和執(zhí)行的原則。在測試計劃中描述進(jìn)行測試所需的測試設(shè)計和步驟是另一層關(guān)于測試設(shè)計和計劃的原則。在測試設(shè)計和計劃中的錯誤與欠缺在設(shè)計轉(zhuǎn)化成測試計劃中特定的結(jié)構(gòu)和測試步驟后就經(jīng)常是再已無法彌補。
測試計劃可作為其它項目,例如為不同的產(chǎn)品準(zhǔn)備測試時的參考資料。當(dāng)被測試軟件找到缺陷解決并證實后,測試計劃所述的測試可以用于證實缺陷的解決方案。同時,一個主要的測試設(shè)計信息來源,特別對于舊產(chǎn)品的新版本而言,是相關(guān)產(chǎn)品或前版本的測試計劃。在建立新版本時,舊版本的
軟件測試計劃都應(yīng)當(dāng)被重新審查。
與功能與設(shè)計說明不同,測試計劃將從測試的角度來描述產(chǎn)品的功能操作。從這方面說,測試計劃構(gòu)成了公司公共檔案的一部分。隨著時間的流逝人們會離開公司,帶走他們的知識。以前產(chǎn)品的測試計劃就能幫助你定義新產(chǎn)品的測試。
軟件測試工程師還要寫測試結(jié)果報告。測試結(jié)果必須寫成文檔,這樣就能確定被測軟件的狀態(tài),提供關(guān)于必須要解決的缺陷的記錄。產(chǎn)品測試中發(fā)現(xiàn)的所有缺陷的記錄是測試部門最顯眼、保存時間最長的文檔。測試計劃和測試報告在項目的最后常被遺忘,但現(xiàn)存缺陷的清單(或數(shù)據(jù)庫)代表項目未完成的議程。這一議程沒完成是因為一些缺陷必須在對原來產(chǎn)品的一個patch或maintenance release的時候糾正,或者它們在這個產(chǎn)品作為后續(xù)產(chǎn)品的基礎(chǔ)之前被修復(fù)。
在與軟件產(chǎn)品打交道的過程中,測試工程師比其他部門的人參與項目的更多方面。測試部門應(yīng)當(dāng)記錄項目過程中重大事件(例如設(shè)計決定)的信息。這個信息應(yīng)能幫助測試部門和其他部門避免在后續(xù)項目中犯同樣的錯誤。錯誤是不可避免,在一個項目中可能出問題。從這些經(jīng)驗中學(xué)習(xí)就可能避免問題,避免今后的同樣錯誤。從錯誤中學(xué)習(xí)的第一步就是記住它們,記憶的第一步就是把它們寫下來。
(Organizational Skills)
每當(dāng)執(zhí)行一個軟件項目的測試計劃,幾乎不可能不遇到至少會阻礙一些測試而必須解決的缺陷。一個測試工程師應(yīng)當(dāng)能靈活地停止測試產(chǎn)品的一部分而開始測試其他部分。有時被測軟件需要做根本變動引起大量的測試結(jié)果失效,測試也許得重做不止一次。在問題被查找和改變在進(jìn)行的過程中,測試工程師必須有條理,保持對執(zhí)行測試的軟件的前后關(guān)系的明確感受(例如目前被測試的程序特定版本的不同部分)。
網(wǎng)絡(luò)時代要求的
動態(tài)開發(fā)和測試
模式使組織性的工作方式對測試工程師越來越重要。在整個開發(fā)過程中被測試軟件可能會不斷地改進(jìn)。測試工程師在計劃和實施測試的時候必須考慮這些變化因素,必須控制測試環(huán)境來保證測試結(jié)果的有效性。
記住計劃是一個動詞。作為一個軟件工程師,你永遠(yuǎn)不會有你想要的所有時間和資源。你總是必須通過理解技術(shù)和產(chǎn)品,開發(fā)組織方式,從你和其他人的錯誤中學(xué)習(xí),以及在設(shè)計必須改變和出問題的時候的迅速調(diào)整,使你的測試效果和效率最大化。如何能做到這點呢?基本代數(shù):量化任務(wù)、目標(biāo)和結(jié)果來減少方程中的變量數(shù)。把產(chǎn)品的功能定義成要求。在測試計劃和測試中量化測試及其預(yù)期的和實際的結(jié)果,把信息提供給項目組。你東點一下西點一下是不能完成整個測試的。未來軟件開發(fā)的組織模式要求有靈活的設(shè)計和不斷進(jìn)化的開發(fā)周期。對產(chǎn)品測試必須隨著產(chǎn)品的進(jìn)化而進(jìn)化。
編輯本段4、實踐經(jīng)驗
(Hands-On Experience)
這是個典型的兩難問題。你需要軟件測試經(jīng)驗來找工作,你沒工作你就沒經(jīng)驗。你該怎么辦?
Be careful! 這需要勇氣和你的PC的小心
備份。
作為自愿者參與beta測試。怎樣發(fā)現(xiàn)需要beta測試員的公司呢?首先,給你在軟件公司工作的親友打電話。偶爾有人會需要beta的測試人員。如果這不行,到你最喜歡的
網(wǎng)絡(luò)搜索引擎上去找“beta test”。你會發(fā)現(xiàn)很多小(和不那么小的)公司亟需beta測試員。為什么?這得感謝互聯(lián)網(wǎng),競爭的加劇使公司必須做出產(chǎn)品模型貼到他們的網(wǎng)址上作為“beta”版推出。這些公司希望人們不僅測試他們的產(chǎn)品,而且對這些免費品感興趣進(jìn)而購買他們的產(chǎn)品。
你也能參與開放資源的項目,例如Mozilla,開放資源的網(wǎng)絡(luò)瀏覽器是網(wǎng)絡(luò)瀏覽器的基礎(chǔ)。Mozilla
缺陷跟蹤系統(tǒng)(允許網(wǎng)上任何感興趣的人直接
在 http://65.54.244.250/cgi-bin/linkrd...2emozilla%2eorg 的開放資源項目中直接報告和跟蹤缺陷
一句忠告:如果你要把很多beta軟件下載到你家里的PC里,投資你的
備份設(shè)備和防病毒組件。
編輯本段5、態(tài)度
?。ˋttitude)
“我希望你幸福的夢想,被你打破了!”
我打賭這句話能勾起一些人童年記憶的創(chuàng)傷。我不是心理學(xué)家,但我還敢說這種說法是因為我們渴望看到成功。在軟件測試中,你不僅要證實軟件在做它該做的,還要證實它不會做它不該做的。為了做到這一點,你得找出軟件的失敗之處。
進(jìn)行軟件測試需要很多人的眼光要進(jìn)行一百八十度的轉(zhuǎn)變,因為測試的目標(biāo)是要讓被測軟件失敗,由此產(chǎn)生出等同于其他東西工作正確時的成功。在軟件測試中,一個成功的測試揭示一個缺陷。進(jìn)行軟件測試也是因為互聯(lián)網(wǎng)的來臨要求人們用一種大不同以往的眼光來看待動態(tài)的開發(fā)和測試模型。
?。∟ecessary Traits)
軟件測試工程師除了技術(shù),還要求具有否定性的創(chuàng)造力;探測技巧;總體理解產(chǎn)品的能力;用客戶的眼光進(jìn)行評估;懷疑的而不是敵意的態(tài)度;能經(jīng)受得住壞消息而保持目標(biāo);擁抱新技術(shù)的熱望等特征。
否定性的創(chuàng)造力。
一個軟件工程師不能怕引起一個產(chǎn)品的癱瘓或燒毀。在軟件測試中,邊界意味著被超越而不是被遵從。如果一個程序?qū)δ硞€值的極限為10(例如,可以在一時間被打開的最大文件數(shù)),測試工程師的第一想法應(yīng)當(dāng)是“如果我把那個值取11,或0,或10.1,甚至不設(shè)這個值會如何?”
在我的早期的工作生涯中,有一次我測試一個開發(fā)和QA工程師遺漏下來的PC數(shù)據(jù)庫。有問題的數(shù)據(jù)庫是2.01版。這本身就說明產(chǎn)品有問題。2.0版沒解決1.0版的所有缺陷嗎?或者2.0版又加入了新的缺陷?很遺憾因為時間緊我沒有調(diào)查這些,只是證實了最后的缺陷修復(fù)后就告捷了。
這是很大的錯誤。我應(yīng)當(dāng)重測開發(fā)人員所謂“沒有變化”的所有產(chǎn)品功能。2.0版本中的缺陷確實復(fù)修了,但在修復(fù)的過程中,有人破壞了請求。事實就是如此,在數(shù)據(jù)庫里不能搜索數(shù)據(jù)了,第一個收到這項產(chǎn)品的beta客戶發(fā)現(xiàn)了這個缺陷。
我宣布以前的測試無效,要求對產(chǎn)品進(jìn)行全面測試。找到幾個缺陷之后,我發(fā)現(xiàn)這個數(shù)據(jù)庫讀取寫保護文件或?qū)懕Wo了的磁盤的時候就會引起癱瘓。開發(fā)人員很吃驚我會試著寫保護一個數(shù)據(jù)庫。他們的反應(yīng)就是:“沒人會這么干的!”產(chǎn)品的市場經(jīng)理很快用他們的方式承認(rèn)了錯誤。
探測技巧。
在一個理想的世界中,軟件測試應(yīng)當(dāng)在一個經(jīng)常更新的寫得很清楚的功能與設(shè)計說明文件(一般被稱為“specifications”)中被完整而精確地描述。不幸的是,這一完善被開發(fā)程序每一方面文件的任務(wù),包括記錄在開發(fā)中對程序不可避免的改變,要花很多的時間和精力以至于人們無法完成編程。而且花費也太大。
正式與非正式的信息源
正式系統(tǒng)
要求文件
功能說明書
設(shè)計說明書
非正式系統(tǒng)
用戶文件
與其他開發(fā)人員的交流
與軟件支持人員的交流
有關(guān)產(chǎn)品的文件
有關(guān)產(chǎn)品的缺陷
從工作于相關(guān)或早期版本產(chǎn)品獲得的“局部知識”
因為我們不是在理想世界里編程,測試工程師應(yīng)當(dāng)能夠自己找出工作的方式。典型的是,總會有一些設(shè)計和功能說明書讓測試工程師用于開始他的研究。這些文件能看成為描述被測試軟件的“正式”系統(tǒng)。測試工程師應(yīng)當(dāng)能用更廣大的“非正式”系統(tǒng)的信息來擴展“正式”系統(tǒng)的信息。同時,在項目周期的任何一個點,任何文件都可能是正確或不正確的,所以測試工程師必須根據(jù)對軟件工作模式的觀察,與開發(fā)人員和其他項目人員的交談,或?qū)τ嘘P(guān)或看上去不那么相關(guān)文件的審核,來確定文件的精確性。
總體理解產(chǎn)品。
在一個程序項目是,
軟件開發(fā)工程師主要把他們的精力和注意力集于自己的項目部分。結(jié)果當(dāng)這些項目部分組合在一起進(jìn)行測試的時候,就會碰到兼容性的問題。到產(chǎn)品寄給一個客戶之前,唯一能見到整個產(chǎn)品的就是測試工程師。因此測試工程師必須能夠?qū)φ麄€產(chǎn)品的操作與使用保持一種“系統(tǒng)”的眼光。
測試工程師對產(chǎn)品的任何一部分的操作可能不是最好的專家,但他必須是產(chǎn)品整體操作的專家。例如,如果被測的產(chǎn)品是一個類似于Microsoft Office的由文字處理、擴展頁和其他有關(guān)程序組成的辦公室自動組件,測試工程師必須了解每個程序的操作,各個程序之間的相互作用和客戶其他的軟件硬件和
軟件環(huán)境。
用客戶的眼光進(jìn)行評。
測試工程師必須是客戶的擁護者。被測程序有可能運行可靠滿足所有的設(shè)計要求,但在客戶的軟件環(huán)境中未必能夠用。產(chǎn)品被送到客戶之前的測試之一就是要證實產(chǎn)品達(dá)到了客戶的要求與期望。在這項測試中,測試工程師必須模擬用戶的軟件環(huán)境,把自己放到他們的位置上。
關(guān)于軟件功能“正確”而不能滿足客戶需要的一個悲劇性的例子就是
美國航空公司965航班1995年在
哥倫比亞卡利市的一次失事。在飛行著陸時,空中信號控制系統(tǒng)指示機組人員朝一個叫“Rozo”的航空信號燈飛。這個信號燈在航空圖中標(biāo)為R。機組人員把R輸入到
飛行管理計算機中,看到了明顯是由近到遠(yuǎn)列出的六個航空信號燈。機組人員選了第一個信號燈,以為這就是Rozo。但那不是。自動駕駛儀把飛機向左轉(zhuǎn)了九十度,撞到了山上。
什么地方出錯了呢?當(dāng)航空表里把Rozo列為R的時候,飛行管理計算機要求機組人員輸入信號燈的全名調(diào)出它的方位。同時,計算機只顯示了信號燈的編碼字母和方位。計算機功能“正確”,但不滿足用戶的需求。
要求變化。
項目剛開始時的要求與最終項目完成時的要求一致的情況是極少見的。有時技術(shù)變化了,產(chǎn)品必須改變以適應(yīng)于技術(shù)。有時競爭對手的產(chǎn)品具有你的產(chǎn)品所沒有的功能。很多情況下,客戶的或潛在客戶的要求需要變化。這些因素合在一起的一個例子就是目前Microsoft Internet Explorer和Netscape的競爭。
隨著計算機首次用戶的迅速增加,今天的測試工程師比以往更需要把自己置于客戶的位置上。這些新的非技術(shù)用戶不愿意接受缺陷,對缺陷的解釋或理性思考,或通過“升級”修正缺陷。他們只希望他們所買產(chǎn)品的軟件和硬件都是能工作的。
懷疑的而不是敵意的態(tài)度。
測試工程師不能按表面值接受事物,必須執(zhí)著地對一切提出疑問直到被證實。工程師必須用一種與項目的其他的人合作精神來平衡這種懷疑性與執(zhí)著性。測試部門與其有關(guān)部門的關(guān)系可能會變得緊張,特別是在大量缺陷被發(fā)現(xiàn)后,或者在每個找出的缺陷會潛在地延遲產(chǎn)品的發(fā)貨時間而延遲了項目時。測試工程師應(yīng)當(dāng)記住要攻擊程序的整體性,而不是程序員。
經(jīng)受得住壞消息而保持目標(biāo)的能力。
一個測試工程師必須忠實地匯報產(chǎn)品中的缺陷。這一信息應(yīng)當(dāng)被項目組歡迎,因為每一個測試工程師遇到的問題(除非加入新的問題)都意味著減少客戶會面臨的問題。但不幸的是很多人不想聽到有問,特別是在程序項目的后期。
測試工程師應(yīng)當(dāng)能處理因為工作做得太好而引起責(zé)備的情況。這對有些人來說是很難做到的,會嚴(yán)重地影響斗志與自尊。
看起來常常是測試工程師阻撓了向客戶交貨。客觀的項目經(jīng)理才能感覺到測試工程師是在對項目提供有價值的服務(wù)。我清楚地記得一個項目經(jīng)理舉起他的手求我他要的是:“解決方案,不是問題!”(他不明白解決方案的實現(xiàn)有時要求一個問題的解決。)有時項目經(jīng)理在項目計劃不方便的時候?qū)τ谝驗榘l(fā)現(xiàn)缺陷而打折是有壓力的。在這些情況下,測試工程師應(yīng)當(dāng)能基于他對產(chǎn)品的經(jīng)驗和知識進(jìn)行辯護,但他不應(yīng)表現(xiàn)為象是他個人受到了威脅。
如何避免這些情形呢?就測試的內(nèi)容、時間及如何更新測試結(jié)果和缺陷信息,設(shè)定其他項目組成員的期望。我曾經(jīng)為一個希望延遲產(chǎn)品發(fā)送日期的QA經(jīng)理工作過。他的目的不是為了產(chǎn)品成功,而是政治權(quán)力的操縱。他確信自己能被提升,把一些為他工作的工程師指定為“manager”,開始自稱為“director”,還要大樓管理人員把他的辦公隔間加寬一英尺。(這沒有實現(xiàn),但至少他的座位有了更多伸腳的余地。)
擁抱新技術(shù)的熱望。
對多數(shù)人來說,年齡越大越難學(xué)習(xí)。在商業(yè)世界里,人員越往公司的食物鏈高處走,越遠(yuǎn)離他們所建立的技術(shù)基礎(chǔ)。這一部分是因為他們需要把精力集中于其他的經(jīng)營和指導(dǎo)其下屬的任務(wù)中。有時也是因為他們不幸地認(rèn)為自己已不需要進(jìn)行實踐的技術(shù)工作了?;ヂ?lián)網(wǎng)增加了技術(shù)變化的速度。不繼續(xù)學(xué)習(xí)或跟著發(fā)展就無法做出商務(wù)與技術(shù)的決斷。
從前的一個經(jīng)理給我樹立了如何對待新技術(shù)的榜樣。我跟他工作的時候他年近六十,但他象新手一樣地?zé)嵝挠趯W(xué)習(xí)新技術(shù)。他大量地獲取信息,不斷補充在網(wǎng)絡(luò)服務(wù)器、
防火墻、和Perl或Expect等新語言的知識。他還重視做QA或測試組織的工作。他的最初背景是軟件開發(fā)和開發(fā)管理,但他并不認(rèn)為做QA經(jīng)理是在降低他的聲望。他明白一個獨立的測試或QA組所進(jìn)行的完整測試能使開發(fā)經(jīng)理的工作變得多簡化。
正象我所說的,當(dāng)你生活于網(wǎng)絡(luò)時代,只要原地不動就很容易落伍了。
相對于其他軟件工程人員, 軟件測試工程師的知識面應(yīng)該非常寬廣,但最重要的品質(zhì)應(yīng)該是能夠在第一時間內(nèi)接受新技術(shù)。
由于公司之間的競爭日益集中在質(zhì)量方面,所以公司對軟件測試人員的需求量也越來越大,這一點,在
北美尤為明顯,這決定了軟件測試行業(yè)的前景可喜,同時也為愿意不斷進(jìn)取、學(xué)習(xí)新技術(shù)的華人移民提供了廣闊的就業(yè)空間,軟件測試工程師的就業(yè)機會一直都是非常多的,最關(guān)鍵,要善于抓住機遇并肯付出努力,踏踏實實的學(xué)起來、做起來。
編輯本段開設(shè)課程
搭建 Windows 測試環(huán)境
使用 C 語言開發(fā)簡單應(yīng)用
測試計劃與軟件缺陷
高效設(shè)計測試用例
白盒測試
Linux 與網(wǎng)絡(luò)應(yīng)用環(huán)境
WEB 技術(shù)與數(shù)據(jù)庫
高效使用自動測試工具
軟件測試實訓(xùn)
職業(yè)導(dǎo)向訓(xùn)練
華為軟件測試工程師學(xué)習(xí)大綱
一、軟件測試的原理
v 軟件工程:軟件的含義、軟件開發(fā)過程的特性 、軟件生命周期模型、軟件管理過程軟件質(zhì)量和質(zhì)量保證:軟件質(zhì)量就是客戶的滿意度 、質(zhì)量的概念、軟件質(zhì)量的內(nèi)涵、質(zhì)量管理體系、SQA、SCM、SEPG
v 軟件測試概念:軟件危機、軟件測試產(chǎn)生的背景,軟件缺陷是什么、軟件測試職業(yè)發(fā)展,軟件測試人員應(yīng)具備的素質(zhì)和技能、軟件測試基本概念、軟件測試的目的、軟件測試的重要性、軟件測試的原則、軟件開發(fā)與軟件測試
v 軟件測試依據(jù)和規(guī)范:軟件質(zhì)量標(biāo)準(zhǔn)、軟件測試規(guī)范、界面規(guī)范、編碼規(guī)范、CMM和ISO9001思想結(jié)構(gòu)體系、CMM VS ISO
二、軟件測試的技術(shù)
v 軟件測試技術(shù)概述:軟件測試的基本方法,黑盒測試、白盒測試、靜態(tài)測試、動態(tài)測試、測試策略
v 軟件測試流程:軟件測試流程、通用測試文檔模板 、軟件測試的分類、軟件包的質(zhì)量特性
v 單元測試和集成測試:什么是單元測試、單元測試的目標(biāo)和任務(wù)、單元測試方法、調(diào)試與評估、什么是集成測試、集成測試目標(biāo)和任務(wù)、集成測試的模式與方法
v 系統(tǒng)測試和驗收測試:什么是系統(tǒng)測試,系統(tǒng)測試的目標(biāo)和任務(wù),系統(tǒng)測試方法,系統(tǒng)測試中工具的應(yīng)用、什么是驗收測試、驗收測試的目標(biāo)、驗收測試的過程和主要內(nèi)容、產(chǎn)品規(guī)格說明書的驗證
v 特定類型的軟件測試:面向?qū)ο筌浖臏y試、面向?qū)ο筌浖奶攸c、面向?qū)ο鬁y試的層次與數(shù)據(jù)流、面向?qū)ο蟮膯卧獪y試、面向?qū)ο蟮募蓽y試 、基于應(yīng)用服務(wù)器的測試、應(yīng)用服務(wù)器的分類和特征、基于Web服務(wù)器應(yīng)用的測試、基于數(shù)據(jù)庫應(yīng)用服務(wù)器的測試、基于J2EE平臺的測試、軟件本地化測試:什么是軟件本地化、軟件本地化的翻譯問題、軟件本地化測試的技術(shù)問題、本地化測試的重點
三、軟件測試的實踐
v 測試環(huán)境的部署:測試環(huán)境的重要性、測試環(huán)境的各要素、建立測試實驗室、測試環(huán)境的維護和管理
v 軟件測試用例的設(shè)計:測試用例來源、測試需求提取、測試用例設(shè)計、白盒測試用例設(shè)計方法、邏輯覆蓋法/基本路徑測試法 、黑盒測試用例設(shè)計方法、等價類劃分法/邊界值分析法/因果圖法/錯誤推測法 /功能圖法、測試用例的組織和跟蹤、使用實際項目實踐
v 報告所發(fā)現(xiàn)的軟件缺陷: 軟件缺陷的描述 、軟件缺陷相關(guān)的信息 、軟件缺陷的處理和跟蹤
v 軟件測試和質(zhì)量分析報告:軟件產(chǎn)品的質(zhì)量度量 、評估系統(tǒng)測試的覆蓋程度 、軟件缺陷分析方法 、基于缺陷分析的產(chǎn)品質(zhì)量評估 、軟件質(zhì)量的可靠性評估、軟件可靠性模型、可靠性評估過程
v 軟件測試自動化:測試自動化的內(nèi)涵、測試工具的分類和選擇、測試工具的主流產(chǎn)品介紹、IBM-Rational產(chǎn)品的整體解決方案、Mercury Interactive產(chǎn)品的整體解決方案,測試管理工具TD實操演示及指導(dǎo)、功能測試工具Robot實操演示及指導(dǎo)、腳本語言perl實操演示及指導(dǎo)、性能測試工具LR
v 網(wǎng)絡(luò)基礎(chǔ)知識:協(xié)議概念、常見的網(wǎng)絡(luò)協(xié)議及層次、TCP/IP協(xié)議、Arp協(xié)議等報文分析、常見的網(wǎng)元設(shè)備及工作原理、常用的網(wǎng)絡(luò)操作相關(guān)命令、客戶機服務(wù)器模型、抓包工具使用
v 數(shù)據(jù)庫簡介及SQL語句:數(shù)據(jù)庫系統(tǒng)概念、數(shù)據(jù)管理的發(fā)展階段、數(shù)據(jù)庫系統(tǒng)的特點、SQL概述、SQL數(shù)據(jù)定義功能、SQL數(shù)據(jù)查詢功能、SQL數(shù)據(jù)修改功能、嵌入式SQL
v Linux操作系統(tǒng)簡介及常用命令:Linux系統(tǒng)介紹、Linux系統(tǒng)歷史及發(fā)展、Linux系統(tǒng)特點、Linux系統(tǒng)安裝與配置、Linux系統(tǒng)命令的使用方式、文件及目錄操作命令、文件壓縮命令、聯(lián)機幫助命令、進(jìn)程管理的命令
四、軟件測試管理
v 組織和管理測試團隊:基于ISO的測試管理體系構(gòu)成、測試團隊的地位和責(zé)任、測試團隊的構(gòu)成 、測試團隊的管理和發(fā)展
v 軟件測試項目管理:軟件測試項目管理的概述 、軟件測試項目的組織 、軟件測試項目的過程管理 、軟件測試項目的資源管理 、測試項目的進(jìn)度管理 、測試項目的風(fēng)險管理 、測試項目的質(zhì)量和配置管理 、軟件測試文檔的管理
v 理解CMM:KPA簡介 、CMM的五個等級及關(guān)鍵過程域、CMM實例簡介 、CMM的發(fā)展、CMMI2級詳細(xì)講解
五、軟件測試人員面臨的機會和挑戰(zhàn)
v 軟件測試職位在IT行業(yè)的現(xiàn)狀
v 軟件測試職位到底是干什么?
v 軟件測試行業(yè)的背景
v 軟件測試人員需要具備的基本素質(zhì)
v 軟件測試工程師需掌握的技術(shù)技能大綱
v 軟件測試人員后期的發(fā)展機會和挑戰(zhàn)
附錄(基礎(chǔ)技能版,本內(nèi)容為華為公司指定培訓(xùn)內(nèi)容):
一、基礎(chǔ)技能方面:
Unix/Linux操作系統(tǒng):
1、熟悉UNIX環(huán)境
2、掌握UNIX常用命令
3、了解并掌握Vi的一些常用命令
4、了解基本的shell
Informix:
1、熟悉并掌握informix常用命令
2、掌握SQL相關(guān)的一些知識
Oracle:
1、掌握Oracle的基本操作
2、掌握在unix/Linux系統(tǒng)下安裝Oracle數(shù)據(jù)庫
二、網(wǎng)絡(luò)基礎(chǔ)知識
1、熟悉TCP/IP、HTTP、UDP協(xié)議
2、掌握常用的網(wǎng)絡(luò)命令
3、抓包工具的熟悉與學(xué)習(xí)
三、測試?yán)碚?div id="vmhf99o" class="spctrl">