忙的話直接看粗體字道盏。
1 自動(dòng)化測試用例的范圍往往是核心業(yè)務(wù)流程或者重復(fù)執(zhí)行率較高的芍锦。
在選取自動(dòng)化測試用例范圍時(shí)节芥,很多測試工程師或者上級(jí)領(lǐng)導(dǎo)可能心里會(huì)過分依賴自動(dòng)化測試显晶,會(huì)認(rèn)為自動(dòng)化測試就應(yīng)該覆蓋所有的手工測試用例有滑,自動(dòng)化測試的覆蓋率就應(yīng)該達(dá)到百分之百跃闹。其實(shí)恰好相反,這樣的想法往往會(huì)導(dǎo)致自動(dòng)化測試最終失敗毛好。在一些大型項(xiàng)目中望艺,往往測試用例的數(shù)量會(huì)很龐大,而且如果遇到一些繁雜的被測程序(特別是C/S架構(gòu))肌访,腳本開發(fā)工作往往會(huì)相當(dāng)耗時(shí)間找默,并且很多測試用例甚至根本就不能通過自動(dòng)化來實(shí)現(xiàn)。舉些例子场靴,現(xiàn)在很多公司自動(dòng)化測試都是剛起步啡莉,對(duì)自動(dòng)化測試的了解程度只是停留在字面上,在公司對(duì)測試也不是非常重視的情況下旨剥,當(dāng)然不太愿意去花精力招一個(gè)具有自動(dòng)化測試開發(fā)經(jīng)驗(yàn)的工程師咧欣,很多還是停留在使用工具的錄制回放功能來完成自動(dòng)化測試。正是存在這樣的技術(shù)限制情況下轨帜,往往在實(shí)施中魄咕,會(huì)出現(xiàn)很多錄制回放不能解決的問題,測試工具完全無法識(shí)別測試對(duì)象蚌父,無法識(shí)別一些特殊的加密測試控件哮兰。還有,如果項(xiàng)目的變更頻率苟弛,測試用例數(shù)量大的話喝滞,增加了后期的維護(hù)工作量等,都是造成最終失敗的一些隱患膏秫。投入越大右遭,損失越大。因此缤削,往往我們會(huì)選取最核心的一些業(yè)務(wù)路徑或者是重復(fù)執(zhí)行率較高的一些手工測試用例進(jìn)行自動(dòng)化測試窘哈,這樣能夠充分發(fā)揮出自動(dòng)化測試的優(yōu)勢。
2 自動(dòng)化測試用例的選擇一般以“正向”為主亭敢。
手工測試用例分正常情況和異常情況滚婉,在設(shè)計(jì)的時(shí)候,可能往往會(huì)去設(shè)計(jì)很多異常情況來驗(yàn)證程序是否有Bug帅刀,并且一個(gè)正常情況的測試用例往往會(huì)對(duì)應(yīng)幾十個(gè)非正常情況的測試用例让腹,而每種異常情況的測試用例都會(huì)有各種各樣的預(yù)期結(jié)果远剩。在自動(dòng)化測試中,很多人喜歡將正常情況稱為“正向”哨鸭;反之民宿,異常情況則稱為“反向”。下面像鸡,我們?cè)囅胍韵禄钣ィ绻麑⑦@些異常情況全部轉(zhuǎn)化、反應(yīng)到自動(dòng)化測試腳本中只估,那肯定需要非常繁瑣的判斷才能做到志群。這個(gè)對(duì)于自動(dòng)化測試工程師來說,其現(xiàn)有的工作量還是今后的腳本維護(hù)量都是不可小視的蛔钙。對(duì)于整個(gè)自動(dòng)化測試項(xiàng)目來說锌云,如果每個(gè)異常情況都要寫進(jìn)腳本中,那真的是花了大價(jià)錢買一堆小東西吁脱,小東西真正能發(fā)揮大作用的畢竟很少桑涎。因此,真正在自動(dòng)化測試項(xiàng)目實(shí)施中兼贡,往往會(huì)舍棄反向用例攻冷,個(gè)別比較重要的除外。使每個(gè)東西都能發(fā)揮其最大的作用才是企業(yè)最想看到的遍希。功能自動(dòng)化測試主要還是用于回歸測試等曼,回歸測試的目的就是保證新增功能后老功能是否能夠正常繼續(xù)運(yùn)作。而自動(dòng)化測試則是讓測試人員從繁瑣又枯燥的重復(fù)手工測試中解放出來凿蒜,這就是目的和目標(biāo)禁谦。
3 不是所有手工測試用例都可以使用自動(dòng)化測試來實(shí)現(xiàn)的。
這里糾正許多測試從業(yè)人員的一個(gè)錯(cuò)誤觀念废封,剛接觸測試自動(dòng)化的普遍都會(huì)認(rèn)為手工測試用例全部要轉(zhuǎn)化為自動(dòng)化測試用例州泊,但是在真正實(shí)施的時(shí)候,卻發(fā)現(xiàn)很多測試用例是自動(dòng)化無法實(shí)現(xiàn)的漂洋,或者有些測試用例根本就沒有必要去自動(dòng)化的遥皂。例如,有些用例會(huì)牽涉到硬件設(shè)備輔助的氮发,最簡單的例子就是用例執(zhí)行過程中需要使用刷卡機(jī)才能獲取卡號(hào)信息(如果有技術(shù)能力,當(dāng)然不排除自行開發(fā)接口供測試工具調(diào)用冗懦,但畢竟能有技術(shù)實(shí)力做到這一步的不多爽冕,能有這樣的重視程度的更不多);再比如披蕉,有些測試用例是需要與合作機(jī)構(gòu)進(jìn)行互動(dòng)聯(lián)調(diào)颈畸,聯(lián)調(diào)時(shí)是需要和對(duì)方實(shí)時(shí)溝通乌奇,以及根據(jù)具體情況給予響應(yīng)的,這些情況多數(shù)還是只能使用手工人為地來完成眯娱。當(dāng)然礁苗,決定是否轉(zhuǎn)化為自動(dòng)化測試,必須事先有一個(gè)規(guī)范文檔來定義哪些是需要轉(zhuǎn)化為自動(dòng)化測試哪些是不需要的徙缴,否則測試工程師就會(huì)不知所措试伙,沒有一個(gè)標(biāo)準(zhǔn)。一旦有了這個(gè)標(biāo)準(zhǔn)于样,自動(dòng)化測試工程師就可以嚴(yán)格按照文檔里的流程去完成需要轉(zhuǎn)化部分的自動(dòng)化測試用例的腳本開發(fā)工作了疏叨。
4 手工測試用例可以不用回歸原點(diǎn)做院,而自動(dòng)化用例往往是必須的巩掺。
很多有經(jīng)驗(yàn)的自動(dòng)化測試從業(yè)人員一定有這樣的經(jīng)歷,很多時(shí)候腳本寫完后民逼,第一次執(zhí)行沒有任何問題糊余,而第二次執(zhí)行時(shí)立刻就會(huì)報(bào)錯(cuò)秀又,原因就是沒有回歸原點(diǎn)。所謂回歸原點(diǎn)就是執(zhí)行的測試用例最終需要恢復(fù)其在執(zhí)行前的初始狀態(tài)贬芥,如果沒有回歸原點(diǎn)吐辙,就會(huì)把此腳本稱之為死腳本。舉個(gè)最簡單的例子誓军,比如添加用戶功能袱讹,我們都知道每個(gè)用戶名都是唯一的,當(dāng)寫完一個(gè)添加用戶的腳本之后昵时,執(zhí)行第一次沒有問題捷雕,因?yàn)閳?zhí)行前此用戶還不存在,但是當(dāng)執(zhí)行第二次時(shí)壹甥,程序就會(huì)出現(xiàn)用戶重復(fù)而報(bào)錯(cuò)救巷,此時(shí)這個(gè)添加用戶的腳本就失去了它的價(jià)值,在這種情況下句柠,我們就需要在自動(dòng)化測試用例的最后加上刪除這個(gè)用戶的步驟浦译,這樣在下次執(zhí)行用例時(shí)就不會(huì)出現(xiàn)用戶重復(fù)的情況了。當(dāng)然溯职,除了回歸原點(diǎn)精盅,還可以使用另一種方式進(jìn)行,那就是初始化數(shù)據(jù)谜酒,比如ATM機(jī)取款叹俏,假設(shè)需要執(zhí)行取款100元的操作,而銀行卡余額是120元僻族,當(dāng)測試腳本第一次執(zhí)行時(shí)可能沒有任何問題粘驰,但是第二次系統(tǒng)就會(huì)報(bào)余額不足屡谐,這樣就成為了死腳本,解決方案有兩種:一種是直接進(jìn)行初始化數(shù)據(jù)蝌数,每次執(zhí)行用例之前都重置下余額(只需大于100即可)愕掏;第二種方法可以在用例執(zhí)行前,先查詢下余額是否大于100顶伞,若大于等于則繼續(xù)饵撑,若小于則做一筆充值100的操作,這樣即可解決枝哄。兩種方式可以看具體情況使用肄梨,數(shù)據(jù)初始化方便,但有時(shí)候初始化之后可能會(huì)影響到其他自動(dòng)化測試用例的執(zhí)行挠锥,而第二種方式相對(duì)在腳本上需要稍微花點(diǎn)功夫众羡。究竟使用哪種方式還需要具體情況具體分析”妥猓總之粱侣,在執(zhí)行自動(dòng)化測試用例之前做好數(shù)據(jù)準(zhǔn)備,這也是自動(dòng)化測試的關(guān)鍵步驟蓖宦。
5 自動(dòng)化測試用例和手工測試用例不同齐婴,不需要每個(gè)步驟都寫預(yù)期結(jié)果。
在手工測試用例的設(shè)計(jì)過程中稠茂,幾乎每一個(gè)測試步驟都有一個(gè)預(yù)期結(jié)果柠偶。但是,在自動(dòng)化測試用例的設(shè)計(jì)中并不采用睬关,在自動(dòng)化測試用例中诱担,只有準(zhǔn)備在測試腳本中設(shè)置成檢查點(diǎn)的步驟才有預(yù)期結(jié)果,其他所有的步驟只將它看作一個(gè)步驟电爹,這樣做的好處是一目了然蔫仙、目的明顯、層次分明丐箩,以后寫測試腳本直接跟著自動(dòng)化測試用例就行了摇邦。因?yàn)榻?jīng)過前面的探討應(yīng)該已經(jīng)知道,自動(dòng)化測試中并不是所有的東西都需要驗(yàn)證的屎勘。所以施籍,作者在前面的章節(jié)中也提到過,基本上手工測試用例多多少少都要進(jìn)行一些轉(zhuǎn)換的概漱,就是因?yàn)樗鼈冎g的格式是不一致的丑慎。舉一個(gè)簡單的例子,假設(shè)需要設(shè)計(jì)一個(gè)注冊(cè)頁面的自動(dòng)化測試用例,有10幾個(gè)表單需要填寫立哑,在手工測試用例中,每個(gè)表單的填寫都一定會(huì)有預(yù)期結(jié)果姻灶,因?yàn)樗拇_在檢查每一項(xiàng)是對(duì)了還是錯(cuò)了铛绰,只是用的是你的眼睛在檢查而已,所以速度非常的快产喉,甚至你自己潛意識(shí)都忽略了其實(shí)你已經(jīng)檢查了捂掰。但是,在自動(dòng)化測試中曾沈,我們知道如果你要檢查这嚣,那一定需要寫代碼,如果每項(xiàng)都檢查塞俱,那代碼量有多大是可想而知的姐帚,不是說做不到,只是這樣做根本不符合自動(dòng)化測試的特點(diǎn)障涯。所以罐旗,絕大部分時(shí)候,這些在自動(dòng)化測試中可有可無的檢查唯蝶,我們?nèi)俊安粰z查”九秀,只當(dāng)做一個(gè)業(yè)務(wù)流程和步驟,是不需要設(shè)立預(yù)期結(jié)果的粘我。