申利芳(天津天鐵冶金集團計控電訊廠,河北涉縣 056404)
軟件測試在程序開發中的應用
申利芳(天津天鐵冶金集團計控電訊廠,河北涉縣 056404)
介紹了軟件測試在計量查詢統計程序開發中的作用和應用效果,通過單元測試、功能測試、性能測試等軟件測試方法找出程序中存在的各種問題并加以修正,實現了對程序的糾錯目標,從而完善了應用程序的功能,保證了軟件的正常運行。
軟件 測試 程序 性能 開發
隨著公司信息化的深入發展,企業對程序在安全性、穩定性、靈活性、正確性方面都提出了更多要求,計量數據關系到公司領導在控制成本方面做出正確決策,而計量查詢統計系統正是對計量數據進行各種各樣的統計分析,因此,必須確保計量查詢統計系統的嚴密性、正確性。要保證程序的正確性,就需要高度重視軟件測試,完善測試方法,從而使程序在正確理論的前提下,充分地滿足用戶需求。
本文以計量查詢統計系統為例,通過軟件測試找出程序在開發時出現的一系列問題,完善了程序功能,以此來證明軟件測試工作在程序開發中的重要性。
傳統觀念認為軟件測試是在程序完成以后才開始實行的,實際上這種觀念是不科學的,軟件測試一般來說在項目確立之時就開始了。軟件測試前后要經過以下幾個主要環節:需求分析→測試計劃→測試設計→測試環境搭建→測試執行→測試記錄→缺陷管理→軟件評估→RTM。以上各環節并不是軟件測試的全部,根據實際情況有時候也會再添加其他環節,程序正式運行后如果遇到嚴重問題,還需進行后續維護測試。各環節之間并不是相互獨立、沒有聯系的,也沒有嚴格的順序,由于實際工作千變萬化,各環節出現交插和重疊在所難免。因此,在實際測試過程中要做到具體問題具體分析,具體解決。
軟件測試是為了發現錯誤而執行程序,甚至不用執行程序的過程。它不僅是軟件開發中的有機組成部分,而且在整個軟件工程中占據了相當大的比重。軟件測試不僅要講究策略,更要講究時效性。因此,軟件測試的目的包括以下幾點。
盡可能地為修正錯誤提供更多有用的信息。找到錯誤后進行修改是程序員的工作,但是軟件測試人員如果能對如何進行錯誤修改提供建議,那么程序員就會在程序設計上節省時間,而且也避免了程序員在程序設計上走彎路。
軟件開發出來后交測試人員進行評測,測試人員就是利用各種測試方法,通過反復測試相關數據,從而證明軟件中存在哪些錯誤,以便程序員進行修改。
用戶需求是程序員開發軟件的依據,因此,軟件測試人員就需要根據用戶需求進行程序評測,及時地提醒程序員按照用戶需求開發軟件。
計量查詢統計系統涉及到計量部門、企劃處、外經處、質檢中心等部門的使用,數據處理量十分巨大,對數據的實時性要求也很高,因此,該程序的開發必須要保證數據的正確性,消除冗余,而軟件測試的目的正在于此。在實際的程序開發中,軟件測試的應用不盡相同,各有側重,現以計量查詢統計系統為例,重點對該系統的數據分析模塊進行檢測,闡述軟件測試的具體應用。下面主要對測試執行中的幾個重要方法,即單元測試、功能測試、性能測試進行介紹。
單元測試是對軟件的基本組成單元進行的測試。它是軟件動態測試的最基本也是最重要的部分之一,其目的是檢驗軟件基本組成單元的正確性。要想做好單元測試,首先要對程序的業務進行深入了解,如果對產品業務一無所知,只能測試出單純的軟件缺陷,而面對與產品業務相關的缺陷,則很可能視而不見,單元測試也就無從談起了。
在計量查詢統計系統的測試中,因為該系統業務性強,即使是小到一個函數,也可能因涉及到相關業務而無法使用。同時,需要綜合考慮各方面的因素。例如,用戶提出要查詢同一車的皮毛時差,即過皮重時間與過毛重時間的差值,并把符合條件的記錄顯示出來。若使用原來的軟件,編程人員只是簡單使用一個計算時差的函數datediff(datepart,startdate,enddate)。單純就函數而言,這樣使用是沒有錯誤的,但是經反復數據測試后發現只用該函數解決問題是不正確的。在計量系統中,過磅車輛有幾種:外發、進廠、倒運等。外發車輛要先過皮重后過毛重;進廠車輛需先過毛重再過皮重;倒運車輛不用過皮重,直接從皮重庫里調皮重。因此計算皮毛時差函數datediff,即satertdate減enddate會出現負數,當用戶輸入查詢條件“皮毛時差小于1小時”時,所有負數都是符合條件的,而根據實際業務,查詢結果與用戶期望結果是不同的,真正結果按數學值表示應該是:-1<皮毛時差<1。函數使結果范圍擴大,把皮毛時差<=-1也包含在內,這樣是不對的。同時,如果求皮毛時差>1,則會使結果范圍縮小。解決問題的方法就是給函數加絕對值,即abs((datediff(datepart,statrdate,enddate))。從這個問題可以看出,如果不深入地了解軟件相關業務是不可能正確實現軟件的功能要求的。
功能測試是指檢查程序軟件是否滿足用戶需求。例如,在計量查詢統計系統中,用戶想要實現每月按司磅員過磅車輛數來進行考核,從而實現獎金的二次分配。當在測試該功能時發現軌道衡中火車倒運時不用過皮重,直接從皮重庫里調皮重來計算凈重,這時如果按常規對車輛計算兩次,則會把范圍擴大,而實際上司磅員并沒有對該車進行回皮操作,因此以此來作為獎金分配依據則是錯誤的。解決該問題的方法就是在查詢語句中將調皮重的記錄屏蔽,查詢語句用“psb not like‘%p’”來實現。軟件的各項功能都必須進行嚴格的測試,同時檢查數據在存取時的一致性。
性能測試是指考驗程序軟件的系統架構,使程序軟件達到穩定、便捷、實時地實現功能的目標。隨著信息化程度的廣泛普及,用戶在要求實現基本功能的基礎上,更加注重系統性能的提高。用戶的某項需求可以通過幾種方法實現,而判定哪種方法最節約時間和資源就需要開發人員和測試人員相互合作,通過測試來分析數據,最后選定最適合的方法。例如,在計量查詢統計系統中,有一個可對貨名按時間、磅站、司磅員分組統計的功能窗口。通過使用錯誤推測方法對其進行測試,發現由于統計量大、涉及的數據庫表比較多,在運行該窗口時數據庫會出現死鎖的情況,影響計量過磅系統的正常使用,造成了極大的損失。最后,經過反復的測試、試驗,為在表鏈接時加上“with(nolock)”,使視圖中涉及到的所有表不相互鎖,使這一問題得到了很好的解決。
計量查詢統計系統在程序開發的過程中充分地運用了軟件測試這一工具,軟件開發人員和軟件測試人員緊密配合,邊開發邊評測,發現問題及時處理,在工期之內很好地完成了開發任務。計量查詢統計系統于2008年正式運行,經過2年多的正常運行,基本上符合用戶使用要求,各項功能也相對健全,受到用戶單位的好評。但是,由于業務一直在發展,在今后仍然需要根據用戶意見對軟件進行修改,保證軟件的正常運行。
通過在程序開發的流程中進行軟件測試,簡化了程序流程,提高了系統的性能,優化了程序的各項功能,同時強化了軟件測試工程化理念,熟悉了軟件測試的多種方法,提高了使用軟件測試的能力,從而保證了軟件測試的質量。
[1]賀平.軟件測試技術[M].北京:機械工業出版社,2004.
[2]趙瑞蓮.軟件測試[M].北京:高等教育出版社,2004.
Application of Software Test to Program Development
Shen Lifang
The thesis introduces the function and application effect of software test in the development of metering query and statistics program.By means of unit test,function test and property test,problems in the program were found out and corrected. Thus,the program correction target was realized,application functions improved,which ensured software run normally.
software,test,program,property,development
(收稿 2011-10-15責編趙實鳴)
申利芳,工程師,2002年7月畢業于張家口通信學院計算機及應用專業,現從事計算機軟件編程及管理工作。