測(cè)試用例設(shè)計(jì)

好的測(cè)試用例一定是一個(gè)完備的集合漏麦,它能夠覆蓋所有等價(jià)類以及各邊界值促王,而跟能是否發(fā)現(xiàn)缺陷無(wú)關(guān)

三種最常用的測(cè)試用例設(shè)計(jì)方法:

第一,等價(jià)類劃分方法

等價(jià)類中任意一個(gè)輸入數(shù)據(jù)對(duì)于揭露程序中潛在錯(cuò)誤都有相同效果。后續(xù)我們只要從每個(gè)等價(jià)類中任意選取一個(gè)值進(jìn)行測(cè)試劝贸,就剋用少量具有代表性的測(cè)試輸入取得較好的測(cè)試覆蓋效果。

eg:成績(jī)?nèi)≈捣秶?-100之間整數(shù)贰逾,及格60

有效等價(jià)類:0-59之間任意整數(shù)

有效等價(jià)類:60-100之間任意整數(shù)

無(wú)效等價(jià)類1:0-100之間任何浮點(diǎn)數(shù)

無(wú)效等價(jià)類2:小于0負(fù)數(shù)

無(wú)效等價(jià)類3:大于100整數(shù)

無(wú)效等價(jià)類:其他任意非數(shù)字字符

第二悬荣,邊界值分析法

邊界值分析是對(duì)等價(jià)類劃分的補(bǔ)充。

eg:上述成績(jī)邊界值:-1,0,1,59,60,61,99,100,101

第三疙剑,錯(cuò)誤推測(cè)法

錯(cuò)誤推測(cè)方法是指基于對(duì)被測(cè)軟件系統(tǒng)設(shè)計(jì)的理解氯迂,過(guò)往經(jīng)驗(yàn)以及個(gè)人直覺,推測(cè)處軟件可能存在的缺陷言缤,從而有針對(duì)性的設(shè)計(jì)測(cè)試用例的方法嚼蚀。這個(gè)方法強(qiáng)調(diào)的是對(duì)被測(cè)軟件的需求理解以及設(shè)計(jì)實(shí)現(xiàn)的細(xì)節(jié)把握,當(dāng)然還有個(gè)人能力管挟。

比如轿曙,Web?界面的?GUI?功能測(cè)試,需要考慮瀏覽器在有緩存和沒有緩存下的表現(xiàn)僻孝;Web?Service?的?API?測(cè)試导帝,需要考慮被測(cè)?API?所依賴的第三方?API?出錯(cuò)下的處理邏輯;對(duì)于代碼級(jí)的單元測(cè)試穿铆,需要考慮被測(cè)函數(shù)的輸入?yún)?shù)為空情況下的內(nèi)部處理邏輯等等您单。由此可見,這些測(cè)試用例的設(shè)計(jì)都是基于曾經(jīng)遇到的問(wèn)題而進(jìn)行的錯(cuò)誤推測(cè)荞雏,很大程度上取決于個(gè)人能力虐秦。

在軟件企業(yè)的具體實(shí)踐中平酿,為了降低對(duì)個(gè)人能力的依賴,通常會(huì)建立常見缺陷知識(shí)庫(kù)悦陋,在測(cè)試設(shè)計(jì)的過(guò)程中蜈彼,會(huì)使用缺陷知識(shí)庫(kù)作為檢查點(diǎn)列表(checklist),去幫助優(yōu)化補(bǔ)充測(cè)試用例的設(shè)計(jì)俺驶。

對(duì)于中小企業(yè)幸逆,可能最初的方法就是建立一個(gè)簡(jiǎn)單的?wiki?頁(yè)面,讓測(cè)試工程師完成測(cè)試用例的最初設(shè)計(jì)后對(duì)應(yīng)這個(gè)?wiki?頁(yè)面先做一輪自檢痒钝,如果在后續(xù)測(cè)試中發(fā)現(xiàn)了新的點(diǎn)秉颗,就會(huì)繼續(xù)完善這個(gè)?wiki?頁(yè)面。

對(duì)于測(cè)試基礎(chǔ)架構(gòu)比較成熟的中大型軟件企業(yè)送矩,通常會(huì)以該缺陷知識(shí)庫(kù)作為數(shù)據(jù)驅(qū)動(dòng)測(cè)試的輸入來(lái)自動(dòng)生成部分的測(cè)試數(shù)據(jù)

在真實(shí)的工程實(shí)踐中蚕甥,不同的軟件項(xiàng)目在研發(fā)生命周期的各個(gè)階段都會(huì)有不同的測(cè)試類型。?比如栋荸,傳統(tǒng)軟件的開發(fā)階段通常會(huì)有單元測(cè)試菇怀,軟件模塊集成階段會(huì)有代碼級(jí)集成測(cè)試,打包部署后會(huì)有面向終端用戶的?GUI?測(cè)試晌块;再比如爱沟,電商網(wǎng)站的測(cè)試會(huì)分為服務(wù)器端基于?API?的測(cè)試、中間件測(cè)試匆背、前端?GUI?測(cè)試等呼伸。

