一、測試計(jì)劃的有效性和全面性
無論做什么工作,都是計(jì)劃先行,然后按照所制定的計(jì)劃去執(zhí)行、跟蹤和控制。軟件測試也一樣,先要制定測試計(jì)劃,是做好整個(gè)測試工作的前提。所以在進(jìn)行實(shí)際測試之前,應(yīng)制定良好的、切實(shí)可行的、有效的測試計(jì)劃。軟件測試計(jì)劃的目標(biāo)是提供一個(gè)測試框架,不斷收集產(chǎn)品特性信息,對測試的不確定性(測試范圍、測試風(fēng)險(xiǎn)等)進(jìn)行分析,將不確定性的內(nèi)容慢慢轉(zhuǎn)化為確定性的內(nèi)容,該過程最終使得我們對測試的范圍、用例數(shù)量、工作量、資源和時(shí)間等進(jìn)行合理的估算,從而對測試策略、方法、人力、日程等做出決定或安排。
1.測試計(jì)劃的要點(diǎn)
測試規(guī)劃與軟件開發(fā)活動(dòng)同步進(jìn)行,在需求分析時(shí),就開始測試策劃,確定測試需求、目標(biāo)、資源等。測試計(jì)劃可以按不同的測試階段(集成測試、系統(tǒng)測試等)來組織,也可以為每個(gè)測試任務(wù)或目標(biāo)(安全性、性能、可靠性等測試) 進(jìn)行考慮。
測試計(jì)劃主要集中在測試目標(biāo)、質(zhì)量標(biāo)準(zhǔn)、測試策略、測試范圍、測試用例設(shè)計(jì)方法、所需資源和日程安排等,其關(guān)鍵是制定有效的測試策略,界定清楚地測試范圍,識別出測試中所存在的各種風(fēng)險(xiǎn)并找出風(fēng)險(xiǎn)回避、監(jiān)控和管理的方法,針對不同的測試目標(biāo)或階段確定測試方法,對測試工作量及所需的資源、時(shí)間進(jìn)行合理的估算。所有這些,都是為了兩個(gè)根本目的:測試的質(zhì)量和效率。
2.制定測試策略
制定測試策略主要分析測試的目標(biāo)和質(zhì)量指標(biāo)、確定測試的對象和依據(jù),測試的重點(diǎn)和所采用的方法,包括在規(guī)定的時(shí)間內(nèi)哪些測試內(nèi)容要完成,軟件產(chǎn)品的特性或質(zhì)量在哪些方面得到確認(rèn)。測試策略可以分為:
基于測試技術(shù)的測試策略,根據(jù)軟件系統(tǒng)的技術(shù)構(gòu)成和層次結(jié)構(gòu),著重考慮如何分層測試、選擇哪些測試工具、如何將白盒測試和黑盒測試有機(jī)地結(jié)合起來等。
基于測試方案的綜合測試策略,根據(jù)測試的目標(biāo)和范圍,著重考慮如何更好地滿足測試需求、如何讓功能測試、適用性測試和兼容性測試等進(jìn)行有機(jī)結(jié)合、如何充分利用測試資源、如何更有效地完成回歸測試等。
為了更好地制定好測試策略,要做到:
全面細(xì)致地了解產(chǎn)品的項(xiàng)目信息:應(yīng)用領(lǐng)域、測試范圍、市場需求、產(chǎn)品特點(diǎn)、主要功能和技術(shù)架構(gòu);
基于模塊、功能、系統(tǒng)、版本、性能、配置和安裝等各個(gè)因素對產(chǎn)品質(zhì)量的影響,客觀地、全面地展開測試計(jì)劃;
根據(jù)軟件單元在系統(tǒng)結(jié)構(gòu)的重要性差異和一旦發(fā)生故障將給客戶造成的損失大小,來確定軟件測試的等級、重點(diǎn)和先后次序;
需要在測試用例數(shù)和測試覆蓋率上進(jìn)行權(quán)衡而獲得一個(gè)平衡點(diǎn),以便能使用盡可能少的有效測試用例去發(fā)現(xiàn)盡可能多的程序錯(cuò)誤。測試不足意味著讓用戶承擔(dān)隱藏錯(cuò)誤帶來的危險(xiǎn);同時(shí)反過來看,過度測試則又會(huì)浪費(fèi)許多寶貴的資源或耽誤軟件產(chǎn)品的發(fā)布時(shí)間。
3.確定測試范圍
測試主要依據(jù)“產(chǎn)品設(shè)計(jì)規(guī)格說明書”、代碼所發(fā)生的變化及其影響的區(qū)域,來確定哪些功能和特性要測試,哪些功能和特性不需要測試。在確定測試范圍時(shí),主要考慮的因素有:
優(yōu)先級最高的需求功能
新增加的功能和編碼改動(dòng)較大的已有功能
容易出現(xiàn)問題的部分功能
過去測試不夠充分的地方
經(jīng)常被用戶使用的功能和配置(占20%)
4.所需資源和日程安排
為了合理、準(zhǔn)確地安排日程,對測試工作量要進(jìn)行正確的估計(jì)。除了對工作量的估計(jì)之外,還要正確評估參與該項(xiàng)目人員的培訓(xùn)時(shí)間、適應(yīng)過程和工作能力等。由于涉及到不同的項(xiàng)目、不同的測試人員、不同的前期介入方式,要對每人每天能夠完成的平均測試用例數(shù)目做出一個(gè)準(zhǔn)確的估計(jì)確實(shí)很困難,但是可以根據(jù)以前一些項(xiàng)目測試的經(jīng)驗(yàn)或歷史積累下來的數(shù)據(jù)進(jìn)行判斷推理,并適當(dāng)增加10%-20%的余量,估算結(jié)果就比較準(zhǔn)確了。
在估算的基礎(chǔ)上,進(jìn)行有效的、合理的資源安排。在不同的測試階段人力資源的需求是不一樣的,所以人力資源的計(jì)劃要有一定的靈活性和動(dòng)態(tài)性,形成有機(jī)的動(dòng)態(tài)平衡,保證測試的進(jìn)度和資源的使用的效率。
5.編制測試計(jì)劃的技巧
要做好測試計(jì)劃,測試設(shè)計(jì)人員要仔細(xì)閱讀有關(guān)資料,包括用戶需求規(guī)格說明書、設(shè)計(jì)文檔等,全面熟悉系統(tǒng),并建議注意以下方面:
讓所有合適的相關(guān)人員參與測試項(xiàng)目的計(jì)劃制定,特別是在測試計(jì)劃早期;
測試所需的時(shí)間、人力及其它資源的預(yù)估,盡量做到客觀、準(zhǔn)確、留有余地;
測試項(xiàng)目的輸入、輸出和質(zhì)量標(biāo)準(zhǔn),應(yīng)與各方達(dá)成一致;
建立變化處理的流程規(guī)則,識別出在整個(gè)測試階段中哪些是內(nèi)在的、不可避免的變化因素,加以控制。
6.測試項(xiàng)目計(jì)劃的評審
測試項(xiàng)目的計(jì)劃不可能一氣呵成,而是要經(jīng)過計(jì)劃初期、起草、討論、審查等不同階段,才能將測試計(jì)劃制定好。測試計(jì)劃的評審是完成測試計(jì)劃關(guān)鍵的一個(gè)環(huán)節(jié),包括測試組織內(nèi)部的自我評審、討論和修改,然后交到評審會(huì)進(jìn)行正式的評審,直至測試計(jì)劃得到審批。
測試計(jì)劃的正式評審,項(xiàng)目中的每個(gè)人(產(chǎn)品經(jīng)理、項(xiàng)目經(jīng)理、開發(fā)工程師等)都應(yīng)當(dāng)參與。計(jì)劃的審查是必不可少的,每一個(gè)參與者都可能根據(jù)其經(jīng)驗(yàn)及專長提出問題或建議,彌補(bǔ)在測試范圍、工作量、風(fēng)險(xiǎn)等各方面的不足,進(jìn)一步完善測試計(jì)劃。
二、測試用例在測試活動(dòng)中的作用:
1.強(qiáng)化測試用例在測試活動(dòng)中的作用
測試用例在實(shí)際中沒有起多大作用,在實(shí)際測試時(shí)根本沒有按測試用例執(zhí)行,測試執(zhí)行后沒有把新的測試用例補(bǔ)充到用例庫中等等。
為何如此?根本原因是對測試用例重要性的認(rèn)識不夠,測試流程不完善,針對測試用例的管理流程更不完善,其實(shí),從三個(gè)方面具體來說:
1) ??測試用例的重要性是毋庸置疑的,它是軟件測試全部過程的核心,是測試執(zhí)行環(huán)節(jié)的基本依據(jù),如果這個(gè)依據(jù)不能足夠發(fā)揮它應(yīng)起的作用,那是不是說這個(gè)依據(jù)不明確、依據(jù)設(shè)計(jì)的不合理呢?答案是肯定的!
2) ??制定了完備有效的測試用例,為什么不按測試用例執(zhí)行測試呢?首先是因?yàn)槠髽I(yè)沒有嚴(yán)格和良好的機(jī)制促使和保證測試執(zhí)行者這樣做;其次是個(gè)別測試人員投機(jī)取巧心理作祟的表現(xiàn)。
3) ??測試用例設(shè)計(jì)得不可能天衣無縫,不可能完全滿足軟件需求的覆蓋要求,測試執(zhí)行過程里肯定會(huì)發(fā)現(xiàn)有些 測試路徑或數(shù)據(jù)在用例里沒有體現(xiàn),那么事后該將其補(bǔ)充到用例庫里 ,以方便他人和后續(xù)版本的測試;如果沒有這樣做,那么測試部門負(fù)責(zé)人和每個(gè)測試員都難辭其疚,是該重新坐下來思考一下公司的測試用例管理規(guī)范和測試流程了。
2.改進(jìn)測試用例執(zhí)行過程
那么究竟如何做,才能盡量避免上述問題呢?
我們不妨從軟件開發(fā)周期的每個(gè)階段就把這些問題考慮進(jìn)去,以便從初始就力爭將問題縮到最小,將問題扼殺在萌芽階段。
1) ???軟件需求分析階段,測試人員從軟件生命周期的需求階段就開始介入。通常測試人員的測試工作開展在開發(fā)周期的末尾,如果前期不涉入,如何通曉整個(gè)系統(tǒng)的需求和架構(gòu)而對其充分測試呢?
項(xiàng)目的測試負(fù)責(zé)人和測試工程師在需求階段的任務(wù)有:
a.參與軟件需求調(diào)研,以測試角度分析需求的可測性,可構(gòu)思將來對其測試的方法、原則等;更重要的是,對不可測或難以測試性問題要及時(shí)與客戶或項(xiàng)目經(jīng)理協(xié)調(diào)解決。
b.全面了解系統(tǒng)需求,從客戶角度考慮軟件測試需要達(dá)到的驗(yàn)證狀態(tài),即何些功能點(diǎn)需重點(diǎn)測試、何些無需,以便將來制定測試計(jì)劃。
2) 軟件分析設(shè)計(jì)階段:
測試人員除制定測試計(jì)劃書等基本工作外,還有一個(gè)相當(dāng)必要的任務(wù),那就是將系統(tǒng)的可測性落實(shí)到書面文檔,以備將來編寫測試用例。( 之所以要這么做,是因?yàn)榭紤]到很多企業(yè)編寫測試用例直接參考需求規(guī)格說明書或者分析流程圖,這樣跨度大,難度也大,是造成測試用例不完備、覆蓋范圍小的重要原因)。
測試人員更要編寫一份《軟件功能點(diǎn)測試描述書》,它是軟件的詳細(xì)測試分析文檔,其主旨是將系統(tǒng)分析人員的開發(fā)分析文檔加工成以測試為角度的功能點(diǎn)分析文檔,重要的是描述對系統(tǒng)分解后每個(gè)功能點(diǎn)逐一的校驗(yàn)描述,包括何種方法測試、何種數(shù)據(jù)測試、期望測試結(jié)果等,這些信息都是描述性的,無須具體數(shù)據(jù);它的作用是據(jù)此編寫測試用例,以及測試執(zhí)行時(shí)的參考依據(jù),基于它直接來源于需求,覆蓋當(dāng)然最全,也最能貼近客戶要求。
當(dāng)然該文檔不是非要不可,如果有類似的替代文檔或有工具可自動(dòng)實(shí)現(xiàn)此功能,則會(huì)倍加受推崇!
3)軟件開發(fā)階段: 編寫測試用例。應(yīng)該遵守的原則是:
首先,從覆蓋率來說,測試用例庫的用例要達(dá)到最大覆蓋軟件系統(tǒng)的功能點(diǎn)。編寫測試用例時(shí),基本上就是將《軟件功能點(diǎn)測試描述書》中的每個(gè)功能點(diǎn)進(jìn)行操作上的細(xì)化:一是從步驟上描述到達(dá)校驗(yàn)點(diǎn)的方式,二是從內(nèi)容上描述以何種數(shù)據(jù)校驗(yàn)功能點(diǎn);如此可實(shí)現(xiàn)趨向最大需求覆蓋率。
其次,從數(shù)量來講,一個(gè)多于半年開發(fā)周期(指從編碼開始直到提交客戶的時(shí)間段)的軟件系統(tǒng),它的用例數(shù)量不要低于 4000 個(gè),甚至更多!( IBM 等大公司測試過程的人士會(huì)認(rèn)為 4000 還是很少的數(shù)目。我們試想,對于一個(gè)中小型軟件系統(tǒng),如果設(shè)計(jì)出 5000 個(gè)用例,那它的測試覆蓋率還怕不高么)!
再次,如此眾多測試用例的管理問題。是的,最好是需要測試用例管理工具軟件。以 word 或 excel 來編寫測試用例也可以。 ??????
4) 測試用例 格式上一般內(nèi)容以外的幾個(gè)要點(diǎn):
制定適合本公司的測試用例模版;
l是用例模版里要有關(guān)鍵字索引 ,以方便按關(guān)鍵字分類查找,如測試方法(分手工 / 自動(dòng)兩種);
2是測試用例要有 狀態(tài)跟蹤 ,可根據(jù)用例執(zhí)行狀態(tài)索引用例(測試通過、測試失敗、測試中斷等);
3是執(zhí)行失敗的用例要 鏈接到相應(yīng)的缺陷報(bào)告 ,如有根據(jù)缺陷報(bào)告檢索測試用例的試圖更妙,可評估該缺陷影響范圍的大小;
4是測試用例的修改,以及每個(gè)測試周期的運(yùn)行都有 日志記錄 ,以便后期追蹤和新員工參考;
5) 軟件測試階段 ,測試負(fù)責(zé)人劃分不同的測試階段(如集成測試、系統(tǒng)測試、回歸測試、性能測試等),再劃分不同的子測試周期(如前兩個(gè)星期做 冒煙測試 ,測試方式是手工 / 自動(dòng),測試版本是 ** ,測試環(huán)境是 ** ,包括服務(wù)器端與客戶端等;接著做第一模塊功能測試;如此順次。),再為項(xiàng)目組測試人員分配測試用例(通常原則是每個(gè)人負(fù)責(zé)幾塊區(qū)域的測試任務(wù)),測試人員則按照詳細(xì)的用例文檔去執(zhí)行測試,測試失敗則提交軟件缺陷報(bào)告。這里要遵循的幾個(gè)原則是:
A)有健全且嚴(yán)格的體制保證測試執(zhí)行者嚴(yán)格按照測試用例執(zhí)行測試。這并不妨礙測試者創(chuàng)造力的發(fā)揮,因?yàn)榍捌谟美脑O(shè)計(jì)和編寫就是項(xiàng)目全體測試人員智慧的結(jié)晶!我們一直苦苦追尋眾多測試工程師加班加點(diǎn)辛苦工作的原因,其實(shí)大都發(fā)生這一階段;如此實(shí)施,即便沒有解決根本問題,也會(huì)大大提高測試執(zhí)行效率。
B)如有對測試用例認(rèn)識模糊或內(nèi)容遺漏的地方, 可暫做記錄待后期解決 ,或經(jīng)測試負(fù)責(zé)人與項(xiàng)目其他管理人員同意方可更新用例庫。
C)測試負(fù)責(zé)人每日負(fù)責(zé)跟蹤本測試子周期或階段的測試用例執(zhí)行情況,以及每日提交的缺陷報(bào)告,根據(jù)執(zhí)行進(jìn)展?fàn)顟B(tài)以及缺陷數(shù)量或嚴(yán)重等級與項(xiàng)目高層或其他人員展開交流,商議解決途徑,并確定或調(diào)整未來時(shí)間的測試任務(wù)。
D)測試執(zhí)行者負(fù)責(zé)執(zhí)行自己區(qū)域的測試用例,還要負(fù)責(zé)跟蹤該區(qū)域軟件缺陷的修改進(jìn)展,根據(jù)其狀態(tài) 不斷驗(yàn)證軟件功 能點(diǎn)。
E)通過缺陷管理工具來 管理軟件缺陷 ;這樣的集成工具都提供了清晰的報(bào)告模版及強(qiáng)大的追蹤功能,測試團(tuán)隊(duì)的每一成員按照自己的角色和權(quán)限訪問缺陷管理工具,并不斷跟蹤軟件缺陷的狀態(tài)。
F)對于自動(dòng)測試(包括自動(dòng)化功能測試和性能、壓力測試),有一些特殊要點(diǎn)。是自動(dòng)化測試無須編寫測試用例,只要在編寫時(shí)將用例庫里適合或需要自動(dòng)測試的用例的測試方法(不同工具可能名稱不同)設(shè)為自動(dòng)即可,故而到此階段才提及自動(dòng)化測試。自動(dòng)化測試的實(shí)施方案有所不同,每款測試工具的使用和測試流程也不同,但都可以從在這一階段編寫測試腳本,并運(yùn)行自動(dòng)測試。這里要提的其他幾個(gè)基本原則是:
l是選擇恰當(dāng)?shù)臏y試工具品牌,并要求提供培訓(xùn);
2是項(xiàng)目的自動(dòng)化測試工作有專人負(fù)責(zé)跟蹤,以保證工作質(zhì)量,他們可不參與日常測試;
3是確定自動(dòng)化測試成員在項(xiàng)目中的角色,一般自動(dòng)化測試成員隸屬于項(xiàng)目測試負(fù)責(zé)人,負(fù)責(zé)人同樣跟蹤其工作狀態(tài);
4是選擇最簡單、最重用的測試用例使用自動(dòng)測試方法;
5是使用工具廠商提供的測試框架編寫腳本,千萬別采用單純錄制 - 加校驗(yàn)點(diǎn) - 回放的方式, 要開發(fā)出健壯且重用性強(qiáng)的測試腳本 ;
6是有專人更新腳本,也有專人跟蹤自動(dòng)測試結(jié)果;
7一般選擇的測試工具品牌和缺陷管理工具品牌是同一廠商,以方便不同類型缺陷的集中管理;
8是在多人協(xié)作開發(fā)測試腳本、代碼量相對較大情況下,應(yīng)考慮使用配置管理工具來管理測試腳本。
6) 由于不同公司開發(fā)產(chǎn)品的特殊性,也許需要特殊類型的測試,如安全測試、甚至代碼級單元測試等,這些內(nèi)容需要酌情考慮測試用例的編寫,以及測試的執(zhí)行。
7) 軟件驗(yàn)收階段 :除了提交軟件測試評估報(bào)告(各種類型測試結(jié)果的評估都應(yīng)有報(bào)告)這些基本工作外,對于測試用例,此時(shí)要集中時(shí)間更新,更新整個(gè)測試周期中一切需要更新的內(nèi)容,以方便未來新版本的測試。即便您開發(fā)的是項(xiàng)目軟件 -- 提交客戶后沒有新版本 -- 那也需要后期維護(hù),維護(hù)階段需要重新測試某功能點(diǎn),然而用例如果不準(zhǔn)確,碰巧又是一個(gè)新員工來做,那就死翹翹了!
8) 其他說明:加強(qiáng)測試部門內(nèi)部人員的培訓(xùn)教育很重要,包括工作技能與個(gè)人素質(zhì)兩方面,可通過國內(nèi)主要的培訓(xùn)機(jī)構(gòu),也可是購買工具廠商的直接培訓(xùn)。應(yīng)該說,很多測試新人對于測試用例的書寫還存在問題,更別提及測試用例的管理或執(zhí)行;以此可見,我們的測試工程師需要培訓(xùn)的空間還很大。 ????
3.總結(jié)
綜上所述,我們得出結(jié)論--測試用例在測試中沒起到應(yīng)有的作用,是因?yàn)闇y試用例編寫質(zhì)量不高,覆蓋不夠,執(zhí)行不利;測試執(zhí)行時(shí)不遵循測試用例,執(zhí)行后不更新用例庫,是測試部門的整體工作流程不健全、不規(guī)范。