国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

探討軟件測試“誤區(qū)”

2011-03-17 14:21:53喬勇誠
通信技術(shù) 2011年8期
關(guān)鍵詞:軟件缺陷測試工具測試人員

喬勇誠

(中國電子科技集團公司第三十研究所,四川 成都 610041)

0 引言

你聽過那個古老的 IT專業(yè)的創(chuàng)世紀笑話嗎?“為什么上帝只花了 7天就創(chuàng)造了宇宙?”答案是:“因為他以前沒有安裝過。他沒有什么可以搞砸的東西,不會激怒現(xiàn)有的用戶,無需顧慮先前的功能和蹩腳的設(shè)計。上帝走運,可是我們就沒那么走運了?!?/p>

從這則笑話中可以看出,隨著世界的進步,生活水平的提高,人們的需求越來越多樣化,科技產(chǎn)品越來越先進化、大型化和復(fù)雜化。這些都極大的促進了軟件信息化產(chǎn)業(yè)的蓬勃發(fā)展,當(dāng)前人們已經(jīng)越來越離不開軟件系統(tǒng),而由于軟件的易頻繁發(fā)生故障的特性,軟件測試行業(yè)也迎來了高速發(fā)展的階段。

我國對軟件測試的研究相對于國外來說,起步較晚,發(fā)展較慢,直到21世紀初期,我國才逐步開始重視軟件測試行業(yè)。2003年國家人事部和信息產(chǎn)業(yè)部開始頒發(fā)“軟件評測師”職業(yè)資質(zhì)認證證書。各個大型企業(yè)也相繼組建自己的測試部門或團隊,而對于大型軟件系統(tǒng)外包項目,很多企業(yè)還引入了第三方的評測機構(gòu),這些都刺激了國內(nèi)軟件測試行業(yè)的迅速發(fā)展。但是,相對于國外的軟件測試水平還存在不小的差距。很多的人,甚至軟件測試人員本身對軟件測試領(lǐng)域的認知,還存在許多誤區(qū),我這里例舉6個常見誤區(qū),與大家一起探討和剖析。

1 軟件測試誤區(qū)

(1)“誤區(qū)1”:軟件質(zhì)量是通過測試來保證的

許多企業(yè)或個人都認為有了專職的測試人員或測試團隊,軟件的質(zhì)量就可以得到保障,甚至把軟件測試人員就當(dāng)成軟件質(zhì)量保證人員。其實軟件質(zhì)量保證的含義是通過建立一套有計劃、有系統(tǒng)的方法,來保證擬定出的標準、步驟、實踐和方法能夠正確地被所有項目所采用[2-3]。而軟件質(zhì)量的提高是通過整個產(chǎn)品的質(zhì)量和整個團隊的努力,以及產(chǎn)品的開發(fā)過程決定的。

軟件測試只是軟件生產(chǎn)過程中,為提高軟件質(zhì)量而進行的一種檢查措施或者叫監(jiān)督措施。這就像食品有質(zhì)量監(jiān)督部門,但是毒奶粉、爆炸瓜等問題依然不斷;又比如房屋建設(shè)有監(jiān)管機構(gòu),但是豆腐渣工程仍然層出不窮,顯然監(jiān)管機構(gòu)不能絕對保證質(zhì)量。所以說,測試人員或團隊是不能絕對保證高質(zhì)量的軟件產(chǎn)品。

如何才能生產(chǎn)出高質(zhì)量的軟件呢?個人認為:無論是什么樣的活動或過程,都是離不開人的行為,在軟件開發(fā)中,主體就是軟件設(shè)計人員、開發(fā)人員、質(zhì)量保證人員和測試人員。用一種科學(xué)的、高效的,同時又是符合自身當(dāng)前實際情況的軟件生產(chǎn)過程或方法,將各個角色人員有機的結(jié)合起來,使之能夠緊密合作、相輔相成,才有可能生產(chǎn)出高質(zhì)量的產(chǎn)品。這種方法目前已經(jīng)有很多了,而現(xiàn)在最需要作的就是在這些科學(xué)方法的基礎(chǔ)上,去尋找最適合自己的方法,這也是軟件質(zhì)量人員需要永恒探討的課題。

(2)“誤區(qū)2”:軟件測試的真正價值