對(duì)于每一種不同的測(cè)試類型,設(shè)計(jì)出“好的”測(cè)試用例的關(guān)注點(diǎn)和方法論可能會(huì)有很大的差異钝尸,?有些可能采用黑盒方法括享,有些可能采用白盒方法,有些還會(huì)采用灰盒方法(比如珍促,微服務(wù)架構(gòu)中的測(cè)試)铃辖,所以很難有一套放之四海而皆準(zhǔn)的套路。

所以猪叙,在這篇文章中娇斩,我僅以最常見、最容易理解的面向終端用戶的?GUI?測(cè)試為例穴翩,跟你聊聊如何才能設(shè)計(jì)一個(gè)“好的”測(cè)試用例犬第。

面向終端用戶的?GUI?測(cè)試,最核心的測(cè)試點(diǎn)就是驗(yàn)證軟件對(duì)需求的滿足程度芒帕,這就要求測(cè)試工程師對(duì)被測(cè)軟件的需求有深入的理解歉嗓。在我看來(lái),深入理解被測(cè)軟件需求的最好方法是副签,測(cè)試工程師在需求分析和設(shè)計(jì)階段就開始介入遥椿,因?yàn)檫@個(gè)階段是理解和掌握軟件的原始業(yè)務(wù)需求的最好時(shí)機(jī)。

只有真正理解了原始業(yè)務(wù)需求之后淆储,才有可能從業(yè)務(wù)需求的角度去設(shè)計(jì)針對(duì)性明確冠场、從終端用戶使用場(chǎng)景考慮的端到端(End-2-End)的測(cè)試用例集。這個(gè)階段的測(cè)試用例設(shè)計(jì)本砰,主要目的是驗(yàn)證各個(gè)業(yè)務(wù)需求是否被滿足碴裙,主要采用基于黑盒的測(cè)試設(shè)計(jì)方法。

在具體的用例設(shè)計(jì)時(shí)点额,首先需要搞清楚每一個(gè)業(yè)務(wù)需求所對(duì)應(yīng)的多個(gè)軟件功能需求點(diǎn)舔株,然后分析出每個(gè)軟件功能需求點(diǎn)對(duì)應(yīng)的多個(gè)測(cè)試需求點(diǎn),最后再針對(duì)每個(gè)測(cè)試需求點(diǎn)設(shè)計(jì)測(cè)試用例还棱。

以用戶登錄為例

圖中的業(yè)務(wù)需求到軟件功能需求载慈、軟件功能需求到測(cè)試需求,以及測(cè)試需求到測(cè)試用例的映射關(guān)系珍手,在非互聯(lián)網(wǎng)軟件企業(yè)的實(shí)踐中办铡,通常會(huì)使用需求追蹤管理工具(比如?ALM、DOORS琳要、JIRA寡具、TestLink?等)來(lái)管理,并以此來(lái)衡量測(cè)試用例對(duì)業(yè)務(wù)需求稚补、軟件功能需求的覆蓋率童叠。

映射關(guān)系

具體到測(cè)試用例本身的設(shè)計(jì),有兩個(gè)關(guān)鍵點(diǎn)需要你注意课幕。

1厦坛、從軟件功能需求出發(fā),全面地撰豺、無(wú)遺漏地識(shí)別出測(cè)試需求是至關(guān)重要的粪般,這將直接關(guān)系到用例的測(cè)試覆蓋率。?比如污桦,如果你沒有識(shí)別出用戶登錄功能的安全性測(cè)試需求亩歹,那么后續(xù)設(shè)計(jì)的測(cè)試用例就完全不會(huì)涉及安全性,最終造成重要測(cè)試漏洞凡橱。

2小作、對(duì)于識(shí)別出的每個(gè)測(cè)試需求點(diǎn),需要綜合運(yùn)用等價(jià)類劃分稼钩、邊界值分析和錯(cuò)誤推測(cè)方法來(lái)全面地設(shè)計(jì)測(cè)試用例顾稀。?這里需要注意的是,要綜合運(yùn)用這三種方法坝撑,并針對(duì)每個(gè)測(cè)試需求點(diǎn)的具體情況静秆,進(jìn)行靈活選擇粮揉。

