由 揚
[摘要]軟件開發(fā)過程必須伴有質(zhì)量保證活動,而軟件測試是最至關重要的質(zhì)量保證活動,使質(zhì)量控制的最重要手段[1]。從軟件加密,數(shù)據(jù)加密,性能問題,極限業(yè)務數(shù)據(jù)測試,精確度的測試,臨界值的測試,測試的目的等幾個方面分析軟件測試的重要性。
[關鍵詞]軟件開發(fā)軟件測試
中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)0820041-01
我認為,軟件測試不只是簡單的找出程序中的Bug,而是通過測試,能夠合法的面向市場,并且有更強大的生命力在市場中生存下去。如何才能更好的生存下去呢?于是引出一個話題:
一、軟件加密問題
軟件加密這個范圍有點大,涉及面也比較廣,很多人就想不到軟件測試與軟件加密會有什么關系,當然每個人的水平不同,所能想到事情的深度與廣度也不同。我舉個很簡單的例子,比如說某些商用軟件,必須要會員注冊后才能正常使用的,當然了注冊是需要花費一定的金錢的,這樣從事軟件開發(fā)的公司才會有利潤的回報。如果這款很受歡迎的軟件在面市第二天,就被高手給破解掉了,也就是成為了目前網(wǎng)上所說的破解版,綠色版,并且破解后,軟件原有的功能完全能正常使用,那么,你想想,還會有人花錢注冊正版軟件嗎?當一款軟件失去了大部分客戶群體時,這個軟件雖然還有人在使用,但是,它已經(jīng)注定會慢慢的被“市場先生”無情的淘汰。至于軟件如何加密/解密以及測試方法,不是本文涉及的內(nèi)容,就不多說了。在此只是說明,通過軟件測試,提升軟件自身的加密程度,是非常重要的。
二、數(shù)據(jù)加密問題
數(shù)據(jù)的加密與軟件測試又有什么關系呢?在這個通信技術飛速發(fā)展的年代、網(wǎng)絡無所不在的年代,如果數(shù)據(jù)加密不嚴格,導致數(shù)據(jù)流失,會造成多么大的影響呢?
第一是客戶信息方面的泄漏。如果客戶的個人信息,比如說聯(lián)系方式等數(shù)據(jù)流失出去,那么你的客戶,很可能會接到一些騷擾電話,收到一些煩人的垃圾信息,這還是小問題,如果因為數(shù)據(jù)的流失導致客戶被一些犯罪份子敲詐勒索,那么,軟件開發(fā)公司是需要負法律責任的。
第二是這一套軟件系統(tǒng)本身的數(shù)據(jù)泄漏。如果有一些與軟件本身相關的數(shù)據(jù)泄漏,你的一些競爭對手就要偷笑了。他們完全可以從這些數(shù)據(jù)中,分析出這套軟件的開發(fā)思路,以及你們公司的軟件開發(fā)、設計思路,從而在以后的競爭中輕易的將你擊敗。因此可以得出結論,如果軟件測試過程中,忽視或是輕視了數(shù)據(jù)加密深度的問題,很可能在不久的將來,造成軟件開發(fā)公司被迫面臨倒閉。
三、性能問題
一個合格的軟件,并不是完成客戶所有的需求,就OK的。比如一個在線購物的網(wǎng)站,一千人同時在線交易,沒問題,兩千人時就有點遲鈍,達到五千人時,整個網(wǎng)站就崩潰了,這肯定是不行的。當然了,這只是單純的從運行效率上闡述這個問題的。除此之外,還應該考慮到操作性是否合理的問題,網(wǎng)絡購物的客戶,無非就是想圖個方便,如果一個網(wǎng)絡購物的網(wǎng)站,操作流程比直接去商場購物更加復雜,更加的浪費時間,那么,是否應該把這種情況定性為“可操作性差”呢?假如說,運行通暢了,操作流程也簡單化了,那么,是否應該考慮軟件的可移植性問題?是否存在在windows系統(tǒng)下運行完全正常,在Linux系統(tǒng)下就根本無法正常運行的情況呢?
四、極限業(yè)務數(shù)據(jù)測試
有開發(fā)經(jīng)驗的人都知道,一個軟件系統(tǒng)前臺界面,輸入的數(shù)據(jù),在后臺都是用一些變量進行存儲的。首先,根據(jù)不同的業(yè)務需求,軟件開發(fā)人員對應的選擇一些合適類型去定義這個變量,比如說:整型,單、雙精度型等。不同的類型,能存儲的數(shù)據(jù)長度也是不盡相同的。假如說,A類型的變量,最大能存儲的數(shù)據(jù)長度為10個字節(jié),但是從業(yè)務邏輯來講,最大出現(xiàn)的數(shù)據(jù)也就是9個字節(jié)的長度。按照正常的業(yè)務處理來說,本系統(tǒng)是不會出現(xiàn)問題的。但是,萬事總有些考慮不周全之處,突然有一天,出現(xiàn)了一筆意料之外的業(yè)務定單,出現(xiàn)了10個字節(jié)以上的數(shù)據(jù),這樣就完全可以很輕松的令整個軟件系統(tǒng)崩潰。
五、精確度的測試
第一,依據(jù)上文,因為可以用不同類型存儲數(shù)據(jù),導致了某些本應該相等的數(shù)據(jù),在一定的情況下,出現(xiàn)了不相等的邏輯假象。比如說:0與0.00。這兩個數(shù)據(jù),在網(wǎng)絡傳輸?shù)倪^程中,如果是按照字符串的形式來傳輸?shù)?那么他們兩個是不相等的。如果用不同的數(shù)據(jù)類型保存后,然后轉(zhuǎn)成同樣的數(shù)據(jù)類型,再進行比較,又變成相等的。
第二,因為不同的類型的精度不同,在大量的數(shù)據(jù)計算過程當中,導致數(shù)據(jù)的丟失,以致不能得正確的結果。舉例說明,A類型精確度為小數(shù)點后兩位,B類型精確度為小數(shù)點后四位。那么以A類型定義的變量與B類型定義的變量分別存儲相同的數(shù)據(jù)0.4501,那么存儲后得到的結果分別是A=0.45,B=0.4501。表面上看,A與B的結果相差只有0.0001,但是想想,如果有一百萬條這樣的數(shù)據(jù)進行加法運算,那么最后得到的結果相差是多少?對于某些系統(tǒng)而言,這樣小小的差距,絕對是致命的。比如說:科研相關方面的系統(tǒng),銀行方面的系統(tǒng)等等。
六、臨界值的測試
舉個典型的例子,數(shù)值:0。經(jīng)常有些業(yè)務用這個數(shù)值來做判斷。比如說,注冊申請時,數(shù)值大于0時表示“申請成功”,否則表示“申請失敗”;軟件的版本控制時,數(shù)值等于0表示“試用版”,否則表示正式版等等。于是,對于軟件開發(fā)人員而言,對于存在這些業(yè)務的測試時,經(jīng)常需要考慮以下五個測試點:0本身;極近值,正數(shù)1(+1),負數(shù)1(-1);極遠值。比如說,正數(shù)9999999999,負數(shù)9999999999。如果臨界值沒有嚴格的進行測試,那么如果軟件開發(fā)人員,把A>=0寫成A>0,這樣的話,本來一個合法的數(shù)據(jù)0,變成了非法數(shù)據(jù),從而得到了錯誤的結果。以此,也體現(xiàn)了臨界值測試的重要性。
七、測試的目的
有人說,測試的目的,無非是找出系統(tǒng)中存在的Bug,這有什么難的。此話不然。如果真是這么簡單,那豈不是非計算機行業(yè)的人士,也可以過來做測試?那還要專業(yè)的人士做什么呢?我個人認為,軟件測試的目的,找到系統(tǒng)中存在的Bug,那只是最基礎的工作,把系統(tǒng)中表面的、隱藏的Bug全部清理掉之后,應該進一步的考慮一下,系統(tǒng)是否真正的合理。理論來講,任何事物的存在,都有其不可避免的缺陷存在。所以,我們需要通過測試,盡量的減少系統(tǒng)的缺陷,或是減少一些相對比較大的缺陷的存在,這也就是所謂的“缺陷測試”。
軟件測試技術,因為軟件開發(fā)技術的快速更新,而需要不斷提升測試技術與理論,才能真正的完成測試任務及使命[2]。軟件測試工作看上去簡單,而實際上,并不是所有人都能很好的完成的工作,是一個需要不斷總結的工作,是一個需要不斷提升技術才能靈活掌握的工作。
軟件測試工作,絕對不簡單。
參考文獻:
[1]佟偉光,《軟件測試技術》,人民郵電出版社,2005年7月,10-11.
[2]郭耀,軟件測試實踐:成為一個高效能的測試專家,清華大學出版社,2008.11.21.
[3]郭耀,軟件測試:跨越整個軟件開發(fā)生命周期,清華大學出版社,2008.8.22.