如何提高測試用例設(shè)計(jì)的測試覆蓋率

說到測試用例的設(shè)計(jì)裆蒸,我想每個(gè)有過測試經(jīng)歷的測試工程師都會(huì)認(rèn)為很簡單琼讽,不就是:按需求或概要設(shè)計(jì)必峰,得到軟件功能劃分圖,然后據(jù)此按每個(gè)功能钻蹬,采用等價(jià)類劃分吼蚁、臨界值、因果圖等方法來設(shè)計(jì)用例就行了问欠。

  但事實(shí)上撇開測試數(shù)據(jù)的設(shè)計(jì)不談肝匆,僅就測試項(xiàng)來說粒蜈,我們發(fā)現(xiàn),對同一個(gè)項(xiàng)目旗国,有經(jīng)驗(yàn)的測試人員枯怖,在寫用例或測試時(shí)總會(huì)有更多的測試考慮點(diǎn),從而發(fā)現(xiàn)更多的問題能曾;而有些測試人員測試用例的撰寫卻只有那么三板斧嫁怀,表面看好象已經(jīng)把頁面所有信息的測試都考慮到了,實(shí)際上卻還是遺漏了大量測試覆蓋點(diǎn)借浊,導(dǎo)致其測試出來的程序總是比較脆弱。

究其原因萝招,我覺得還是測試用例的撰寫水平不到位蚂斤,更確切地說是測試用例的覆蓋度太低。說實(shí)話我認(rèn)為系統(tǒng)測試用例真正做到100%覆蓋是很難的槐沼。難道說按設(shè)計(jì)中的功能劃分曙蒸,每個(gè)功能都寫到了這個(gè)用例就覆蓋完整了?錯(cuò)岗钩,這還遠(yuǎn)遠(yuǎn)不夠纽窟。因?yàn)槲覀冎肋€有大量的內(nèi)部處理、轉(zhuǎn)換兼吓、業(yè)務(wù)邏輯臂港、相互影響的關(guān)系等都是需求或設(shè)計(jì)中所不會(huì)點(diǎn)明的。而這些一方面需要靠測試人員對項(xiàng)目本身的了解视搏,另一方面要靠測試人員的經(jīng)驗(yàn)审孽,來一一找到這些隱藏點(diǎn)并予以測試,才能真正地保證我們的測試覆蓋度浑娜。

所以本文拋開具體的測試數(shù)據(jù)設(shè)計(jì)方法佑力,主要從測試覆蓋度的角度來介紹用例設(shè)計(jì)時(shí),如何才能考慮地更周全筋遭,如何才能將隱藏的測試項(xiàng)一一找出打颤,從而使我們的測試更全面更完整。

  想法雖然美好漓滔,可是畢竟每個(gè)測試的項(xiàng)目都是各不相同编饺,針對不同項(xiàng)目我們的經(jīng)驗(yàn)也會(huì)告訴給我們不同的想法,這些想法通常很感性次和,很難用嚴(yán)密的邏輯理論來把它升華反肋。因此本文的內(nèi)容仍是很簡陋且不成熟,只是希望能以本文為磚踏施,引起大家的思考石蔗,一起來補(bǔ)充完善罕邀,以使我們的測試用例設(shè)計(jì)水平不斷提高。

正文

  一养距、測試用例的切面設(shè)計(jì)

  1诉探、功能點(diǎn)切面

  2、特定切面

  3棍厌、隱含切面

 ∩隹琛(1)、后臺(tái)功能

 ≡派础(2)敬肚、完整業(yè)務(wù)流程的測試

  (3)束析、某種特定情況下的系統(tǒng)運(yùn)行

 ⊙蘼(4)、其它相關(guān)系統(tǒng)

(5)员寇、除功能測試外的其它測試類型

 二弄慰、詳細(xì)用例的設(shè)計(jì)

  1、功能切面表面用例設(shè)計(jì)

 〉妗(1)陆爽、具體功能測試

  (2)扳缕、組合操作的測試

 』疟铡(3)、GUI界面的測試

 ∏颉(4)贡必、數(shù)據(jù)初始化情況測試

  (5)庸毫、業(yè)務(wù)需求實(shí)現(xiàn)是否正確

  2仔拟、功能切面隱含測試項(xiàng)用例設(shè)計(jì):

  (1)飒赃、數(shù)據(jù)完整性的測試

 ±ā(2)、后臺(tái)的特殊處理

 ≡丶选(3)炒事、功能業(yè)務(wù)之間的關(guān)聯(lián)與轉(zhuǎn)換

  (4)蔫慧、從設(shè)計(jì)實(shí)現(xiàn)發(fā)掘測試點(diǎn)

 ∧尤椤(5)、并發(fā)操作時(shí)的測試

  3、特定切面用例設(shè)計(jì)

  4睡扬、隱含切面用例設(shè)計(jì)

 ∶蓑肌(1)、無界面的后臺(tái)功能

 ÷袅(2)屎开、與業(yè)務(wù)流相關(guān)的測試

  (3)马靠、其它測試類型

