測試的基本概念
測試是軟件生存周期中十分重要的一個過程妒御,是產(chǎn)品發(fā)布、提交給終用戶前的穩(wěn)定化階段谭期。
一、 測試的分類:
從測試方法的角度可以分為手工測試和自動化測試。
手工測試:不使用任何測試工具结胀,根據(jù)事先設(shè)計好的測試用例來運行系統(tǒng),測試各功能模塊责循。
自動化測試:利用測試工具糟港,通過編寫測試腳本和輸入測試數(shù)據(jù),自動運行測試程序院仿。目前常用的自動化測試工具是基于GUI的自動化測試工具秸抚,基本原理都是錄制、回放技術(shù)歹垫。
從整體的角度可以分為單元測試耸别、集成測試、系統(tǒng)測試县钥、確認測試秀姐。
單元測試:是針對軟件設(shè)計的小單位—程序模塊,進行正確性檢驗的測試工作若贮。一般包括邏輯檢查省有、結(jié)構(gòu)檢查痒留、接口檢查、出錯處理蠢沿、代碼注釋伸头、輸入校驗、邊界值檢查舷蟀。
單元測試的依據(jù)是系統(tǒng)的詳細設(shè)計恤磷;一般由項目組開發(fā)人員自己完成。
集成測試:在單元測試的基礎(chǔ)上野宜,將所有模塊按照設(shè)計要求組裝進行測試扫步。一般包括邏輯關(guān)系檢查、數(shù)據(jù)關(guān)系檢查匈子、業(yè)務(wù)關(guān)系檢查河胎、模塊間接口檢查、外部接口檢查虎敦。
系統(tǒng)測試:系統(tǒng)測試是在所有單元游岳、集成測試后,對系統(tǒng)的功能及性能的總體測試其徙。
確認測試:模擬用戶運行的業(yè)務(wù)環(huán)境胚迫,運用黑盒測試方法,驗證軟件系統(tǒng)是否滿足用戶需求或軟件需求說明書中指明的軟件特性(功能唾那、非功能)上的晌区。
從測試原理上分為:白盒測試、黑盒測試和灰盒測試通贞。
白盒測試:是通過程序的源代碼進行測試而不使用用戶界面朗若。這種類型的測試需要從代碼句法發(fā)現(xiàn)內(nèi)部代碼在算法,溢出昌罩,路徑哭懈,條件等等中的缺點或者錯誤,進而加以修正茎用。
黑盒測試:是通過使用整個軟件或某種軟件功能來嚴格地測試遣总, 而并沒有通過檢查程序的源代碼或者很清楚地了解該軟件的源代碼程序具體是怎樣設(shè)計的。測試人員通過輸入他們的數(shù)據(jù)然后看輸出的結(jié)果從而了解軟件怎樣工作轨功。在測試時旭斥,把程序看作一個不能打開的黑盆子,
在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性的情況下古涧,測試者在程序接口進行測試垂券,它只檢查程序功能是否按照需求規(guī)格說明書的規(guī)定正常使用,程序是否能適當?shù)亟邮蘸驼_的輸出羡滑。
黑盒測試方法主要有等價類劃分菇爪、邊界值分析算芯、因—果圖、錯誤推測法凳宙。
等價類劃分:
是把所有可能的輸入數(shù)據(jù)熙揍,即程序的輸入域劃分成若干部分(子集),然后從每一個子集中選取少數(shù)具有代表性的數(shù)據(jù)作為測試用例.該方法是一種重要的氏涩,常用的黑盒測試用例設(shè)計方法.
劃分等價類: 等價類是指某個輸入域的子集合.在該子集合中届囚,各個輸入數(shù)據(jù)對于揭露程序中的錯誤都是等效的.并合理地假定:測試某等價類的代表值等于對這一類其它值的測試.因此,可以把全部輸入數(shù)據(jù)合理劃分為若干等價類是尖,在每一個等價類中取一個數(shù)據(jù)作為測試的輸入條件意系,可以用少量代表性的測試數(shù)據(jù).取得較好的測試結(jié)果.等價類劃分可有兩種不同的情況:有效等價類和無效等價類.
有效等價類:是指對于程序的規(guī)格說明來說是合理的,有意義的輸入數(shù)據(jù)構(gòu)成的集合.利用有效等價類可檢驗程序是否實現(xiàn)了規(guī)格說明中所規(guī)定的功能和性能.
無效等價類:與有效等價類的定義恰巧相反.
設(shè)計測試用例時析砸,要同時考慮這兩種等價類.因為,軟件不僅要能接收合理的數(shù)據(jù)爆袍,也要能經(jīng)受意外的考驗.這樣的測試才能確保軟件具有更高的可靠性.
邊界值分析:
長期的測試工作經(jīng)驗告訴我們首繁,大量的錯誤是發(fā)生在輸入或輸出范圍的邊界上,而不是發(fā)生在輸入輸出范圍的內(nèi)部.因此針對各種邊界情況設(shè)計測試用例陨囊,可以查出更多的錯誤弦疮。
錯誤推測法:
基于經(jīng)驗和直覺推測程序中所有可能存在的各種錯誤, 從而有針對性的設(shè)計測試用例的方法.錯誤推測方法的基本思想: 列舉出程序中所有可能有的錯誤和容易發(fā)生錯誤的特殊情況蜘醋,根據(jù)他們選擇測試用例. 例如胁塞, 在單元測試時曾列出的許多在模塊中常見的錯誤. 以前產(chǎn)品測試中曾經(jīng)發(fā)現(xiàn)的錯誤等, 這些是經(jīng)驗的總結(jié). 還有压语, 輸入數(shù)據(jù)和輸出數(shù)據(jù)為0的情況. 輸入表格為空格或輸入表格只有一行. 這些都是容易發(fā)生錯誤的情況. 可選擇這些情況下的例子作為測試用例啸罢。
灰盒測試:
灰盒測試像黑盒測試一樣是通過用戶界面測試,但是測試人員已經(jīng)有所了解該軟件或某種軟件功能的源代碼程序具體是怎樣設(shè)計的胎食。甚至于還讀過部分源代碼扰才。因此測試人員可以有真對性地進行某種確定的條件/功能的測試。
從軟件特性上分為功能測試和性能測試厕怜。
功能測試:是指為了確保軟件系統(tǒng)功能實現(xiàn)的正確性衩匣,完整性和其他特性而進行的測試。
性能測試:是指為了評估軟件系統(tǒng)的性能狀況粥航,和預(yù)測軟件系統(tǒng)性能趨勢而進行的測試和分析琅捏。
二、BUG的定義:
BUG:(小錯誤递雀,缺陷柄延,不足,過失 …) 一個計算機bug指在計算機程序中存在的一個錯誤(error)缀程、缺陷(flaw)拦焚、疏忽(mistake)或者故障(fault)蜡坊,這些bug使程序無法正確的運行。Bug產(chǎn)生于程序的源代碼或者程序設(shè)計階段的疏忽或者錯誤赎败。
Defect:(缺陷) 在軟件工程(Software Engineering)中秕衙,軟件與它的需求(requirements)不一致,常常指軟件無法正確完成需求所要求的功能僵刮,也稱之為bug据忘。
Fault:(故障)被定義為存在于組件、設(shè)備或者子系統(tǒng)中異常的條件或者缺陷搞糕,常常會導(dǎo)致系統(tǒng)的失敗勇吊。
Error:(錯誤) 一個error是指編寫錯誤的代碼,通常是無意中造成的窍仰。一般有兩類主要的錯誤汉规,一是語法錯誤(syntax error),該類錯誤易于檢測驹吮,因為代碼在編譯階段無法解析而不能正常編譯通過针史。另一個是邏輯錯誤(logical error),因為它與代碼的實際執(zhí)行密切相關(guān)所以不易發(fā)現(xiàn)碟狞。
三啄枕、項目測試的規(guī)劃
項目測試內(nèi)容:
將項目測試分為項目開發(fā)階段測試和項目完工驗收測試兩個部分。
開發(fā)階段測試內(nèi)容主要包括:模塊功能測試族沃、集成測試和文檔檢查频祝。
模塊功能測試:確保系統(tǒng)各功能模塊能夠正常運行,數(shù)據(jù)的IPO符合系統(tǒng)設(shè)計的要求脆淹。單元和模塊功能滿足需求定義常空。
集成測試:系統(tǒng)各模塊組裝后,根據(jù)業(yè)務(wù)流程的要求盖溺,能夠正確地完成各業(yè)務(wù)功能窟绷,并且數(shù)據(jù)的處理和輸出正確。
文檔檢查:在項目開發(fā)階段咐柜,按照項目進度表兼蜈,根據(jù)《項目文檔測試規(guī)范與標準》,對提交的項目文檔和記錄(技術(shù)文檔和管理文檔)進行檢查和驗證拙友,以符合公司質(zhì)量體系和項目制度的要求为狸,對于技術(shù)類文檔的關(guān)鍵要素,驗證是否能夠達到通過標準遗契。
完工驗收測試內(nèi)容主要包括:安裝測試辐棒、功能驗證、性能測試、需求驗證漾根、文檔測試泰涂。完工驗收測試實際上是項目在結(jié)項前的一個全面的檢查和驗證》拢可以作為項目結(jié)項的依據(jù)和放行條件逼蒙。
需求測試:檢查軟件產(chǎn)品是否滿足該項目的需求說明書中規(guī)定的功能需求,檢查需求的完整性寄疏、一致性是牢、新性,該項測試重點是需求滿足的完整性陕截。
安裝測試:根據(jù)項目提供的安裝文檔中的安裝步驟驳棱,搭建系統(tǒng)運行環(huán)境,檢查系統(tǒng)安裝過程是否正確农曲∩缃粒可能包括數(shù)據(jù)庫服務(wù)器的安裝與配置、應(yīng)用服務(wù)器乳规、控件注冊形葬、客戶端的安裝與配置、應(yīng)用軟件的安裝驯妄。
功能驗證:按照需求說明書和系統(tǒng)概要設(shè)計荷并,逐項檢查各項功能(功能單元合砂、功能模塊)的可運行性和正確性青扔。
文檔測試:文檔測試從項目立項時開始了,實際上是文檔檢查翩伪,包括規(guī)范性檢查和有效性檢查微猖。目的是使項目相關(guān)的文檔和記錄既規(guī)范又有意義,不是為了應(yīng)付的無用文件缘屹。對于技術(shù)文檔如:需求說明書凛剥、概要設(shè)計、詳細設(shè)計等轻姿,在技術(shù)評審時也進行了評測犁珠。用戶文檔,如安裝手冊互亮、用戶操作手冊犁享,根據(jù)文檔檢查規(guī)范進行。
性能測試:這部分測試的來源豹休,嚴格來講炊昆,取決于用戶對軟件特性的一些特定要求,另外,是公司的開發(fā)部門對產(chǎn)品的一些基本的性能要求凤巨。若用戶從業(yè)務(wù)的角度考慮视乐,對軟件產(chǎn)品本身有特定的非功能要求,則必須在軟件需求說明書中加以說明敢茁,使之具有可度量和可測試性佑淀。對于一些多用戶環(huán)境或數(shù)據(jù)處理能力和負載方面的測試,很難通過手工搭建測試環(huán)境來測試卷要,所以可以參考使用一些專門的性能測試工具和手工測試相結(jié)合的方式渣聚。
四、項目測試的基本流程:
項目測試啟動:項目立項后僧叉,在測試配置庫中創(chuàng)建項目奕枝。
測試計劃:系統(tǒng)詳細設(shè)計后,制定測試計劃瓶堕,準備測試資源隘道。
設(shè)計測試用例,主要是與業(yè)務(wù)相關(guān)的測試用例郎笆。
實施功能模塊測試谭梗,搭建運行或開發(fā)環(huán)境,采用功能模塊測試表的方式宛蚓,開發(fā)人員在功能模塊測試表中更新進度狀態(tài)激捏,測試人員在該表中描述測試進度。形成測試錯誤列表凄吏,該表對每個錯誤都有相應(yīng)的測試記錄與之鏈接远舅,在測試記錄中,詳細描述錯誤的情況痕钢。在測試記錄中還要包括修正信息和驗證信息图柏。歡迎加入測試交流群(1017539290),可以與大牛在線隨時討論自己感興趣的話題任连,讓自己用最少的時間學(xué)到最多的東西蚤吹。
錯誤關(guān)閉后,測試人員維護測試記錄表和更新測試用例庫和問題庫随抠,作為經(jīng)驗積累裁着。
項目在結(jié)項時,測試人員進行項目完工驗收測試拱她,填寫項目測試報告二驰。該測試報告可作為用戶驗收的輸入工件。
五椭懊、功能測試方法與內(nèi)容
數(shù)據(jù)輸入測試:向系統(tǒng)輸入數(shù)據(jù)或輸入數(shù)據(jù)庫操作命令時诸蚕,一般是測試系統(tǒng)對數(shù)據(jù)庫中數(shù)據(jù)操作的過程步势。
數(shù)據(jù)類型測試:由于不同的數(shù)據(jù)庫系統(tǒng)對數(shù)據(jù)類型要求的不同,在定義數(shù)據(jù)庫表時背犯,也規(guī)定了數(shù)據(jù)字段的數(shù)據(jù)類型坏瘩。
1、測試步驟和方法:在系統(tǒng)的數(shù)據(jù)維護功能界面上漠魏,錄入或修改數(shù)據(jù)時倔矾,特意輸入非系統(tǒng)設(shè)計的數(shù)據(jù)類型,檢查系統(tǒng)是否可以接受柱锹,若不能接受則檢查是否滿足了系統(tǒng)在這方面的設(shè)計要求哪自,如即刻清除非法內(nèi)容、輸入焦點不能到下一輸入位置禁熏、出現(xiàn)系統(tǒng)自定義的提示信息壤巷、不允許出現(xiàn)開發(fā)工具的報錯信息等。若系統(tǒng)可以接受并保存瞧毙,則要看數(shù)據(jù)庫表的字段類型設(shè)計是否與用戶或習(xí)慣上不一致胧华,并且要注意其他模塊在調(diào)取該數(shù)據(jù)時,是否有特定要求宙彪。
邊界值測試:根據(jù)數(shù)據(jù)取值范圍的要求矩动,輸入符合取值范圍的數(shù)據(jù)、取值范圍的上释漆、下限和超過取值范圍的數(shù)據(jù)悲没。注意,除要測試數(shù)據(jù)庫系統(tǒng)本身數(shù)據(jù)類型取值范圍外男图,還要根據(jù)軟件系統(tǒng)設(shè)計中的一些特定要求示姿,設(shè)計測試用例來測試。
數(shù)據(jù)合法性測試:測試人員除了要測試輸入數(shù)據(jù)是否滿足所使用數(shù)據(jù)庫系統(tǒng)本身的數(shù)據(jù)類型和取值范圍的要求外享言,還應(yīng)該根據(jù)經(jīng)驗和軟件系統(tǒng)和需求的特定要求檢查輸入數(shù)據(jù)的合法性峻凫。比如:日期合法性(出生年月渗鬼、參保日期览露、發(fā)生時間、根據(jù)習(xí)慣和業(yè)務(wù)邏輯順序?qū)θ掌诤侠硇缘囊蟮龋┢┨ァ9べY差牛、比例、率等堰乔,都要注意輸入的合理偏化、合法性。歡迎加入測試交流群(1017539290)镐侯,可以與大牛在線隨時討論自己感興趣的話題侦讨,讓自己用最少的時間學(xué)到最多的東西。
單引號和雙引號:不要忽略輸入單引號和雙引號可能引起的錯誤和數(shù)據(jù)問題。在功能錄入界面上韵卤,在某字段的輸入框輸入了包括單引號和雙引號的數(shù)據(jù)骗污,以后在通過Select 語句查詢時可能會出問題。特別在基于WEB方式的系統(tǒng)沈条,輸入了單引號需忿,在查詢數(shù)據(jù)記錄時,肯定會出現(xiàn)頁面鏈接錯誤(頁面無法鏈接或找不到或鏈接對象錯誤)蜡歹。
空值測試:在測試數(shù)據(jù)錄入或修改的功能界面時屋厘,若不輸入任何東西,系統(tǒng)又沒有設(shè)計成NOT NULL月而,則這時汗洒,要非常注意其影響。因為數(shù)據(jù)可以正常保存父款,但數(shù)據(jù)表該字段是空值仲翎,那么所有與該字段有關(guān)的操作,如:查詢(AND)铛漓、計算(累加溯香、連乘)等,則可能出現(xiàn)數(shù)據(jù)問題(計算結(jié)果為0浓恶,無記錄返回)玫坛。對于測試人員首先要檢查系統(tǒng)到底是作為空值,還是作為空串或空字符處理包晰。另外對于允許不輸入任何值的字段湿镀,在測試過程中,要檢查是否在界面顯示或打印報表時伐憾,這些字段作為了關(guān)鍵要素或標題等情況勉痴。
空格:在數(shù)據(jù)維護的功能界面上,輸入數(shù)據(jù)時树肃,要注意是否在輸入位置有空格蒸矛,首先看系統(tǒng)設(shè)計時,是怎么考慮的胸嘴,若系統(tǒng)允許輸入空格雏掠,則檢查條件查詢或作為調(diào)用參數(shù)時的數(shù)據(jù)返回情況;另外檢查程序是否使用了去掉空格的函數(shù)劣像。
數(shù)據(jù)校驗的不一致:測試時乡话,對于一些編號、編碼耳奕、代碼等主鍵或作為查詢或調(diào)用條件的字段绑青,要注意系統(tǒng)對他們的輸入合法性檢查與查詢或調(diào)用條件的要求是否是一致的诬像。特別是對于數(shù)據(jù)結(jié)構(gòu)設(shè)計中沒有特定約束,而由程序進行校驗控制的情況闸婴。
分析:數(shù)據(jù)輸入測試的主要目的是保證輸入到系統(tǒng)中數(shù)據(jù)的合法颅停、合理性。我覺得掠拳,數(shù)據(jù)輸入過程的檢查是非常重要的癞揉,若在編程過程中,不注重數(shù)據(jù)的校驗功能溺欧,雖然看起來加快了開發(fā)進度喊熟,但給以后會帶來一些不可預(yù)計的編程或維護工作量。
2姐刁、目錄路徑測試:測試系統(tǒng)中規(guī)定的路徑要求芥牌,更改路徑,檢查系統(tǒng)的是否可以正確運行及系統(tǒng)的排錯功能聂使。測試時壁拉,根據(jù)系統(tǒng)設(shè)計說明書(詳細設(shè)計)或通過對程序源代碼的熟悉,找出系統(tǒng)運行過程中指定的路徑或在運行過程中柏靶,需要使用者選擇路徑的地方弃理。特意更改路徑(選擇正確的路徑、選擇另外的路徑屎蜓、輸入不存在的路徑)痘昌。檢查系統(tǒng)是否具有路徑上的容錯性和靈活性。比如炬转,原則上在程序中辆苔,好不要寫路徑,另外可以提供配置路徑的對話框扼劈,若輸入了非法路徑驻啤,系統(tǒng)有無提示等。
3荐吵、 數(shù)據(jù)操作測試:包括數(shù)據(jù)操作測試和用戶界面操作的測試骑冗。
修改、新增數(shù)據(jù):對于新增和修改數(shù)據(jù)捍靠,要注重以下幾個方面的測試沐旨。界面上森逮,新增數(shù)據(jù)成功后榨婆,數(shù)據(jù)列表是否立即刷新,輸入有錯誤時褒侧,是否清空錯誤的數(shù)據(jù)良风,輸入焦點是否得以控制谊迄。在提示信息上,是否有保存成功的提示烟央,輸入有錯誤時统诺,提示的錯誤信息是否準確,可讀疑俭。數(shù)據(jù)方面粮呢,要通過SQL檢查數(shù)據(jù)提交是否正確。
刪除數(shù)據(jù):測試刪除記錄時钞艇,系統(tǒng)是否有確認提示啄寡,能否批量刪除,根據(jù)系統(tǒng)詳細設(shè)計哩照,檢查刪除主表記錄時挺物,在業(yè)務(wù)上,其他相關(guān)表是否相應(yīng)更改飘弧。
事物的提交與回滾:熟悉C/S模式開發(fā)或數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)的人都知道识藤,數(shù)據(jù)庫事物的概念。對于一個比較復(fù)雜的業(yè)務(wù)邏輯或業(yè)務(wù)上有數(shù)據(jù)一致和完整性要求時次伶,盡量使用事物對數(shù)據(jù)進行提交痴昧,這樣一旦由于意外原因引起系統(tǒng)或硬件故障時,可以回滾冠王。根據(jù)系統(tǒng)的設(shè)計要求在測試時剪个,可人為模擬意外故障,來測試系統(tǒng)的數(shù)據(jù)完整性和容錯能力版确。
4扣囊、工具條和快捷鍵測試:在功能界面測試時,對系統(tǒng)菜單中定義的快捷鍵和菜單工具條中的工具按鈕要測試绒疗。主要是有效性和一致性測試侵歇。有效性:檢查是否有效,界面有無反應(yīng)吓蘑。一致性:定義或提示的信息是否與實際完成的功能一致惕虑。
5、 操作順序測試
按鈕順序測試:在功能界面上磨镶,不按照設(shè)計上或習(xí)慣上的操作順序點擊功能按鈕溃蔫,看系統(tǒng)有什么反應(yīng);多次琳猫、反復(fù)點擊某一按鈕伟叛,看系統(tǒng)有什么反應(yīng)。主要是測試系統(tǒng)的控制脐嫂、校驗和容錯能力统刮。
業(yè)務(wù)邏輯順序:不按照系統(tǒng)的正常業(yè)務(wù)邏輯紊遵、流程操作,來測試系統(tǒng)是否控制了業(yè)務(wù)流程的順序侥蒙。
6暗膜、按鈕有效性控制測試:主要是測試當不具備條件或無實際意義的情況下,按鈕的“Enabled”屬性鞭衩。比如:某一業(yè)務(wù)未處理学搜,下一環(huán)節(jié)的功能按鈕則應(yīng)變灰(不可用)。逐條顯示數(shù)據(jù)記錄论衍,當游標已經(jīng)指到了后一條時恒水,“下一條”和“末記錄”按鈕則應(yīng)變灰等。
7饲齐、同時刻操作測試:對于刪除钉凌、修改、增加數(shù)據(jù)和一些業(yè)務(wù)功能捂人,進行多客戶端同時刻操作測試御雕,看系統(tǒng)有什么反應(yīng)。
8滥搭、附件壓力測試:對于有發(fā)送酸纲、上傳、下載瑟匆、郵件等功能的系統(tǒng)闽坡,選取大的文件,進行測試愁溜,來檢查系統(tǒng)的界面效果和穩(wěn)定性疾嗅,看是否會死機或長時間無任何反應(yīng)等。歡迎加入測試交流群(1017539290)冕象,可以與大牛在線隨時討論自己感興趣的話題代承,讓自己用最少的時間學(xué)到最多的東西。
9渐扮、 數(shù)據(jù)輸出測試:
數(shù)據(jù)處理輸出測試:主要測試對數(shù)據(jù)的排序论悴、條件查詢是否按照輸入的條件或要求輸出了正確的數(shù)據(jù)。
打印輸出:測試打印功能是否能夠正常打印出報表墓律,打印設(shè)置后膀估,是否能按照設(shè)置的要求打印。
10耻讽、WEB測試:基于WEB方式的應(yīng)用察纯,對于一些提交表單的頁面,通過多次點擊“back”鍵,來測試系統(tǒng)的處理情況捐寥。對于有保存數(shù)據(jù)功能的頁面笤昨,多次點擊“保存”祖驱,來測試系統(tǒng)的處理情況握恳。