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