三奄抽、測試數(shù)據(jù)的設(shè)計(jì)

  一、測試用例的切面設(shè)計(jì)

  所謂測試切面設(shè)計(jì)甩鳄,其實(shí)就是測試用例大項(xiàng)的劃分逞度。測試用例劃分的經(jīng)典方法是瀑布模型,也就是從上到下妙啃,逐漸細(xì)分第晰,大模塊包括小模塊,小模塊包括更小的模塊彬祖。但僅僅如此是不夠的,我們還要從更多的角度切入系統(tǒng)品抽,從不同的角度把系統(tǒng)切分成一塊一塊的储笑,來進(jìn)行測試,從而確保測試大項(xiàng)的完整性圆恤。

  1突倍、功能點(diǎn)切面

  這是最常見的切面,通常我們認(rèn)為頁面上的一個(gè)按鈕就是一個(gè)功能點(diǎn)盆昙。然后我們可以根據(jù)功能的復(fù)雜程度羽历,按每個(gè)功能;或一個(gè)功能點(diǎn)分多頁淡喜;或多個(gè)功能點(diǎn)合成一頁來進(jìn)行用例的撰寫秕磷。

  2、特定切面

  除此以外炼团,還有一種特定切面的劃分方法澎嚣,也是用例撰寫時(shí)經(jīng)常會(huì)用到的。所謂的特定切面瘟芝,就是忽略掉表面上的功能點(diǎn)易桃,而關(guān)注測試對象的某一個(gè)面。比如我們的內(nèi)部管理系統(tǒng)提供了銷售錄入導(dǎo)入锌俱、注冊錄入導(dǎo)入等功能晤郑,從菜單劃分上對應(yīng)了七八個(gè)功能點(diǎn)。但這些功能處理后臺(tái)有個(gè)共同的處理項(xiàng)就是授權(quán)記錄的生成,這時(shí)我們就可以把“授權(quán)記錄生成”單獨(dú)拿出來做一個(gè)測試項(xiàng)造寝,而在其它測試項(xiàng)中涉及這一部分的用例就不必再一一撰寫磕洪。此外象一些界面共通的操作用例單獨(dú)寫成一頁,也是一種特定切面匹舞。所以如果說將用例按功能點(diǎn)劃分是一種縱向劃分法褐鸥,那么特定切面就是從橫向的角度分析所得到的切面。在普通功能點(diǎn)劃分上再根據(jù)實(shí)際情況設(shè)計(jì)特定切面赐稽,可以使我們的用例閱讀性叫榕、理解性、操作性更強(qiáng)姊舵。

  3晰绎、隱含切面

  這類用例是最容易被忽略的。它往往不是明顯的某個(gè)功能項(xiàng)括丁,可能是功能項(xiàng)后臺(tái)的隱含處理荞下,也可能是多個(gè)功能項(xiàng)之間的關(guān)聯(lián)處理,甚至可能是在某種特定情形下的處理史飞。這都需要測試人員通過對軟件的學(xué)習(xí)了解尖昏,來進(jìn)行挖掘。

 」棺省(1)抽诉、后臺(tái)功能

  常見的如一些定時(shí)自動(dòng)啟動(dòng)的服務(wù);以及某種特定情況下自動(dòng)執(zhí)行的操作等吐绵。它們在界面上往往是不體現(xiàn)的迹淌,但許多在需求設(shè)計(jì)中還是會(huì)提到,也有一些比較細(xì)小的功能可能會(huì)被忽略己单,就需要測試人員根據(jù)對項(xiàng)目的了解程度來進(jìn)行挖掘唉窃。所以說一個(gè)熟悉項(xiàng)目的和一個(gè)不熟悉的測試人員,寫出來的用例就完全是兩個(gè)層次的纹笼。

 ∥品荨(2)、完整業(yè)務(wù)流程的測試

  我們都知道測試用例的設(shè)計(jì)是從點(diǎn)廷痘、線矮嫉、面三個(gè)層次去考慮的。完整的一個(gè)功能項(xiàng)是線牍疏,其中的某個(gè)按鈕是點(diǎn)蠢笋,多個(gè)相關(guān)功能結(jié)合成完整業(yè)務(wù)流就是面。從實(shí)際來看這類用例往往被我們忽略鳞陨。

  事實(shí)上目前公司的軟件本來都是業(yè)務(wù)型應(yīng)用軟件昨寞,將各種功能從業(yè)務(wù)流中切割出來單獨(dú)寫用例瞻惋,肯定也會(huì)有涉及到整體流程的情況。若不加以區(qū)分援岩,將細(xì)節(jié)與全局?jǐn)囋谝黄鸺呃牵粌H思路混亂,也容易考慮不周享怀。因此在系統(tǒng)測試階段羽峰,建議用例設(shè)計(jì)要有分有合,針對具體功能的就只圍著這個(gè)功能轉(zhuǎn):而在業(yè)務(wù)流程測試項(xiàng)中添瓷,再完全從整體的業(yè)務(wù)流角度出發(fā)去考慮用例梅屉,這樣不僅不容易產(chǎn)生疏漏,用例閱讀與執(zhí)行也更清楚鳞贷。

 ∨魈馈(3)、某種特定情況下的系統(tǒng)運(yùn)行

  這類用例的設(shè)計(jì)往往與系統(tǒng)實(shí)際業(yè)務(wù)情況密不可分搀愧。比如財(cái)務(wù)軟件惰聂,通常需要在月尾一天、月頭一天咱筛、年尾一天搓幌、年頭一天,對所有相關(guān)功能中的日期處理進(jìn)行測試迅箩;又比如WIN 2000環(huán)境開發(fā)測試的系統(tǒng)溉愁,要測試在98、XP沙热、2003等操作系統(tǒng)下是否能運(yùn)行自如;再有如存在大量動(dòng)態(tài)圖片視頻等的網(wǎng)頁罢缸,在普通網(wǎng)速下的展現(xiàn)速度等等篙贸。總之就是要盡可能從實(shí)際應(yīng)用的角度出發(fā)考慮枫疆,來進(jìn)行測試補(bǔ)充爵川。

  (4)息楔、其它相關(guān)系統(tǒng)

  即指在當(dāng)前項(xiàng)目中直接使用的其它成果寝贡,包括公司自有的系統(tǒng)模塊、組件值依、函數(shù)圃泡;以及購買或免費(fèi)得到的一些功能組件。對這些內(nèi)容需要預(yù)先與開發(fā)組長等討論清楚愿险,是否需要測試颇蜡。若時(shí)間緊張或其它原因決定不測的,應(yīng)在測試計(jì)劃中說明。若需要測試的风秤,則具體可根據(jù)實(shí)際情況來設(shè)計(jì)鳖目,可以是通過系統(tǒng)某個(gè)功能的測試來涉及,此時(shí)就不需要單獨(dú)劃分測試項(xiàng)缤弦;若相對比較獨(dú)立的领迈,也可以通過單獨(dú)的測試項(xiàng)來對其專門進(jìn)行測試。

 “濉(5)狸捅、除功能測試外的其它測試類型

  包括可靠性、安全性抢韭、恢復(fù)性薪贫、配置安裝測試等等,這些測試類型都是一個(gè)單獨(dú)的測試項(xiàng)刻恭。

  所謂好的開始是成功的一半瞧省,保證測試項(xiàng)劃分的完整、合理鳍贾、正確鞍匾,會(huì)直接影響到本次測試的成效。通常建議該階段工作要花1-2天的時(shí)間來考慮骑科,并要在測試過程中隨著對軟件的深入了解橡淑,不斷進(jìn)行調(diào)整補(bǔ)充∨厮可千萬不要認(rèn)為把分析設(shè)計(jì)中的功能模型圖搬搬過來就可以了梁棠。

 二、詳細(xì)用例的設(shè)計(jì)

  劃分好了測試項(xiàng)斗埂,接著就是針對各個(gè)測試項(xiàng)符糊,考慮具體的測試用例了。根據(jù)測試項(xiàng)的特點(diǎn)呛凶,測試用例的設(shè)計(jì)角度也有所不同男娄。下面我們就來看看通常的功能點(diǎn)測試用例,該從哪些角度出發(fā)來進(jìn)行設(shè)計(jì):

  1漾稀、功能切面表面用例設(shè)計(jì)

 ∧O小(1)、具體功能測試

  根據(jù)需求分析設(shè)計(jì)崭捍,按頁面提供的各個(gè)功能項(xiàng)尸折,采用黑盒測試的各種方法,設(shè)計(jì)用例殷蛇。比如頁面提供了增翁授、刪拣播、改、查功能收擦,那么這四個(gè)功能是否正確實(shí)現(xiàn)就是我要驗(yàn)證的贮配。這是最簡單、最基本塞赂,同時(shí)也是必須的測試用例泪勒,通常我們的編碼人員自測也就是做到這個(gè)程度。^_^

 ⊙缁(2)圆存、組合操作的測試

  這是從上一角度擴(kuò)展出來的,相對而言也是編碼人員不會(huì)去測試的仇哆,所以需要測試人員多作考慮沦辙。

  所謂組合操作測試,也就是選擇某幾個(gè)操作項(xiàng)讹剔,按一定的順序進(jìn)行操作油讯,驗(yàn)證系統(tǒng)不會(huì)出現(xiàn)意外錯(cuò)誤。當(dāng)然要將所有功能項(xiàng)排列組合一遍來測試不僅不必要延欠,也是不可能的陌兑。所以具體要將哪些功能項(xiàng)進(jìn)行結(jié)合,要按怎樣的步驟來操作由捎,還是需要測試人員根據(jù)實(shí)際情況來作設(shè)計(jì)(所以說在IT業(yè)人才就是一切呀兔综,呵呵:)。

  一般來說我們會(huì)考慮功能項(xiàng)之間的數(shù)據(jù)是否會(huì)存在關(guān)聯(lián)狞玛,若有就需要考慮這種組合了软驰。常見的如查詢功能,需要將各條件逐一累加進(jìn)行測試心肪;增完的數(shù)據(jù)能否改锭亏,改完能否刪,刪完能否再增蒙畴,這之間能否查詢到正確結(jié)果贰镣;按鈕的連續(xù)多次點(diǎn)擊會(huì)否出現(xiàn)異常呜象;有嚴(yán)格前后順序要求的幾個(gè)操作膳凝,嘗試顛倒順序去操作,系統(tǒng)能否控制等等恭陡。

  不僅在某功能內(nèi)部蹬音,擴(kuò)展到有關(guān)聯(lián)的多個(gè)功能項(xiàng)之間,同樣有組合操作測試的存在休玩。如申報(bào)完了能才反饋著淆;如申報(bào)成功或失敗后再嘗試申報(bào)等劫狠。當(dāng)然對于這類用例既可以寫到某個(gè)功能切面中,也可以單獨(dú)寫到完整業(yè)務(wù)流程的切面中永部,這就取決于可能涉及用例的數(shù)量了独泞,若關(guān)系比較復(fù)雜,當(dāng)然是單獨(dú)寫比較好苔埋;若也就是三五個(gè)用例數(shù)懦砂,那就直接在某個(gè)功能的用例中補(bǔ)充好了。

 ∽殚稀(3)荞膘、GUI界面的測試

  這類測試是測試人員的強(qiáng)項(xiàng),具體測試項(xiàng)目如限長玉工、非法輸入等等羽资,就不必贅述了。要提醒的是在測試時(shí)遵班,一定要從實(shí)際使用者的操作習(xí)慣出發(fā)屠升。要知道界面原型所能確定的也只是頁面的擺放顯示,而實(shí)際操作時(shí)的控制實(shí)現(xiàn)仍是編碼人員自行實(shí)現(xiàn)的费奸,即使有編碼指南弥激,其所及范圍也是十分有限。而許多編碼人員在用戶操作方便性上的考慮往往差強(qiáng)人意愿阐。所以測試人員就必須要把好這一關(guān)微服。

  (4)缨历、數(shù)據(jù)初始化情況測試

  不該為空的數(shù)據(jù)是否有校驗(yàn)以蕴;該有默認(rèn)值的數(shù)據(jù)默認(rèn)值是否正確;引用其它功能生成的數(shù)據(jù)辛孵,是否會(huì)實(shí)時(shí)刷新丛肮;頁面關(guān)閉或系統(tǒng)重啟后,數(shù)據(jù)的初始化設(shè)置等都是這類用例魄缚。

 ”τ搿(5)、業(yè)務(wù)需求實(shí)現(xiàn)是否正確

  這類問題往往是由于我們的需求說明欠詳細(xì)冶匹,而編碼人員的需求了解程度又較低造成习劫。作為測試人員自然要對需求進(jìn)行深刻研究,來對軟件實(shí)現(xiàn)進(jìn)行把關(guān)嚼隘。這里常見的一些關(guān)注點(diǎn)有:

  數(shù)據(jù)的長度诽里、類型控制是否合理(比如控制納稅人識(shí)別號(hào)只能為數(shù)字,但實(shí)際業(yè)務(wù)中是會(huì)有字母出現(xiàn)的)飞蛹;

  業(yè)務(wù)邏輯控制是否合理(比如某數(shù)據(jù)項(xiàng)不提供修改谤狡,但實(shí)際業(yè)務(wù)中該數(shù)據(jù)項(xiàng)經(jīng)常會(huì)需要改動(dòng))灸眼;

  提供的實(shí)現(xiàn)方式是否合理(比如只在某一頁面提供某數(shù)據(jù)的獲取功能,但根據(jù)業(yè)務(wù)劃分有些人員不能操作此頁面墓懂,卻必須要能看到該數(shù)據(jù))焰宣;

  所做的數(shù)據(jù)控制是否合理(比如必須在A功能中新增數(shù)據(jù),然后才能在B功能中操作捕仔,但實(shí)際業(yè)務(wù)中有可能會(huì)出現(xiàn)相反操作)宛徊;

  所做的數(shù)據(jù)控制是否完整(如授權(quán)的方式有普通按月、有買斷逻澳、有按數(shù)量控制闸天,那么當(dāng)同一企業(yè)嘗試同時(shí)存在以上幾種授權(quán)方式時(shí),系統(tǒng)是否能有必要的控制)斜做;

  還有其它一些操作細(xì)節(jié)上的滿足(如業(yè)務(wù)上需要批量操作的數(shù)據(jù)有否提供批量操作功能苞氮、導(dǎo)入失敗的結(jié)果文件是否能修改后直接再導(dǎo)入等)。

  對于不滿足的需求瓤逼,經(jīng)開發(fā)組長笼吟、需求經(jīng)理等確認(rèn)不作修改的,就要作為軟件的缺限或限制在測試報(bào)告中進(jìn)行說明民霸旗。

  2贷帮、功能切面隱含測試項(xiàng)用例設(shè)計(jì):

  (1)诱告、數(shù)據(jù)完整性的測試

  當(dāng)某數(shù)據(jù)被其它功能引用撵枢;或當(dāng)前功能要引用其它來源的數(shù)據(jù),就會(huì)涉及到數(shù)據(jù)完整性的測試精居。最常見的如被引用的數(shù)據(jù)刪除了锄禽,或關(guān)鍵字被修改了,引用的數(shù)據(jù)會(huì)否出錯(cuò)靴姿;兩個(gè)途徑進(jìn)入的數(shù)據(jù)會(huì)否沖突或重復(fù)沃但;此外還有因?yàn)橄嚓P(guān)的幾個(gè)功能由不同人員編碼,從而導(dǎo)致彼此的控制不一致佛吓,如A功能進(jìn)入的數(shù)據(jù)在可允許的極端情況下宵晚,到B功能中引用會(huì)否異常(最常見如用戶名錄入時(shí)允許長度10,但引用到某個(gè)單子填寫時(shí)允許長度是8维雇,此時(shí)就會(huì)異常了)淤刃。

  (2)谆沃、后臺(tái)的特殊處理

  是指某功能除了表面所見以外的程序處理钝凶。比如訂單錄入仪芒,表面所見的就是訂單的保存唁影,但后臺(tái)還會(huì)有重復(fù)數(shù)據(jù)的判斷耕陷、非法數(shù)據(jù)的處理、業(yè)務(wù)邏輯上沖突情況的處理以及其它種種根據(jù)需求設(shè)計(jì)所特有的處理据沈。又比如備份功能哟沫,在備份前可能有數(shù)據(jù)的清空、備份目錄的清空锌介、備份目標(biāo)是否存在的校驗(yàn)嗜诀、備份文件重復(fù)時(shí)的處理等等。類似這些在分析設(shè)計(jì)中就未必會(huì)寫全了孔祸,還是要測試人員多花心思去思考挖掘隆敢。

  (3)亿蒸、功能業(yè)務(wù)之間的關(guān)聯(lián)與轉(zhuǎn)換

  相關(guān)聯(lián)的幾個(gè)功能之間數(shù)據(jù)的傳遞形入,會(huì)否產(chǎn)生影響弃甥。比如新增錄入的某種特殊字符,要查詢時(shí)會(huì)引起查詢SQL語句異常温自;又如某下載文件名中存在中文等字符,下載時(shí)由于編碼問題導(dǎo)致亂碼的出現(xiàn)皇钞;再有報(bào)表填寫時(shí)到小數(shù)點(diǎn)后四位悼泌,生成報(bào)文時(shí)會(huì)不會(huì)被忽略成兩位了等等。象這種問題夹界,通常只能是在每個(gè)功能設(shè)計(jì)用例時(shí)馆里,盡量保證用例中的數(shù)據(jù)能涉及到允許范圍的各種情況,即充分運(yùn)用等價(jià)類劃分+邊界值的方法設(shè)計(jì)出各種“稀奇古怪”的數(shù)據(jù)可柿,并需驗(yàn)證這些數(shù)據(jù)從頭流到尾也拜,都還是能保持其正確性,而不僅僅是在當(dāng)前功能中正確趾痘。

 ÷(4)、從設(shè)計(jì)實(shí)現(xiàn)發(fā)掘測試點(diǎn)

  這個(gè)就是我們測試中最難捉的BUG了永票,它往往是由編碼人員自己在編碼時(shí)創(chuàng)造出來的卵贱,連設(shè)計(jì)人員都不會(huì)知道。

  比如內(nèi)部管理系統(tǒng)中侣集,正常的產(chǎn)品键俱,其類別通常是2位數(shù)字;如果是模塊世分,其類別就以產(chǎn)品代碼來取代编振。這時(shí)如何來判斷該產(chǎn)品是模塊呢?最保險(xiǎn)的當(dāng)然是校驗(yàn)其產(chǎn)品類別字段的值能否在產(chǎn)品表中找到臭埋;也有比較簡單的方法就是直接判斷類別代碼大于2位還是小于等于2位踪央。此時(shí)若能確切知道采用的是哪種實(shí)現(xiàn)方法臀玄,就可以直接找到其漏洞所在。比如采用后一種方法畅蹂,當(dāng)產(chǎn)品類別長度變化時(shí)健无,明顯系統(tǒng)會(huì)出錯(cuò)。那么即使確認(rèn)該實(shí)現(xiàn)方式不改液斜,測試人員也應(yīng)將其作為限制寫入測試報(bào)告累贤,。讓大家知道這個(gè)產(chǎn)品類別長度是不能隨意變化的少漆。

  而讓人郁悶的是臼膏,類似這樣的實(shí)現(xiàn),有太多的編碼人員都是隨性處理的示损,它們細(xì)而隱蔽讶请,在系統(tǒng)數(shù)據(jù)正常情況下根本不會(huì)被發(fā)現(xiàn);而在漫漫的軟件使用道路中屎媳,由于需求變更等原因?qū)υ幸恍┰O(shè)計(jì)做維護(hù)變化夺溢,這種問題就會(huì)突然暴發(fā)出來讓人措不及防。所以要杜絕這類漏洞烛谊,除了測試人員要做土撥鼠风响,不停地對軟件各功能的實(shí)現(xiàn)細(xì)節(jié)進(jìn)行挖掘外,也要多給編碼人員灌輸完美實(shí)現(xiàn)的理念丹禀,多用復(fù)雜但抗壓性高的代碼状勤,來替代簡單但依賴性強(qiáng)的代碼。

 ∷帷(5)持搜、并發(fā)操作時(shí)的測試

  即兩個(gè)或多個(gè)用戶同時(shí)操作同一功能時(shí),會(huì)否引起數(shù)據(jù)的混亂焙矛。通常在C/S結(jié)構(gòu)下葫盼,如果有同時(shí)操作的可能,是需要作此測試的村斟;而在B/S結(jié)構(gòu)下由于其特殊性贫导,此問題通常難以解決。除非就是某用戶一旦使用過某功能后蟆盹,在一定時(shí)間內(nèi)鎖定不允許再用孩灯,但這也會(huì)帶來實(shí)際應(yīng)用中的不便,所以除非是特別核心的數(shù)據(jù)逾滥,一般我們也不會(huì)去做此控制峰档,當(dāng)然對于可能出現(xiàn)的并發(fā)沖突也就作為系統(tǒng)的限制進(jìn)行遺留了。

  3、特定切面用例設(shè)計(jì)

  所謂特定切面讥巡,其實(shí)就是從另一個(gè)角度切割出來的用例面掀亩,所以具體的用例撰寫方式其實(shí)與功能切面是一致的。

  4尚卫、隱含切面用例設(shè)計(jì)

  隱含切面分以下幾種情況:

  (1)尸红、無界面的后臺(tái)功能

  對這類測試項(xiàng)吱涉,需要通過參數(shù)設(shè)置、代碼調(diào)用等方式來實(shí)現(xiàn)測試外里,但具體的測試設(shè)計(jì)其實(shí)與普通功能測試并無二致怎爵。這里要注意,因?yàn)闇y試時(shí)往往前臺(tái)盅蝗、后臺(tái)是分開來分別進(jìn)行的鳖链,而實(shí)際運(yùn)行時(shí)兩者很可能是交集的,所以測試時(shí)要多注意后臺(tái)功能的執(zhí)行與前臺(tái)的一些功能執(zhí)行會(huì)否產(chǎn)生沖突墩莫?比如后臺(tái)有個(gè)文件搬運(yùn)的服務(wù)芙委,那有沒有可能在前臺(tái)文件生成過程中,后臺(tái)執(zhí)行文件搬運(yùn)了狂秦?若有可能就要注意會(huì)否出現(xiàn)問題了灌侣。

  (2)裂问、與業(yè)務(wù)流相關(guān)的測試

  這類測試用例的設(shè)計(jì)侧啼,就要從完整業(yè)務(wù)角度來設(shè)計(jì)數(shù)據(jù)了。從理論上來講堪簿,應(yīng)該要將各個(gè)功能可能出現(xiàn)的各種數(shù)據(jù)排列組合到一起痊乾,按業(yè)務(wù)流程逐一進(jìn)行測試。但實(shí)際上我們不可能去做全覆蓋椭更。所以設(shè)計(jì)這類用例時(shí)哪审,最好有一張草稿,將所有相關(guān)功能按業(yè)務(wù)流程逐一列示虑瀑,然后再將每個(gè)功能可能出現(xiàn)的特定數(shù)據(jù)一一標(biāo)上协饲,最后將圖中最可能出現(xiàn)的、最可能出錯(cuò)的缴川、最核心的數(shù)據(jù)取出來茉稠,分別組合成一個(gè)個(gè)完整的業(yè)務(wù)數(shù)據(jù)用例,來進(jìn)行測試把夸。這樣就可以按清晰的思路而线,找出最實(shí)用、最有效的測試數(shù)據(jù)。

 “蚶骸(3)嘹狞、其它測試類型

  這一類的測試通常都有其特定的方法。如要測可靠性就準(zhǔn)備大量數(shù)據(jù)不停地執(zhí)行誓竿;要測安全性就考慮數(shù)據(jù)的加密磅网、數(shù)據(jù)的傳輸、數(shù)據(jù)的破壞筷屡;恢復(fù)性一般從網(wǎng)絡(luò)涧偷、電源方面著手;配置安裝則根據(jù)系統(tǒng)可支持的配置毙死,搭建相應(yīng)環(huán)境進(jìn)行功能驗(yàn)證燎潮,此處的驗(yàn)證也要掌握技巧,即要多測試那些涉及到:數(shù)據(jù)庫讀寫扼倘、磁盤文件讀寫确封、文件上傳下載、文件加解密再菊、數(shù)據(jù)統(tǒng)計(jì)爪喘、圖表展現(xiàn)、打印等方面的功能纠拔。

