qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          測(cè)試用例設(shè)計(jì)規(guī)范

           1、引言

            測(cè)試設(shè)計(jì)遵循與軟件設(shè)計(jì)相同的工程原則。好的軟件設(shè)計(jì)包含幾個(gè)對(duì)測(cè)試設(shè)計(jì)進(jìn)行精心描述的階段。這些階段是:

            ● 測(cè)試策略

            ● 測(cè)試計(jì)劃

            ● 測(cè)試描述

            ● 測(cè)試過(guò)程

            上述四個(gè)測(cè)試設(shè)計(jì)階段適用于從單元測(cè)試系統(tǒng)測(cè)試各個(gè)層面的測(cè)試。

            測(cè)試設(shè)計(jì)由軟件設(shè)計(jì)說(shuō)明所驅(qū)動(dòng)。單元測(cè)試用于驗(yàn)證模塊單元實(shí)現(xiàn)了模塊設(shè)計(jì)中定義的規(guī)格。一個(gè)完整的單元測(cè)試說(shuō)明應(yīng)該包含正面測(cè)試(Positive Testing)和負(fù)面的測(cè)試(Negative Testing)。正面測(cè)試驗(yàn)證程序應(yīng)該執(zhí)行的工作,負(fù)面測(cè)試驗(yàn)證程序不應(yīng)該執(zhí)行的工作。

            設(shè)計(jì)富有創(chuàng)造性的測(cè)試用例是測(cè)試設(shè)計(jì)的關(guān)鍵。本文檔介紹了測(cè)試說(shuō)明的一般設(shè)計(jì)過(guò)程,描述了一些結(jié)構(gòu)化程序設(shè)計(jì)單元測(cè)試中采用的用例設(shè)計(jì)技術(shù),同時(shí)也增加了面向?qū)ο缶幊讨袑?duì)類進(jìn)行單元測(cè)試所采用的測(cè)試用例設(shè)計(jì)技術(shù),這些可作為軟件測(cè)試人員的參考閱讀資料。

            2、設(shè)計(jì)單元測(cè)試說(shuō)明

            一旦模塊單元設(shè)計(jì)完畢,下一個(gè)開(kāi)發(fā)階段就是設(shè)計(jì)單元測(cè)試。值得注意的是,如果在書(shū)寫(xiě)代碼之前設(shè)計(jì)測(cè)試,測(cè)試設(shè)計(jì)就會(huì)顯得更加靈活。一旦代碼完成,對(duì)軟件的測(cè)試可能會(huì)傾向于測(cè)試該段代碼在做什么(這根本不是真正的測(cè)試),而不是測(cè)試其應(yīng)該做什么。單元測(cè)試說(shuō)明實(shí)際上由一系列單元測(cè)試用例組成,每個(gè)測(cè)試用例應(yīng)該包含4 個(gè)關(guān)鍵元素:

            被測(cè)單元模塊初始狀態(tài)聲明,即測(cè)試用例的開(kāi)始狀態(tài)(僅適用于被測(cè)單元維持了調(diào)用間狀態(tài)的情況);

            被測(cè)單元的輸入,包含由被測(cè)單元讀入的任何外部數(shù)據(jù)值;

            該測(cè)試用例實(shí)際測(cè)試的代碼,用被測(cè)單元的功能和測(cè)試用例設(shè)計(jì)中使用的分析來(lái)說(shuō)明,如:?jiǎn)卧心囊粋€(gè)決策條件被測(cè)試;

            測(cè)試用例的期望輸出結(jié)果,測(cè)試用例的期望輸出結(jié)果總是應(yīng)該在測(cè)試進(jìn)行之前在測(cè)試說(shuō)明中定義。

            以下描述進(jìn)行測(cè)試用例設(shè)計(jì),書(shū)寫(xiě)測(cè)試說(shuō)明的7步通用過(guò)程。

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

            2.1.1 步驟1:首先使被測(cè)單元運(yùn)行

            任何單元測(cè)試說(shuō)明的第一個(gè)測(cè)試用例應(yīng)該是以一種可能的簡(jiǎn)單方法執(zhí)行被測(cè)單元。看到被測(cè)單元第一個(gè)測(cè)試用例的運(yùn)行成功可以增強(qiáng)人的自信心。如果不能正確執(zhí)行,最好選擇一個(gè)盡可能簡(jiǎn)單的輸入對(duì)被測(cè)單元進(jìn)行測(cè)試/調(diào)試。

            這個(gè)階段適合的技術(shù)有:

            ● 模塊設(shè)計(jì)導(dǎo)出的測(cè)試

            ● 對(duì)等區(qū)間劃分

            2.1.2 步驟2:正面測(cè)試(Positive Testing)

            正面測(cè)試的測(cè)試用例用于驗(yàn)證被測(cè)單元能夠執(zhí)行應(yīng)該完成的工作。測(cè)試設(shè)計(jì)者應(yīng)該查閱相關(guān)的設(shè)計(jì)說(shuō)明;每個(gè)測(cè)試用例應(yīng)該測(cè)試模塊設(shè)計(jì)說(shuō)明中一項(xiàng)或多項(xiàng)陳述。如果涉及多個(gè)設(shè)計(jì)說(shuō)明,最好使測(cè)試用例的序列對(duì)應(yīng)一個(gè)模塊單元的主設(shè)計(jì)說(shuō)明。

            適合的技術(shù):

            ● 設(shè)計(jì)說(shuō)明導(dǎo)出的測(cè)試

            ● 對(duì)等區(qū)間劃分

            ● 狀態(tài)轉(zhuǎn)換測(cè)試

          2.1.3 步驟3:負(fù)面測(cè)試(Negative Testing)

            負(fù)面測(cè)試用于驗(yàn)證軟件不執(zhí)行其不應(yīng)該完成的工作。這一步驟主要依賴于錯(cuò)誤猜測(cè),需要依靠測(cè)試設(shè)計(jì)者的經(jīng)驗(yàn)判斷可能出現(xiàn)問(wèn)題的位置。

            適合的技術(shù)有:

            ● 錯(cuò)誤猜測(cè)

            ● 邊界值分析

            ● 內(nèi)部邊界值測(cè)試

            ● 狀態(tài)轉(zhuǎn)換測(cè)試

            2.1.4 步驟4:設(shè)計(jì)需求中其它測(cè)試特性用例設(shè)計(jì)

            如果需要,應(yīng)該針對(duì)性能、余量、安全需要、保密需求等設(shè)計(jì)測(cè)試用例。

            在有安全保密需求的情況下,重視安全保密分析和驗(yàn)證是方便的。針對(duì)安全保密問(wèn)題的測(cè)試用例應(yīng)該在測(cè)試說(shuō)明中進(jìn)行標(biāo)注。同時(shí)應(yīng)該加入更多的測(cè)試用例測(cè)試所有的保密和安全冒險(xiǎn)問(wèn)題。

            適合的技術(shù):設(shè)計(jì)說(shuō)明導(dǎo)出的測(cè)試

            2.1.5 步驟5:覆蓋率測(cè)試用例設(shè)計(jì)

            應(yīng)該或已有測(cè)試用例所達(dá)到的代碼覆蓋率。應(yīng)該增加更多的測(cè)試用例到單元測(cè)試說(shuō)明中以達(dá)到特定測(cè)試的覆蓋率目標(biāo)。一旦覆蓋測(cè)試設(shè)計(jì)好,就可以構(gòu)造測(cè)試過(guò)程和執(zhí)行測(cè)試。覆蓋率測(cè)試一般要求語(yǔ)句覆蓋率和判斷覆蓋率。

            適合的技術(shù):

            ● 分支測(cè)試

            ● 條件測(cè)試

            ● 數(shù)據(jù)定義-使用測(cè)試

            ● 狀態(tài)轉(zhuǎn)換測(cè)試

            2.1.6 步驟6:測(cè)試執(zhí)行

            使用上述5個(gè)步驟設(shè)計(jì)的測(cè)試說(shuō)明在大多少情況下可以實(shí)現(xiàn)一個(gè)比較完整的單元測(cè)試。

            到這一步,就可以使用測(cè)試說(shuō)明構(gòu)造實(shí)際的測(cè)試過(guò)程和用于執(zhí)行測(cè)試的測(cè)試過(guò)程。該測(cè)試過(guò)程可能是特定測(cè)試工具的一個(gè)測(cè)試腳本。

            測(cè)試過(guò)程的執(zhí)行可以查出模塊單元的錯(cuò)誤,然后進(jìn)行修復(fù)和重新測(cè)試。在測(cè)試過(guò)程中的動(dòng)態(tài)分析可以產(chǎn)生代碼覆蓋率測(cè)量值,以指示覆蓋目標(biāo)已經(jīng)達(dá)到。因此需要在測(cè)試設(shè)計(jì)說(shuō)明中需要增加一個(gè)完善代碼覆蓋率的步驟。

            2.1.7 步驟7:完善代碼覆蓋

            由于模塊單元的設(shè)計(jì)文檔規(guī)范不一,測(cè)試設(shè)計(jì)中可能引入人為的錯(cuò)誤,測(cè)試執(zhí)行后,復(fù)雜的決策條件、循環(huán)和分支的覆蓋率目標(biāo)可能并沒(méi)有達(dá)到,這時(shí)需要進(jìn)行分析找出原因,導(dǎo)致一些重要執(zhí)行路徑?jīng)]有被覆蓋的可能原因有:

            不可行路徑或條件——應(yīng)該標(biāo)注測(cè)試說(shuō)明證明該路徑或條件沒(méi)有測(cè)試的原因。

          不可到達(dá)或冗余代碼——正確處理方法是刪除這種代碼。這種分析容易出錯(cuò),特別是使用防衛(wèi)式程序設(shè)計(jì)技術(shù)(Defensive Programming Techniques)時(shí),如有疑義,這些防衛(wèi)性程序代碼就不要?jiǎng)h除。

            測(cè)試用例不足——應(yīng)該重新提煉測(cè)試用例,設(shè)計(jì)更多的測(cè)試用例添加到測(cè)試說(shuō)明中以覆蓋沒(méi)有執(zhí)行過(guò)的路徑

            理想情況下,覆蓋完善階段應(yīng)該在不閱讀實(shí)際代碼的情況下進(jìn)行。然而,實(shí)際上,為達(dá)到覆蓋率目標(biāo),看一下實(shí)際代碼也是需要的。覆蓋完善步驟的重要程度相對(duì)小一些。最有效的測(cè)試來(lái)自于分析和說(shuō)明,而不是來(lái)自于試驗(yàn),依賴覆蓋完善步驟補(bǔ)充一份不好的測(cè)試設(shè)計(jì)。

            適合的技術(shù):

            ● 分支測(cè)試

            ● 條件測(cè)試

            ● 設(shè)計(jì)定義——試驗(yàn)測(cè)試

            ● 狀態(tài)轉(zhuǎn)換測(cè)試

            2.2 用例設(shè)計(jì)的一般原則

            注意到前面產(chǎn)生測(cè)試說(shuō)明步驟可以用下面的方法完成:

            通常應(yīng)該避免依賴先前測(cè)試用例的輸出,測(cè)試用例的執(zhí)行序列早期發(fā)現(xiàn)的錯(cuò)誤可能導(dǎo)致其他的錯(cuò)誤而減少測(cè)試執(zhí)行時(shí)實(shí)際測(cè)試的代碼量;

            測(cè)試用例設(shè)計(jì)過(guò)程中,包括作為試驗(yàn)執(zhí)行這些測(cè)試用例時(shí),常常可以在軟件構(gòu)建前就發(fā)現(xiàn)BUG。還有可能在測(cè)試設(shè)計(jì)階段比測(cè)試執(zhí)行階段發(fā)現(xiàn)更多的BUG。

            在整個(gè)單元測(cè)試設(shè)計(jì)中,主要的輸入應(yīng)該是被測(cè)單元的設(shè)計(jì)文檔。在某些情況下,

            需要將試驗(yàn)實(shí)際代碼作為測(cè)試設(shè)計(jì)過(guò)程的輸入,測(cè)試設(shè)計(jì)者必須意識(shí)到不是在測(cè)試代碼本身。從代碼構(gòu)建出來(lái)的測(cè)試說(shuō)明只能證明代碼執(zhí)行代碼完成的工作,而不是代碼應(yīng)該完成的工作。

            3、測(cè)試用例設(shè)計(jì)技術(shù)

            廣義地分為兩類:

            黑盒測(cè)試:使用單元接口和功能描述,不需了解被測(cè)單元的內(nèi)部結(jié)構(gòu)

            白盒測(cè)試:使用被測(cè)單元內(nèi)部如何工作的信息

            灰盒測(cè)試:借助于源代碼和測(cè)試工具等手段,通過(guò)黑盒和白盒測(cè)試相結(jié)合的方法進(jìn)行測(cè)試的技術(shù)。

            測(cè)試設(shè)計(jì)最重要的因素是經(jīng)驗(yàn)和常識(shí)。測(cè)試設(shè)計(jì)者不應(yīng)該讓某種測(cè)試技術(shù)阻礙經(jīng)驗(yàn)和常識(shí)的運(yùn)用。

            白盒測(cè)試用例設(shè)計(jì):使用程序設(shè)計(jì)的控制結(jié)構(gòu)導(dǎo)出測(cè)試用例。

            采用白盒測(cè)試的目的主要是:保證一個(gè)模塊中的所有獨(dú)立路徑至少被執(zhí)行一次;對(duì)所有的邏輯值均需要測(cè)試真、假兩個(gè)分支;在上下邊界及可操作范圍內(nèi)運(yùn)行所有循環(huán);檢查內(nèi)部數(shù)據(jù)結(jié)構(gòu)以確保其有效性。

            黑盒測(cè)試用例設(shè)計(jì):使用詳細(xì)設(shè)計(jì)導(dǎo)出測(cè)試用例。

            采用黑盒測(cè)試的目的主要是:檢查功能是否實(shí)現(xiàn)或遺漏;檢查人機(jī)界戶是否錯(cuò)誤;數(shù)據(jù)結(jié)構(gòu)或外部數(shù)據(jù)庫(kù)訪問(wèn)錯(cuò)誤;性能等其它特性要求是否滿足;初始化盒終止錯(cuò)誤。

          posted on 2011-10-21 14:50 順其自然EVO 閱讀(415) 評(píng)論(0)  編輯  收藏 所屬分類: 測(cè)試學(xué)習(xí)專欄

          <2011年10月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 新疆| 湛江市| 丹阳市| 龙岩市| 横峰县| 清原| 昭平县| 河北区| 浠水县| 景洪市| 兰溪市| 巫溪县| 尚志市| 鹤山市| 周口市| 定陶县| 临夏市| 岳西县| 永德县| 清远市| 堆龙德庆县| 米林县| 尼勒克县| 定州市| 西乌珠穆沁旗| 鱼台县| 阳西县| 益阳市| 黑河市| 杭州市| 台东市| 株洲市| 郯城县| 额尔古纳市| 洪洞县| 理塘县| 秦皇岛市| 东兴市| 独山县| 香河县| 淮滨县|