目前在許多企業(yè)中,評估軟件測試活動時,通常采用軟件缺陷數(shù)量、軟件缺陷的嚴重性、測試用例的多少、自動化測試的代碼量、手動測試的代碼量、回歸測試套件的數(shù)目以及所有具體的指標來進行衡量。而這些指標并不能夠真正體現(xiàn)軟件測試的價值,軟件測試的工作績效應(yīng)該體現(xiàn)在提高了多少開發(fā)人員的工作績效上。所以說軟件測試并不能保證軟件會更好,但是可以保證開發(fā)人員會更好的進行編程。

軟件開發(fā)人員制造軟件,而軟件測試如果僅僅是幫助他找出缺陷并去掉它,那么軟件測試并沒有創(chuàng)造出自己的真正價值。如果軟件測試人員努力認真的對待自己的工作,讓軟件測試產(chǎn)生持續(xù)有效的正面影響,那么就應(yīng)該幫助開發(fā)人員理解程序中出現(xiàn)的問題和原因,讓他們在將來的工作中少犯錯誤。

英國計算機科學(xué)家托尼·霍爾(Tony Hoare)有句名言很好的概括了軟件測試的價值:

“軟件測試的真正價值并不體現(xiàn)在代碼中找出了多少缺陷,而是發(fā)現(xiàn)設(shè)計和編程人員解決問題方法上的局限、思路中的狹隘和技能方面的不足[1]?!?/p>

要做到這一點,有2個方面最重要,①是軟件測試人員的素質(zhì),如果測試人員還沒有達到能夠為軟件開發(fā)過程或軟件設(shè)計過程等方面提出建議的水平,那么就需要加強學(xué)習(xí)和接受更深入的培訓(xùn),這就需要加大投入力度。②是軟件測試人員的地位,軟件測試人員如果只是作為項目開發(fā)團隊中的一員,缺乏話語權(quán),那么當(dāng)測試人員對軟件設(shè)計或編程上的不足提出建議時,就不一定能夠被有效采納,甚至在測試人員發(fā)現(xiàn)了重大問題時,無力阻止錯誤的繼續(xù)發(fā)生。適當(dāng)提高軟件測試人員的地位,對于體現(xiàn)軟件測試正真價值,可以起到較好的推動作用。

(3)“誤區(qū)3”:汝不應(yīng)崇拜無法重現(xiàn)的失效

這是由著名的軟件測試大師詹姆斯·惠特克(James Whittaker)提出的軟件測試9大誡律中的第4條。意思是不要深陷于只見過一次的缺陷中。

在日常的軟件測試中經(jīng)常會出現(xiàn)這樣的情況:遇到了一個缺陷,往往還是很嚴重的缺陷,但是無法重現(xiàn),缺陷越嚴重,測試人員感覺越不好。而測試人員最常用的做法就是浪費數(shù)個小時或者數(shù)天的時間,甚至于更長的一段時間試圖去重現(xiàn)這個只見過一次的缺陷[1]。也許由于沒有適合的工具或者其它原因,為了重現(xiàn)這個缺陷的努力付諸流水,時間被白白浪費,測試人員卻沒有意識到這點。如果把這個時間用在其它更好的、更需要的地方,是否會有更好的測試效果呢?

從這個誡律可以看出,在進行軟件測試時要盡最大的努力注意并記?。ɑ蛘哂涗浵聛恚浖扇〉膭幼鞔涡?,同時記住應(yīng)用程序的響應(yīng);并且考慮使用帶有追蹤功能、軟件狀態(tài)等功能的調(diào)試器或者測試工具,這樣可以盡量減少重現(xiàn)缺陷時的猜測成分,避免測試人員的深陷[4]。

(4)“誤區(qū)4”:測試人員無需懂開發(fā)

持這個觀點的人認為,軟件測試人員一般都使用工具進行測試,只要懂得一些測試工具需要的腳本語言以及一些環(huán)境搭建的知識就足夠了;又或者,軟件測試人員并不專注于白盒測試,只是進行產(chǎn)品功能測試,更注重用戶使用或用戶反饋,無需知道太多的開發(fā)知識。個人認為造成這個誤區(qū)的原因,是沒有理解軟件測試的真正價值所在。軟件測試最終是要為軟件開發(fā)服務(wù)的,是要持續(xù)影響并提高軟件設(shè)計水平以及軟件開發(fā)水平的。試問:不懂開發(fā)的測試人員如何提出軟件開發(fā)過程的改進措施和建議呢?

