一极景、測試計(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)鍵是制定有效的測試策略,界定清楚地測試范圍虱疏,識(shí)別出測試中所存在的各種風(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ī)則,識(shí)別出在整個(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í)不夠轻黑,測試流程不完善,針對測試用例的管理流程更不完善琴昆,其實(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è),甚至更多9吕铩( 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)識(shí)模糊或內(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ī)范洲愤。