三腥放、測試數(shù)據(jù)的設(shè)計(jì)

  每一個(gè)測試思路最終都要轉(zhuǎn)化成具體的數(shù)據(jù)才能來執(zhí)行。關(guān)于測試數(shù)據(jù)設(shè)計(jì)的方法也不外乎那幾種绿语,就不再贅述了秃症。此處單就一些經(jīng)常易犯的錯(cuò)誤,提出一些注意點(diǎn)吕粹,作為用例數(shù)據(jù)設(shè)計(jì)時(shí)的參考:

  1种柑、盡量避免可能出現(xiàn)歧義測試結(jié)果的數(shù)據(jù):即你設(shè)計(jì)的數(shù)據(jù)必須能唯一正確地反映出你所希望測試的結(jié)果。比如一組測試數(shù)據(jù)匹耕,有可能得到結(jié)果A或結(jié)果B聚请,此時(shí)單用此數(shù)據(jù)來測試預(yù)期結(jié)果為A的用例,那明顯就產(chǎn)生了歧義稳其。

  2驶赏、對于不便具體列示的數(shù)據(jù),則必須詳細(xì)描述其各項(xiàng)特性:有時(shí)我們在設(shè)計(jì)用例時(shí)為節(jié)約時(shí)間既鞠,不一定要到具體的一個(gè)數(shù)值煤傍,這也是允許的,但前提是你必須要詳細(xì)描述清楚你要測試的數(shù)據(jù)特性嘱蛋。比如數(shù)據(jù)庫字段限長20蚯姆,要測試超長數(shù)據(jù)時(shí)五续,可以描述為:嘗試輸入長度為21位的半角英文字符;嘗試輸入長度為19位的半角英文字符龄恋,然后切換到中文全角再輸入一位全角字符等疙驾。千萬不能寫成:嘗試輸入超長字符,因?yàn)檫@只能是測試方案郭毕,作為方案是可以這樣寫它碎,但到用例階段,必須要是具體的显押、明確的扳肛、可操作的。

  3煮落、測試數(shù)據(jù)的設(shè)計(jì)必須有明確目的性:即測試數(shù)據(jù)是從測試方案衍生而來的敞峭。如上例測試方案是測超長字符輸入控制踊谋,所以測試數(shù)據(jù)就要根據(jù)具體字段長度來錄入超長數(shù)據(jù)蝉仇,如果一味錄入長15位、長16位的數(shù)據(jù)那就沒意義了殖蚕。好的測試數(shù)據(jù)是可以同時(shí)針對多個(gè)測試方案的轿衔,此時(shí)可以在用例邊注明一下該數(shù)據(jù)的測試目的,因?yàn)殡S著時(shí)間推移睦疫,對著具體的數(shù)據(jù)你也許會(huì)忘了它到底是測什么的害驹,而這對你最后總結(jié)測試,查驗(yàn)測試覆蓋率是非常不利的蛤育,所以隨時(shí)記下你的思路想法吧宛官,好記性不如爛筆頭。

  4瓦糕、測試數(shù)據(jù)可省略描述:測試數(shù)據(jù)描述以能讓人看懂為準(zhǔn)則底洗。所以寫用例時(shí)當(dāng)碰到連續(xù)幾個(gè)用例,僅某幾個(gè)關(guān)鍵數(shù)據(jù)值改動(dòng)咕娄,其余均是一樣的情況下亥揖,不必每個(gè)用例都要重復(fù)描述所有數(shù)據(jù),可以在第一個(gè)用例描述完整之后圣勒,其余用例中僅列示不同的數(shù)據(jù)费变,并標(biāo)明其余數(shù)據(jù)同上第X個(gè)用例,即可圣贸。這樣測試時(shí)仍能復(fù)原測試數(shù)據(jù)挚歧,且該用例的測試目的一眼就明,增加了用例的清晰性吁峻。

  至些昼激,我根據(jù)測試用例設(shè)計(jì)的順序庇绽,從測試數(shù)據(jù)的切面設(shè)計(jì)(即測試項(xiàng)劃分),到詳細(xì)測試用例設(shè)計(jì)橙困,再到測試數(shù)據(jù)設(shè)計(jì)三個(gè)層面瞧掺,逐一介紹了如何來提高測試用例的覆蓋度。因?yàn)榫唧w項(xiàng)目中的具體情況太多凡傅,以上敘述的內(nèi)容也只能是管窺蠡測辟狈。至于其中的疏漏錯(cuò)誤之處應(yīng)也難免,只希望各位閱后能打開思路夏跷,從自己多年的測試經(jīng)驗(yàn)中多總結(jié)哼转、提煉出一些想法思路,進(jìn)一步補(bǔ)充完善這個(gè)文檔槽华,使大家的測試用例設(shè)計(jì)能力都能進(jìn)一步提升壹蔓。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市猫态,隨后出現(xiàn)的幾起案子佣蓉,更是在濱河造成了極大的恐慌,老刑警劉巖亲雪,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件勇凭,死亡現(xiàn)場離奇詭異,居然都是意外死亡义辕,警方通過查閱死者的電腦和手機(jī)虾标,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灌砖,“玉大人璧函,你說我怎么就攤上這事』裕” “怎么了蘸吓?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長续镇。 經(jīng)常有香客問我美澳,道長,這世上最難降的妖魔是什么摸航? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任制跟,我火速辦了婚禮,結(jié)果婚禮上酱虎,老公的妹妹穿的比我還像新娘雨膨。我一直安慰自己,他們只是感情好读串,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布聊记。 她就那樣靜靜地躺著撒妈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪排监。 梳的紋絲不亂的頭發(fā)上狰右,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天,我揣著相機(jī)與錄音舆床,去河邊找鬼棋蚌。 笑死,一個(gè)胖子當(dāng)著我的面吹牛挨队,可吹牛的內(nèi)容都是我干的谷暮。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼盛垦,長吁一口氣:“原來是場噩夢啊……” “哼湿弦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起腾夯,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤颊埃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后俯在,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體竟秫,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡娃惯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年跷乐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片趾浅。...
    茶點(diǎn)故事閱讀 40,488評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡愕提,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出皿哨,到底是詐尸還是另有隱情浅侨,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布证膨,位于F島的核電站如输,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏央勒。R本人自食惡果不足惜不见,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望崔步。 院中可真熱鬧稳吮,春花似錦、人聲如沸井濒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至酪惭,卻和暖如春希痴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背春感。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工润梯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人甥厦。 一個(gè)月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓纺铭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親刀疙。 傳聞我的和親對象是個(gè)殘疾皇子舶赔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 在敏捷項(xiàng)目的快速迭代中,QA要負(fù)責(zé)和推動(dòng)多個(gè)質(zhì)量保障活動(dòng)比如需求分析谦秧、過程改進(jìn)竟纳、風(fēng)險(xiǎn)管理、自動(dòng)化測試開發(fā)維護(hù)和故事...
    做測試的DanteYu閱讀 4,141評論 7 59
  • 1****疚鲤、問:你在測試中發(fā)現(xiàn)了一個(gè)bug****锥累,但是開發(fā)經(jīng)理認(rèn)為這不是一個(gè)bug****,你應(yīng)該怎樣解決集歇? 首...
    蛋炒飯_By閱讀 5,295評論 1 94
  • 參考https://www.cnblogs.com/dulijuan/p/4474657.htmlhttps://...
    Helen_Cat閱讀 4,594評論 0 28
  • 1.測試與軟件模型 軟件開發(fā)生命周期模型指的是軟件開發(fā)全過程桶略、活動(dòng)和任務(wù)的結(jié)構(gòu)性框架。軟件項(xiàng)目的開發(fā)包括:需求诲宇、設(shè)...
    宇文臭臭閱讀 6,727評論 5 100
  • 1.問:你在測試中發(fā)現(xiàn)了一個(gè) bug 际歼,但是開發(fā)經(jīng)理認(rèn)為這不是一個(gè) bug ,你應(yīng)該怎樣解決姑蓝。 首先鹅心,將問題提...
    qianyewhy閱讀 9,265評論 4 123