测试 - 用例篇 - 细节狂魔
文章目錄
- 回顧一:上篇博客[軟件測(cè)試- 基礎(chǔ)篇 ](https://blog.csdn.net/DarkAndGrey/article/details/125318528?spm=1001.2014.3001.5502)
- 回顧二:[概念篇](https://blog.csdn.net/DarkAndGrey/article/details/125281778?spm=1001.2014.3001.5502)
- 1、什么是測(cè)試用例?
- 2、為什么軟件測(cè)試人員要寫(xiě)測(cè)試用例?
- 軟件測(cè)試 - 用例篇
- 測(cè)試用例的基本要素
- 測(cè)試用例的設(shè)計(jì)方法
- 基于需求設(shè)計(jì)測(cè)試用例
- 總結(jié)
- 實(shí)戰(zhàn)案例 - 日歷系統(tǒng)
- 具體的設(shè)計(jì)測(cè)試用例的方法
- 等價(jià)類(lèi)
- 邊界值
- 錯(cuò)誤 猜測(cè)法
- 案例 - 水杯測(cè)試 - 培養(yǎng)的思維
- 場(chǎng)景設(shè)計(jì)法
- 因果圖法
- 正交排列 - 了解即可
- 3、測(cè)試用例的有效性
- 4、測(cè)試用例的粒度和評(píng)價(jià) - 了解
- 測(cè)試用例的粒度
- 測(cè)試用例的評(píng)價(jià)
- 實(shí)戰(zhàn)測(cè)試用例:百度云盤(pán)的測(cè)試用例 - 自己可以參考這個(gè)寫(xiě)一個(gè)。
- 百度云盤(pán)功能需求分析 - 粗略版
- 非功能性測(cè)試
回顧一:上篇博客軟件測(cè)試- 基礎(chǔ)篇
上篇博客最主要的問(wèn)題有三個(gè)
1、軟件測(cè)試的流程是什么?【生命周期】
?
2、如何描述一個(gè)bug?
3、因?yàn)橐粋€(gè)BUG 和 開(kāi)發(fā)人起沖突該怎么做?
?
回顧二:概念篇
1、什么是測(cè)試用例?
向被測(cè)系統(tǒng)發(fā)送的一組集合。
這個(gè)集合中包含:測(cè)試環(huán)境,測(cè)試數(shù)據(jù),測(cè)試步驟,預(yù)期結(jié)果。
?
2、為什么軟件測(cè)試人員要寫(xiě)測(cè)試用例?
你給產(chǎn)品給我,我直接拿著產(chǎn)品測(cè)試,不是一樣可以的嘛。
我為什么要哦去寫(xiě)測(cè)試用例呢?
而且看過(guò)前面幾篇測(cè)試=博客的朋友,就會(huì)發(fā)現(xiàn)我給的測(cè)試用例,真的讓我們?nèi)?xiě),估計(jì)沒(méi)有一兩個(gè)小時(shí)的時(shí)間,是寫(xiě)不了那么完整的!
也就是數(shù)寫(xiě)一個(gè)測(cè)試用例是非常耗時(shí)的!
?
回到最初的問(wèn)題:我為什么要花那么多時(shí)間去寫(xiě)測(cè)試用例?
1、測(cè)試用例是測(cè)試執(zhí)行的依據(jù)
?
2、測(cè)試用例可以復(fù)用,在進(jìn)行回歸測(cè)試的時(shí)候
看 新添加/修改后 的功能,是否對(duì)其它功能有影響?
既然是對(duì)就舊功能測(cè)試,那么原先的測(cè)試用例,就不用重新編寫(xiě),直接拿來(lái)用!
?
3、測(cè)試用例可以衡量需求的覆蓋率
f首先,我們的測(cè)試用例是根據(jù)需求來(lái)寫(xiě)的,有了測(cè)試用例之后,你對(duì)照著需求,就可以進(jìn)行查漏補(bǔ)缺。
簡(jiǎn)單來(lái)說(shuō):就是查看 需要測(cè)試的需求,是否都被被測(cè)試了。
如果你不寫(xiě)測(cè)試用例,東一測(cè),西一測(cè),你很容就把自己給測(cè)昏了。
有了測(cè)試用例,你測(cè)完一項(xiàng),就標(biāo)記一項(xiàng),這樣你側(cè)漏的概率非常低。
檢查起來(lái),也很快!直接看測(cè)試項(xiàng)后面有沒(méi)有已測(cè)試的標(biāo)記就可以了
?
4、后人可以借鑒
這么說(shuō):我們寫(xiě)過(guò)的測(cè)試用例,不止是存儲(chǔ)在自己的電腦,公司也會(huì)有備份/記錄。
即便你跳槽,活著不干了。這份記錄依舊在公司里存著。
新人來(lái)了,就可以借鑒你的了。
?
5、手工測(cè)試用例是自動(dòng)化測(cè)試的依據(jù)
自動(dòng)化測(cè)試,就是把手工測(cè)試用例,用代碼寫(xiě)成腳本。
讓電腦代替人來(lái)做測(cè)試這件事,從而空出一些人手去做其它的事情。
加快項(xiàng)目的開(kāi)發(fā)效率!
還是那句話:能讓電腦多做一些事,就讓它多做一些!
?
軟件測(cè)試 - 用例篇
上一篇博客講述的是一次基本的測(cè)試過(guò)程。
在我們開(kāi)始做了一段時(shí)間基礎(chǔ)測(cè)試,熟悉了業(yè)務(wù)之后,往往會(huì)分配來(lái)寫(xiě)測(cè)試用例,并且在日常測(cè)試中,有時(shí)也需要補(bǔ)充測(cè)試用例到現(xiàn)有的案例庫(kù)中。
?
在這里我們將回答以下問(wèn)題
1、測(cè)試用例的基本要素
2、測(cè)試用例的設(shè)計(jì)方法
3、測(cè)試用例的有效性
4、測(cè)試用例的粒度和評(píng)價(jià)
簡(jiǎn)單來(lái)說(shuō):這篇博客就開(kāi)始教大家怎么去寫(xiě)一個(gè)測(cè)試案例!
?
測(cè)試用例的基本要素
其實(shí)測(cè)試用例的基本要素就是 測(cè)試用例的 定義/概念:
測(cè)試用例(Test Case)是為了實(shí)施測(cè)試而向被測(cè)試的系統(tǒng)提供的一組集合,這組集合包含:測(cè)試環(huán)境、操作步驟、測(cè)試數(shù)據(jù)、預(yù)期結(jié)果等要素。
好的測(cè)試用例是一個(gè)不熟悉業(yè)務(wù)的人也能依據(jù)用例來(lái)很快的進(jìn)行測(cè)試評(píng)價(jià)測(cè)試用例的標(biāo)準(zhǔn):對(duì)比好壞用例的評(píng)價(jià)標(biāo)準(zhǔn)
?
用例表達(dá)清楚,無(wú)二義性。。
用例可操作性強(qiáng)。
用例的輸入與輸出明確。一條用例只有一個(gè)預(yù)期結(jié)果。
用例的可維護(hù)性好。
用例對(duì)需求的覆蓋率高。
?
測(cè)試用例的設(shè)計(jì)方法
PS:講解順序不是按照上米南的順序來(lái)的。
基于需求設(shè)計(jì)測(cè)試用例
我們?cè)谥v需求的時(shí)候,說(shuō)過(guò):需求是測(cè)試人員進(jìn)行測(cè)試的依據(jù)。;
當(dāng)我們測(cè)試人員拿到需求之后,需要分析需求,驗(yàn)證需求的合理性與正確性。
隨后,從需求中提取出測(cè)試項(xiàng),再去根據(jù)測(cè)試項(xiàng)進(jìn)行進(jìn)一步的細(xì)份,提取出測(cè)試點(diǎn),編寫(xiě)測(cè)試用例。
?
有看過(guò)上篇博文的朋友,應(yīng)該都知道我給本文做了一個(gè)“鋪墊案例:《QQ登錄測(cè)試用例》”。
雖然我們書(shū)寫(xiě)測(cè)試用例的時(shí)候是從軟件功能上入手的,但是當(dāng)我們進(jìn)行測(cè)試的時(shí)候,最先引入眼簾的是 程序界面。
因此,我們測(cè)試一般是從軟件界面開(kāi)始進(jìn)行測(cè)試。
也就是觀察界面是否符合 UI(User Interface - 用戶(hù)界面)的設(shè)計(jì)稿。
這個(gè)設(shè)計(jì)稿,你可以理解為是軟件的靜態(tài)頁(yè)面,也說(shuō)是前端程序員的 頁(yè)面模板。
前端程序員就是按照 UI 的 設(shè)計(jì)稿 進(jìn)行 頁(yè)面設(shè)計(jì)的。
?
軟件頁(yè)面測(cè)試完成之后,就是驗(yàn)證軟件的功能。
我們可以把業(yè)務(wù)相關(guān)的功能串起來(lái)進(jìn)行測(cè)試。
比如:
緊接著,就是針對(duì)一個(gè)功能的不同輸入 與 其相應(yīng)的輸出 ,進(jìn)行測(cè)試。
隨后就是 功能之間的交互性 與 異常功能的測(cè)試
?
還有一些比較難的測(cè)試項(xiàng)
比如:實(shí)現(xiàn)功能所用到的算法,也是需要進(jìn)行驗(yàn)證的。
然后,就是從易用性,兼容性性能等幾個(gè)方面去考慮
?
總結(jié)
當(dāng)我們進(jìn)行設(shè)計(jì) 測(cè)試用例 的時(shí)候,我們應(yīng)該從以下這幾個(gè)點(diǎn)入手:
1、界面測(cè)試
2、驗(yàn)證軟件的功能,把業(yè)務(wù)相關(guān)的功能串起來(lái)進(jìn)行測(cè)試【每個(gè)功能都需要測(cè)試】
3、一個(gè)功能的不同輸入 與其 相對(duì)應(yīng)的不同的輸出。
4、功能之間的交互性
5、異常功能的測(cè)試
6、功能所用到的算法,也需要進(jìn)行驗(yàn)證
7、從易用性,兼容性性能等幾個(gè)方面去考慮
簡(jiǎn)單來(lái)說(shuō):設(shè)計(jì)一個(gè)合格的測(cè)試用例,就是從一個(gè)軟件的外在到內(nèi)在的進(jìn)一步分析,分析出一個(gè)個(gè)測(cè)試項(xiàng)。再通過(guò)這些測(cè)試項(xiàng)細(xì)化出一個(gè)個(gè)測(cè)試點(diǎn),而測(cè)試點(diǎn)又可以分情況處理【即:對(duì)測(cè)試點(diǎn)進(jìn)一步細(xì)分】。
一至六,都是針對(duì) 功能性 進(jìn)行測(cè)試。
唯有 第七條 是針對(duì)非功能性測(cè)試。
有的人可能覺(jué)得有點(diǎn)糊,你確定是在講 “基于需求設(shè)計(jì)測(cè)試用例”嘛?
兄弟們,學(xué)習(xí)測(cè)試,需要探索性思維。
你也可以理解為是一種發(fā)散思維,從不同的角度,將內(nèi)容給聯(lián)系起來(lái)。
你們之所以感覺(jué)有點(diǎn)糊,不是你們沒(méi)有看懂,而是你沒(méi)有捅破“那一層膜”!
膜:就是你們要主動(dòng)思考 兩樣?xùn)|西的關(guān)聯(lián)之處。
下面我就來(lái)給你們“開(kāi)個(gè)光”!
那 界面 來(lái)說(shuō):
界面的功能和排版,都需要符合大眾的需求。
比如:支付寶
我們?cè)诖蜷_(kāi)支付寶的時(shí)候,通常都是為了出示支付嘛,或者是收款碼,進(jìn)行首付款。
因此,我們希望已進(jìn)入支付寶,我們就能看到 這兩個(gè)功能。
如果兩個(gè)功能可以合并在一起,那最好。
支付寶也是這么去做的:當(dāng)我們打開(kāi)支付寶的時(shí)候,馬上就能發(fā)現(xiàn)收付款的功能圖案
點(diǎn)擊它,我們首先進(jìn)入是付款碼,因?yàn)榛ㄥX(qián) 比 收錢(qián)的日子要多。
而且,工資什么的,都是直接進(jìn)行銀行卡轉(zhuǎn)賬的。
因此,默認(rèn)顯示 付款碼是很合理的!
而且,你想要收款的時(shí)候,就在付款碼的下面,是有一個(gè)收款碼的選項(xiàng)的。
以上這一些,都是根據(jù)用戶(hù)的需求(習(xí)慣),衍生出來(lái)的。
而我們需要測(cè)試的地方,也就是這里。
我們點(diǎn)擊這個(gè)收付款,首先進(jìn)入的是不是付款碼的界面?
這就是一個(gè)測(cè)試點(diǎn)啊!
為什么要測(cè)?為了符合用戶(hù)的需求啊!
?
其它的6個(gè)點(diǎn),其實(shí)你們仔細(xì)想想。
結(jié)合前面講解的例子,就都能發(fā)現(xiàn),它們都是符合用戶(hù)需求(習(xí)慣)的。
?
這不就是根據(jù)需求來(lái)設(shè)計(jì)測(cè)試用例嘛???
想通了,你在閱讀后面的內(nèi)容就會(huì)輕松很多!
再次強(qiáng)調(diào):學(xué)習(xí)測(cè)試,重要思維。
多去思考 軟件功能 與 用戶(hù)之間的聯(lián)系,這樣才能幫助你的測(cè)試生源。
?
實(shí)戰(zhàn)案例 - 日歷系統(tǒng)
上面都是一些功能性的測(cè)試,還有一些非功能性測(cè)試,這里我們這是書(shū)寫(xiě)一下。
易用性,兼容性,性能,安全性,可移植性,可維護(hù)性。
非功能性測(cè)試 就是測(cè)試在軟件本身有的功能之上做的一些限制。
比如:
QQ用戶(hù)登錄測(cè)試用例中的,關(guān)于登錄操作的測(cè)試。
即使 用戶(hù)登錄操作是可以進(jìn)行登錄的。
而非功能測(cè)試,就比如:拿性能來(lái)說(shuō)
其實(shí)這句話?“非功能性測(cè)試 就是測(cè)試在軟件本身有的功能之上做的一些限制?!?br /> 還可以這么去理解:
這里的限制,你可以理解為是一種 要求 / 指標(biāo)。
這么說(shuō)吧:“非功能性測(cè)試”就是為了提升用戶(hù)的體驗(yàn);對(duì)軟件的執(zhí)行沒(méi)有影響。
需要注意的是:上面提到這些非功能性的測(cè)試(易用性,兼容性,性能,安全性,可移植性,可維護(hù)性),不是所有的,都要測(cè)試!
?
不同的應(yīng)用軟件 對(duì)于 以上 非功能性的要求 是 不一樣的!!!
比如:
1、面向客戶(hù)端的軟件:【畫(huà)圖板,office,Word,xmind】
這種軟件對(duì) 性能,安全性要求不高。
但是對(duì)于 兼容性,可移植性,穩(wěn)定性要求較高。
理由很簡(jiǎn)單,因?yàn)槭敲嫦蚩蛻?hù)端的,也就是 1v1 的服務(wù)。
面向一個(gè)客戶(hù)的服務(wù)軟件。
這么說(shuō)吧:在你的電腦上,是訪問(wèn)不到我電腦的的畫(huà)圖板的。
不存在用戶(hù)之間的交互,1 v 1 服務(wù)。
既然是 1 v 1 服務(wù),軟件只需要滿(mǎn)足你一個(gè)人的需求即可,因此對(duì)性能的要求肯定不高。
?
其次,不存在客戶(hù)端與服務(wù)器之間的交互,也就不存在中間人攻擊的說(shuō)法。
因此對(duì)于 安全性 的要求也不高
?
另外,這都是辦公必備軟件,因此必須在不同類(lèi)型的系統(tǒng)上,都能安裝運(yùn)行。
因此對(duì)于 兼容性 的要求,比較高。
?
還有就是,我發(fā)送給你的 Word,office 之類(lèi)的文件,只要對(duì)方也安裝了相應(yīng)的文件,也能打開(kāi)使用。因此對(duì)于可移植性的要求也是比較高的。
?
既然這些軟件都是公辦必備軟件,肯定是會(huì)被頻繁使用的。
因此,對(duì)于軟件的 穩(wěn)定性 要求就比較高!你這軟件不能用著用著就崩了,別人的數(shù)據(jù)怎么辦!!!
2、面向企業(yè)內(nèi)部的軟件
比如:飛Q,飛書(shū)(字節(jié)跳動(dòng))。。。。這種用于企業(yè)內(nèi)部員工使用的交流軟件。
因?yàn)檫@種類(lèi)型的軟件,只是針對(duì)自己公司的內(nèi)部人員使用。
公司可以統(tǒng)一電腦的操作系統(tǒng),因此對(duì)于 系統(tǒng)的兼容性要求不高
公司內(nèi)部的人員,其實(shí)不是很多。
別看著幾千人,其實(shí)對(duì)于計(jì)算機(jī)來(lái)說(shuō)也就那樣。
因此對(duì)于 性能的要求 也不是很高。
?
但是對(duì)于功能性,可靠性的要求高。
因?yàn)槭枪緝?nèi)部人員使用,那么肯定是用來(lái) 互傳文件,互相溝通之類(lèi)。
至少需要滿(mǎn)足 員工 的一些日常操作。
因此對(duì)于功能性的要求高。
?
對(duì)于傳文件,肯定是要求不能發(fā)生 傳輸殘缺/丟包 的情況!!!
文件里都是代碼,缺胳膊少腿,誰(shuí)知道是哪里少了點(diǎn)什么???
因此對(duì)于 可靠性的要求 是比較高的!
3、大型的商用軟件
比如:微信,QQ
別邊看它們是免費(fèi)使用的。。。
你想想會(huì)員和各種鉆,還有超級(jí)版本的(更貴的)。你敢說(shuō)你沒(méi)往里面砸一分錢(qián)?
另外,用戶(hù)基數(shù)多,說(shuō)明流量多,廣告商就會(huì)投資,讓 QQ/微信 投放 他們的廣告.
這是要給騰訊錢(qián)的!!!
也就是說(shuō):我們都在直接或間接的 為騰訊賺錢(qián)!
奈何自己不花錢(qián)的是真的香,廣告商的錢(qián)又不是我們的錢(qián)。。。
?
這種大型商用軟件對(duì) 非功能性 的 各個(gè)方面要求都很高。
你這么想:用戶(hù)多,對(duì)軟件的性能的要求就高。不然請(qǐng)求一多,服務(wù)器根本處理不過(guò)來(lái)。
?
另外,對(duì)于這種大型商用軟件,尤其用戶(hù)基數(shù)特別大的軟件。
它不可能說(shuō),要求必須是某某系統(tǒng),才能安裝吧?這不是在 “作死”嘛!
擺明就是想損失用戶(hù)。
因此,想這種大型商用軟件 對(duì)于 兼容性的要求,就很高。
巴不得什么設(shè)備都能裝它們的軟件,這些都是錢(qián)啊!
啊。不。這些都是衣食父母啊!!
?
接著,像QQ 和 微信 這種交流軟件,對(duì)于 可靠性的要求也很高。
總不能,我給 A 發(fā)消息,結(jié)果B收到了。
萬(wàn)一聊天內(nèi)容特別勁爆,發(fā)錯(cuò)人就很尷尬!
另外,聊著聊著就丟包,數(shù)據(jù)無(wú)法進(jìn)行傳輸,也是不好的。
?
同時(shí)對(duì) 可移植性 和 安全性 的要求,同樣也很高。
可移植性 體現(xiàn)在 我們?cè)趽Q手機(jī)之后,進(jìn)行軟件搬家的時(shí)候,把軟件從一個(gè)系統(tǒng)到另一個(gè)系統(tǒng)的難易程度。
?
對(duì)于安全性,這是最好理解。
每個(gè)人的聊天信息都屬于個(gè)人隱私,沒(méi)有人愿意說(shuō)給一個(gè)外人看。
另外,現(xiàn)在的 QQ號(hào)/微信 多數(shù)都是和游戲賬號(hào)綁定的。
如果QQ號(hào)被盜,那么這些綁定的“財(cái)產(chǎn)”也就沒(méi)了。
?
具體的設(shè)計(jì)測(cè)試用例的方法
等價(jià)類(lèi)
根據(jù)輸入(特殊情況下,才考慮輸出),把輸入劃分成若干個(gè)等價(jià)類(lèi),從每一個(gè)等價(jià)類(lèi)當(dāng)中選擇測(cè)試用例進(jìn)行測(cè)試。
如果這個(gè)測(cè)試用例,測(cè)試通過(guò)了。
我們就說(shuō)這個(gè)測(cè)試用例代表的等價(jià)類(lèi)測(cè)試通過(guò)。
我來(lái)舉個(gè)例子,幫助你們來(lái)了解 等價(jià)類(lèi)。
等價(jià)類(lèi),就是把同一個(gè)事物進(jìn)行劃分。
比如:
這里有 3只狗:哈士奇,阿拉斯加,薩摩耶,它們都是犬類(lèi)動(dòng)物,也就是狗吧?
此時(shí)我們就可以將它們劃分到 狗,這一類(lèi)里面。
那么,問(wèn)題就來(lái)了:狗這一類(lèi),難道只有這3種品種嗎?
答案肯定不是,種類(lèi)還有很多!
雖然種類(lèi)繁多,但是狗的習(xí)性基本是一致的。
我們可以通過(guò)對(duì) 幾只共性很強(qiáng)的狗 進(jìn)行試驗(yàn),而得出的結(jié)果基本上是可以代表絕大部分的犬類(lèi),
?
這也是 等價(jià)類(lèi) 目的:
通過(guò)將相同類(lèi)型的事物,劃分成一個(gè)類(lèi)(等價(jià)類(lèi))。
從中提出幾個(gè)典型的案例進(jìn)行測(cè)試,其測(cè)試的結(jié)果就能代表 這個(gè)等價(jià)類(lèi)中 的 絕大部分情況的測(cè)試結(jié)果。
簡(jiǎn)單來(lái)說(shuō):等價(jià)類(lèi)能夠幫助我們解決測(cè)試用例 無(wú)法進(jìn)行窮舉的情況
下面,我們?cè)賮?lái)舉個(gè)例子,了解一下 等價(jià)類(lèi)的應(yīng)用場(chǎng)景。
?
邊界值
不知道大家還記不記得:在 冒泡排序,選擇排序中,有兩層for循環(huán)。
忘記了的,可以參考這篇文章Common Sort - 常見(jiàn)的幾種排序 與 不常見(jiàn)的幾種排序
里面循環(huán)變量是從0開(kāi)始自增,但小于 length - 1的。
其實(shí)這里 array.length -1 ,就是邊界值,為了防止數(shù)組越界,導(dǎo)致代碼崩潰
而我們測(cè)試中的邊界值,是 輸入 和 輸出 的邊界。
我們要針對(duì) 輸入 和 輸出 的 邊界 進(jìn)行 測(cè)試用例的設(shè)計(jì)。
tips (建議):等價(jià)類(lèi) 和 邊界值 結(jié)合在一起進(jìn)行測(cè)試用例的設(shè)計(jì)。
因?yàn)?等價(jià)類(lèi) 的 測(cè)試用例中,就包含著 邊界值 測(cè)試用例。
只不過(guò)在等價(jià)類(lèi)中是分離開(kāi)的,有效等價(jià)類(lèi) 和 無(wú)效等價(jià)類(lèi)。
?
錯(cuò)誤 猜測(cè)法
注意!不是瞎猜!!!
而是根據(jù) 測(cè)試人員的經(jīng)驗(yàn) 和 知識(shí) 的 積累,來(lái)猜測(cè)某一塊功能有問(wèn)題。
隨后,有針對(duì)性的進(jìn)行測(cè)試用例的編寫(xiě)。
說(shuō)白了:就是程序員的經(jīng)驗(yàn)之談。
?
有的朋友可能就會(huì)有疑問(wèn):你覺(jué)得我像是有經(jīng)驗(yàn)的佬嘛。。。
其實(shí)!我們是有經(jīng)驗(yàn)的!!!
因?yàn)槲覀円恢痹谑褂酶鞣N APP,打游戲,聽(tīng)音樂(lè),看小說(shuō)等等。。。。
我們具有使用經(jīng)驗(yàn),也就是用戶(hù)體驗(yàn)軟件的經(jīng)驗(yàn)。
我們很容易就能 get 到 用戶(hù)的需求有哪些,因?yàn)槲覀円彩怯脩?hù)。
也就是說(shuō):我們至少擁有用戶(hù)的經(jīng)驗(yàn)。
而我們?nèi)鄙俚氖?#xff1a;站在測(cè)試的角度去看待需求的經(jīng)驗(yàn)。
錯(cuò)誤 猜測(cè)法,有點(diǎn)類(lèi)似于 探索性測(cè)試。
針對(duì)性比較強(qiáng),比較依賴(lài)測(cè)試人員個(gè)人的水平。
比如:
1、搜索查詢(xún)框 - 空格
在某個(gè) 軟件/網(wǎng)頁(yè) 中,搜索關(guān)鍵字的時(shí)候,而且這個(gè)關(guān)鍵字,在服務(wù)器的數(shù)據(jù)庫(kù)中是有對(duì)應(yīng)的數(shù)據(jù)的。
只要我們?cè)陉P(guān)鍵字的左右兩側(cè)敲一個(gè)空格(關(guān)鍵字 :“空格 + 奧特曼 + 空格”),就搜索不到。
因?yàn)檫@兩個(gè)空格,導(dǎo)致原本可以搜索到的數(shù)據(jù),現(xiàn)在搜索不到了。
在Java中,String類(lèi)型有一個(gè)方法 trim(),可以去除 字符串 前后的 空格。
由這個(gè)問(wèn)題引申出另外一個(gè)問(wèn)題:字符串中間的空格是否要去掉?
答案:不能!
中間的空格,一般是用戶(hù)刻意敲的,可能具有實(shí)際的意義。
而兩側(cè)的空格,可能是用戶(hù)誤敲的,沒(méi)有實(shí)際的意義。
?
2、搜索查詢(xún)出的信息:500條
每一頁(yè)展示 100 條,共展示5頁(yè)。
但是發(fā)現(xiàn)不同的頁(yè)面上有相同的數(shù)據(jù),數(shù)據(jù)ID也是一樣的。
一般查詢(xún)到的結(jié)果,是需要經(jīng)過(guò)排序的。
排序的條件,暫且忽略。反正,就是根據(jù)某種唯一的參數(shù)進(jìn)行排序。
比如:數(shù)據(jù)ID
?
下面我們來(lái)分析一下:
?
案例 - 水杯測(cè)試 - 培養(yǎng)的思維
這是一個(gè)在美團(tuán)面試中被提到的面試題。
PS:由于題目沒(méi)有給出 到底是那種水杯,牽扯的范圍很廣。
因此,我們這個(gè)案例不是 全面(覆蓋性不強(qiáng))。
?
場(chǎng)景設(shè)計(jì)法
很多軟件不同的場(chǎng)景, 都是基于不同事件的觸發(fā)。
不同事件的觸發(fā),會(huì)導(dǎo)致場(chǎng)景走向不同的 時(shí)間流 / 場(chǎng)景。
?
前面講的 錯(cuò)誤猜測(cè)法,等價(jià)類(lèi) 和 邊界值,都是針對(duì)某一個(gè)孤立的功能去進(jìn)行設(shè)計(jì)。
?
而場(chǎng)景設(shè)計(jì)法 就是把不同的功能點(diǎn) 給串起來(lái)了,形成一個(gè)場(chǎng)景。
需要注意的是:不同的功能點(diǎn)有不同的輸出,不同的輸出就會(huì)導(dǎo)致不同的測(cè)試場(chǎng)景。
下面,我們來(lái)通過(guò)一個(gè)例子來(lái)加深對(duì)場(chǎng)景設(shè)計(jì)法的理解。
場(chǎng)景分析法,還可以認(rèn)為是將一個(gè)功能集成模塊 給 拆分成一個(gè)個(gè)單獨(dú)功能模塊,進(jìn)行設(shè)計(jì)測(cè)試用例。
?
因果圖法
面試會(huì)問(wèn),但是在實(shí)際工作中用的很少。
即便是在工作中用到了,你可能都沒(méi)有意識(shí)到自己使用了因果圖法。
因果圖法,與其說(shuō)是 一種指導(dǎo)思想;
不如說(shuō)是:在我們經(jīng)過(guò)大量測(cè)試之后,具有了一定的測(cè)試經(jīng)驗(yàn),總結(jié)出來(lái)的 測(cè)試方法。
和前面 錯(cuò)誤猜測(cè)法 是類(lèi)似的,都是經(jīng)驗(yàn)之談。
首先,因果圖 是 一種邏輯圖,它具有 恒等,與,或,非 邏輯。
用因果圖來(lái)設(shè)計(jì)測(cè)試用例,就叫做因果圖法。
因果圖法的使用場(chǎng)景:
下面我們?cè)賮?lái)分析因果圖中所包含的那些邏輯。
下面我們來(lái)看一下:因果圖法 設(shè)計(jì)測(cè)試用例 的 步驟
1、分析出所有的輸入和輸出
‘2、找出輸入和輸出之間的組合關(guān)系
3、根據(jù)關(guān)系畫(huà)出因果圖
4、根據(jù)因果圖畫(huà)出判定表
5、根據(jù)判定表寫(xiě)出測(cè)試用例
‘?
下面我們來(lái)通過(guò)一個(gè)例子,來(lái)加深對(duì)這五個(gè)步驟的印象’
?
正交排列 - 了解即可
顧名思義:就是根據(jù)正交性來(lái)設(shè)計(jì)測(cè)試用例的。
它是從大量的實(shí)驗(yàn)(測(cè)試)數(shù)據(jù)中根據(jù)正交原則 取出最優(yōu)的數(shù)據(jù)的組合。
然后,根據(jù)最優(yōu)數(shù)據(jù)組合 實(shí)驗(yàn)的結(jié)果 來(lái)分析整個(gè)測(cè)試的結(jié)果。
?
詳細(xì)來(lái)說(shuō):
全稱(chēng)正交試驗(yàn)設(shè)計(jì)(Orthogonal experimentaldesign)是研究多因素多水平的一種設(shè)計(jì)方法,它是根據(jù)正交性,由試驗(yàn)因素的全部水平組合中挑選出部分有代表性的點(diǎn)進(jìn)行試驗(yàn),通過(guò)對(duì)這部分試驗(yàn)結(jié)果的分析了解全面試驗(yàn)的情況,找出最優(yōu)的水平組合。正交試驗(yàn)設(shè)計(jì)是一種基于正交表的、高效率、快速、經(jīng)濟(jì)的試驗(yàn)
?
因素(Factor):在一項(xiàng)試驗(yàn)(測(cè)試)中,凡欲考察的變量稱(chēng)為因素(變量)
水平(位級(jí))(Level):在試驗(yàn)(測(cè)試)范圍內(nèi),因素被考察的值稱(chēng)為水平(變量的取值)
正交排列的運(yùn)用場(chǎng)景
因果法設(shè)計(jì)用例太多怎么辦?
正交法的目的是為了減少用例數(shù)目。用盡量少的用例覆蓋輸入的兩兩組合。
正交表的構(gòu)成:
行數(shù)(Runs):正交表中的行的個(gè)數(shù),即試驗(yàn)的次數(shù),用N代表。
因素?cái)?shù)(Factors):正交表中列的個(gè)數(shù),用C代表。
水平數(shù)(Levels):任何單個(gè)因素能夠取得的值的最大個(gè)數(shù)。正交表中的包含的值為從0到數(shù)“水平數(shù)-1”或從1到“水平數(shù)”,用T代表。
正交表的表示形式: L=行數(shù)(水平數(shù)*因素?cái)?shù)) L=N(TC)
正交表的兩條性質(zhì):
每一列中各數(shù)字出現(xiàn)的次數(shù)都一樣多。
任何兩列中的各有序數(shù)對(duì)出現(xiàn)的次數(shù)都一樣多。
正交法設(shè)計(jì)測(cè)試用例的步驟:
1、有哪些因素(變量)
2、每個(gè)因素有哪幾個(gè)水平(變量的取值)
3、選擇一個(gè)合適的正交表
4、把變量的值映射到表中
5、把每一行的各因素水平的組合作為一個(gè)測(cè)試用例
6、加上你認(rèn)為可疑且沒(méi)有在表中出現(xiàn)的用例組合
案例:
繼續(xù)以注冊(cè)為例(類(lèi)似工具可以使用微軟的PICT工具):
1、因素:姓名、郵箱、密碼、確認(rèn)密碼、驗(yàn)證碼
2、水平:填寫(xiě)、不填寫(xiě)
3、表中的因素?cái)?shù)=5;
表中至每個(gè)因素?cái)?shù)的水平數(shù)=2
行數(shù)取最少的一個(gè),即試驗(yàn)次數(shù)最少的一個(gè)
L=N(TC)=(2-1)*5+1=6(25) N=Cx(T-1)+1
L=6(25)
N試驗(yàn)次數(shù)
T水平數(shù)
C因素?cái)?shù)
選擇正交表,這里選擇了L6_2_5。正交表不是隨便選擇的,而是設(shè)計(jì)好的
4、生成測(cè)試用例
思路:因素取值為填寫(xiě)時(shí):正交按取值個(gè)數(shù)5-3-2-1(5已全了,3,2,1任意排列)進(jìn)行排列,實(shí)驗(yàn)次
數(shù)不夠用取值為填寫(xiě)個(gè)數(shù)為2或3任意組合,但要滿(mǎn)足正交的二條性質(zhì)。
5、增補(bǔ)測(cè)試用例
姓名、郵箱、密碼、確認(rèn)密碼、驗(yàn)證碼都不填寫(xiě)
?
3、測(cè)試用例的有效性
1、測(cè)試用例對(duì)應(yīng)的功能已刪除,不可操作了。
這個(gè)測(cè)試用例沒(méi)有用了,沒(méi)有意義了。
微信剛出來(lái)時(shí)與QQ可互發(fā)消息,下一個(gè)版本后就不可以發(fā)消息。
2、執(zhí)行一條測(cè)試用例未發(fā)現(xiàn)BUG,實(shí)際該處有BUG
蘋(píng)果7手機(jī)微信添加了mobile單車(chē)小程序,掃碼不能開(kāi)鎖,只能使用mobile APP開(kāi)鎖,測(cè)試用例未涉及到蘋(píng)果7微信小程序掃碼開(kāi)鎖
測(cè)試遺漏 / 測(cè)試用例覆蓋率不高
換句話來(lái)說(shuō):就是測(cè)試用例的有效的范圍沒(méi)有包含到該情況。
4、執(zhí)行一條測(cè)試用例發(fā)現(xiàn)了BUG
蘋(píng)果7手機(jī)微信添加了mobile單車(chē)小程序,用例已寫(xiě)到了蘋(píng)果7微信添加mobile小程序掃碼開(kāi)鎖,問(wèn)題被發(fā)現(xiàn)。
測(cè)用用例的有效性的范圍包含了這個(gè)點(diǎn)。
5、執(zhí)行一條測(cè)試用例未發(fā)現(xiàn)BUG,實(shí)際該處BUG已修改
蘋(píng)果7手機(jī)微信添加了mobile單車(chē)小程序掃碼開(kāi)鎖,可以正常開(kāi)鎖。
測(cè)用用例的有效性的范圍包含了這個(gè)點(diǎn),并且實(shí)際效果達(dá)到了預(yù)期的效果。
?
4、測(cè)試用例的粒度和評(píng)價(jià) - 了解
測(cè)試用例的粒度
好的測(cè)試用例是一個(gè)不熟悉業(yè)務(wù)的人也能依據(jù)用例來(lái)很快的進(jìn)行測(cè)試
粒度:指測(cè)試用例編寫(xiě)的詳細(xì)程度.
測(cè)試用例可以寫(xiě)得很簡(jiǎn)單,也可以寫(xiě)得很復(fù)雜。最簡(jiǎn)單的測(cè)試用例是測(cè)試的綱要,僅僅指出要測(cè)試的內(nèi)容,如探索性測(cè)試中的測(cè)試設(shè)計(jì),僅會(huì)指出需要測(cè)試產(chǎn)品的哪些要素、需要達(dá)到的質(zhì)量目標(biāo)、需要使用的測(cè)試方法等。
而最復(fù)雜的測(cè)試用例就像飛機(jī)維修人員使用的工作指令卡一樣,會(huì)指定輸入的每項(xiàng)數(shù)據(jù),期待的結(jié)果及檢驗(yàn)的方法, 具體到界面元素的操作步驟,指定測(cè)試的方法和工具等。
(1)測(cè)試用例寫(xiě)得過(guò)于復(fù)雜或詳細(xì),會(huì)帶來(lái)兩個(gè)問(wèn)題:一個(gè)是效率問(wèn)題,另一個(gè)是維護(hù)成本問(wèn)題。另外,測(cè)試用例設(shè)計(jì)得過(guò)于詳細(xì),留給測(cè)試執(zhí)行人員的思考空間就比較少,容易限制測(cè)試人員的思維。
?
(2)測(cè)試用例寫(xiě)得過(guò)于簡(jiǎn)單,則可能失去了測(cè)試周例的意義。過(guò)于簡(jiǎn)單的測(cè)試用例設(shè)計(jì)其實(shí)并沒(méi)有進(jìn)行“設(shè)計(jì)”,只是把需要測(cè)試的功能模塊記錄下來(lái)而已,它的作用僅僅是在測(cè)試過(guò)程中作為一個(gè)簡(jiǎn)單的測(cè)試計(jì)劃,提醒測(cè)試人員測(cè)試的主要功能包括哪些而已。測(cè)試用例的設(shè)計(jì)的本質(zhì)應(yīng)該是在設(shè)計(jì)的過(guò)程中理解需求,檢驗(yàn)需求,并把對(duì)軟件系統(tǒng)的測(cè)試方法的思路記錄下來(lái),以便指導(dǎo)將來(lái)的測(cè)試。
?
大多數(shù)測(cè)試團(tuán)隊(duì)編寫(xiě)的測(cè)試用例的粒度介于兩者之間。而如何把握好粒度是測(cè)試用例設(shè)計(jì)的關(guān)鍵,也將影響測(cè)試用例設(shè)計(jì)的效率和效果。應(yīng)該根據(jù)項(xiàng)目的實(shí)際情況、測(cè)試資源情況來(lái)決定設(shè)計(jì)出怎樣粒度的測(cè)試用例。
?
主要考慮可以參考如下內(nèi)容:
產(chǎn)品的質(zhì)量要求
項(xiàng)目對(duì)用例的要求
測(cè)試時(shí)間和資源是否充分
但是不管用例怎么簡(jiǎn)化,都不應(yīng)該省略.
?
測(cè)試用例的評(píng)價(jià)
測(cè)試用例設(shè)計(jì)出來(lái)了,如何提高測(cè)試用例設(shè)計(jì)的質(zhì)量?就像軟件產(chǎn)品需要通過(guò)各種手段來(lái)保證質(zhì)量一樣,測(cè)試用例的質(zhì)量保證也需要綜合使用各種手段和方法。評(píng)審分為正式和非正式評(píng)審。
同行評(píng)審
用戶(hù)檢查
項(xiàng)目組評(píng)審
(1)測(cè)試用例的檢查可以有多種方式 但是最敏捷的應(yīng)當(dāng)屬臨時(shí)的同行評(píng)審。同行評(píng)審,尤其是臨時(shí)的同行評(píng)審,應(yīng)該演變成類(lèi)似結(jié)對(duì)編程一樣的方式。從而體現(xiàn)敏捷的“個(gè)體和交互比過(guò)程和工具更有價(jià)值”,要強(qiáng)調(diào)測(cè)試用例設(shè)計(jì)者之間的思想碰撞,通過(guò)討論、協(xié)作來(lái)完成測(cè)試用例的設(shè)計(jì),原因很簡(jiǎn)單,測(cè)試用例的目的是盡可能全面地覆蓋需求,而測(cè)試人員總會(huì)存在某方面的思維缺陷,一個(gè)人的思維總是存在局限性。因此需要一起設(shè)計(jì)測(cè)試用例。
?
(2)除了同行評(píng)審,還應(yīng)該盡量引入用戶(hù)參與到測(cè)試用例的設(shè)計(jì)中來(lái),讓用戶(hù)參與評(píng)審,從而體現(xiàn)敏捷的“顧客的協(xié)作比合同談判更有價(jià)值”這一原則。這里顧客的含義比較廣泛,關(guān)鍵在于如何定義測(cè)試,如果測(cè)試是對(duì)產(chǎn)品的批判,則顧客應(yīng)該指最終用戶(hù)或顧客代表(在內(nèi)部可以是市場(chǎng)人員或領(lǐng)域?qū)<?#xff09;;如果測(cè)試是被定義為對(duì)開(kāi)發(fā)提供幫助和支持,那么顧客顯然就是程序員了。
?
(3) 由測(cè)試負(fù)責(zé)人組織協(xié)調(diào)開(kāi)展會(huì)議,用例編寫(xiě)人對(duì)用例進(jìn)行講解,參會(huì)人員有異議的當(dāng)場(chǎng)提出。
?
實(shí)戰(zhàn)測(cè)試用例:百度云盤(pán)的測(cè)試用例 - 自己可以參考這個(gè)寫(xiě)一個(gè)。
百度云盤(pán)功能需求分析 - 粗略版
注意在文件傳輸模塊中,對(duì)于下載測(cè)試項(xiàng)中的 不同文件格式,我們并沒(méi)有說(shuō)清楚很模糊。
下面我們?cè)賮?lái)看一下,對(duì)它的補(bǔ)充、
?
非功能性測(cè)試
總結(jié)
以上是生活随笔為你收集整理的测试 - 用例篇 - 细节狂魔的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Latex符号对照表
- 下一篇: Python 接口并发测试详解