以“用戶登錄”的功能性測(cè)試需求為例,你首先應(yīng)該對(duì)“用戶名”和“密碼”這兩個(gè)輸入項(xiàng)分別進(jìn)行等價(jià)類劃分抚笔,列出對(duì)應(yīng)的有效等價(jià)類和無(wú)效等價(jià)類扶认,對(duì)于無(wú)效等價(jià)類的識(shí)別可以采用錯(cuò)誤猜測(cè)法(比如,用戶名包含特殊字符等)殊橙,然后基于兩者可能的組合辐宾,設(shè)計(jì)出第一批測(cè)試用例。

等價(jià)類劃分完后膨蛮,你需要補(bǔ)充“用戶名”和“密碼”這兩個(gè)輸入項(xiàng)的邊界值的測(cè)試用例叠纹,比如用戶名為空(NULL)、用戶名長(zhǎng)度剛剛大于允許長(zhǎng)度等敞葛。

用例設(shè)計(jì)的其他經(jīng)驗(yàn)

1誉察、只有深入理解被測(cè)試軟件的架構(gòu),你才能設(shè)計(jì)出“有的放矢”的測(cè)試用例集惹谐,去發(fā)現(xiàn)系統(tǒng)邊界以及系統(tǒng)集成上的潛在缺陷冒窍。

作為測(cè)試工程師,切忌不能把整個(gè)被測(cè)系統(tǒng)看作一個(gè)大黑盒豺鼻,你必須對(duì)內(nèi)部的架構(gòu)有清楚的認(rèn)識(shí)综液,比如數(shù)據(jù)庫(kù)連接方式、數(shù)據(jù)庫(kù)的讀寫分離儒飒、消息中間件?Kafka?的配置谬莹、緩存系統(tǒng)的層級(jí)分布、第三方系統(tǒng)的集成等等桩了。

2附帽、必須深入理解被測(cè)軟件的設(shè)計(jì)與實(shí)現(xiàn)細(xì)節(jié),深入理解軟件內(nèi)部的處理邏輯井誉。

單單根據(jù)測(cè)試需求點(diǎn)設(shè)計(jì)的用例蕉扮,只能覆蓋“表面”的一層,往往會(huì)覆蓋不到內(nèi)部的處理流程颗圣、分支處理喳钟,而沒有覆蓋到的部分就很可能出現(xiàn)缺陷遺漏。在具體實(shí)踐中在岂,你可以通過(guò)代碼覆蓋率指標(biāo)找出可能的測(cè)試遺漏點(diǎn)奔则。

同時(shí),切忌不要以開發(fā)代碼的實(shí)現(xiàn)為依據(jù)設(shè)計(jì)測(cè)試用例蔽午。因?yàn)殚_發(fā)代碼實(shí)現(xiàn)的錯(cuò)誤會(huì)導(dǎo)致測(cè)試用例也出錯(cuò)易茬,所以你應(yīng)該根據(jù)原始需求設(shè)計(jì)測(cè)試用例。

3及老、需要引入需求覆蓋率和代碼覆蓋率來(lái)衡量測(cè)試執(zhí)行的完備性抽莱,并以此為依據(jù)來(lái)找出遺漏的測(cè)試點(diǎn)范抓。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市食铐,隨后出現(xiàn)的幾起案子尉咕,更是在濱河造成了極大的恐慌,老刑警劉巖璃岳,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異悔捶,居然都是意外死亡铃慷,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門蜕该,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)犁柜,“玉大人,你說(shuō)我怎么就攤上這事堂淡〔雒澹” “怎么了?”我有些...
    開封第一講書人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵绢淀,是天一觀的道長(zhǎng)萤悴。 經(jīng)常有香客問(wèn)我,道長(zhǎng)皆的,這世上最難降的妖魔是什么覆履? 我笑而不...
    開封第一講書人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮费薄,結(jié)果婚禮上硝全,老公的妹妹穿的比我還像新娘。我一直安慰自己楞抡,他們只是感情好伟众,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著召廷,像睡著了一般凳厢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上竞慢,一...
    開封第一講書人閱讀 49,785評(píng)論 1 290
  • 那天数初,我揣著相機(jī)與錄音,去河邊找鬼梗顺。 笑死泡孩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的寺谤。 我是一名探鬼主播仑鸥,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼吮播,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了眼俊?” 一聲冷哼從身側(cè)響起意狠,我...
    開封第一講書人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎疮胖,沒想到半個(gè)月后环戈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡澎灸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年院塞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片性昭。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拦止,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出糜颠,到底是詐尸還是另有隱情汹族,我是刑警寧澤,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布其兴,位于F島的核電站顶瞒,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏元旬。R本人自食惡果不足惜搁拙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望法绵。 院中可真熱鬧箕速,春花似錦、人聲如沸朋譬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)徙赢。三九已至暇检,卻和暖如春账锹,著一層夾襖步出監(jiān)牢的瞬間蹂午,已是汗流浹背愿汰。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留枕屉,地道東北人常柄。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親西潘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子卷玉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348

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