【正文】
為了發(fā)現(xiàn)程序中的錯誤,就會力求設(shè)計出最能暴露錯誤的測試方案。軟件測試主要工作內(nèi)容是驗證和確認(rèn),下面分別給出其概念驗證是保證軟件正確地實(shí)現(xiàn)了一些特定功能的一系列活動,即保證軟件做了你所期望的事情。確定軟件生存周期中的一個給定階段的產(chǎn)品是否達(dá)到前階段確立的需求的過程;程序正確性的形式證明,即采用形式理論證明程序符號設(shè)計規(guī)定的過程;評市、審查、測試、檢查、審計等各類測試活動,或?qū)δ承╉椞幚怼⒎?wù)或文件等是否和規(guī)定的需求相一致進(jìn)行判斷和提出報告。確認(rèn)是一系列的活動和過程,目的是想證實(shí)在一個給定的外部環(huán)境中軟件的邏輯正確性。即保證軟件以正確的方式來做了這個事件。靜態(tài)確認(rèn),不在計算機(jī)上實(shí)際執(zhí)行程序,通過人工或程序分析來證明軟件的正確性;動態(tài)確認(rèn),通過執(zhí)行程序做分析,測試程序的動態(tài)行為,以證實(shí)軟件是否存在問題。軟件測試的對象不僅僅是程序測試,軟件測試應(yīng)該包括整個軟件開發(fā)期間各個階段所產(chǎn)生的文檔,如需求規(guī)格說明、概要設(shè)計文檔、詳細(xì)設(shè)計文檔,當(dāng)然軟件測試的主要對象還是源程序。軟件測試是幫助識別開發(fā)完成(中間或最終的版本)的計算機(jī)軟件(整體或部分)的正確度(correctness) 、完全度(pleteness)和質(zhì)量(quality)的軟件過程;是SQA(software quality assurance)的重要子域。Grenford 1. 測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程;2. 好的測試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯誤的測試方案;3. 成功的測試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯誤的測試。然而,這種觀點(diǎn)指出測試是以查找錯誤為中心,而不是為了演示軟件的正確功能,但是只從字面意思理解,可能會產(chǎn)生誤導(dǎo),認(rèn)為發(fā)現(xiàn)錯誤是軟件測試的唯一目的,查找不出錯誤的測試就是沒有價值的測試,實(shí)際上并非如此。測試并不僅僅是為了找出錯誤,通過分析錯誤產(chǎn)生的原因和錯誤的發(fā)生趨勢,可以幫助管理者發(fā)現(xiàn)當(dāng)前軟件開發(fā)過程中的缺陷,以便及時改進(jìn)。這種分析也能幫助測試人員設(shè)計出有針對性的測試方法,改善測試的效率和有效性。沒有發(fā)現(xiàn)錯誤的測試也是有價值的,完整的測試是評定軟件質(zhì)量的一種方法。軟件測試的主要步驟有單元測試、集成測試和確認(rèn)測試。1. 單元測試(Unit Testing)單元測試也稱模塊測試。通常單元測試可放在編碼階段,程序員在編寫好一個模塊后,總會對自己編寫的模塊進(jìn)行測試,檢查它是否實(shí)現(xiàn)了詳細(xì)設(shè)計說明書中規(guī)定的模塊功能和算法。單元測試主要發(fā)現(xiàn)編碼和詳細(xì)設(shè)計中產(chǎn)生的錯誤,通常采用白盒測試。2. 集成測試(Integration Testing)集成測試也稱組裝測試,它是對由各模塊組裝而成的程序進(jìn)行測試,主要檢查模塊間的接口和通信。集成測試主要發(fā)現(xiàn)設(shè)計階段產(chǎn)生的錯誤,通常采用黑盒測試。3. 確認(rèn)測試(Validation Testing)確認(rèn)測試的任務(wù)是檢查軟件的功能、性能及其他特征與用戶的需求一致,它是以需求規(guī)格說明書(即需求規(guī)約)作為依據(jù)的測試。確認(rèn)測試通常采用黑盒測試。確認(rèn)測試產(chǎn)生測試程序是否滿足需求規(guī)格說明書所列的各項要求,然后要進(jìn)行軟件配置復(fù)查,特別是文檔是否齊全,各方面的質(zhì)量是否符合要求等。如果一個軟件是為某個客戶定制的,那么最后由客戶來實(shí)施驗收測試(acceptance testing),以便客戶確認(rèn)該軟件是他所需要的。如果一個軟件是作為產(chǎn)品被許多客戶使用的話,那不可能為每個客戶進(jìn)行驗收測試。大多數(shù)軟件生產(chǎn)者使用一種Alpha測試和Beta測試的過程,來揭露僅由最終用戶才能發(fā)現(xiàn)的錯誤。根據(jù)前面所介紹的測試方法及測試步驟現(xiàn)對旅行社信息管理系統(tǒng)進(jìn)行測試,本系統(tǒng)以用戶登錄和路線統(tǒng)計為例。本網(wǎng)站設(shè)計對登錄進(jìn)行了四種情況的測試:1. 當(dāng)用戶名、密碼、用戶權(quán)限全部準(zhǔn)確無誤時,則會出現(xiàn)“登錄成功!”提示信息。2. 當(dāng)用戶名或密碼其中有一個輸入錯誤且權(quán)限正確時,則會出現(xiàn)“您輸入的用戶名或密碼錯誤,請重新輸入!”提示信息。3. 當(dāng)用戶名和密碼的輸入全部正確,但選擇的權(quán)限不正確時,則會出現(xiàn)“權(quán)限選擇有誤,請重新輸入!”提示信息。4. 當(dāng)用戶名、密碼輸入和權(quán)限選擇全部錯誤時,則會出現(xiàn)錯誤提示頁面,如圖61所示。圖61 登錄驗證界面路線統(tǒng)計模塊根據(jù)路線的受歡迎程度決定路線是否繼續(xù)開發(fā)此路線,受歡迎程度一共有三個標(biāo)準(zhǔn):良好、一般、差,路線統(tǒng)計路線界面如圖62所示。圖62 路線分析界面根據(jù)決策者選擇的路線受歡迎程度,該界面顯示的是每個受歡迎度的路線的條數(shù),以便于用于決策,如圖63所示。圖63 路線統(tǒng)計界面軟件測試是軟件開發(fā)中的重中之重,沒有一點(diǎn)可以馬虎的,在項目管理過程中,強(qiáng)調(diào)的是每個過程的每一個環(huán)節(jié)都要進(jìn)行測試,保證系統(tǒng)在每個階段可以控制。因為軟件測試中考慮的問題基本上是項目管理中需要考慮的問題。具體說,軟件測試是事務(wù)性的,而項目管理是策略性,一些策略性的東西必須在一些事務(wù)性的事務(wù)上來實(shí)現(xiàn)。軟件測試的事務(wù)性操作很多,這些操作需要一個良好的心態(tài)去對待。必須有一個良好團(tuán)隊合作的精神。結(jié) 論本系統(tǒng)操作簡單、方便,能夠快速的完成旅行社中的所有基本信息管理的要求,實(shí)現(xiàn)了旅行社從路線開發(fā)到旅行團(tuán)到統(tǒng)計的信息化與智能化。并通過路線的銷售信息和旅行團(tuán)的人數(shù)統(tǒng)計出該路線是否值得繼續(xù)推廣。本系統(tǒng)完成了預(yù)期的全部功能,主要有六大功能模塊組成,分別為旅行團(tuán)管理、客戶信息管理、景點(diǎn)信息管理、統(tǒng)計信息管理、路線信息管理以及員工信息管理。每個模塊都有相應(yīng)的子模塊組成。本系統(tǒng)的精點(diǎn)之處是通過旅行團(tuán)的信息輔助決定路線的受歡迎程度,看是否路線有值得推廣的必要。本系統(tǒng)采用了JSP+Servlet+JavaBean+JDBC。還用到了少量的Strust 1。實(shí)現(xiàn)表示層,JDBC實(shí)現(xiàn)持久層,Servlet實(shí)現(xiàn)業(yè)務(wù)邏輯層。分層開發(fā),大大降低了應(yīng)用系統(tǒng)開發(fā)時間和維護(hù)的成本,使軟件開發(fā)更清晰化。使用JavaBean技術(shù)建立實(shí)體,在數(shù)據(jù)訪問和邏輯操作時,都集中到實(shí)體中,增強(qiáng)了系統(tǒng)的復(fù)用性。系統(tǒng)的可擴(kuò)展性也大大增強(qiáng)。由于畢業(yè)設(shè)計時間較短和個人能力有限,所以該系統(tǒng)還有許多不盡如人意的地方,都有待進(jìn)一步改善。例如: 用戶界面不夠美觀、業(yè)務(wù)流程有一些不完整、系統(tǒng)的安全性應(yīng)加強(qiáng)等等。因此,在今后的工作中,對本系統(tǒng)還應(yīng)在以下方面予以改進(jìn),未來要做的工作主要有:1. 完善數(shù)據(jù)庫的設(shè)計,使之更合理,盡可能的減少冗余數(shù)據(jù)的存在。2. 優(yōu)化程序,使系統(tǒng)運(yùn)行速度更加快捷。3. 進(jìn)一步保證系統(tǒng)的安全性。致 謝在老師和同學(xué)的支持與幫助之下,我順利地完成了本次畢業(yè)設(shè)計。在畢業(yè)設(shè)計的這段日子里,我所獲得的知識將是大學(xué)期間最珍貴的。首先,要感謝我的指導(dǎo)老師,感謝他們在我大學(xué)的最后學(xué)習(xí)階段——畢業(yè)設(shè)計階段給自己的指導(dǎo),從最初的定題,到資料收集,到寫作、修改,到論文定稿,他們給了我耐心的指導(dǎo)和無私的幫助。由于經(jīng)驗的匱乏,難免有許多考慮不周全的地方 老師細(xì)心地幫我糾正代碼以及論文中的錯誤。為了指導(dǎo)我們的畢業(yè)論文,他們放棄了自己的休息時間,他們這種無私奉獻(xiàn)、治學(xué)嚴(yán)禁的敬業(yè)精神令人欽佩,在此我向他們表示我誠摯的謝意。感謝身邊的每一位同學(xué),感謝大家?guī)椭医鉀Q了許多技術(shù)上和設(shè)計思想上的問題,幫助我提供解決問題的思路,在每一次和同學(xué)探討后我的收獲都很大,在這里再一次感謝他們,并希望每一位同學(xué)都能找到一份理想的工作。最后,再一次向以上各位老師和同學(xué)表示衷心的感謝!參考文獻(xiàn)[1] 王能斌.?dāng)?shù)據(jù)庫系統(tǒng)原理[M].電子工業(yè)出版社,2001.[2] 鄭人杰,殷人昆.實(shí)用軟件工程[M].清華大學(xué)出版社,1997.[3] 薩師煊,王珊.?dāng)?shù)據(jù)庫系統(tǒng)概論[M].高等教育出版社,1991.[4] 嚴(yán)蔚敏,吳偉民.?dāng)?shù)據(jù)結(jié)構(gòu)[M].清華大學(xué)出版社,1987.[5] 謝希仁.計算機(jī)網(wǎng)絡(luò)[M].大連理工大學(xué)出版社,1996[6] 邸海德.旅游管理信息系統(tǒng)[M].南開大學(xué)出版社,2000.[7] 鄺孔武.信息系統(tǒng)的分析與設(shè)計[M].清華大學(xué)出版社,2001.[8] 宋德富,張強(qiáng)華.計算機(jī)專業(yè)英語教程[M].高等教育出版社,1999.[9] 周桓,王殊宇.JSP項目開發(fā)全程實(shí)錄.[Z]清華大學(xué)出版社,2008.[10] 孫鑫.Struts 1深入詳解[M].電子工業(yè)出版社.2008.[11] 孫衛(wèi)琴.基于MVC的Java Web設(shè)計與開發(fā)[M].電子工業(yè)出版社,2004.[12] 吳鵬.動態(tài)網(wǎng)頁設(shè)計(JSP)[M].高等教育出版社,2006.[13] 耿祥義,張躍平.JSP使用教程[M]. 清華大學(xué)出版社,2007.[14] 孫衛(wèi)琴.Tomcat與Java Web開發(fā)技術(shù)詳解[M].電子工業(yè)出版社,2009.[15] (英)薩默維爾.軟件工程[M].機(jī)械工業(yè)出版社,2007.[16] 朱少民.全程軟件測試[M].電子工業(yè)出版社,2007.[17] George SoftWare 2009.[18] BryanBasham Kathysierra Servletsamp。’.[19] SeanJ,Barbeaua Miguel A. Advances in Engineering . 附錄AData Design 1. DATA TYPES AND VALUE SETSAnyone who has ever programmed a puter is accustomed to the fact that you usually have to tell the puter whether the information stored in a particular location is an integer, a real number, a character string, a Boolean va1ue, or whatever. Most puters have one electronic circuit for adding two integers and another for adding two real numbers, and, of course, addition does not make any sense at all, in general, for character strings. Because the pattern of bits in at storage location can usual1y be interpreted as any of these, the puter must be told what is intended. This specification is known as the type of the data. Identifying a data object as being of a particular type has the effect of defining an internal representation for the object. It also specifies which operations may be performed on that object and their effects. For example, the internal representation of an integer in most modem mainframe puters is a string of 32 bits in 239。s plement format. The external representation is a character string in which only the digits 0 to 9 and the minus sign may appear. Suitable interpretations of all the standard arithmetic and logical operations are also implied when a data object is declared to be of type is also true (but perhaps less obvious) that declaring a data object to be an integer defines a collating system for occurrences of that object. That is, it specifies how the relatively plex operation, sort, should operate. Specific algorithms for converting between interna1 and external representations are also implied.2. KEYSAll attributes describe some aspect of an entity. Some attributes perform the additional role of distinguishing one particular entity occurrence from all others of the same type. For example, if care is taken not to assign any employee number to more than one person, then knowing an individual39。s employee number should be sufficient to locate all of the other attribute values for that individual. An attribute that can be guaranteed to have a unique value for each entity is ca