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