李慧珠
(北華大學(xué)師范分院,吉林市 132013)
2008年,北京奧運(yùn)會(huì)門票面向境內(nèi)公眾第二階段預(yù)售正式啟動(dòng)。上午一開始,公眾提交申請空前踴躍。上午9時(shí)至10時(shí),官方票務(wù)網(wǎng)站的瀏覽量達(dá)到了800萬次,票務(wù)呼叫中心熱線從9時(shí)至10時(shí)的呼入量超過了380萬人次。由于瞬間訪問數(shù)量過大,技術(shù)系統(tǒng)應(yīng)對不暢,造成很多申購者無法及時(shí)提交申請。這個(gè)新聞從一定程度上反映出,奧運(yùn)官方票務(wù)網(wǎng)站系統(tǒng)存在一定的缺陷。造成這一缺陷的主要原因就是本文所涉及到的“軟件測試”技術(shù)。
“軟件測試”技術(shù)在我國IT領(lǐng)域也屬于一個(gè)新興的部分,“軟件測試”從目前發(fā)展來看已經(jīng)不是以前單純依附在軟件開發(fā)過程中的一個(gè)可有可無的部分,而是發(fā)展到了一個(gè)專門的行業(yè)。盡管“軟件測試”經(jīng)過了幾十年的發(fā)展,已經(jīng)得到了長足的發(fā)展,但是與軟件開發(fā)與日劇新的發(fā)展技術(shù),可以發(fā)現(xiàn)“軟件測試”的技術(shù)發(fā)展還是比較緩慢。軟件開發(fā)技術(shù)的快速提高受益于計(jì)算機(jī)硬件高速發(fā)展、計(jì)算機(jī)編程語言和高級開發(fā)工具的創(chuàng)新,無論是開發(fā)效率還是工作上的效率都有了極大的提高。軟件開發(fā)不再是早起的機(jī)器語言和匯編語言的開發(fā)方式,跨越了結(jié)構(gòu)化的編程語言,進(jìn)入面向?qū)ο蟮臅r(shí)代,開發(fā)人員的編程能力得到了極大的釋放?!败浖y試”技術(shù),在工具上不斷改善,但是沒有創(chuàng)新革命性的發(fā)展。測試人員大部分還是要依賴手工的測試?!败浖y試”技術(shù)受到越來越多人的重視,但大部分測試方法和理論還都是基于20世紀(jì)的研究結(jié)果?!败浖y試”技術(shù)發(fā)展受到制約的另一個(gè)重要原因與企業(yè)對“軟件測試”的資金投入也有很大的關(guān)系。根據(jù)CSIP在2007年的一個(gè)關(guān)于軟件質(zhì)量現(xiàn)狀的調(diào)研分析報(bào)告指出:目前國內(nèi)絕大部分的軟件企業(yè)在軟件質(zhì)量控制方面,每年都會(huì)投入固定資金。但是投入的資金比例集中在全年研發(fā)或運(yùn)維資金總額的投入還是偏低。
“軟件測試”技術(shù)是軟件質(zhì)量保障的重要環(huán)節(jié)。軟件測試人員除了需要針對軟件進(jìn)行測試,還需要掌握軟件質(zhì)量保證的相關(guān)知識(shí)。實(shí)際工作中,在很多軟件企業(yè)中,軟件質(zhì)量部門的QA人員與測試人員是一體的。任何一種產(chǎn)品的好壞都是基于質(zhì)量,軟件作為一種特殊產(chǎn)品其質(zhì)量也需要特殊量化處理。ISO組織關(guān)于質(zhì)量定義:“一個(gè)實(shí)體的所有特性,基于這些特性可以滿足明顯的或隱含的需求。而質(zhì)量就是實(shí)體基于這些特性滿足需求的程度”。關(guān)于軟件質(zhì)量的定義可以看出軟件測試工程師在測試過程中,應(yīng)該善于從用戶角度出發(fā),設(shè)身處地為用戶考慮,看用戶需求什么,我們的軟件系統(tǒng)能否很好的滿足了系統(tǒng)軟件用戶的需求(包括明顯的和隱含的需求)。
軟件開發(fā)環(huán)節(jié)中最主要的軟件質(zhì)量活動(dòng)包括軟件質(zhì)量保證和軟件測試兩個(gè)重要組成部分。軟件開發(fā)企業(yè)中基本的軟件質(zhì)量組織一般包括軟件測試部門和軟件質(zhì)量保證部門,也有的企業(yè)出于管理方便和資本控制角度考慮,將2個(gè)部門合并為一個(gè)部門。軟件質(zhì)量保證部門通常需要的工作內(nèi)容包括:指導(dǎo)監(jiān)督軟件工程項(xiàng)目按照過程實(shí)施;對軟件工程項(xiàng)目進(jìn)行度量、分析,增加軟件工程項(xiàng)目的可視性;審核軟件產(chǎn)品,評價(jià)軟件產(chǎn)品和過程質(zhì)量目標(biāo)的契合程度;進(jìn)行軟件工程項(xiàng)目的缺陷分析,缺陷預(yù)防活動(dòng),發(fā)現(xiàn)過程的缺陷,提供決策性參照,促進(jìn)軟件開發(fā)過程的改進(jìn)。其中,軟件質(zhì)量保證和軟件質(zhì)量控制都對提高軟件工程項(xiàng)目質(zhì)量和競爭力不可缺少的管理辦法。現(xiàn)在很多軟件開發(fā)企業(yè)在這是軟件質(zhì)量保證部門,同時(shí)把軟件測試工程師作為部門中的軟件質(zhì)量保證工作。這樣也會(huì)有很多軟件測試工程師誤以為自己的工作就是軟件質(zhì)量保證工作,而實(shí)際上經(jīng)驗(yàn)告訴我們,軟件質(zhì)量的保證不是能靠軟件測試就能保證的。
軟件測試是軟件開發(fā)階段完成后,只能保證暴露查出軟件系統(tǒng)的缺陷,但是因?yàn)檐浖e(cuò)誤已經(jīng)發(fā)生,因此對軟件工程項(xiàng)目造成的損失是不可避免的。而真正軟件質(zhì)量要想得到有效的提高,需要從軟件設(shè)計(jì)開始,需要從軟件開發(fā)的缺陷中學(xué)習(xí)經(jīng)驗(yàn),找出并總結(jié)錯(cuò)誤發(fā)生的原因,制定出相應(yīng)的糾正預(yù)防錯(cuò)誤,從而保證在相同或者下一個(gè)相同的軟件開發(fā)環(huán)節(jié)不出現(xiàn)錯(cuò)誤。以上這些就是軟件質(zhì)量保證和軟件測試技術(shù)的區(qū)分。
“軟件測試”技術(shù)從產(chǎn)生之日起就有著不同的理解。有認(rèn)為“軟件測試”是為了證明軟件是正確的,也有認(rèn)為“軟件測試”是為了證明軟件存在錯(cuò)誤?!败浖y試”技術(shù)的理解目前大多基于Glen Myers和Hetzel兩位學(xué)者的論點(diǎn)。Glen Myers認(rèn)為“軟件測試”是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行軟件程序的過程,一個(gè)成功的測試可以發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤。而Hetzel的觀點(diǎn)是認(rèn)為“軟件測試”技術(shù)是對軟件建立信心的一個(gè)過程。對軟件進(jìn)行的測試越多、越充分,人們對使用該軟件的信心就越強(qiáng)?!败浖y試”技術(shù)也存在兩面性,按照測試目的分類:一類是為了驗(yàn)證程序能正常工作的測試。一類是為了證明程序不能正常工作的測試。軟件測試工程師要驗(yàn)證軟件程序沒有缺陷需要有一定依據(jù)。而證明軟件程序不能正常工作就很容易了,只要查找出軟件程序的錯(cuò)誤,就證明軟件程序是錯(cuò)誤的。但是,想要找到軟件程序所有的錯(cuò)誤也是不容易的事情,因?yàn)檐浖绦蝈e(cuò)誤會(huì)隨著程序的修改變的越來越少,同時(shí)也會(huì)變的越來越隱性,難以發(fā)現(xiàn)。
“軟件測試”技術(shù)在快速開發(fā)中,很少有人提出來廣泛討論?!败浖y試”技術(shù)是一種服務(wù),軟件測試工程師對軟件產(chǎn)品進(jìn)行學(xué)習(xí)探索,這樣可以給軟件開發(fā)提供一個(gè)良好的決策方向。
在軟件測試中,需要遵循的原則:
1、Good enough原則
2、Pareto原則
3、盡可能早開發(fā)原則
4、在發(fā)現(xiàn)比較多錯(cuò)誤的地方需要投入更多的測試
5、同化效應(yīng)
“軟件測試”是一門需要終身學(xué)習(xí)的學(xué)科,早起的“軟件測試”雛形就是在軟件開發(fā)過程中的軟件調(diào)試。軟件工程師通過在代碼中設(shè)置斷點(diǎn),變量在內(nèi)存中變化信息來判斷軟件程序是否工作正常,現(xiàn)代的高級軟件開發(fā)工具中依然保持了這種傳統(tǒng)方式?,F(xiàn)代軟件快速開發(fā)技術(shù)中的單元測試需要自己寫測試過程。白盒測試技術(shù)也是早起的一種“軟件測試”技術(shù),白盒測試技術(shù)在一些不能輕易運(yùn)行程序來實(shí)驗(yàn)的程序有很大的幫助。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,軟件從單機(jī)發(fā)展到基于網(wǎng)絡(luò)互助工作模式,這樣的條件下促進(jìn)了新的“軟件測試”技術(shù)的出現(xiàn)。軟件測性能測試、壓力測試也突顯出重要性。近年來的黑客時(shí)間經(jīng)常出現(xiàn)在媒體的報(bào)道中,“軟件測試”中的安全測試技術(shù)也越來越重要。
在很多情況下,有一些人認(rèn)為“軟件測試”技術(shù)沒什么技術(shù)含量,甚至是可有可無的軟件功能,只要懂得使用就行了。很多軟件測試工程師喜歡討論黑盒測試和白盒測試的區(qū)別,這點(diǎn)也體現(xiàn)在一些軟件企業(yè)在招聘軟件測試工程師的過程中。黑盒測試定義是:把軟件產(chǎn)品當(dāng)成是一個(gè)黑箱,這個(gè)黑箱有入口和出口,測試過程中只需要知道網(wǎng)黑箱輸入什么信息,知道黑箱輸出什么信息就可以了。不需要了解黑箱里面具體的運(yùn)行過程。黑盒測試方便了軟件測試工程師,使其不用去了解和學(xué)習(xí)軟件程序的功能和結(jié)構(gòu)。測試人員只需要向用戶那樣操作軟件程序就可以了。例如,銀行的存儲(chǔ)系統(tǒng)在測試的時(shí)候就可以采用黑盒測試方式,不考慮內(nèi)部結(jié)構(gòu)代碼,只要保障系統(tǒng)工作正常就可以了。但是如果只從用戶角度考慮軟件的操作測試能否保證安全么?答案是很明顯的。黑盒測試就存在一定的安全隱患。對某個(gè)針對安全性要求比較高的系統(tǒng)軟件來時(shí),軟件開發(fā)人員在設(shè)計(jì)程序的時(shí)候會(huì)考慮到記錄系統(tǒng)日志,在軟件運(yùn)行過程中的重要系統(tǒng)參數(shù)記錄在系統(tǒng)日志中。以保障系統(tǒng)的測試能夠得到內(nèi)部的更多可靠數(shù)據(jù)。這中觀察內(nèi)容運(yùn)行數(shù)據(jù)的測試方式就不屬于黑盒測試的范圍了。白盒測試的定義是:一種以理解軟件內(nèi)部結(jié)構(gòu)和程序運(yùn)行方式為基礎(chǔ)的“軟件測試”技術(shù)。通常需要跟中調(diào)試一個(gè)輸入信息在軟件程序中經(jīng)歷了哪些處理過程,這些處理過程是否正確響應(yīng)。在一些軟件測試工程師中對白盒測試看法是認(rèn)為白盒測試只有非常了解代碼的測試人員才能做的。但是根據(jù)定義來看有些白盒測試不需要軟件測試工程師對代買有多少了解,使用一些專門的軟件測試工具可以幫助獲取軟件程序內(nèi)部信息。在實(shí)際工作測試中,應(yīng)該綜合應(yīng)用黑盒測試和白盒測試,按照實(shí)際情況采取不同的測試組合技術(shù)達(dá)到最優(yōu)測試結(jié)果。
手動(dòng)測試和自動(dòng)化測試是“軟件測試”技術(shù)的兩種方向。本文不討論兩者的區(qū)別,孰優(yōu)孰劣。關(guān)鍵是在合適的情況下采用合適的測試手段。自動(dòng)化測試技術(shù)是“軟件測試”中為了提高測試效率的一個(gè)發(fā)展方向,隨著軟件技術(shù)的高速發(fā)展,“軟件測試”工具軟件也有這創(chuàng)新性的進(jìn)步,軟件測試工程師利用測試工具軟件來完成一些重復(fù)性的工作。軟件測試的一個(gè)重要特征就是重復(fù)性,重復(fù)性的工作容易是測試人員產(chǎn)生厭倦的心理。自動(dòng)化測試方式就可以很好的解決這個(gè)問題。手動(dòng)測試效率方面不如自動(dòng)化測試,但也有著不可替代的測試技術(shù)。由于測試人員具有很強(qiáng)的智能化判斷,相對于自動(dòng)化測試的工具是機(jī)械的,缺乏思維邏輯的測試方式。測試用例的設(shè)計(jì)方式上:軟件測試工程師的經(jīng)驗(yàn)和對軟件Bug的預(yù)判能力是自動(dòng)化測試不可替代的。界面和用戶體驗(yàn)的測試:人的主觀審美和心理體驗(yàn)是自動(dòng)化測試不可替代的。但是自動(dòng)化測試有著自己很強(qiáng)的優(yōu)勢,自動(dòng)化優(yōu)勢借助了計(jì)算機(jī)的能力,可以不斷重復(fù)工作,保證對大數(shù)據(jù)的精確計(jì)算。
“軟件測試”技術(shù)的發(fā)展一定是伴隨著軟件開發(fā)技術(shù)的發(fā)展,現(xiàn)在的“云”技術(shù)和“大數(shù)據(jù)”技術(shù)也同樣在促進(jìn)新的“軟件測試”技術(shù)?!按髷?shù)據(jù)”技術(shù)是現(xiàn)在炙手可熱的技術(shù),從一個(gè)角度來說它是軟件開發(fā)中的一個(gè)重要技術(shù)。“大數(shù)據(jù)”技術(shù)也在很大程度上跟軟件質(zhì)量和軟件測試有著很大的關(guān)系。傳統(tǒng)的軟件測試流程是:設(shè)計(jì)測試用例;自動(dòng)化測試;運(yùn)行測試;對比測試值和實(shí)際值得到相應(yīng)結(jié)果。在大數(shù)據(jù)和云計(jì)算的大環(huán)境下這樣的測試流程可能面臨著很大的隱患?;谠朴?jì)算和大數(shù)據(jù)環(huán)境下的軟件測試意味著可以降低硬件投入成本,測試軟件環(huán)境投入成本以及軟件程序生命周期的運(yùn)維成本。在云存儲(chǔ)下,有很多資源可以直接用于“軟件測試”。
[1]聶長海.關(guān)于軟件測試的幾點(diǎn)思考[J].計(jì)算機(jī)科學(xué),2011,(2).
[2]張新華,何永前.軟件測試方法概述[J].科技視界,2012,(16).