我知道有種說法:“程序?qū)懙米詈玫牟皇枪ぷ鞫嗄甑拈_發(fā)人員,而是有著多年測試經(jīng)驗的測試人員[3]?!庇纱丝梢?,一個優(yōu)秀的軟件測試人員,是要涉及多方面的知識領(lǐng)域。例如在詹姆斯·惠特克的9大軟件測試誡律中的第9條:“汝應(yīng)貪圖開發(fā)人員的源代碼”。測試人員通過對源代碼的閱讀,特別是那些從用戶界面或者用戶使用功能上很難見到或者得到的錯誤處理代碼,花時間了解代碼中有哪些錯誤處理,哪些輸入能夠觸發(fā)這些錯誤處理,這樣一點一點地收集類似的線索,來幫助測試人員明確要執(zhí)行哪些測試。

詹姆斯·惠特克曾說過這樣一段話,能夠充分說明測試人員是需要懂得開發(fā)的:

“一名優(yōu)秀的測試人員,會仔細的分析找出的缺陷,并能夠巧妙的向開發(fā)人員或小組進行匯報和有效交流,使他們能夠意識到自己知識技能中的不足,從而進行相應(yīng)的彌補和提高。隨著開發(fā)人員素質(zhì)的提高,最終同時達到軟件缺陷數(shù)量下降和生產(chǎn)效率提高的目的,這遠遠超過了只注重發(fā)現(xiàn)并清除軟件缺陷的簡單方式[1]。”

(5)“誤區(qū)5”:有了自動化測試工具,就不需要手工測試了

自動化測試工具一般有2種:①無需軟件運行即可對其進行分析的工具,諸如代碼審查或靜態(tài)分析等。這些工具只能對軟件固有的一些規(guī)范性缺陷進行檢測,而許多軟件缺陷是要等到在實際應(yīng)用環(huán)境中才會暴露出來;②需要軟件運行的動態(tài)測試工具。這些工具可以檢測出許多軟件實際運行時可能出現(xiàn)的缺陷,但是它卻具有無法聯(lián)系上下文場景的問題(運行環(huán)境、所處狀態(tài)等)。更重要的是它的阿基利斯腳踵就在于它沒有辦法覆蓋應(yīng)用程序出錯的大多數(shù)情形[1]。除非發(fā)生自身崩潰、異常輸出或者是斷言被激活,自動化測試工具不會注意到應(yīng)用程序出錯的。

要找到這樣的缺陷,避免它跑到客戶的桌面上,唯一的方法就是創(chuàng)造出與客戶所處環(huán)境一模一樣的運行環(huán)境,在那里運行軟件來重現(xiàn)軟件出錯時的數(shù)據(jù)和狀態(tài)。很多產(chǎn)品都經(jīng)過了自動化測試工具的測試,可是,在這樣的情況下,手工測試仍然能夠定期地找出軟件缺陷,更糟糕的是用戶們(根據(jù)定義,他們執(zhí)行的也是手工測試)也找得出軟件缺陷。由此可見手工測試存在著令人不可忽略的力量,甚至于手工測試優(yōu)于自動化測試。

有一個Intel的測試經(jīng)理曾經(jīng)評論過手工測試與自動化測試:

“讓整個小組完全專注于自動化測試,并夸耀我們的1500個自動化測試用例后,我們的應(yīng)用程序在手指頭接觸鍵盤的一瞬間就崩潰了。如果你想找出客戶可能看到的那些軟件缺陷,手工測試起著決定性作用[1]?!?/p>

(6)“誤區(qū)6”:測試用例是萬能的

測試人員可以寫一個程序,設(shè)計足夠多足夠好的測試用例,可以進行無限次的測試,并且在睡覺的時候依然能夠幫你找到軟件缺陷,測試可以一遍又一遍不知疲倦地運行。很好,很強大!然而令人費解的是,在軟件測試技術(shù)以及自動化測試工具長足發(fā)展的今天,依然有一些弱不禁風(fēng)的軟件被生產(chǎn)出來,而且這些軟件在接觸到真正的用戶后隨時報錯。為什么?這是因為有一個致命的弱點是所有測試用例從來沒辦法解決的。在測試領(lǐng)域中,這個致命的弱點被美稱為預(yù)言家問題:當(dāng)運行一個給定的測試用例時,我們怎么知道軟件是在按照預(yù)想的方式在執(zhí)行?它是否產(chǎn)生了正確的輸出?與此同時,它是否產(chǎn)生了不必要的副作用?我們又怎能確定這一點呢?是否能有一個預(yù)言家告訴我們給定用戶環(huán)境、數(shù)據(jù)配置、輸入序列后,軟件會按照當(dāng)初設(shè)計的模式準確的執(zhí)行[1]。事實上由于沒有完美的設(shè)計規(guī)范,對于目前的測試來說,這是根本不可能實現(xiàn)的。

