韓肖杰 周陸洲 徐其崗
【摘要】本文的主要結(jié)果詳略恰當(dāng)?shù)亟o出了軟件測(cè)試技術(shù)的定義、原則、分類與就業(yè)前景分析。進(jìn)行一次完整的軟件測(cè)試論述,并完成測(cè)試過程的一些方法。
【關(guān)鍵詞】SQA,軟件開發(fā),“80-20原則”,黑盒,白盒,BUG,內(nèi)存泄漏,Linux、Oracle,壓力測(cè)試,靜態(tài)測(cè)試,動(dòng)態(tài)測(cè)試,單元測(cè)試
軟件測(cè)試定義
軟件測(cè)試就是利用測(cè)試工具按照測(cè)試方案和流程對(duì)產(chǎn)品進(jìn)行功能和性能測(cè)試,甚至根據(jù)需要編寫不同的測(cè)試工具,設(shè)計(jì)和維護(hù)測(cè)試系統(tǒng),對(duì)測(cè)試方案可能出現(xiàn)的問題進(jìn)行分析和評(píng)估。執(zhí)行測(cè)試用例后,需要跟蹤故障,以確保開發(fā)的產(chǎn)品適合需求。它是幫助識(shí)別開發(fā)完成(中間或最終的版本)的計(jì)算機(jī)軟件(整體或部分)的正確度(correctness) 、完全度(completeness)和質(zhì)量(quality)的軟件過程;是SQA(software quality assurance)的重要子域。
測(cè)試原則
1.軟件開發(fā)人員即程序員應(yīng)當(dāng)避免測(cè)試自己的程序不管是程序員還是開發(fā)小組都應(yīng)當(dāng)避免測(cè)試自己的程序或者本組開發(fā)的功能模塊。若條件允許,應(yīng)當(dāng)由獨(dú)立于開發(fā)組和客戶的第三方測(cè)試組或測(cè)試機(jī)構(gòu)來進(jìn)行軟件測(cè)試。但這并不是說程序員不能測(cè)試自己的程序,而且更加鼓勵(lì)程序員進(jìn)行調(diào)試,因?yàn)闇y(cè)試由別人來進(jìn)行會(huì)更加有效、客觀,并且容易成功,而允許程序員自己調(diào)試也會(huì)更加有效和針對(duì)性。
2. 應(yīng)盡早地和不斷地進(jìn)行軟件測(cè)試,應(yīng)當(dāng)把軟件測(cè)試貫穿到整個(gè)軟件開發(fā)的過程中,而不應(yīng)該把軟件測(cè)試看作是其過程中的一個(gè)獨(dú)立階段。因?yàn)樵谲浖_發(fā)的每一環(huán)節(jié)都有可能產(chǎn)生意想不到的問題,其影響因素有很多,比如軟件本身的抽象性和復(fù)雜性、軟件所涉及問題的復(fù)雜性、軟件開發(fā)各個(gè)階段工作的多樣性,以及各層次工作人員的配合關(guān)系等。所以要堅(jiān)持軟件開發(fā)各階段的技術(shù)評(píng)審,把錯(cuò)誤克服在早期,從而減少成本,提高軟件質(zhì)量。
3.對(duì)測(cè)試用例要有正確的態(tài)度:第一,測(cè)試用例應(yīng)當(dāng)由測(cè)試輸入數(shù)據(jù)和預(yù)期輸出結(jié)果這兩部分組成;第二,在設(shè)計(jì)測(cè)試用例時(shí),不僅要考慮合理的輸入條件,更要注意不合理的輸入條件。因?yàn)檐浖度雽?shí)際運(yùn)行中,往往不遵守正常的使用方法,卻進(jìn)行了一些甚至大量的意外輸入導(dǎo)致軟件一時(shí)半時(shí)不能做出適當(dāng)?shù)姆磻?yīng),就很容易產(chǎn)生一系列的問題,輕則輸出錯(cuò)誤的結(jié)果,重則癱瘓失效!因此常用一些不合理的輸入條件來發(fā)現(xiàn)更多的鮮為人知的軟件缺陷。
4.人以群分,物以類聚,軟件測(cè)試也不例外,一定要充分注意軟件測(cè)試中的群集現(xiàn)象,也可以認(rèn)為是“80-20原則”。不要以為發(fā)現(xiàn)幾個(gè)錯(cuò)誤并且解決這些問題之后,就不需要測(cè)試了。反而這里是錯(cuò)誤群集的地方,對(duì)這段程序要重點(diǎn)測(cè)試,以提高測(cè)試投資的效益。
5.嚴(yán)格執(zhí)行測(cè)試計(jì)劃,排除測(cè)試的隨意性,以避免發(fā)生疏漏或者重復(fù)無效的工作。應(yīng)當(dāng)對(duì)每一個(gè)測(cè)試結(jié)果進(jìn)行全面檢查。一定要全面地、仔細(xì)地檢查測(cè)試結(jié)果。
測(cè)試目的
目的是盡可能發(fā)現(xiàn)并改正被測(cè)試軟件中的錯(cuò)誤,提高軟件的可靠性。它是軟件生命周期中一項(xiàng)非常重要且非常復(fù)雜的工作,對(duì)軟件可靠性保證具有極其重要的意義。在目前形式化方法和程序正確性證明技術(shù)還無望成為實(shí)用性方法的情況下,軟件測(cè)試在將來相當(dāng)一段時(shí)間內(nèi)仍然是軟件可靠性保證的有效方法。軟件工程的目標(biāo)是充分利用有限的人力和物力資源,高效率、高質(zhì)量地完成軟件開發(fā)項(xiàng)目。不足的測(cè)試勢(shì)必使軟件帶著一些未揭露的隱藏錯(cuò)誤投入運(yùn)行,這將意味著更大的危險(xiǎn)讓用戶承擔(dān)。過度測(cè)試則會(huì)浪費(fèi)許多寶貴的資源。E.W.Dijkstra的一句名言說明了這一道理:“程序測(cè)試只能表明錯(cuò)誤的存在,而不能表明錯(cuò)誤不存在?!笨梢?,測(cè)試是為了使軟件中蘊(yùn)涵的缺陷低于某一特定值,使產(chǎn)出、投入比達(dá)到最大。
測(cè)試分類
1、黑盒測(cè)試:
指把被測(cè)軟件看作是一個(gè)黑盒子,我們不去關(guān)心盒子里面的結(jié)構(gòu)是什么樣子的,只關(guān)心軟件的輸入數(shù)據(jù)和輸出結(jié)果。
2、白盒測(cè)試:
指把盒打開,去研究里面的源代碼和程序結(jié)構(gòu)。
3、靜態(tài)測(cè)試:
指不實(shí)際運(yùn)行被測(cè)軟件,而只是靜態(tài)地檢查程序代碼、界面或文檔中可能存在錯(cuò)誤的過程。對(duì)于代碼測(cè)試,主要測(cè)試代碼是否符合相應(yīng)的標(biāo)準(zhǔn)和規(guī)范。對(duì)于界面測(cè)試,主要測(cè)試軟件的實(shí)際界面與需求中的說明是否相符。對(duì)于文檔測(cè)試,主要測(cè)試用戶手冊(cè)和需求說明是否真正符合用戶的實(shí)際需求。
4、動(dòng)態(tài)測(cè)試:
指實(shí)際運(yùn)行被測(cè)程序,輸入相應(yīng)的測(cè)試數(shù)據(jù),檢查實(shí)際輸出結(jié)果和預(yù)期結(jié)果是否相符的過程。所以我們判斷一個(gè)測(cè)試屬于動(dòng)態(tài)測(cè)試還是靜態(tài)測(cè)試,唯一的標(biāo)準(zhǔn)就是看是否運(yùn)行程序。
5、單元測(cè)試:
指對(duì)軟件中最小可測(cè)試單元進(jìn)行檢查和驗(yàn)證。例如:C語言中,單元一般指1個(gè)函數(shù);在Java里,單元一般指1個(gè)類在圖形化的軟件中,單元也可以指1個(gè)窗口,1個(gè)菜單等??偨Y(jié)起來,單元就是人為規(guī)定的最小的被測(cè)功能模塊。
6、壓力測(cè)試:
壓力測(cè)試用來評(píng)估在超越最大負(fù)載的情況下系統(tǒng)將如何運(yùn)行。壓力測(cè)試的目標(biāo)就是發(fā)現(xiàn)在高負(fù)載的條件下應(yīng)用程序的缺陷(BUG)。包括:內(nèi)存泄漏。壓力測(cè)試能讓您識(shí)別程序的弱點(diǎn)和在極限負(fù)載下程序?qū)⑷绾芜\(yùn)行。
就業(yè)前景
它是軟件生產(chǎn)過程中的質(zhì)量管理者,其不但要對(duì)軟件產(chǎn)品最后的功能、性能負(fù)責(zé),而且從軟件的“需求分析”、“結(jié)構(gòu)設(shè)計(jì)”階段以及文檔規(guī)范等諸多方面就開始對(duì)軟件的質(zhì)量加以保障,讓用戶用上高質(zhì)量的軟件。隨著我國(guó)加入WTO及國(guó)內(nèi)軟件企業(yè)的日益成熟和壯大,軟件測(cè)試在業(yè)界的地位已經(jīng)變得越來越重要。
軟件測(cè)試是目前較新的一個(gè)IT領(lǐng)域,同級(jí)別軟件測(cè)試的人員不會(huì)比開發(fā)者薪水低,甚至更高。軟件日益復(fù)雜,質(zhì)量問題日益凸顯,軟件測(cè)試是降低軟件項(xiàng)目風(fēng)險(xiǎn)、提高企業(yè)競(jìng)爭(zhēng)力的最佳手段。企業(yè)一方面對(duì)軟件測(cè)試工程師需求量大增,另一方面,則“萬金”難求一優(yōu)秀的測(cè)試工程師。具備開發(fā)能力的軟件測(cè)試工程師、掌握扎實(shí)的Linux、Oracle基礎(chǔ)知識(shí)的測(cè)試工程師、掌握自動(dòng)化測(cè)試技術(shù)的測(cè)試工程師、具備測(cè)試設(shè)計(jì)能力的測(cè)試工程師更是少之又少。看看iPhone的受歡迎程度,正是軟件測(cè)試的實(shí)力體現(xiàn)。高層次的軟件測(cè)試專業(yè)人員競(jìng)爭(zhēng)要少得多。