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