如果不存在預(yù)言家,那么這些測試用例只能發(fā)現(xiàn)那些較為嚴重的故障:崩潰,掛起(至少看起來像是掛起)和異常。而且測試用例本身也是軟件,這往往意味著那些錯誤可能是測試用例本身而不是目標軟件產(chǎn)生的。測試用例與目標軟件合為一體也構(gòu)成一個軟件,它仍然會留下漏洞讓那些微妙復(fù)雜的錯誤逃過測試。所以,歸根結(jié)底還是自動化測試與手工測試都不可或缺。

2 結(jié)語

自從 1979年第一本關(guān)于軟件測試的書籍誕生以來,隨著軟件測試行業(yè)的飛速發(fā)展,軟件測試藝術(shù)、軟件測試技藝等已經(jīng)不能準確的描述測試人員在軟件測試中所做的工作了。目前許多知名的測試大師們已經(jīng)開始將軟件測試稱之為一門學(xué)科——軟件測試學(xué)。作為一門學(xué)科,其涉及的知識面將是廣闊的,是值得測試人員花足夠多的時間去掌握和精通的。同時,在這個過程中也必將伴隨著各種各樣理解上的誤區(qū)。這需要通過不斷地學(xué)習(xí),不斷地接受訓(xùn)練,去深入的了解軟件測試,消除軟件測試的理解誤區(qū),去努力尋找適合自己的軟件測試方法,提高軟件測試水平,從而達到改善或改進整個軟件開發(fā)過程的最終目的。

[1]WHITTAKER J A. 探索式軟件測試[M]. 方敏,張勝,鐘頌東等,譯.清華大學(xué)出版社, 2010:230.

[2]于波,姜艷. 軟件質(zhì)量管理實踐——軟件缺陷預(yù)防、清除、管理實用方法[M].電子工業(yè)出版社,2008:431.

[3]Weinberg G M. 完美軟件——對軟件測試的各種幻想[M]. 宋銳,譯.電子工業(yè)出版社,2009:345.

[4]曹向志,于涌,高樓. 軟件測試項目實戰(zhàn)——技術(shù)、流程與管理[M].電子工業(yè)出版社,2010:360.

[5]陳能技. 軟件測試技術(shù)大全——測試基礎(chǔ)、流行工具、項目實踐[M].人民郵電出版社,2008:500.

猜你喜歡
軟件缺陷測試工具測試人員
邊緣智力兒童及其智力測試工具的研究進展
移動應(yīng)用眾包測試人員信譽度復(fù)合計算模型研究
基于源文件可疑度的靜態(tài)軟件缺陷檢測方法研究
Http并發(fā)連接測試工具
基于NPE-SVM的軟件缺陷預(yù)測模型
高校分析測試中心測試隊伍建設(shè)方案初探
山東化工(2018年20期)2018-04-02 16:30:53
淺析軟件測試中的心理學(xué)應(yīng)用
開源程序的軟件缺陷分布特征的量化分析研究
福祿克推出先進的連接式測試工具系統(tǒng)
軟件缺陷管理方案分析
林芝县| 石泉县| 类乌齐县| 维西| 来凤县| 芷江| 江陵县| 东城区| 内江市| 凤山市| 北安市| 清丰县| 无棣县| 中方县| 内江市| 岳池县| 九龙坡区| 正安县| 南雄市| 即墨市| 河曲县| 西吉县| 石屏县| 贵溪市| 门源| 阳信县| 朔州市| 周口市| 中西区| 禹州市| 永福县| 庆阳市| 西乌珠穆沁旗| 肃宁县| 平阳县| 南安市| 邵阳市| 永丰县| 永和县| 锦州市| 深水埗区|