qileilove

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

          軟件測(cè)試中用正交實(shí)驗(yàn)法設(shè)計(jì)測(cè)試用例

          軟件測(cè)試中用正交實(shí)驗(yàn)法設(shè)計(jì)測(cè)試用例

          正交實(shí)驗(yàn)法的由來(lái)

          一、正交表的由來(lái)

          拉丁方名稱(chēng)的由來(lái)

          古希臘是一個(gè)多民族的國(guó)家,國(guó)王在檢閱臣民時(shí)要求每個(gè)方隊(duì)中每行有一個(gè)民族代表,每列也要有一個(gè)民族的代表。

          數(shù)學(xué)家在設(shè)計(jì)方陣時(shí),以每一個(gè)拉丁字母表示一個(gè)民族,所以設(shè)計(jì)的方陣稱(chēng)為拉丁方。

          什么是n階拉丁方?

          用n個(gè)不同的拉丁字母排成一個(gè)n階方陣(n<26 ),如果每行的n個(gè)字母均不相同,每列的n個(gè)字母均不相同,則稱(chēng)這種方陣為n*n拉丁方或n階拉丁方。每個(gè)字母在任一行、任一列中只出現(xiàn)一次。

          什么是正交拉丁方?

          設(shè)有兩個(gè)n階的拉丁方,如果將它們疊合在一起,恰好出現(xiàn)n2個(gè)不同的有序數(shù)對(duì),則稱(chēng)為這兩個(gè)拉丁方為互相正交的拉丁方,簡(jiǎn)稱(chēng)正交拉丁方。

          例如:3階拉丁方

          軟件測(cè)試中用正交實(shí)驗(yàn)法設(shè)計(jì)測(cè)試用例

          用數(shù)字替代拉丁字母:

          軟件測(cè)試中用正交實(shí)驗(yàn)法設(shè)計(jì)測(cè)試用例

          二、正交實(shí)驗(yàn)法

          正交試驗(yàn)設(shè)計(jì)(Orthogonal experimental design)是研究多因素多水平的又一種設(shè)計(jì)方法,它是根據(jù)正交性從全面試驗(yàn)中挑選出部分有代表性的點(diǎn)進(jìn)行試驗(yàn),這些有代表性的點(diǎn)具備了“均勻分散,齊整可比”的特點(diǎn),正交試驗(yàn)設(shè)計(jì)是分式析因設(shè)計(jì)的主要方法。是一種高效率、快速、經(jīng)濟(jì)的實(shí)驗(yàn)設(shè)計(jì)方法。

          日本著名的統(tǒng)計(jì)學(xué)家田口玄一將正交試驗(yàn)選擇的水平組合列成表格,稱(chēng)為正交表。例如作一個(gè)三因素三水平的實(shí)驗(yàn),按全面實(shí)驗(yàn)要求,須進(jìn)行33=27種組 合的實(shí)驗(yàn),且尚未考慮每一組合的重復(fù)數(shù)。若按L9(33) 正交表按排實(shí)驗(yàn),只需作9次,按L18(37) 正交表進(jìn)行18次實(shí)驗(yàn),顯然大大減少了工作量。因而正交實(shí)驗(yàn)設(shè)計(jì)在很多領(lǐng)域的研究中已經(jīng)得到廣泛應(yīng)用。

          利用因果圖來(lái)設(shè)計(jì)測(cè)試用例時(shí), 作為輸入條件的原因與輸出結(jié)果之間的因果關(guān)系,有時(shí)很難從軟件需求規(guī)格說(shuō)明中得到。往往因果關(guān)系非常龐大,以至于據(jù)此因果圖而得到的測(cè)試用例數(shù)目多的驚人,給軟件測(cè)試帶來(lái)沉重的負(fù)擔(dān),為了有效地,合理地減少測(cè)試的工時(shí)與費(fèi)用,可利用正交實(shí)驗(yàn)設(shè)計(jì)方法進(jìn)行測(cè)試用例的設(shè)計(jì)。

          正交實(shí)驗(yàn)設(shè)計(jì)方法:依據(jù)Galois理論,從大量的(實(shí)驗(yàn))數(shù)據(jù)(測(cè)試?yán)┲刑暨x適量的、有代表性的點(diǎn)(例),從而合理地安排實(shí)驗(yàn)(測(cè)試)的一種科學(xué)實(shí)驗(yàn)設(shè)計(jì)方法。類(lèi)似的方法有:聚類(lèi)分析方法、因子方法方法等。

          三、利用正交實(shí)驗(yàn)設(shè)計(jì)測(cè)試用例的步驟:

          (1)提取功能說(shuō)明,構(gòu)造因子--狀態(tài)表

          把影響實(shí)驗(yàn)指標(biāo)的條件稱(chēng)為因子,而影響實(shí)驗(yàn)因子的條件叫因子的狀態(tài)。

          利用正交實(shí)驗(yàn)設(shè)計(jì)方法來(lái)設(shè)計(jì)測(cè)試用例時(shí),首先要根據(jù)被測(cè)試軟件的規(guī)格說(shuō)明書(shū)找出影響其功能實(shí)現(xiàn)的操作對(duì)象和外部因素,把他們當(dāng)作因子;而把各個(gè)因子 的取值當(dāng)作狀態(tài)。對(duì)軟件需求規(guī)格說(shuō)明中的功能要求進(jìn)行劃分,把整體的、概要性的功能要求進(jìn)行層層分解與展開(kāi),分解成具體的有相對(duì)獨(dú)立性的、基本的功能要 求。這樣就可以把被測(cè)試軟件中所有的因子都確定下來(lái),并為確定每個(gè)因子的權(quán)值提供參考的依據(jù)。確定因子與狀態(tài)是設(shè)計(jì)測(cè)試用例的關(guān)鍵。因此要求盡可能全面 的、正確的確定取值,以確保測(cè)試用例的設(shè)計(jì)作到完整與有效。

          (2)加權(quán)篩選,生成因素分析表

          對(duì)因子與狀態(tài)的選擇可按其重要程度分別加權(quán)??筛鶕?jù)各個(gè)因子及狀態(tài)的作用大小、出現(xiàn)頻率的大小以及測(cè)試的需要,確定權(quán)值的大小。

          (3)利用正交表構(gòu)造測(cè)試數(shù)據(jù)集

          利用正交實(shí)驗(yàn)設(shè)計(jì)方法設(shè)計(jì)測(cè)試用例,比使用等價(jià)類(lèi)劃分、邊界值分析、因果圖等方法有以下優(yōu)點(diǎn):節(jié)省測(cè)試工作工時(shí);可控制生成的測(cè)試用例數(shù)量;測(cè)試用例具有一定的覆蓋率。

          在使用正交實(shí)驗(yàn)法時(shí),要考慮到被測(cè)系統(tǒng)中要準(zhǔn)備測(cè)試的功能點(diǎn),而這些功能點(diǎn)就是要獲取的因子或因素,但每個(gè)功能點(diǎn)要輸入的數(shù)據(jù)按等價(jià)類(lèi)劃分有多個(gè),也就是每個(gè)因素的輸入條件,即狀態(tài)或水平值。

          四、正交表的構(gòu)成

          行數(shù)(Runs):正交表中的行的個(gè)數(shù),即試驗(yàn)的次數(shù),也是我們通過(guò)正交實(shí)驗(yàn)法設(shè)計(jì)的測(cè)試用例的個(gè)數(shù)。

          因素?cái)?shù)(Factors) :正交表中列的個(gè)數(shù),即我們要測(cè)試的功能點(diǎn)。

          水平數(shù)(Levels):任何單個(gè)因素能夠取得的值的最大個(gè)數(shù)。正交表中的包含的值為從0到數(shù)“水平數(shù)-1”或從1到“水平數(shù)” 。即要測(cè)試功能點(diǎn)的輸入條件。

          正交表的形式:

          L行數(shù)(水平數(shù)因素?cái)?shù))

          如:L8(27)

          軟件測(cè)試中用正交實(shí)驗(yàn)法設(shè)計(jì)測(cè)試用例

          五、正交表的正交性

          整齊可比性

          在同一張正交表中,每個(gè)因素的每個(gè)水平出現(xiàn)的次數(shù)是完全相同的。由于在試驗(yàn)中每個(gè)因素的每個(gè)水平與其它因素的每個(gè)水平參與試驗(yàn)的機(jī)率是完全相同的,這就保證在各個(gè)水平中最大程度的排除了其它因素水平的干擾。因而,能最有效地進(jìn)行比較和作出展望,容易找到好的試驗(yàn)條件。

          均衡分散性

          在同一張正交表中,任意兩列(兩個(gè)因素)的水平搭配(橫向形成的數(shù)字對(duì))是完全相同的。這樣就保證了試驗(yàn)條件均衡地分散在因素水平的完全組合之中,,因而具有很強(qiáng)的代表性,容易得到好的試驗(yàn)條件。

          用正交實(shí)驗(yàn)法設(shè)計(jì)測(cè)試用例

          以上介紹了正交實(shí)驗(yàn)法的由來(lái)。怎么用正交實(shí)驗(yàn)法進(jìn)行用例的設(shè)計(jì)呢?

          一、用正交表設(shè)計(jì)測(cè)試用例的步驟

          (1) 有哪些因素(變量)

          (2) 每個(gè)因素有哪幾個(gè)水平(變量的取值)

          (3) 選擇一個(gè)合適的正交表

          (4) 把變量的值映射到表中

          (5) 把每一行的各因素水平的組合做為一個(gè)測(cè)試用例

          (6) 加上你認(rèn)為可疑且沒(méi)有在表中出現(xiàn)的組合

          二、如何選擇正交表

          • 考慮因素(變量)的個(gè)數(shù)
          • 考慮因素水平(變量的取值)的個(gè)數(shù)
          • 考慮正交表的行數(shù)
          • 取行數(shù)最少的一個(gè)

          三、設(shè)計(jì)測(cè)試用例時(shí)的三種情況

          (1)因素?cái)?shù)(變量)、水平數(shù)(變量值)相符

          (2)因素?cái)?shù)不相同

          (3)水平數(shù)不相同

          四、我們來(lái)看看第一種情況:

          (1)因素?cái)?shù)與水平數(shù)剛好符合正交表

          我們舉個(gè)例子:

          軟件測(cè)試中用正交實(shí)驗(yàn)法設(shè)計(jì)測(cè)試用例

          這是個(gè)人信息查詢(xún)系統(tǒng)中的一個(gè)窗口。我們可以看到要測(cè)試的控件有3個(gè):姓名、身份證號(hào)碼、手機(jī)號(hào)碼,也就是要考慮的因素有三個(gè);而每個(gè)因素里的狀態(tài)有兩個(gè):填與不填。

          選擇正交表時(shí)分析一下:

          1、表中的因素?cái)?shù)>=3;

          2、表中至少有3個(gè)因素?cái)?shù)的水平數(shù)>=2;

          3、行數(shù)取最少的一個(gè)。

          從正交表公式中開(kāi)始查找,結(jié)果為:

          L4(23)

          變量映射:

          軟件測(cè)試中用正交實(shí)驗(yàn)法設(shè)計(jì)測(cè)試用例

          測(cè)試用例如下:

          1:填寫(xiě)姓名、填寫(xiě)身份證號(hào)、填寫(xiě)手機(jī)號(hào)

          2:填寫(xiě)姓名、不填身份證號(hào)、不填手機(jī)號(hào)

          3:不填姓名、填寫(xiě)身份證號(hào)、不填手機(jī)號(hào)

          4:不填姓名、不填身份證號(hào)、填寫(xiě)手機(jī)號(hào)

          增補(bǔ)測(cè)試用例

          5:不填姓名、不填身份證號(hào)、不填手機(jī)號(hào)

          從測(cè)試用例可以看出:如果按每個(gè)因素兩個(gè)水平數(shù)來(lái)考慮的話,需要8個(gè)測(cè)試用例,而通過(guò)正交實(shí)驗(yàn)法進(jìn)行的測(cè)試用例只有5個(gè),大大減少了測(cè)試用例數(shù)。用最小的測(cè)試用例集合去獲取最大的測(cè)試覆蓋率。

          (2)因素?cái)?shù)不相同

          如果因素?cái)?shù)不同的話,可以采用包含的方法,在正交表公式中找到包含該情況的公式,如果有N個(gè)符合條件的公式,那么選取行數(shù)最少的公式。

          (3)水平數(shù)不相同

          采用包含和組合的方法選取合適的正交表公式。

          正交實(shí)驗(yàn)法的又一個(gè)例子

          上面就正交實(shí)驗(yàn)法進(jìn)行了講解,現(xiàn)在再拿PowerPoint軟件打印功能作為例子,希望能為大家更好地理解給方法的具體應(yīng)用

          假設(shè)功能描述如下:

          • 打印范圍分:全部、當(dāng)前幻燈片、給定范圍 共三種情況;
          • 打印內(nèi)容分:幻燈片、講義、備注頁(yè)、大綱視圖 共四種方式;
          • 打印顏色/灰度分: 顏色、灰度、黑白 共三種設(shè)置;
          • 打印效果分:幻燈片加框和幻燈片不加框兩種方式。

          因素狀態(tài)表:

          MILY: 宋體">狀態(tài)/因素

          A打印范圍

          B打印內(nèi)容

          C打印顏色/灰度

          D打印效果

          0

          全部

          幻燈片

          顏色

          幻燈片加框

          1

          當(dāng)前幻燈片

          講義

          灰度

          幻燈片不加框

          2

          給定范圍

          備注頁(yè)

          黑白

           

          3

           

          大綱視圖

           

           

          我們先將中文字轉(zhuǎn)換成字母,便于設(shè)計(jì)。得到:

          因素狀態(tài)表:

          狀態(tài)/因素

          A

          B

          C

          D

          0

          A1

          B1

          C1

          D1

          1

          A2

          B2

          C2

          D2

          2

          A3

          B3

          C3

           

          3

           

          B4

           

           

          我們分析一下:

          被測(cè)項(xiàng)目中一共有四個(gè)被測(cè)對(duì)象,每個(gè)被測(cè)對(duì)象的狀態(tài)都不一樣。

          選擇正交表:

          1、表中的因素?cái)?shù)>=4

          2、表中至少有4個(gè)因素的水平數(shù)>=2

          3、行數(shù)取最少的一個(gè)

          最后選中正交表公式:

          L16(45)

          正交矩陣為:

            1 2 3 4 5
          1 0 0 0 0 0
          2 0 1 1 1 1
          3 0 2 2 2 2
          4 0 3 3 3 3
          5 1 0 1 2 3
          6 1 1 0 3 2
          7 1 2 3 0 1
          8 1 3 2 1 0
          9 2 0 2 3 1
          10 2 1 3 2 0
          11 2 2 0 1 3
          12 2 3 1 0 2
          13 3 0 3 1 2
          14 3 1 2 0 3
          15 3 2 1 3 0
          16 3 3 0 2 1

          用字母替代正交矩陣:

            1 2 3 4 5
          1 A1 B1 C1 D1 0
          2 A1 B2 C2 D2 1
          3 A1 B3 C3 2 2
          4 A1 B4 3 3 3
          5 A2 B1 C2 2 3
          6 A2 B2 C1 3 2
          7 A2 B3 3 D1 1
          8 A2 B4 C3 D2 0
          9 A3 B1 C3 3 1
          10 A3 B2 3 2 0
          11 A3 B3 C1 D2 3
          12 A3 B4 C2 D1 2
          13 3 B1 3 D2 2
          14 3 B2 C3 D1 3
          15 3 B3 C2 3 0
          16 3 B4 C1 2 1

          posted @ 2011-10-14 11:33 順其自然EVO| 編輯 收藏

          如何有效減少測(cè)試用例數(shù)目

            在測(cè)試過(guò)程中,測(cè)試人員經(jīng)常需要將測(cè)試對(duì)象的各種輸入?yún)?shù)進(jìn)行組合之后進(jìn)行測(cè)試。有時(shí)候,將各種輸入?yún)?shù)進(jìn)行組合,得到的測(cè)試用例數(shù)目將是非常龐大的。由于測(cè)試時(shí)間和成本的限制,無(wú)法對(duì)測(cè)試對(duì)象輸入值的所有組合進(jìn)行測(cè)試。下面是某個(gè)網(wǎng)站測(cè)試的要求:

            ------------案例描述:開(kāi)始-------------

            某網(wǎng)站需要支持

            ● 不同的瀏覽器:IE5.0、IE5.5、IE6.0、Netscape6.0、Netscape6.1、Netscape7.0、Mozilla1.1和Opera7;

            ● 不同的插件:RealPlayer、MediaPlayer或者沒(méi)有任何插件None;

            ● 不同的客戶(hù)端操作系統(tǒng):Windows95、Windows98、WindowsME、、WindowsNT、Windows2000和WindowsXP;

            ● 不同的Web服務(wù)器軟件:IIS、Apache和WebLogic;

            ● 不同的服務(wù)器端操作系統(tǒng):WindowsNT、Windows2000和Linux

            這種情況下,需要針對(duì)不同的組合進(jìn)行測(cè)試:

            ● 8種瀏覽器

            ● 3種插件

            ● 6種客戶(hù)端操作系統(tǒng)

            ● 3種Web服務(wù)器軟件

            ● 3種服務(wù)器端操作系統(tǒng)

            如果考慮所有參數(shù)不同取值的組合,那么需要設(shè)計(jì)和執(zhí)行的測(cè)試用例的數(shù)目是1296(8 x 3 x 6 x 3 x 3 = 1296)。

            ------------案例描述:結(jié)束-------------

            在軟件測(cè)試過(guò)程中,這種類(lèi)型的組合是非常普遍的。每種情形都可能有龐大的組合需要進(jìn)行測(cè)試,假如不對(duì)它們進(jìn)行測(cè)試,可能會(huì)存在較大的風(fēng)險(xiǎn);而如果對(duì)所有組合進(jìn)行測(cè)試,測(cè)試時(shí)間和資源又不允許。測(cè)試人員在面對(duì)這種情況的時(shí)候,可以采用以下幾種常用的策略:

            ● 嘗試測(cè)試所有輸入的組合,延期項(xiàng)目,導(dǎo)致的后果可能是失去產(chǎn)品的市場(chǎng)。

            ● 選擇一些容易設(shè)計(jì)和執(zhí)行的測(cè)試用例,而忽略其是否能夠提供產(chǎn)品質(zhì)量的信息。

            ● 羅列所有的組合,并隨機(jī)選擇其中的子集進(jìn)行測(cè)試。

            ● 采取特殊的測(cè)試技術(shù),選擇能發(fā)現(xiàn)大部分缺陷的子集進(jìn)行測(cè)試。

             如果采用最后一個(gè)策略,那么使用結(jié)對(duì)測(cè)試技術(shù)是一個(gè)很好的選擇。采用結(jié)對(duì)測(cè)試的技術(shù),測(cè)試并不針對(duì)輸入值的所有組合進(jìn)行測(cè)試,而只是針對(duì)所有輸入值的兩 兩組合。結(jié)對(duì)測(cè)試技術(shù)可以顯著地減少測(cè)試用例的數(shù)目,同時(shí)保證較高的測(cè)試質(zhì)量。下面是應(yīng)用結(jié)對(duì)測(cè)試技術(shù)減少測(cè)試用例數(shù)目的例子:

            ● 假如軟件系統(tǒng)有四個(gè)不同的輸入?yún)?shù),每個(gè)參數(shù)有3個(gè)不同的輸入值,得到的完全組合數(shù)目是34即81。假如采用結(jié)對(duì)測(cè)試的技術(shù),只需要9個(gè)測(cè)試用例即可覆蓋所有參數(shù)的兩兩組合。

            ● 假如軟件系統(tǒng)有13個(gè)不同的輸入?yún)?shù),每個(gè)參數(shù)有3個(gè)不同的輸入值,得到的完全組合數(shù)目是313即1594323。假如采用結(jié)對(duì)測(cè)試的技術(shù),只需要15個(gè)測(cè)試用例即可覆蓋所有參數(shù)的兩兩組合。

            ● 假如軟件系統(tǒng)有20個(gè)不同的輸入?yún)?shù),每個(gè)參數(shù)有10個(gè)不同的輸入值,得到的完全組合數(shù)目是1020。假如采用結(jié)對(duì)測(cè)試的技術(shù),只需要180個(gè)測(cè)試用例即可覆蓋所有參數(shù)的兩兩組合。

            結(jié)對(duì)測(cè)試技術(shù)能夠發(fā)現(xiàn)所有的單模式失效(Single-mode Fault)和雙模式失效(Double-mode Fault)。但是,結(jié)對(duì)測(cè)試并不一定適合于發(fā)現(xiàn)測(cè)試對(duì)象中的多模式失效(Multimode Fault)。

            ● 單模式失效:失效是由單個(gè)參數(shù)引起的,只要針對(duì)所有獨(dú)立參數(shù)進(jìn)行測(cè)試,就能夠發(fā)現(xiàn)該失效。

            ● 雙模式缺陷:失效是由兩個(gè)參數(shù)共同引起的,必須針對(duì)所有參數(shù)的兩兩組合進(jìn)行測(cè)試,才能夠確保發(fā)現(xiàn)此類(lèi)缺陷。

            ● 多模式缺陷:失效是由三個(gè)或三個(gè)以上參數(shù)共同引起的,采用結(jié)對(duì)測(cè)試技術(shù)也可能發(fā)現(xiàn)多模式缺陷,但是不能保證測(cè)試的充分性。

            下面的幾個(gè)數(shù)據(jù)可以說(shuō)明結(jié)對(duì)測(cè)試技術(shù)的有效性:

            ● 根據(jù)AT&T在對(duì)其基于局域網(wǎng)的郵件系統(tǒng)進(jìn)行的測(cè)試中,應(yīng)用結(jié)對(duì)測(cè)試技術(shù)得到的1000條測(cè)試用例比其原有的1500條測(cè)試用例多發(fā)現(xiàn)了20%的缺陷,而測(cè)試工作量卻減少了50%。

            ● National Institute of Standards and Technology在一項(xiàng)對(duì)醫(yī)療設(shè)備測(cè)試所進(jìn)行的15年追蹤中發(fā)現(xiàn),有98%的軟件缺陷可以通過(guò)結(jié)對(duì)測(cè)試技術(shù)發(fā)現(xiàn)。

            ● 根據(jù)對(duì)Mozilla網(wǎng)頁(yè)瀏覽器的缺陷分析顯示,76%的缺陷可以通過(guò)結(jié)對(duì)測(cè)試技術(shù)發(fā)現(xiàn)。

            具體的結(jié)對(duì)測(cè)試,可以通過(guò)不同的測(cè)試技術(shù)來(lái)得到,包括正交矩陣(Orthogonal Arrays)的方法、James Bach提供的Allpairs方法,也可以通過(guò)分類(lèi)樹(shù)方法。表1得到的測(cè)試用例是通過(guò)Allpairs方法實(shí)現(xiàn)的,詳細(xì)的內(nèi)容以及其他測(cè)試技術(shù)的實(shí)現(xiàn)方 法,可以參考《軟件測(cè)試設(shè)計(jì)》原著。

          圖1 使用Allpairs得到的測(cè)試數(shù)據(jù)

            假如測(cè)試數(shù)據(jù)列表中的某個(gè)參數(shù)的取值以~開(kāi)頭,那么說(shuō)明該參數(shù)取值已經(jīng)有兩兩組合了。以~開(kāi)頭的參數(shù)取值,可以用該 參數(shù)的任何其他取值來(lái)代替,而不會(huì)影響其兩兩組合的覆蓋率。因此,可以將以~開(kāi)頭的參數(shù)取值,用更關(guān)鍵的或者經(jīng)常使用的參數(shù)值來(lái)代替。同時(shí),使用 Allpairs得到的測(cè)試數(shù)據(jù)中,還羅列了所有的兩兩組合,并且統(tǒng)計(jì)了每個(gè)兩兩組合出現(xiàn)的次數(shù),以及每個(gè)測(cè)試用例所包含的兩兩組合數(shù)。

            從上面的結(jié)果可以看到:通過(guò)采用合適的測(cè)試技術(shù),測(cè)試用例數(shù)目原來(lái)需要1296個(gè),而目前只需要48個(gè)進(jìn)行覆蓋,測(cè) 試用例數(shù)目減少了96%。前面已經(jīng)提到了,結(jié)對(duì)測(cè)試可以發(fā)現(xiàn)所有的單失效模式和雙失效模式的缺陷,而實(shí)踐過(guò)程中,大部分的失效是單失效模式和雙失效模式, 多失效模式占的比例很少。因此,通過(guò)采用合適的結(jié)對(duì)測(cè)試,可以大大降低測(cè)試用例數(shù)目,減少測(cè)試工作量,同時(shí)可以實(shí)現(xiàn)較好的測(cè)試覆蓋率,保證測(cè)試質(zhì)量。


          posted @ 2011-10-14 10:33 順其自然EVO| 編輯 收藏

          用況驅(qū)動(dòng)的系統(tǒng)測(cè)試用例設(shè)計(jì)

            摘要:本文通過(guò)對(duì)測(cè)試原則與用況驅(qū)動(dòng)思想的分析,提出了用況驅(qū)動(dòng)系統(tǒng)測(cè)試用例設(shè)計(jì)的思想。從功能性測(cè)試、性能測(cè)試、回歸測(cè)試等三方面,闡述了該思想在測(cè)試用例設(shè)計(jì)過(guò)程中的必要性和應(yīng)用方式。并重點(diǎn)以功能性測(cè)試為例,給出一些該思想應(yīng)用于實(shí)踐的方法和經(jīng)驗(yàn)。

            關(guān)鍵詞:用況驅(qū)動(dòng);系統(tǒng)測(cè)試;測(cè)試用例設(shè)計(jì)

            一、系統(tǒng)測(cè)試用例設(shè)計(jì)原則和優(yōu)點(diǎn)

            軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程,一般來(lái)說(shuō)橫跨軟件生命周期的兩個(gè)階段:開(kāi)發(fā)階段和測(cè)試階段。其中開(kāi)發(fā)階段的測(cè)試工作主要是指單元測(cè)試和集成測(cè)試,一般由開(kāi)發(fā)人員完成;測(cè)試階段是軟件生命周期的一個(gè)獨(dú)立階段,主要的任務(wù)是進(jìn)行系統(tǒng)測(cè)試,由專(zhuān)門(mén)的測(cè)試人員完成。無(wú)論單元集成測(cè)試,還是系統(tǒng)測(cè)試,都應(yīng)該進(jìn)行必要的測(cè)試用例設(shè)計(jì),本文的側(cè)重點(diǎn)在于系統(tǒng)測(cè)試的用例設(shè)計(jì)。

            系統(tǒng)測(cè)試在待測(cè)系統(tǒng)組裝到一起并通過(guò)了單元和集成測(cè)試之后進(jìn)行,一般采用黑盒測(cè)試的 方式,側(cè)重于測(cè)試軟件的功能性需求,兼顧性能、壓力等各方面的因素。系統(tǒng)測(cè)試的意圖在于發(fā)現(xiàn)系統(tǒng)與用戶(hù)期望的差距,通過(guò)測(cè)試暴露出軟件中隱藏的錯(cuò)誤和缺 陷,權(quán)衡并改進(jìn)系統(tǒng)。Davis曾經(jīng)提出了一組測(cè)試原則,其中包括兩點(diǎn):一是所有測(cè)試都應(yīng)該可以追溯到用戶(hù)需求;二是窮舉測(cè)試是不可能的。

             正如我們所知,軟件測(cè)試的目的在于發(fā)現(xiàn)錯(cuò)誤,而最嚴(yán)重的錯(cuò)誤莫過(guò)于導(dǎo)致程序無(wú)法滿足需求的錯(cuò)誤。因此測(cè)試用例的設(shè)計(jì)必須充分考慮用戶(hù)需求,是否正確的滿 足了用戶(hù)需求是判別一個(gè)軟件系統(tǒng)是否能夠通過(guò)測(cè)試,是否合格產(chǎn)品的最重要標(biāo)準(zhǔn)。在實(shí)際的測(cè)試工作中,追求系統(tǒng)測(cè)試用例對(duì)用戶(hù)明示和隱含需求的100%覆 蓋,試圖窮舉用戶(hù)需求進(jìn)行測(cè)試是不現(xiàn)實(shí)的。系統(tǒng)測(cè)試用例的設(shè)計(jì)原則應(yīng)該是盡可能覆蓋用戶(hù)工作中使用本系統(tǒng)的各種工作場(chǎng)景和情況(包括正常方式使用和異常方 式使用的情況),至少應(yīng)完全覆蓋用戶(hù)日常工作使用系統(tǒng)的全部場(chǎng)景和情況。

            用況驅(qū)動(dòng)(Use-Case Driven)是統(tǒng)一過(guò)程(UP)的核心思想之一,也是其精髓所在。統(tǒng)一過(guò)程的目標(biāo)是指導(dǎo)開(kāi)發(fā)人員有效的實(shí)現(xiàn)并實(shí)施滿足用戶(hù)需求的系統(tǒng)。統(tǒng)一過(guò)程一般被認(rèn)為是一種OO(面向?qū)ο螅╅_(kāi)發(fā)方法,實(shí)際上它的思想也同樣支持非OO系統(tǒng)的開(kāi)發(fā)。統(tǒng)一過(guò)程特點(diǎn)在于:用況驅(qū)動(dòng)、以框架為中心、迭代和增量的。

             用況(Use-Case)的目的在于捕獲真正的需求和使用適于用戶(hù)、客戶(hù)、開(kāi)發(fā)、測(cè)試等各方人員理解的形式將捕獲到的需求加以描述。它幾乎普遍用于捕獲 軟件系統(tǒng)需求。但它的作用不僅如此,還能夠驅(qū)動(dòng)整個(gè)開(kāi)發(fā)過(guò)程,在尋找和確定類(lèi)、子系統(tǒng)和接口、尋找和確定測(cè)試用例、規(guī)劃開(kāi)發(fā)迭代和系統(tǒng)集成時(shí),均可以將用 況作為主要輸入。因而可以毫不夸張地說(shuō),在應(yīng)用統(tǒng)一過(guò)程思想指導(dǎo)軟件開(kāi)發(fā)過(guò)程中,用況的驅(qū)動(dòng)作用貫穿整個(gè)軟件生命周期。

            用況驅(qū)動(dòng)設(shè)計(jì)與 開(kāi)發(fā)過(guò)程的思想,目前已被軟件業(yè)內(nèi)人士廣泛接受,并越來(lái)越多地付諸于實(shí)踐;而用況驅(qū)動(dòng)思想在測(cè)試領(lǐng)域的實(shí)踐中卻并未得到應(yīng)有的重視。我們的測(cè)試團(tuán)隊(duì)也經(jīng)歷 了一個(gè)對(duì)此思想逐步認(rèn)知的過(guò)程,在工作實(shí)踐中積累了一些相關(guān)的思路和方法,并且還在繼續(xù)摸索,希望能對(duì)測(cè)試過(guò)程持續(xù)改進(jìn)。

            與傳統(tǒng)系統(tǒng)測(cè)試用例設(shè)計(jì)相比,強(qiáng)調(diào)用況驅(qū)動(dòng)的思想會(huì)體現(xiàn)出一定的優(yōu)越性。

             首先,利于系統(tǒng)測(cè)試用例貼近用戶(hù)需求。用況描述用戶(hù)對(duì)系統(tǒng)的期望和真正的需求,這恰恰與系統(tǒng)測(cè)試的主要目標(biāo)不謀而合。因此系統(tǒng)測(cè)試用例的設(shè)計(jì)由用況驅(qū) 動(dòng),以用況為輸入,實(shí)現(xiàn)對(duì)用況的追蹤與覆蓋,是確保系統(tǒng)測(cè)試用例設(shè)計(jì)滿足功能和場(chǎng)景覆蓋,達(dá)到系統(tǒng)測(cè)試用例設(shè)計(jì)的質(zhì)量要求的捷徑。

            其次,便于與其它小 組溝通,便于對(duì)用戶(hù)需求實(shí)施追蹤。若該項(xiàng)目的需求、設(shè)計(jì)、開(kāi)發(fā)、維護(hù)等過(guò)程同樣以統(tǒng)一過(guò)程思想、用況驅(qū)動(dòng)的思想作為指導(dǎo),則在整個(gè)項(xiàng)目?jī)?nèi)部更易形成溝通, 在該軟件系統(tǒng)生命周期涉及到的各個(gè)產(chǎn)物之間能很容易的進(jìn)行追蹤。將以用況為指導(dǎo)形成的系統(tǒng)測(cè)試用例應(yīng)用于測(cè)試活動(dòng),得到的測(cè)試結(jié)果直接體現(xiàn)用戶(hù)需求的實(shí)施 情況。

            二、用況驅(qū)動(dòng)系統(tǒng)測(cè)試用例設(shè)計(jì)實(shí)踐

            用況是需求分析階段的產(chǎn)物,系統(tǒng)測(cè)試用例的質(zhì)量在一定程度上依賴(lài)于用況的質(zhì)量,只有用況描述的真實(shí)、全面、易理解,系統(tǒng)測(cè)試用例才有可能達(dá)到相應(yīng)的質(zhì)量目標(biāo)。

            對(duì)于系統(tǒng)測(cè)試的分類(lèi),業(yè)界有很多種說(shuō)法,不盡相同。最常見(jiàn)的包括:功能性測(cè)試、性能測(cè)試、回歸測(cè)試等。下面將主要就功能性測(cè)試,說(shuō)明用況驅(qū)動(dòng)思想在其測(cè)試用例設(shè)計(jì)過(guò)程中的作用;同時(shí)說(shuō)明用況驅(qū)動(dòng)思想對(duì)性能測(cè)試和回歸測(cè)試用例選取原則的影響。

            1.功能性測(cè)試

            (1)用況驅(qū)動(dòng)功能性測(cè)試的組成

             傳統(tǒng)概念中的功能性測(cè)試和性能測(cè)試主要是針對(duì)功能點(diǎn)進(jìn)行的,這主要源于傳統(tǒng)的軟件功能相對(duì)單一、獨(dú)立。當(dāng)前軟件發(fā)展趨勢(shì),越來(lái)越綜合化、系統(tǒng)化、全面 化,軟件系統(tǒng)越來(lái)越龐大、復(fù)雜,單一、割裂的功能點(diǎn)往往難以滿足用戶(hù)實(shí)際需求,將各功能點(diǎn)按用戶(hù)實(shí)際使用場(chǎng)景,以不同的順序組合起來(lái),才能真正滿足用戶(hù)實(shí) 際應(yīng)用的需要。換言之,用戶(hù)的需求可以體現(xiàn)為一個(gè)個(gè)用況,而用況在系統(tǒng)中的實(shí)現(xiàn)則體現(xiàn)為功能點(diǎn)的有序組合。

            傳統(tǒng)意義上,功能性測(cè)試用例,一般會(huì)針對(duì)功能點(diǎn)設(shè)計(jì),經(jīng)歷從功能點(diǎn)到測(cè)試點(diǎn)、再到測(cè)試用例的逐步細(xì)化、擴(kuò)充的過(guò)程。而用況驅(qū)動(dòng)的功能性測(cè)試,除了包含對(duì)基于功能點(diǎn)的測(cè)試外,還包括對(duì)基于場(chǎng)景(用況)的測(cè)試。

            基于功能點(diǎn)的測(cè)試是用況驅(qū)動(dòng)功能性測(cè)試的基礎(chǔ),只有通過(guò)了基于功能點(diǎn)的測(cè)試(通過(guò)的意義并不是完全沒(méi)有缺陷),基于場(chǎng)景測(cè)試的實(shí)施才是有意義 的。因此基于功能點(diǎn)的測(cè)試應(yīng)該是基于場(chǎng)景測(cè)試的“前傳”。從功能點(diǎn)到測(cè)試點(diǎn)的擴(kuò)充,是基于對(duì)該功能在各種場(chǎng)景應(yīng)用中可能出現(xiàn)的使用、操作上的正向、反向分 支的考慮,是該功能測(cè)試中所應(yīng)關(guān)注的關(guān)鍵點(diǎn)的體現(xiàn)。從測(cè)試點(diǎn)到測(cè)試用例的擴(kuò)充,則主要是對(duì)該測(cè)試點(diǎn)的不同情況、取值等的考慮,以及對(duì)測(cè)試中一些細(xì)節(jié)的描 述。

            基于場(chǎng)景的測(cè)試更傾向于對(duì)軟件系統(tǒng)能否滿足用戶(hù)需求進(jìn)行測(cè)試,關(guān)心用戶(hù)做什么而不是產(chǎn)品做什么,它意味著通過(guò)用況捕獲用戶(hù)必須完成的任務(wù),然后 測(cè)試時(shí)應(yīng)用它們或它們的變體?;趫?chǎng)景的測(cè)試往往在單個(gè)測(cè)試中處理多個(gè)子系統(tǒng)。正如目前軟件行業(yè)廣泛認(rèn)可的一個(gè)觀點(diǎn)所述,“最好的軟件不是沒(méi)有缺陷的軟 件,而是滿足用戶(hù)使用要求的軟件”。在實(shí)際的測(cè)試工作中,試圖窮舉用戶(hù)需求進(jìn)行測(cè)試是不現(xiàn)實(shí)的,對(duì)用戶(hù)來(lái)說(shuō)實(shí)用的系統(tǒng)就是好的系統(tǒng)。因此,盡可能覆蓋用戶(hù) 日常工作場(chǎng)景進(jìn)行測(cè)試顯得尤為重要。而基于場(chǎng)景測(cè)試用例的組織,也要求綜合考慮用戶(hù)業(yè)務(wù)、用戶(hù)工作流程、系統(tǒng)實(shí)現(xiàn)的功能點(diǎn)等多方面進(jìn)行,對(duì)測(cè)試人員的邏輯 思維能力和業(yè)務(wù)理解能力都有較高的要求。

            我們遇到的一個(gè)比較典型的例子——業(yè)務(wù)流程正常流轉(zhuǎn)的用況:用戶(hù)按照自身角色的不同,在流程的不同步驟參與流轉(zhuǎn),流程流轉(zhuǎn)到某一步時(shí),當(dāng)前用戶(hù) 需要根據(jù)自己的權(quán)限實(shí)施業(yè)務(wù)的配置后才能讓流程繼續(xù)流轉(zhuǎn)。我們分別針對(duì)給用戶(hù)指定業(yè)務(wù)配置權(quán)限、給用戶(hù)指定流程角色、流程正常流轉(zhuǎn)、業(yè)務(wù)配置等功能點(diǎn)組織了測(cè)試用例并通過(guò)了測(cè)試。而后針對(duì)整個(gè)流程設(shè)計(jì)場(chǎng)景測(cè)試用例時(shí),包含了指定A用戶(hù)同時(shí)具備流程中與業(yè)務(wù)配置對(duì)應(yīng)步驟的角色和業(yè)務(wù)配置的權(quán)限。當(dāng)時(shí)應(yīng)用系統(tǒng) 沒(méi)有通過(guò)這個(gè)場(chǎng)景測(cè)試用例,原因是A用戶(hù)同時(shí)具有的業(yè)務(wù)配置權(quán)限與流程角色發(fā)生了沖突,導(dǎo)致業(yè)務(wù)配置任務(wù)無(wú)法實(shí)施。可見(jiàn),所有相關(guān)的功能點(diǎn)均通過(guò)測(cè)試,也 不表示全部由這些功能點(diǎn)構(gòu)成的用況能正確實(shí)現(xiàn),因此基于場(chǎng)景的測(cè)試是十分必要的。

           ?。?)測(cè)試用例與測(cè)試包

            每個(gè)測(cè)試場(chǎng)景是由不同的測(cè)試功能點(diǎn)按照一定的順序組合而成的,組合順序不同,預(yù)期結(jié)果也有可能會(huì)不同。針對(duì)每個(gè)測(cè)試功能點(diǎn)都組織了相應(yīng)的功能點(diǎn)測(cè)試用例,而對(duì)于場(chǎng)景的測(cè)試用例,如果重復(fù)描述構(gòu)成場(chǎng)景的各個(gè)功能點(diǎn)的測(cè)試用例內(nèi)容,會(huì)帶來(lái)一些問(wèn)題:

            1)加大了測(cè)試用例編寫(xiě)的工作量。

            2)給測(cè)試用例的維護(hù)帶來(lái)困難。同樣的內(nèi)容的修改要在多處體現(xiàn),很容易遺漏,從而帶來(lái)不一致。

            3)測(cè)試用例的結(jié)構(gòu)層次不清晰。功能點(diǎn)測(cè)試用例和場(chǎng)景測(cè)試用例的關(guān)系體現(xiàn)不出來(lái)。

            鑒于上述原因,在場(chǎng)景測(cè)試用例的編寫(xiě)過(guò)程中,我們引入了測(cè)試用例包的概念。測(cè)試用例包是測(cè)試用例在一定條件下的有序組合。必要的時(shí)候,可以將已有的功能點(diǎn)測(cè)試用例以適當(dāng)?shù)捻樞蚪M織起來(lái),加上必要的條件限制,構(gòu)成測(cè)試用例包,形成場(chǎng)景測(cè)試用例。

           ?。?)測(cè)試用例的描述工具和測(cè)試用例包的組織形式

            1)測(cè)試用例描述工具

            實(shí)際上,測(cè)試用例可以采用自然語(yǔ)言、表格等各種方式加以描述。以UML語(yǔ)言加以描述也是可選的方法之一。

            UML(統(tǒng)一建模語(yǔ)言)[3]很好地體現(xiàn)了統(tǒng)一過(guò)程思想,因而可以在以統(tǒng)一過(guò)程思想為指導(dǎo)的軟件開(kāi)發(fā)過(guò)程中普遍應(yīng)用于各個(gè)階段。用況驅(qū)動(dòng)是統(tǒng)一 過(guò)程思想的核心思想,如果項(xiàng)目的需求分析、設(shè)計(jì)等工作成果均以UML方式描述,則在以用況驅(qū)動(dòng)的測(cè)試活動(dòng)中,采用UML組織測(cè)試用例,會(huì)更利于項(xiàng)目?jī)?nèi)部交 流。我們的測(cè)試團(tuán)隊(duì)曾嘗試用UML描述測(cè)試用例,以下是對(duì)我們?cè)囉眠^(guò)的一些方法的說(shuō)明。

            第一種,可采用用況圖與活動(dòng)圖結(jié)合的方式描述測(cè)試用例。例如:圖1是用活動(dòng)圖形式描述的日志管理部分功能測(cè)試用例的例子。這個(gè)活動(dòng)圖中包含7個(gè) 測(cè)試用例,每個(gè)end點(diǎn)對(duì)應(yīng)一個(gè)測(cè)試用例,測(cè)試用例編號(hào)、測(cè)試目的、預(yù)期結(jié)果、測(cè)試數(shù)據(jù)等測(cè)試用例的信息。在相應(yīng)end點(diǎn)的屬性中以文字形式說(shuō)明。


          圖1 活動(dòng)圖形式描述測(cè)試用例舉例

            第二種,可在同一張用況圖中以分層的方式描述出功能點(diǎn)/場(chǎng)景(用況)-測(cè)試點(diǎn)-測(cè)試用例的逐級(jí)細(xì)化關(guān)系。例如圖2,這是以用況圖形式體現(xiàn)的用戶(hù)權(quán)限管理部分的功能點(diǎn)-測(cè)試點(diǎn)的細(xì)化。

          圖2 用況圖描述功能細(xì)化舉例

            第三種,可采用狀態(tài)轉(zhuǎn)移圖、活動(dòng)圖、順序圖、協(xié)作圖等方式或者將它們結(jié)合以對(duì)測(cè)試用例加以描述。

            2)測(cè)試用例包的組織形式

            描述測(cè)試用例包中測(cè)試用例的順序和條件限制關(guān)系,并不拘泥于具體的形式。我們?cè)捎眠^(guò)兩種方式,即表格形式和動(dòng)圖形式。

            例如:前面提到的業(yè)務(wù)流程正常流轉(zhuǎn)用況的測(cè)試用例以及相關(guān)功能點(diǎn)測(cè)試用例可以以下面的表格形式體現(xiàn)。

            在活動(dòng)圖中,使用對(duì)子活動(dòng)的嵌套,可以實(shí)現(xiàn)在當(dāng)前測(cè)試用例中對(duì)其它測(cè)試用例的引用,從而方便的實(shí)現(xiàn)了測(cè)試用例間的組合重用,完成了測(cè)試用例包的組織。

            2. 性能測(cè)試

            廣義上的性能測(cè)試一般包括常態(tài)下的性能測(cè)試、壓力測(cè)試和負(fù)載測(cè)試等,而實(shí)際工作中經(jīng)常遇到的性能測(cè)試往往是對(duì)典型用 戶(hù)環(huán)境下使用情況的模擬,在此基礎(chǔ)上所進(jìn)行并發(fā)性和持續(xù)性壓力測(cè)試,而并非考驗(yàn)系統(tǒng)極限值的測(cè)試。系統(tǒng)的性能指標(biāo)和性能測(cè)試所遵循的都應(yīng)該是“適度”原 則。系統(tǒng)性能指標(biāo)優(yōu)越,性能測(cè)試充分當(dāng)然好,但是這是要付出高昂的代價(jià)的。實(shí)際上,實(shí)際而有效的性能測(cè)試也應(yīng)該是由用況驅(qū)動(dòng)的,是針對(duì)用戶(hù)使用場(chǎng)景所設(shè)計(jì) 的,需要根據(jù)用戶(hù)對(duì)各項(xiàng)指標(biāo)所提出的明確需求,或者根據(jù)用戶(hù)現(xiàn)場(chǎng)的實(shí)際情況,結(jié)合測(cè)試人員的經(jīng)驗(yàn)設(shè)計(jì)出相應(yīng)的性能測(cè)試方案和數(shù)據(jù),并依照實(shí)施。

            例如:一個(gè)正常情況下最多只有50個(gè)并發(fā)用戶(hù)的系統(tǒng),就沒(méi)有必要進(jìn)行1000個(gè)用戶(hù)的并發(fā)測(cè)試,而一個(gè)每天夜間自動(dòng)重起的系統(tǒng),就沒(méi)必要對(duì)其實(shí)施持續(xù)一周的負(fù)載測(cè)試。

            3.回歸測(cè)試

            用況驅(qū)動(dòng)的思想同樣指導(dǎo)回歸測(cè)試用例的選取。由于時(shí)間和成本的限制,每次回歸測(cè)試,都將所有功能和場(chǎng)景重新測(cè)試一遍是不現(xiàn)實(shí)的,如何能既盡量降低風(fēng)險(xiǎn),又提高測(cè)試效率呢?就需要在測(cè)試用例選取的過(guò)程中注意把握平衡。

            回歸測(cè)試用例的組織應(yīng)該是分層次、分優(yōu)先級(jí)的,基于用戶(hù)最常用的場(chǎng)景的測(cè)試用例處于最高優(yōu)先級(jí)。每次執(zhí)行回歸測(cè)試 時(shí),基于軟件修改所影響的范圍,根據(jù)時(shí)間、人員、成本等因素,按照優(yōu)先級(jí)次序抽取適量的相關(guān)測(cè)試用例,構(gòu)造一個(gè)優(yōu)化的測(cè)試用例組來(lái)完成回歸測(cè)試,才是正確 的選擇。

            三、結(jié)語(yǔ)

            用況驅(qū)動(dòng)系統(tǒng)測(cè)試用例設(shè)計(jì),是軟件系統(tǒng)發(fā)展的需要,更符合軟件生命周期的規(guī)律,廣泛應(yīng)用于功能性測(cè)試、性能測(cè)試、回歸測(cè)試等各測(cè)試領(lǐng)域。用況驅(qū)動(dòng)系統(tǒng)測(cè)試用例設(shè)計(jì)之路尚在探索之中,并無(wú)定式,在實(shí)踐中不斷嘗試和改進(jìn)才是提高測(cè)試用例設(shè)計(jì)水平、提高軟件質(zhì)量的正確途徑。

          posted @ 2011-10-14 10:28 順其自然EVO| 編輯 收藏

          測(cè)試用例Passed和Failed有效性問(wèn)題

            上一篇關(guān)于測(cè)試用例設(shè)計(jì)的博文《設(shè)計(jì)測(cè)試用例的四條原則》中,介紹了設(shè)計(jì)測(cè)試用例的四條原則。本篇結(jié)合最近工作遇到的一個(gè)小插曲,介紹一下測(cè)試用例本身Passed和Failed的有效性問(wèn)題。

             我所在的團(tuán)隊(duì)上個(gè) Sprint有一項(xiàng)很重要的工作,就是進(jìn)行Stress 測(cè)試,需要編寫(xiě)自動(dòng)化用例測(cè)試模擬程序長(zhǎng)時(shí)間的執(zhí)行,并觀察其內(nèi)存消耗是否呈現(xiàn)合理的增長(zhǎng)趨勢(shì),以及有沒(méi)有內(nèi)存的泄漏等問(wèn)題。同事很快編寫(xiě)好了測(cè)試用例, 并執(zhí)行了個(gè)把個(gè)小時(shí),得出了初步的數(shù)據(jù)。數(shù)據(jù)顯示程序的表現(xiàn)相當(dāng)完美,不僅內(nèi)存沒(méi)有陡峭的突變,甚至連大斜率的線性增長(zhǎng)也木有,基本呈現(xiàn)為一條略有波動(dòng)的 水平直線。非常讓人振奮,這樣的表現(xiàn)打消團(tuán)隊(duì)之前的擔(dān)心,完成這項(xiàng)工作所需的時(shí)間也將大大小于之前的預(yù)估。

            我對(duì)這項(xiàng)測(cè)試也非常感興趣, 并和同事進(jìn)行了一些交流,想深入了解一些更詳細(xì)的情況,比如測(cè)試數(shù)據(jù)規(guī)模、執(zhí)行的時(shí)間長(zhǎng)短、測(cè)試數(shù)據(jù)分布等,隨著交流的深入同事突然意識(shí)到似乎測(cè)試代碼似 乎有些不大合乎常理的表現(xiàn),進(jìn)一步調(diào)試發(fā)現(xiàn)代碼中一段生成數(shù)據(jù)的代碼并沒(méi)有正確生成數(shù)據(jù),雖然測(cè)試仍在執(zhí)行但輸入的數(shù)據(jù)沒(méi)有,測(cè)試只是在空轉(zhuǎn),并沒(méi)有真正 執(zhí)行被測(cè)程序的邏輯,所以整個(gè)曲線才呈現(xiàn)為一條水平線。

            這件事本身是個(gè)小問(wèn)題,但其背后隱藏著一個(gè)值得我們深究的問(wèn)題:當(dāng)你的測(cè)試用例Passed的時(shí)候,被測(cè)產(chǎn)品果真是正確的嗎?仔細(xì)想想這個(gè)問(wèn)題,可以得到一些對(duì)我們的測(cè)試工作有意的思考:

            1. 自動(dòng)化測(cè)試需要有詳細(xì)的日志輸出,以便于診斷測(cè)試的確切執(zhí)行情況。

             自動(dòng)化測(cè)試用例的執(zhí)行過(guò)程對(duì)我們來(lái)說(shuō)是一個(gè)黑盒過(guò)程,我們一般只是看到它的結(jié)果是Passed或者Failed。如果這個(gè)黑盒過(guò)程本身就是錯(cuò)誤的,如本 文一開(kāi)始所給出的例子,結(jié)果是Passed就沒(méi)有任何意義了。而且這樣的Passed只會(huì)是給問(wèn)題雪上加霜,減少了發(fā)現(xiàn)問(wèn)題的可能性。

            2. 測(cè)試人員特別是自動(dòng)化測(cè)試工程師,應(yīng)該對(duì)那些看似完美的東東多些疑問(wèn),多些探究精神,在經(jīng)過(guò)客觀途徑驗(yàn)證之前時(shí)刻保持謹(jǐn)慎的樂(lè)觀。

            從某個(gè)角度講,經(jīng)常Failed測(cè)試用例并不值得你太擔(dān)心,而那些從來(lái)都是Passed的用例,應(yīng)該是值得你抽時(shí)間檢查的對(duì)象。

            3. 測(cè)試用例要么Passed要么 Failed,看似簡(jiǎn)單的結(jié)果,但其中還是有些值得深究的內(nèi)容的。

             任何一個(gè)測(cè)試用例實(shí)際上是肩負(fù)著雙重責(zé)任: 其一,保證在被測(cè)功能正確的情況下,測(cè)試用例應(yīng)該是Passed;其二,則是在被測(cè)功能異常的情況下,測(cè)試返回Failed。一般的情況下,我們只是驗(yàn)證 了第一種情況后就算完成,并將用例提交到用例管理庫(kù)或者代碼庫(kù)中。很少真正有人去驗(yàn)證一下在被測(cè)試功能異常的情況下,測(cè)試用例確實(shí)Failed。這樣的用 例驗(yàn)證可以總結(jié)為如下的模式:

          Passed –> Passed –> Passed –> …-> Passed? or Failed?

             之所以會(huì)有這樣的情況,首先,是因?yàn)閺囊庾R(shí)上講,大多數(shù)人都認(rèn)為測(cè)試中對(duì)被測(cè)功能行為的判斷以足夠強(qiáng)壯,但其實(shí)這種沒(méi)有客觀佐證的判斷并不可靠;其次, 很多用例的實(shí)現(xiàn)和執(zhí)行多是在被測(cè)功能實(shí)現(xiàn)之后才開(kāi)始,這時(shí)的被測(cè)功能剛實(shí)現(xiàn)出來(lái),并經(jīng)過(guò)開(kāi)發(fā)人員反復(fù)調(diào)試修改,絕大多數(shù)情況下都是正確的,由于產(chǎn)品代碼已 經(jīng)提交,此時(shí)很難再有簡(jiǎn)單的途徑模擬出錯(cuò)誤的功能行為,以驗(yàn)證測(cè)試用例Failed的情況。

            解決的辦法有兩種:一、盡可能尋找途徑去模擬被測(cè)功能的異常;二、再就是合理選擇實(shí)現(xiàn)測(cè)試用例的時(shí)間。很多情況我們的用例是為了覆蓋已有的Bug而添加的,以避免回歸缺陷。這樣的測(cè)試用例最好是在Bug修復(fù)之前就實(shí)現(xiàn),那么它一定是Failed,這個(gè)機(jī)會(huì)就可以驗(yàn)證出Failed情況。

            擴(kuò)展一下這個(gè)話題,從用例Failed/Passed路徑這角度上看,測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(Test Driven Development,TDD)的模型更為合理和自然。因?yàn)?,TDD強(qiáng)調(diào)先有測(cè)試用例,再實(shí)現(xiàn)產(chǎn)品功能代碼,先實(shí)現(xiàn)的測(cè)試用例必然是經(jīng)過(guò)一系列的Failed之后,最終達(dá)到Passed,其模型可以總結(jié)如下:

          Failed –> Failed –> Failed –> …–> Passed

            TDD的原理保證了測(cè)試用例一定是由Failed開(kāi)始,到Passed結(jié)束,所以不用費(fèi)心去模擬功能異常以得到Failed結(jié)果,同時(shí)保證了用例對(duì)Failed和Passed都一定進(jìn)行了驗(yàn)證。

            4. 產(chǎn)品的質(zhì)量有測(cè)試來(lái)監(jiān)控,那么誰(shuí)來(lái)監(jiān)控測(cè)試本身的質(zhì)量呢?人、過(guò)程和工具。

            人-測(cè)試人員需要更有責(zé)任心,保持對(duì)任何問(wèn)題的謹(jǐn)慎樂(lè)觀和探究精神;過(guò)程-測(cè)試計(jì)劃和用例的交叉評(píng)審,測(cè)試代碼也要進(jìn)行review,同時(shí)選擇合理的時(shí)機(jī)實(shí)現(xiàn)測(cè)試;工具 – 利用代碼覆蓋來(lái)探究測(cè)試用例有效性。

            總之,我們?cè)诰帉?xiě)和實(shí)現(xiàn)測(cè)試用例的時(shí)候,除了實(shí)現(xiàn)基本功能之外,還要多留意的用例(特別是自動(dòng)化用例)Passed和Failed有效性,經(jīng)常容易被忽略地是Failed有效性,所以要盡可的尋找途徑來(lái)驗(yàn)證其有效性。

          posted @ 2011-10-14 10:07 順其自然EVO| 編輯 收藏

          等價(jià)類(lèi)分法 新解

            1、等價(jià)類(lèi)分法的基本概念

            等價(jià)類(lèi)分法是將測(cè)試空間劃分成若干個(gè)子集,并且滿足每個(gè)子集中的任一數(shù)據(jù)對(duì)揭露程序中的缺陷都是等價(jià)的,這些子集就叫做等價(jià)類(lèi)或者叫等價(jià)子集。

            比如一個(gè)程序的輸入數(shù)據(jù)滿足   0<x<100為有效數(shù)據(jù),其他為無(wú)效數(shù)據(jù),那么就可以劃分成兩個(gè)等價(jià)類(lèi),一個(gè)是有效數(shù)據(jù)的等價(jià)類(lèi),另一個(gè)是無(wú)效數(shù)據(jù)的等價(jià)類(lèi),設(shè)計(jì)測(cè)試用例時(shí)就可以從這兩個(gè)等價(jià)類(lèi)中分別取一個(gè)輸入數(shù)據(jù)來(lái)得到兩個(gè)測(cè)試用例。有效數(shù)據(jù)的等價(jià)類(lèi)為1~99,所以可以從1~99中任意取一個(gè)數(shù)作為輸入數(shù)據(jù)來(lái)作為一個(gè)測(cè)試用例,從x不等于1~99中的數(shù)據(jù)中任意取一個(gè)數(shù)據(jù)作為輸入數(shù)據(jù)得到另一個(gè)測(cè)試用例。

            1~99中的任一數(shù)據(jù)和其他數(shù)據(jù)都是等價(jià)的,比如使用了2來(lái)進(jìn)行測(cè)試,那么可以假定數(shù)據(jù)2測(cè)試通過(guò)的話,1~99中的其他數(shù)據(jù)也能測(cè)試通過(guò)。

            等價(jià)類(lèi)分法可以用來(lái)對(duì)一些不能窮舉的集合進(jìn)行合理分類(lèi),從各個(gè)等價(jià)類(lèi)中選出有代表性的數(shù)據(jù)進(jìn)行測(cè)試,從而保證設(shè)計(jì)出來(lái)的設(shè)計(jì)用例具有一定的代表性和一定范圍內(nèi)的完整性,有效地縮減測(cè)試用例的數(shù)量。

             等價(jià)類(lèi)實(shí)際上是符合測(cè)試空間劃分原則的一種特殊劃分形式,即劃分完后的子集里的可測(cè)數(shù)據(jù)是等價(jià)的,而測(cè)試空間劃分原則則是要求里面有一個(gè)可測(cè)數(shù)據(jù)測(cè)試通 過(guò)能夠代表其他測(cè)試數(shù)據(jù)在滿足選取概率條件下也都可以通過(guò)。等價(jià)類(lèi)選取測(cè)試數(shù)據(jù)時(shí)可以選取等價(jià)類(lèi)中的任意數(shù)據(jù)作為測(cè)試數(shù)據(jù),而測(cè)試空間劃分原則劃分的子集 一般是選擇指定的數(shù)據(jù)作為測(cè)試數(shù)據(jù),如果按測(cè)試空間劃分原則劃分后的子集剛好成為了等價(jià)類(lèi)才可以選擇里面的任一數(shù)據(jù)作為測(cè)試數(shù)據(jù)。

            2、等價(jià)類(lèi)的幾種類(lèi)型

            在現(xiàn)實(shí)情況中,由于缺陷的可能情況非常多,一個(gè)子集中的數(shù)據(jù)對(duì)某種缺陷是等價(jià)的,但對(duì)另外一種缺陷可能又是不等價(jià)的。所以把等價(jià)類(lèi)分為弱等價(jià)類(lèi)、強(qiáng)等價(jià)類(lèi)、理想等價(jià)類(lèi)三種類(lèi)型。

            1)弱等價(jià)類(lèi)

            弱等價(jià)類(lèi)是考慮某個(gè)單一缺陷情況下的等價(jià)情況,子集里所有數(shù)據(jù)在這種缺陷假設(shè)下是等價(jià)的,并且劃分成的幾個(gè)等價(jià)類(lèi)能夠覆蓋整個(gè)測(cè)試空間的單一缺陷。比如以下一段程序:

          void Func(unsigned int x)
          {
          if ( x > 10 )
          {
              Func1();
          else
          {
              Func2();
          }
          }

             我們可以將數(shù)據(jù)劃分為兩個(gè)等價(jià)類(lèi),0~10為1個(gè)等價(jià)類(lèi),大于10的數(shù)據(jù)為1個(gè)等價(jià)類(lèi),在考慮“>”號(hào)誤寫(xiě)成“<”號(hào)這種缺陷的情況下,這 兩個(gè)等價(jià)集中的數(shù)據(jù)都是等價(jià)的,比如0~10這個(gè)等價(jià)類(lèi)中,使用0或使用10來(lái)進(jìn)行測(cè)試都能發(fā)現(xiàn)缺陷。這兩個(gè)等價(jià)類(lèi)中各自抽取一個(gè)測(cè)試數(shù)據(jù)進(jìn)行測(cè)試,都能 代表其他數(shù)據(jù)揭示出“>”號(hào)誤寫(xiě)成“<”號(hào)這種缺陷來(lái),因此整個(gè)測(cè)試空間都被覆蓋了。

            2)強(qiáng)等價(jià)類(lèi)

            強(qiáng)等價(jià)類(lèi)是在多個(gè)缺陷假設(shè)前提下,各個(gè)等價(jià)類(lèi)中的可測(cè)數(shù)據(jù)在單個(gè)或多個(gè)缺陷假設(shè)下是等價(jià)的,并且劃分的各個(gè)等價(jià)子集中各自取一個(gè)測(cè)試數(shù)據(jù)可以覆蓋整個(gè)測(cè)試空間的多個(gè)缺陷情況。

             再考慮前面弱等價(jià)類(lèi)中的例子程序,出錯(cuò)的可能性有那些呢?除了大于號(hào)會(huì)錯(cuò)寫(xiě)成小于號(hào)外,實(shí)際上還有可能寫(xiě)成大于等于號(hào),10有可能寫(xiě)成1或100等大于 10或小于10的數(shù),為方便描述以錯(cuò)寫(xiě)成1和100為例,事實(shí)上錯(cuò)誤成其他數(shù)和錯(cuò)寫(xiě)成1和100是等價(jià)的。這樣將各種可能出錯(cuò)的情況組合起來(lái),程序中的判 斷條件有可能有以下12種情況:

          判斷條件
          揭示缺陷的等價(jià)類(lèi)
          判斷條件
          揭示缺陷的等價(jià)類(lèi)
          判斷條件
          揭示缺陷的等價(jià)類(lèi)
          x>10
           
          x>1
          {10}
          x>100
          {11}
          x<10
          {>10}
          x<1
          {>10}
          x<100
          {0~9},{10}
          x<=10
          {10},{>10}
          x<=1
          {>10}
          x<=100
          {0~9},{10}
          x>=10
          {10}
          x>=1
          {10}
          x>=100
          {11}

            考慮0~10這個(gè)集合,在誤寫(xiě)成中間一列條件中情況下,里面的數(shù)據(jù)并不等價(jià),比如誤寫(xiě)成x>1的情況下,使用1做測(cè)試和使用2做測(cè)試揭示缺陷是不同的,使用1做測(cè)試發(fā)現(xiàn)不了缺陷,但使用2測(cè)試就能發(fā)現(xiàn)缺陷。

            在判斷條件誤寫(xiě)成x>=10條件下,10和0~9中的任一數(shù)據(jù)也不等價(jià),并且使用大于10的數(shù)據(jù)也無(wú)法揭示出條件錯(cuò)寫(xiě)成x>=10這個(gè)缺陷,因此整個(gè)測(cè)試空間的多個(gè)缺陷無(wú)法被已劃分的兩個(gè)等價(jià)類(lèi)來(lái)覆蓋,10需要單獨(dú)劃分成一個(gè)等價(jià)類(lèi)。

             這樣將數(shù)據(jù)劃分成三個(gè)等價(jià)類(lèi){0~9}、{10}、{大于10的數(shù)據(jù)},再看看這三個(gè)等價(jià)類(lèi)是否可以覆蓋表中各種出錯(cuò)情況,顯然在x>100和 x>=100兩種情況下,大于10的數(shù)據(jù)集合中的數(shù)據(jù)是不等價(jià)的,使用大于100的數(shù)據(jù)不能揭示出缺陷,但使用大于10小于100的數(shù)據(jù)卻能揭示出 缺陷,因此需要對(duì)大于10的數(shù)據(jù)再劃分等價(jià)類(lèi),實(shí)際上只要將邊界值{11}劃一個(gè)單獨(dú)的等價(jià)類(lèi)就可以了。

            這 樣總共得到四個(gè)等價(jià)類(lèi){0~9}、{10}、{11}、{大于11的數(shù)據(jù)},從這四個(gè)等價(jià)類(lèi)中各取一個(gè)數(shù)據(jù)的話就可以將以上列出的所有可能的缺陷情況都揭 示出來(lái),但是各個(gè)等價(jià)類(lèi)并不是對(duì)所有缺陷都等價(jià)的,這種劃分的等價(jià)類(lèi)由于可以將各種缺陷情況覆蓋到,把它叫叫做強(qiáng)等價(jià)類(lèi)。

           3)理想等價(jià)類(lèi)

            這種等價(jià)類(lèi)是嚴(yán)格按照等價(jià)類(lèi)的定義來(lái)劃分的,即劃分的各個(gè)等價(jià)類(lèi)中,每個(gè)等價(jià)類(lèi)都滿足每個(gè)可測(cè)數(shù)據(jù)對(duì)揭示所有可能的缺陷都是等價(jià)的,并且劃分的各個(gè)等價(jià)類(lèi)中各自任意取一個(gè)可測(cè)數(shù)據(jù)做為測(cè)試數(shù)據(jù)可以將全部的缺陷都揭示出來(lái)。

            理想等價(jià)類(lèi)在實(shí)際情況中是很罕見(jiàn)的,除非只有很少的一兩種可能的出錯(cuò)情況,否則很難劃分成對(duì)揭示所有可能缺陷都等價(jià)的子集。所以在實(shí)際使用時(shí),沒(méi)有必要去尋找理想等價(jià)類(lèi),否則徒然浪費(fèi)時(shí)間,一般采用強(qiáng)等價(jià)類(lèi)或弱等價(jià)類(lèi)進(jìn)行測(cè)試就足夠了。

            3、等價(jià)類(lèi)的判定方法

            當(dāng)將一個(gè)輸入域進(jìn)行等價(jià)類(lèi)劃分后,劃分出來(lái)的子集是否是等價(jià)的基本上靠經(jīng)驗(yàn)判斷,這給使用等價(jià)類(lèi)分法帶來(lái)很大的難度,憑經(jīng)驗(yàn)劃分出來(lái)的等價(jià)類(lèi)也許并不是真的等價(jià)類(lèi),如何才能確定劃分的類(lèi)是等價(jià)類(lèi)呢?

            按照前面講過(guò)的弱等價(jià)類(lèi)與強(qiáng)等價(jià)類(lèi)的定義,要知道劃分的子集是否等價(jià)類(lèi)先要知道又那些種類(lèi)的可能缺陷,然后將劃分的等價(jià)類(lèi)對(duì)照可能的缺陷進(jìn)行驗(yàn)證看是否能揭示出那些可能發(fā)生的缺陷。

            這種判定方法的缺點(diǎn)是必須先知道會(huì)發(fā)生那些可能的缺陷,實(shí)際情況中往往并不知道所有可能的缺陷,那么在實(shí)際情況中如何采取一些簡(jiǎn)單方法來(lái)判定一個(gè)子集是否是等價(jià)類(lèi)呢?

            當(dāng)一個(gè)子集的處理過(guò)程與輸出完全一致時(shí),基本上可以認(rèn)為是等價(jià)類(lèi),處理過(guò)程是否相同很容易從需求和設(shè)計(jì)中得出。但是現(xiàn)實(shí)情況中往往同一個(gè)等價(jià)類(lèi)中的不同數(shù)據(jù)對(duì)應(yīng)的輸出結(jié)果并不相同,所以這種方法并不能對(duì)所有的情況都適用。

            其實(shí)沒(méi)有什么特別好的辦法可以用來(lái)判斷一個(gè)子集中的任一數(shù)據(jù)對(duì)揭露程序中的缺陷都是等價(jià)的,除非將所有數(shù)據(jù)測(cè)試一遍。但是有一些條件可以協(xié)助判斷出某個(gè)子集不是等價(jià)類(lèi)。

            1)路徑判定法

            最容易判定一個(gè)子集是否是等價(jià)類(lèi)的方法就是路徑判定法,路徑判定法的基本思想是:對(duì)于子集中的任一數(shù)據(jù),如果執(zhí)行路徑并不完全相同,那么這個(gè)子集不是等價(jià)類(lèi)。

            需要注意的是,路徑判定法的反命題并不成立,即不能由執(zhí)行路徑相同就推斷出子集中的數(shù)據(jù)是等價(jià)類(lèi)。因?yàn)閳?zhí)行路徑相同情況下得到的結(jié)果不一定相同,舉例如下:

          int mul(int a)
          {
                 return (a*10000);
          }

            在mul()函數(shù)中,不論a輸入多少,執(zhí)行路徑都只有一條,但是當(dāng)a超過(guò)一定大小時(shí),會(huì)出現(xiàn)整數(shù)乘法溢出,顯然不能將a的任意取值都作為等價(jià)類(lèi)。

            路徑相同之所以不能認(rèn)為是等價(jià)類(lèi)的根本原因在于程序設(shè)計(jì)中本身可能存在缺陷和遺漏,設(shè)計(jì)或編碼后的程序中的路徑本身就可能不正確,測(cè)試用例設(shè)計(jì)時(shí)不能假定程序中的路徑一定是正確的。

            2)概率判定法

            概率判定法是通過(guò)計(jì)算等價(jià)子集中的數(shù)據(jù)揭示某個(gè)缺陷的概率來(lái)進(jìn)行判斷的方法。如果在一個(gè)等價(jià)子集中,所有數(shù)據(jù)的揭示缺陷的概率不相同并有一定差距,那么可以認(rèn)為不是等價(jià)類(lèi)。

            這個(gè)判定法的使用并不是說(shuō)事先需要知道所有可能發(fā)生的缺陷,它只需要找到一個(gè)缺陷來(lái)證明在這種缺陷情況下,子集中的數(shù)據(jù)在揭示這個(gè)缺陷方面的概率是不相同的,那么就可以認(rèn)為在這種缺陷條件下不是等價(jià)類(lèi),至少可以認(rèn)為不是強(qiáng)等價(jià)類(lèi)。

            比如前面講的x>10的劃分,{0~10}這個(gè)集合中,在寫(xiě)成x>=10的情況下,10和子集中其他數(shù)據(jù)揭示缺陷的概率是不同 的,0~9都不能發(fā)現(xiàn)缺陷,測(cè)試會(huì)通過(guò),也就是說(shuō)揭示出這個(gè)缺陷的概率為0,而10則能揭示出這個(gè)缺陷,所以它們不能劃分到同一個(gè)等價(jià)類(lèi)里面。


          posted @ 2011-10-14 10:05 順其自然EVO| 編輯 收藏

          手機(jī)軟件測(cè)試用例設(shè)計(jì)實(shí)踐

            一、測(cè)試用例設(shè)計(jì)概述

            測(cè)試伴隨在整個(gè)手機(jī)軟件開(kāi)發(fā)的各個(gè)階段中,測(cè)試質(zhì)量的高低直接關(guān)系到手機(jī)軟件的可用性,友好性,可靠性??梢哉f(shuō),測(cè)試環(huán)節(jié)是手機(jī)軟件開(kāi)發(fā)的重要環(huán)節(jié),是整個(gè)開(kāi)發(fā)過(guò)程的“中樞神經(jīng)”。同時(shí),測(cè)試用例的設(shè)計(jì)在測(cè)試過(guò)程中是非常重要的一個(gè)環(huán)節(jié),是重中之重。

            一般來(lái)說(shuō),設(shè)計(jì)測(cè)試用例應(yīng)該考慮如下幾方面:

            1)有效性:測(cè)試用例是測(cè)試人員測(cè)試過(guò)程中的重要參考依據(jù)。不同的測(cè)試人員依據(jù)相同的測(cè)試用例所得到的輸出應(yīng)該是一致的。

            2)可復(fù)用性:良好的測(cè)試用例具有重復(fù)使用的功能,使得測(cè)試過(guò)程事半功倍,設(shè)計(jì)良好的測(cè)試用例將大大節(jié)約時(shí)間,提高測(cè)試效率。

            3)易組織性:即使是很小的項(xiàng)目,也可能有幾千甚至更多的測(cè)試用例,測(cè)試用例可能在數(shù)月甚至幾年的測(cè)試過(guò)程中被創(chuàng)建和使用,正確的測(cè)試計(jì)劃會(huì)很好地組織這些測(cè)試用例并提供給測(cè)試人員或者其他項(xiàng)目的人參考和有效的使用。

            4)可評(píng)估性:從測(cè)試的項(xiàng)目管理角度來(lái)說(shuō),測(cè)試用例的通過(guò)率是檢驗(yàn)代碼質(zhì)量的保證。經(jīng)常說(shuō)代碼的質(zhì)量不高或者代碼的質(zhì)量很好,量化的標(biāo)準(zhǔn)應(yīng)該是測(cè)試用例的通過(guò)率和軟件錯(cuò)誤(bug)的數(shù)目。

            5)可管理性:測(cè)試用例也可以作為檢驗(yàn)測(cè)試人員進(jìn)度、工作量以及跟蹤/管理測(cè)試人員的工作效率的因素,尤其是比較適用于對(duì)于新的測(cè)試人員的檢驗(yàn),從而更加合理做出測(cè)試安排和計(jì)劃。

            二、手機(jī)軟件測(cè)試用例設(shè)計(jì)分析

            通常手機(jī)軟件測(cè)試用例可以分為如下幾類(lèi):

            1)基本功能測(cè)試用例設(shè)計(jì)

            基本功能是指手機(jī)軟件向手機(jī)用戶(hù)提供的最小的、可以進(jìn)行的所有簡(jiǎn)單操作的集合。

             基本功能測(cè)試是指測(cè)試工程師在被測(cè)試的手機(jī)上進(jìn)行實(shí)際操作,來(lái)驗(yàn)證操作是否可行,操作的結(jié)果是否滿足設(shè)計(jì)要求,如果不滿足,就要報(bào)告錯(cuò)誤。具體的操作例 如:接電話,打電話,發(fā)送普通短信,接收普通短信,發(fā)送彩信,接收彩信,播放靜態(tài)音樂(lè)文件(mp3),播放一段視頻文件,等等。

            以“短消息SMS”功能為例,基本功能測(cè)試的用例可以從如下方面進(jìn)行考慮:

          用例ID

          功能描述

          sms_001

          確定生成新消息為mms 還是sms

          sms_002

          用多種輸入法編輯信息內(nèi)容

          sms_003

          編輯信息內(nèi)容達(dá)到最大的字符長(zhǎng)度

          sms_004

          發(fā)送一封空短信

          sms_005

          存儲(chǔ)SMS至發(fā)件箱(存儲(chǔ)至Phone)

          sms_006

          不退出寫(xiě)信息窗口,連續(xù)存儲(chǔ)SMS至發(fā)件箱(存儲(chǔ)至Phone)

          sms_007

          Phone中信息條數(shù)達(dá)到最大后,自動(dòng)切換存儲(chǔ)位置

          sms_008

          存儲(chǔ)SMS至發(fā)件箱(存儲(chǔ)至SIM card)

          sms_009

          存儲(chǔ)SMS至發(fā)件箱,直至SIM CARD中信息滿

          sms_010

          在SIM CARD已滿的情況下,存儲(chǔ)SMS至發(fā)件箱

          sms_011

          存儲(chǔ)EMS至發(fā)件箱(參考SMS)

          sms_012

          當(dāng)phone和sim card中的信息全滿的情況下,保存短信

          sms_013

          發(fā)送短信的驗(yàn)證

          sms_014

          收件人號(hào)碼不正確(長(zhǎng)度過(guò)長(zhǎng)、號(hào)碼不存在、有符號(hào)等)

          sms_015

          Phone中的信息滿時(shí),發(fā)送SMS

          sms_016

          發(fā)送EMS(超長(zhǎng)短信)的驗(yàn)證

          sms_017

          SMS發(fā)送失敗

          sms_018

          群發(fā)短信

          sms_019

          從PB中選擇收件人

          sms_020

          PB中沒(méi)有記錄

          sms_021

          從PB中選擇和直接輸入聯(lián)系人號(hào)碼

          sms_022

          多方發(fā)送短信,并全部發(fā)送成功

          sms_023

          多方發(fā)送短信,未全部發(fā)送成功

          sms_024

          群發(fā)失敗后,重新發(fā)送,并發(fā)送成功

          sms_025

          群發(fā)失敗后,重新發(fā)送,并發(fā)送失敗

          sms_026

          群發(fā)EMS部分的驗(yàn)證

          sms_027

          插入一條常用短語(yǔ),發(fā)送短信

          sms_028

          連續(xù)插入常用短語(yǔ),發(fā)送短信或EMS

          sms_029

          發(fā)送失敗的驗(yàn)證



            2)交互測(cè)試

            所謂交互測(cè)試是指當(dāng)手機(jī)不同的兩個(gè)或者多個(gè)功能之間有交互的時(shí)候,對(duì)手機(jī)所應(yīng)該處的狀態(tài)或者行為進(jìn)行測(cè)試,被測(cè)手機(jī)的狀態(tài)或者行為應(yīng)該與需求設(shè)計(jì)中的要求相一致。

            交互測(cè)試的測(cè)試用例可以從如下方面考慮:

          用例ID

          功能描述

          jh_001

          打電話時(shí)接收短信息

          jh_002

          看短信內(nèi)容時(shí)候進(jìn)來(lái)一個(gè)電話

          jh_003

          聽(tīng)音樂(lè)時(shí)候?yàn)g覽新短信

          jh_004

          發(fā)送一封空短信

          jh_005

          聽(tīng)音樂(lè)時(shí)候進(jìn)來(lái)一個(gè)電話

          jh_006

          上網(wǎng)瀏覽時(shí)進(jìn)來(lái)一個(gè)電話

          jh_007

          接電話時(shí)候鬧鐘報(bào)警

            3)臨界測(cè)試

            所謂的臨界測(cè)試是指當(dāng)手機(jī)的某些可用資源達(dá)到或者超過(guò)理論允許的極大值時(shí),在手機(jī)上繼續(xù)進(jìn)行某種操作時(shí)候的測(cè)試。此時(shí)手機(jī)的行為應(yīng)該是友好的,可被使用者接受的,應(yīng)該與需求分析的要求相符合。

            臨界測(cè)試的測(cè)試用例可以從如下方面考慮:

          用例ID

          功能描述

          lj_001

          內(nèi)存滿時(shí)撥打電話

          lj _002

          內(nèi)存滿時(shí)啟動(dòng)音樂(lè)播放器

          lj _003

          數(shù)據(jù)庫(kù)滿時(shí)撥打電話

          lj _004

          數(shù)據(jù)庫(kù)滿時(shí)啟動(dòng)瀏覽器

          lj _005

          數(shù)據(jù)庫(kù)滿時(shí)啟動(dòng)音樂(lè)播放器

          lj _006

          地址本滿時(shí)繼續(xù)添加記錄

          lj _007

          短信收件箱滿時(shí)繼續(xù)收新短信

            4)壓力測(cè)試

            壓力測(cè)試一般是指在比較短的一段時(shí)間內(nèi),被測(cè)手機(jī)執(zhí)行比較多的任務(wù)或者操作,來(lái)檢測(cè)被測(cè)手機(jī)承受壓力的能力。

            壓力測(cè)試的測(cè)試用例可以從如下方面考慮:

          用例ID

          功能描述

          yl_001

          在短時(shí)間內(nèi)發(fā)送大量的短信,同時(shí)接收大量的短信,發(fā)送和接收的數(shù)量都在50條以上

          yl_002

          短信的群發(fā)(包括超長(zhǎng)短信),查看接收和發(fā)送的成功率

          yl _003

          接通一個(gè)電話并且保持很長(zhǎng)一段時(shí)間(大于l0個(gè)小時(shí))


          posted @ 2011-10-14 09:55 順其自然EVO| 編輯 收藏

          MMS性能測(cè)試系統(tǒng)及測(cè)試方法

           研究了MMS系統(tǒng)的性能測(cè)試系統(tǒng)和測(cè)試方法。

            測(cè)試系統(tǒng)包括客戶(hù)端仿真平臺(tái)以及與客戶(hù)端仿真平臺(tái)連接的統(tǒng)計(jì)模塊,通過(guò)在客戶(hù)端仿真平臺(tái)中模擬并向被測(cè)彩信中心系統(tǒng)發(fā)送基于MM1,MM3,MM4或MM7接口的彩信業(yè)務(wù),通過(guò)統(tǒng)計(jì)模塊對(duì)運(yùn)行結(jié)果進(jìn)行統(tǒng)計(jì)顯示,實(shí)現(xiàn)了對(duì)MMSC上的各個(gè)接口的處理性能的有效分析。

            1. 引言

             隨著彩信業(yè)務(wù)的發(fā)展迅速,其用戶(hù)數(shù)量不斷增長(zhǎng),對(duì)彩信業(yè)務(wù)系統(tǒng)的性能也提出了很高的要求。彩信業(yè)務(wù)在實(shí)際網(wǎng)絡(luò)環(huán)境中的系統(tǒng)結(jié)構(gòu)圖(見(jiàn)圖1)主要包括多媒 體信息中心(MultimediaMessageServiceCenter,簡(jiǎn)稱(chēng)MMSC,通常又稱(chēng)為彩信中心)、MMS終端用戶(hù)UA,Push代理網(wǎng) 關(guān)PPG、外部郵件(ExternalE-mail)服務(wù)器SMTP、增值業(yè)務(wù)提供商VAS。這些設(shè)備可以互為客戶(hù)端或服務(wù)器端,即發(fā)送方或接收方。

             對(duì)于一個(gè)MMSC而言,體系架構(gòu)中一般包含了MM1/MM3/MM4/MM7各個(gè)接口信息的處理,包括來(lái)自終端用戶(hù)(MO)的MM1接口信息,來(lái)自 VASP下發(fā)的MM7接口信息,來(lái)自外部郵件(ExternalE-mail)服務(wù)器smtp的MM3接口信息以及來(lái)自其他MMSC的MM4接口信息。

             為了衡量MMSC是否能夠承載移動(dòng)商用網(wǎng)業(yè)務(wù)以及突發(fā)高峰時(shí)段對(duì)MMSC的影響,保證移動(dòng)運(yùn)營(yíng)商的服務(wù)質(zhì)量,需要獲知MMSC上的各個(gè)接口的處理性能。 然而,目前國(guó)內(nèi)外包括一些國(guó)際標(biāo)準(zhǔn)化組織尚未對(duì)MMSC上的各個(gè)接口的處理性能進(jìn)行有效的分析,例如OMA組織一般僅側(cè)重于通信協(xié)議進(jìn)行分析,并沒(méi)有針對(duì) MMS系統(tǒng)的性能進(jìn)行測(cè)試。本文提出了一種彩信中心系統(tǒng)性能測(cè)試系統(tǒng),包括客戶(hù)端仿真平臺(tái)、統(tǒng)計(jì)模塊和服務(wù)器端仿真平臺(tái)。本文還提出了彩信系統(tǒng)性能測(cè)試方 法,并給出了彩信系統(tǒng)不同信息傳遞流程的具體測(cè)試方法和步驟。

            2. 彩信中心性能測(cè)試系統(tǒng)

             圖2是彩信中心系統(tǒng)性能測(cè)試系統(tǒng)組成圖:客戶(hù)端仿真平臺(tái)用于模擬彩信發(fā)送端并向被測(cè)彩信中心系統(tǒng)發(fā)送彩信測(cè)試消息,測(cè)試被測(cè)彩信中心接口MM4的處理性 能。統(tǒng)計(jì)模塊與該客戶(hù)端仿真平臺(tái)連接,用于統(tǒng)計(jì)及顯示該客戶(hù)端仿真平臺(tái)發(fā)送和接收的信息。服務(wù)器端仿真平臺(tái)通過(guò)被測(cè)彩信中心系統(tǒng)與客戶(hù)端仿真平臺(tái)連接,用 于模擬彩信接收端接收被測(cè)彩信中心轉(zhuǎn)發(fā)的彩信。加入服務(wù)器端仿真平臺(tái)后,本系統(tǒng)可以測(cè)試被測(cè)彩信中心更多接口的處理性能。

             客戶(hù)端仿真平臺(tái)模擬包含MM1/MM3/MM4/MM7各個(gè)接口的客戶(hù):信息發(fā)起終端(MO)模塊用于模擬終端用戶(hù)(UA)和WAP網(wǎng)關(guān)(WG);E- mail客戶(hù)端(SMTP)模塊用于模擬E-mail客戶(hù)端發(fā)送E-mail信息到MM3接口;彩信中心仿真模塊用于模擬彩信中心客戶(hù)端從MM4接口向被 測(cè)的彩信中心發(fā)送MM4-Forward信息;增值應(yīng)用服務(wù)商客戶(hù)端(VAS)模塊用于模擬增值應(yīng)用服務(wù)商客戶(hù)端發(fā)送MM7接口信息。

             服務(wù)器仿真平臺(tái)模擬各個(gè)接口的服務(wù)器端,包括:PPG模塊直接與彩信中心的MM1接口進(jìn)行通信,用于處理彩信中心的PUSH信息;E-mail服務(wù)器端 (SMTP)模塊用于模擬E-mail服務(wù)器端從MM3接口接收E-mai信息并且處理接收到的信息;用戶(hù)接收終端(MT)模塊用于接收來(lái)自PPG轉(zhuǎn)發(fā)的 彩信;增值應(yīng)用服務(wù)商服務(wù)器端(VAS)模塊用于模擬增值應(yīng)用服務(wù)商服務(wù)器端接收并處理MM7接口信息。MMS系統(tǒng)性能測(cè)試主要包括 MM1,MM3,MM4,MM7四個(gè)接口的協(xié)議處理。

            本系統(tǒng)通過(guò)模擬實(shí)現(xiàn)MMSC四個(gè)接口的所有彩信發(fā)送和接收流程以及各個(gè)接口之間的 信息交互,即通過(guò)彩信中心接收來(lái)自各個(gè)接口的信息,并且同時(shí)通過(guò)各個(gè)接口下發(fā)彩信信息,真實(shí)仿真現(xiàn)網(wǎng)各種業(yè)務(wù)流程,并對(duì)收發(fā)信息進(jìn)行統(tǒng)計(jì)顯示,從而得出彩 信中心系統(tǒng)的處理性能參數(shù),實(shí)現(xiàn)對(duì)彩信中心系統(tǒng)性能的有效測(cè)試。本系統(tǒng)將被測(cè)MMSC獨(dú)立出來(lái),完全脫離除被測(cè)MMS中心以外的其他網(wǎng)絡(luò)設(shè)備,用客戶(hù)端仿真平臺(tái)和服務(wù)器仿真平臺(tái)模擬了除被測(cè)MMS中心以外和MMS中心交互的網(wǎng)絡(luò)設(shè)備(如WAP網(wǎng)關(guān)和PPG),以保證測(cè)試結(jié)果的正確性。

            3. 彩信中心系統(tǒng)的性能測(cè)試方法

           ?。?)在客戶(hù)端仿真平臺(tái)中設(shè)置彩信;

            (2)向被測(cè)彩信中心及統(tǒng)計(jì)模塊發(fā)送彩信,統(tǒng)計(jì)模塊存儲(chǔ)彩信;

            (3)被測(cè)彩信中心向客戶(hù)端仿真平臺(tái)返回接收響應(yīng)信息;

            (4)客戶(hù)端仿真平臺(tái)將響應(yīng)信息發(fā)送給統(tǒng)計(jì)模塊,統(tǒng)計(jì)模塊存儲(chǔ)并顯示該響應(yīng)信息;

           ?。?)統(tǒng)計(jì)模塊計(jì)算收到的彩信和響應(yīng)信息的統(tǒng)計(jì)信息,獲得彩信中心系統(tǒng)的處理性能指標(biāo)參數(shù)。

            針對(duì)不同的信息傳遞流程,測(cè)試過(guò)程的具體處理方式是不同的。下面對(duì)幾類(lèi)典型的性能測(cè)試流程分別描述。

            3.1 MM1→MM1性能測(cè)試

            MM1→MM1的性能測(cè)試是通過(guò)MO提交、MT接收業(yè)務(wù),測(cè)試彩信中心系統(tǒng)MM1接口的處理性能。具體步驟為

            (1)在客戶(hù)端仿真平臺(tái)的MO中設(shè)置大量準(zhǔn)備發(fā)送的圖片彩信。

            (2)MO向被測(cè)彩信中心及統(tǒng)計(jì)模塊發(fā)送彩信,統(tǒng)計(jì)模塊存儲(chǔ)彩信:

            ●初始化HTTPTransaction向被測(cè)彩信中心發(fā)送圖片彩信,同時(shí)向統(tǒng)計(jì)模塊發(fā)送該彩信,統(tǒng)計(jì)模塊存儲(chǔ)彩信;

            ●被測(cè)彩信中心接收到圖片彩信后將其轉(zhuǎn)發(fā)到服務(wù)器端仿真平臺(tái)的模擬信息接收終端PPG,PPG收到MMSC下發(fā)的Push信息,通過(guò)解析,認(rèn)為是MMS通知信息,傳送到模擬MT對(duì)象;

            ●MT對(duì)象初始化HTTPTransaction向MMSC提交Retrieve請(qǐng)求,MT接收MMS完畢,向MMS中心發(fā)送MM1_acknowledge。REQ。

            (3)被測(cè)彩信中心收到接收結(jié)果信息后,向客戶(hù)端仿真平臺(tái)中的MO返回相應(yīng)的Response接收響應(yīng)信息。

           ?。?)客戶(hù)端仿真平臺(tái)中的MO將Response響應(yīng)信息發(fā)送給統(tǒng)計(jì)模塊,統(tǒng)計(jì)模塊存儲(chǔ)并顯示該響應(yīng)信息。

           ?。?)根據(jù)統(tǒng)計(jì)模塊顯示的彩信和響應(yīng)信息的統(tǒng)計(jì)信息進(jìn)行計(jì)算,計(jì)算(彩信數(shù)量-響應(yīng)信息數(shù)量)/彩信數(shù)量,獲得彩信中心系統(tǒng)的處理性能。

            3.2 MM1→MM4性能測(cè)試

            MM1→MM4的性能測(cè)試中,彩信的接收端為被測(cè)彩信中心,因此這項(xiàng)測(cè)試不需要服務(wù)器端仿真平臺(tái)。具體步驟為:

            (1)在客戶(hù)端仿真平臺(tái)的MO中設(shè)置大量音頻彩信

           ?。?)MO向被測(cè)彩信中心及統(tǒng)計(jì)模塊發(fā)送彩信,統(tǒng)計(jì)模塊存儲(chǔ)收到的彩信:

            ●MO向客戶(hù)端仿真平臺(tái)中的模擬的彩信中心客戶(hù)端發(fā)送MM4_forwardt。REQ請(qǐng)求接收音頻彩信;

            ●模擬的彩信中心客戶(hù)端接收音頻彩信并處理MM4_forwardt。REQ請(qǐng)求,向被測(cè)彩信中心發(fā)送MM4_forwardt。RES請(qǐng)求接 收音頻彩信,同時(shí)MO向統(tǒng)計(jì)模塊發(fā)送音頻彩信,統(tǒng)計(jì)模塊存儲(chǔ)音頻彩信;在測(cè)試彩信中心其它接口的處理能力時(shí),需要有接收來(lái)自被測(cè)彩信中心其它接口的彩信的 模擬彩信接收端,因此增加了服務(wù)器端仿真平臺(tái)。

           ?。?)被測(cè)彩信中心向客戶(hù)端仿真平臺(tái)返回Response接收響應(yīng)信息

            ●被測(cè)彩信中心收到音頻彩信后,向客戶(hù)端仿真平臺(tái)中的MMSC返回相應(yīng)的Response接收響應(yīng)信息;

            ●客戶(hù)端仿真平臺(tái)模擬的彩信中心客戶(hù)端將Response響應(yīng)信息轉(zhuǎn)發(fā)給MO。

            (4)MO將響應(yīng)信息發(fā)送給統(tǒng)計(jì)模塊,統(tǒng)計(jì)模塊存儲(chǔ)并顯示該響應(yīng)信息;

            (5)根據(jù)統(tǒng)計(jì)模塊顯示的彩信和響應(yīng)信息的統(tǒng)計(jì)信息進(jìn)行計(jì)算,計(jì)算(彩信數(shù)量-響應(yīng)信息數(shù)量)/彩信數(shù)量,獲得彩信中心系統(tǒng)MM4接口的處理性能。

            3.3 MM3→MM1的性能測(cè)試

            在客戶(hù)端仿真平臺(tái)的SMTP中設(shè)置大量E-mail內(nèi)容的彩信,向被測(cè)彩信中心和統(tǒng)計(jì)模塊發(fā)送E-mail彩信,統(tǒng)計(jì)模塊存儲(chǔ)E-mail彩 信;被測(cè)彩信中心將彩信轉(zhuǎn)發(fā)到服務(wù)器端仿真平臺(tái)的模擬信息接收終端PPG,PPG收到MMSC下發(fā)的Push信息,通過(guò)解析,認(rèn)為是MMS通知信息,傳送 到模擬MT對(duì)象,MT對(duì)象初始化HTTPTransaction向MMSC提交Retrieve請(qǐng)求,MT接收MMS完畢,向MMS中心發(fā)送 MM1_acknowledge。REQ;被測(cè)彩信中心收到接收結(jié)果信息后,向客戶(hù)端仿真平臺(tái)中的SMTP返回相應(yīng)的Response接收響應(yīng)信息;客戶(hù) 端仿真平臺(tái)中的SMTP將Response響應(yīng)信息發(fā)送給統(tǒng)計(jì)模塊,根據(jù)統(tǒng)計(jì)模塊顯示的E-mail彩信和響應(yīng)信息的統(tǒng)計(jì)信息進(jìn)行計(jì)算,計(jì)算(彩信數(shù)量- 響應(yīng)信息數(shù)量)/彩信數(shù)量,從而獲知彩信中心系統(tǒng)的處理性能

            3.4 MM7→MM1的性能測(cè)試

            在客戶(hù)端仿真平臺(tái)的增值應(yīng)用服務(wù)商客戶(hù)端中設(shè)置大量彩信;增值應(yīng)用服務(wù)商客戶(hù)端向被測(cè)彩信中心發(fā)送MM7_submit。REQ請(qǐng)求接收彩信, 同時(shí)向統(tǒng)計(jì)模塊發(fā)送彩信,統(tǒng)計(jì)模塊存儲(chǔ)彩信;被測(cè)彩信中心接收到彩信后將其轉(zhuǎn)發(fā)到服務(wù)器端仿真平臺(tái)的模擬信息接收終端PPG,PPG收到MMSC下發(fā)的 Push信息,通過(guò)解析,認(rèn)為是MMS通知信息,傳送到模擬MT對(duì)象,MT對(duì)象初始化HTTPTransaction向MMSC提交Retrieve請(qǐng) 求,MT接收MMS完畢,向MMS中心發(fā)送MM1_acknowledge。REQ;被測(cè)彩信中心收到接收結(jié)果信息后,向客戶(hù)端仿真平臺(tái)中的增值應(yīng)用服務(wù) 商客戶(hù)端返回相應(yīng)的Response接收響應(yīng)信息;客戶(hù)端仿真平臺(tái)中的增值應(yīng)用服務(wù)商客戶(hù)端將Response響應(yīng)信息發(fā)送給統(tǒng)計(jì)模塊,統(tǒng)計(jì)模塊存儲(chǔ)并顯 示該響應(yīng)信息;根據(jù)統(tǒng)計(jì)模塊顯示的彩信和響應(yīng)信息的統(tǒng)計(jì)信息進(jìn)行計(jì)算,計(jì)算(彩信數(shù)量-響應(yīng)信息數(shù)量)/彩信數(shù)量,可獲知彩信中心系統(tǒng)的處理性能。

            4. 結(jié)束語(yǔ)

            本文提出了一種彩信中心系統(tǒng)性能測(cè)試系統(tǒng),包括客戶(hù)端仿真平臺(tái)、統(tǒng)計(jì)模塊和服務(wù)器端仿真平臺(tái),同時(shí)還提出了彩信系統(tǒng)性能測(cè)試方法,并給出了彩信 系統(tǒng)不同信息傳遞流程的具體測(cè)試方法和步驟。采用本測(cè)試系統(tǒng),結(jié)合文中所述的測(cè)試方法和測(cè)試步驟,能夠測(cè)試彩信中心系統(tǒng)的各個(gè)接口的處理性能。


          posted @ 2011-10-13 17:51 順其自然EVO| 編輯 收藏

          性能測(cè)試的總結(jié)

           有機(jī)會(huì)做了一次性能測(cè)試工作,主要是預(yù)研性質(zhì)的工作。開(kāi)發(fā)人員有必要再提交給測(cè)試做性能測(cè)試之前,做一次比較粗糙的性能測(cè)試工作。

            1)走通性能測(cè)試流程,從造數(shù)據(jù)到測(cè)試,可以走通,方可交由測(cè)試同學(xué)。畢竟開(kāi)發(fā)(相對(duì)性能測(cè)試人員而非功能測(cè)試)對(duì)業(yè)務(wù)邏輯更了解一些。

            2)測(cè)試一些顯而易見(jiàn)的bug;

            3)建立性能方面的信心;

            4)可在測(cè)試的同學(xué)做完測(cè)試以后做一個(gè)對(duì)比,不至于偏離太過(guò)離譜。

            參照測(cè)試部門(mén)的意見(jiàn),我把這次的性能測(cè)試總結(jié)了如下幾個(gè)步驟:

            1、測(cè)試目標(biāo)和范圍:根據(jù)需要滿足的非功能需求,確定上線功能點(diǎn)哪些需要測(cè)試。測(cè)試性能、穩(wěn)定性、最大壓力。

            2、測(cè)試方案準(zhǔn)備:包括施壓方式,環(huán)境配置,環(huán)境依賴(lài),資源監(jiān)控,整理方案文檔。

            3、環(huán)境準(zhǔn)備:準(zhǔn)備壓力測(cè)試環(huán)境,一般是壓力測(cè)試機(jī)配置,壓力測(cè)試數(shù)據(jù)庫(kù)配置。

            4、數(shù)據(jù)準(zhǔn)備:根據(jù)線上預(yù)估數(shù)據(jù),對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)進(jìn)行準(zhǔn)備和模擬。

            5、測(cè)試準(zhǔn)備:包括需要編寫(xiě)的程序,如其他系統(tǒng)間依賴(lài)可寫(xiě)mock程序。另外編寫(xiě)jmeter的測(cè)試計(jì)劃等。嘗試測(cè)試,并確保一個(gè)請(qǐng)求或處理過(guò)程能順利通過(guò)。

            6、進(jìn)行測(cè)試:通過(guò)客戶(hù)端施壓服務(wù)器,監(jiān)控器各方面資源利用。

            7、進(jìn)行測(cè)試分析總結(jié):寫(xiě)測(cè)試報(bào)告。TPS,吞吐量,CPU占比等。對(duì)異常現(xiàn)象記錄,如內(nèi)存溢出等。

            8、根據(jù)測(cè)試報(bào)告對(duì)程序進(jìn)行優(yōu)化或重構(gòu)。

            做技術(shù)還是有做技術(shù)的天性,我們開(kāi)發(fā)最關(guān)心的也就是5-8的步驟。我們的應(yīng)用主要以hessian接口的形式向外面暴露,另外的就是任務(wù)在后臺(tái)處理接口推送過(guò)來(lái)的數(shù)據(jù)。所以,我們的測(cè)試主要集中在接口測(cè)試和任務(wù)測(cè)試。比一般網(wǎng)頁(yè)的性能測(cè)試更簡(jiǎn)單一些。

            我們選用的施壓客戶(hù)端是開(kāi)源的jmeter,文檔較為豐富,且操作極為方便,擴(kuò)展性好。服務(wù)器端性能監(jiān)控工具,均采用linux的shell命令和jvm自帶的工具或命令。jvm的工具已經(jīng)夠強(qiáng)大了,測(cè)試團(tuán)隊(duì)也是利用linux的命令采集服務(wù)器端資源,然后把消息發(fā)送到自己編寫(xiě)的一些資源監(jiān)控工具上,其實(shí)都是利用了原生的shell命令和jvm命令來(lái)周期性采集并繪圖的。

            JMeter沒(méi)有現(xiàn)成的sampler施壓hessian的接口,所以我們需要利用它極具擴(kuò)展性的java請(qǐng) 求sampler來(lái)施壓hessian接口。我們查看jmeter安裝目錄下的lib>ext下可以發(fā)現(xiàn)其他多種類(lèi)型的sampler。其他的種類(lèi) 都可以由javasampler來(lái)實(shí)現(xiàn)。我們只需要繼承org.apache.jmeter.protocol.java.sampler. AbstractJavaSamplerClient該類(lèi),在runTest方法中調(diào)用hessian接口,并封裝返回值即可。然后把工程打成jar包, 放到j(luò)meter安裝目錄下的lib>ext下。啟動(dòng)jemter,在利用javasampler就可以定為到我們編寫(xiě)的擴(kuò)展測(cè)試程序了。

            在壓力測(cè)試過(guò)程中,包括兩部分的資源檢測(cè),jvm的資源占用。一般利用jdk自帶工具集

            1、jps

            常用的幾個(gè)參數(shù):

            -l輸出java應(yīng)用程序的mainclass的完整包

            -q僅顯示pid,不顯示其它任何相關(guān)信息

            -m輸出傳遞給main方法的參數(shù)

            -v輸出傳遞給JVM的參數(shù)。在診斷JVM相關(guān)問(wèn)題的時(shí)候,這個(gè)參數(shù)可以查看JVM相關(guān)參數(shù)的設(shè)置

            2、jstat-JavaVirtualMachineStatisticsMonitoringTool

            jstat[Options]vmid[interval][count]

            Options--選項(xiàng),我們一般使用-gcutil查看gc情況還有其他選項(xiàng)如:

            -class-compiler-gc-gccapacity-gccause-gcnew-gcnewcapacity-gcold-gcoldcapacity-gcpermcapacity-gcutil-printcompilation

            vmid--VM的進(jìn)程號(hào),即當(dāng)前運(yùn)行的java進(jìn)程號(hào)

            interval--間隔時(shí)間,單位為毫秒

            count--打印次數(shù),如果缺省則打印無(wú)數(shù)次

            -----------------------------------------------jstat-gcutil[pid]輸出解釋

            S0--Heap上的Survivorspace0區(qū)已使用空間的百分比

            S1--Heap上的Survivorspace1區(qū)已使用空間的百分比

            E--Heap上的Edenspace區(qū)已使用空間的百分比

            O--Heap上的Oldspace區(qū)已使用空間的百分比

            P--Permspace區(qū)已使用空間的百分比

            YGC--從應(yīng)用程序啟動(dòng)到采樣時(shí)發(fā)生YoungGC的次數(shù)

            YGCT--從應(yīng)用程序啟動(dòng)到采樣時(shí)YoungGC所用的時(shí)間(單位秒)

            FGC--從應(yīng)用程序啟動(dòng)到采樣時(shí)發(fā)生FullGC的次數(shù)

            FGCT--從應(yīng)用程序啟動(dòng)到采樣時(shí)FullGC所用的時(shí)間(單位秒)

            GCT--從應(yīng)用程序啟動(dòng)到采樣時(shí)用于垃圾回收的總時(shí)間(單位秒)

            3、jhat-JavaHeapAnalysisTool用于內(nèi)存快照文件的分析,當(dāng)然還有很多類(lèi)似工具

            4、jstatd-VirtualMachinejstatDaemon

            5、jinfo-ConfigurationInfo

            6、jvisualvm-JavaVirtualMachineMonitoring,Troubleshooting,andProfilingTool

            7、jconsole-JavaMonitoringandManagementConsole

            8、jmap-MemoryMapjvm內(nèi)存分析工具,得到最普遍的使用。

            jmap-histo<pid>b。log輸出內(nèi)存類(lèi)占用,對(duì)比各時(shí)段的內(nèi)存類(lèi),可方便知道回收情況和占用情況。

            jmap-dump:format=b,file=heap。dump<pid>輸出內(nèi)存快照,可用許多開(kāi)源工具分析內(nèi)存快照。

            jprofile太耗內(nèi)存,如果靜態(tài)分析能得出結(jié)論的可避免使用

            9、jstack-StackTrace打印線程的堆棧跟蹤信息

            10、btrace-sun提供的檢測(cè)工具,很好很強(qiáng)大,用于檢測(cè)函數(shù)耗時(shí)等,微浸入。

            而服務(wù)器端的資源監(jiān)控多用Linux的shell命令如:top,free,vmstat,iostat,uptime等,詳細(xì)用法不累述。

            本次測(cè)試過(guò)程中遇到的幾個(gè)誤區(qū)和犯的錯(cuò)誤:

            1、jmeter關(guān)于線程組的線程數(shù)和ramp-up值的設(shè)置,如果設(shè)置ramp-up為1秒,線程數(shù)為10,我錯(cuò)誤的理解為這就是一秒內(nèi)的請(qǐng)求量。其實(shí)是jmeter一秒內(nèi)啟動(dòng)了10個(gè)線程,這10個(gè)線程分別發(fā)送請(qǐng)求,知道服務(wù)器端返回后,再次發(fā)送。

            這個(gè)錯(cuò)誤的理解直接導(dǎo)致我們的一個(gè)異步接口(接口把數(shù)據(jù)保存在一個(gè)無(wú)上限queue中,另外起線程來(lái)消費(fèi))在壓力測(cè)試過(guò)程中,被壓垮,以為是內(nèi)存泄露問(wèn)題,其實(shí)只是我們的服務(wù)器沒(méi)能力處理這樣一個(gè)數(shù)據(jù)量。

            2、在一個(gè)日志處理模塊中的生產(chǎn)和消費(fèi)者模型中,產(chǎn)生的線程過(guò)多。后經(jīng)過(guò)配置修改了消費(fèi)者和生產(chǎn)者的比例。但是在定位問(wèn)題時(shí),產(chǎn)生很多困難,因?yàn)椴恢朗鞘裁淳€程出現(xiàn)這么多。程序中所有的線程必須命名才方便工具的觀察,需要開(kāi)發(fā)中規(guī)范和定義好。

            3、對(duì)于任務(wù)類(lèi)型的性能測(cè)試沒(méi)有返回值,我們?cè)趺从^察任務(wù)處理一條記錄的時(shí)間,或單位時(shí)間內(nèi)處理記錄的條數(shù)呢?開(kāi)發(fā) 人員習(xí)慣在源代碼中去修改,并做trace,更好的方法是采用btrace工具來(lái)跟蹤方法的進(jìn)出。它在監(jiān)控方法的耗時(shí),查看某些方法的參數(shù)值,監(jiān)控內(nèi)存使 用情況等一系列場(chǎng)合中使用。

            4、開(kāi)發(fā)錯(cuò)誤的理解org。springframework。scheduling。concurrent。 ThreadPoolTaskExecutor類(lèi)的corePoolSize和maxPoolSize和queueCapacity三者的關(guān)系。原以為 corePoolSize是啟動(dòng)時(shí)變初始化的核心線程數(shù),如果還有任務(wù)需要執(zhí)行,那么就會(huì)新建線程到線程池中,直到達(dá)到最大maxPoolSize的大 小。然后放不下的任務(wù)才浸入queueCapacity中存儲(chǔ)。而實(shí)際情況確是:任務(wù)到達(dá)corePoolSize之后,就放入 queueCapacity的queue中了。造成我們的配置錯(cuò)誤,引起串行的任務(wù)執(zhí)行。

            的確在開(kāi)發(fā)功能測(cè)試中沒(méi)有發(fā)現(xiàn)的問(wèn)題,通過(guò)性能測(cè)試暴露了出來(lái)。除了這些bug之外,我們還確認(rèn)了我們接口的性能,任務(wù)的性能和穩(wěn)定性。

          posted @ 2011-10-13 17:46 順其自然EVO| 編輯 收藏

          云計(jì)算數(shù)據(jù)中心網(wǎng)絡(luò)性能測(cè)試

            云計(jì)算數(shù)據(jù)中心的網(wǎng)絡(luò)測(cè)試主要包含虛擬化測(cè)試、安全測(cè)試、高可靠測(cè)試和性能測(cè)試四 個(gè)部分。前三者重點(diǎn)在于對(duì)數(shù)據(jù)中心網(wǎng)絡(luò)的功能設(shè)計(jì)進(jìn)行測(cè)試驗(yàn)證,性能測(cè)試則是度量整個(gè)云網(wǎng)絡(luò)的關(guān)鍵,用以確認(rèn)其能夠提供的服務(wù)能力基線。云計(jì)算技術(shù)目前很 多應(yīng)用在大型的高性能計(jì)算(超算)數(shù)據(jù)中心中,在此類(lèi)數(shù)據(jù)中心內(nèi)部,性能處于業(yè)務(wù)保障的第一關(guān)鍵位置。本文重點(diǎn)關(guān)注性能測(cè)試的部分,從測(cè)試設(shè)計(jì)方面進(jìn)行探 討。

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

            數(shù)據(jù)中心網(wǎng)絡(luò)性能測(cè)試手段很多,業(yè)務(wù)仿真測(cè)試是最能體現(xiàn)實(shí)際應(yīng)用情 況的測(cè)試方法。業(yè)務(wù)仿真測(cè)試往往需要利用大量服務(wù)器和存儲(chǔ)設(shè)備,通過(guò)部署仿真應(yīng)用環(huán)境來(lái)測(cè)試網(wǎng)絡(luò)針對(duì)此類(lèi)型應(yīng)用的轉(zhuǎn)發(fā)性能。但此方法受成本和測(cè)試復(fù)雜度影 響,一般只在超大型且應(yīng)用較為單一的數(shù)據(jù)中心測(cè)試時(shí)使用,如百度/SOHU搜索業(yè)務(wù)仿真、QQ/MSN實(shí)時(shí)通訊業(yè)務(wù)仿真、石油勘探/氣象預(yù)報(bào)計(jì)算業(yè)務(wù)仿真 等。

            除了上述專(zhuān)用測(cè)試方法外,還可以通過(guò)測(cè)試儀器模擬一些基本的應(yīng)用流量來(lái)測(cè)試其主要性能。此方式由于實(shí)施簡(jiǎn)便、通用型強(qiáng),在數(shù)據(jù)中心 網(wǎng)絡(luò)性能測(cè)試中應(yīng)用較多。受當(dāng)前整個(gè)Internet應(yīng)用使用情況影響,測(cè)試儀模擬的網(wǎng)絡(luò)應(yīng)用以TCP的HTTP為主,有時(shí)會(huì)根據(jù)具體的實(shí)際業(yè)務(wù)情況添加 Mail、FTP和HTTPS進(jìn)行補(bǔ)充,這種測(cè)試設(shè)計(jì)也符合當(dāng)前云計(jì)算數(shù)據(jù)中心的實(shí)際應(yīng)用情況。

            測(cè)試環(huán)境

            在測(cè)試數(shù)據(jù)中心網(wǎng)絡(luò)性能時(shí),通常使用成對(duì)的測(cè)試儀器端口,連接到數(shù)據(jù)中心網(wǎng)絡(luò)兩端,將整個(gè)網(wǎng)絡(luò)視為黑盒進(jìn)行端到端的性能結(jié)果測(cè)試。典型測(cè)試組網(wǎng)設(shè)計(jì)如圖1所示。

          圖1   數(shù)據(jù)中心性能典型測(cè)試組網(wǎng)

             圖1中的數(shù)據(jù)中心網(wǎng)絡(luò)結(jié)構(gòu)采用典型的3層雙冗余結(jié)構(gòu)。核心層設(shè)備采用高端交換設(shè)備進(jìn)行三層路由轉(zhuǎn)發(fā),其與匯聚層設(shè)備間通過(guò)OSPF動(dòng)態(tài)路由協(xié)議互連,以 提供多路冗余保障,同時(shí)通過(guò)只發(fā)布缺省路由到匯聚層設(shè)備的方式來(lái)減輕匯聚層設(shè)備的路由壓力;匯聚層設(shè)備作為模擬服務(wù)器設(shè)備的網(wǎng)關(guān)提供三層轉(zhuǎn)發(fā)功能,使能 VRRP等網(wǎng)關(guān)冗余協(xié)議來(lái)保證雙機(jī)熱備,并通過(guò)VLANTRUNK方式與接入層設(shè)備相連;接入層設(shè)備部署為二層轉(zhuǎn)發(fā)模式,通過(guò)MSTP協(xié)議確保多VLAN 環(huán)境下的冗余鏈路備份功能。

            測(cè)試儀器通過(guò)多個(gè)接口分別與核心層設(shè)備和接入層設(shè)備連接,并模擬Client和Server進(jìn)行有狀態(tài)的流量轉(zhuǎn)發(fā)性能測(cè)試。測(cè)試模擬的協(xié)議類(lèi)型盡量與使用環(huán)境貼近,最常見(jiàn)的是使用HTTP協(xié)議進(jìn)行基于L7的業(yè)務(wù)流量模擬。

            另外為了確保數(shù)據(jù)中心測(cè)試的仿真度,還需要模擬大量的路由、VLAN和流數(shù)量。例如測(cè)試的為一個(gè)大型的企業(yè)云數(shù)據(jù)中心,則需要定義以下背景環(huán)境參量:

            1. 首先設(shè)置背景路由,在核心設(shè)備上模擬發(fā)布1萬(wàn)條OSPF散列路由,其發(fā)起源為50個(gè)Router,路由模擬調(diào)配比例為NetworkLSA:SummaryLSA:ExternalLSA=1:3:16

            2. 然后設(shè)置背景VLAN與模擬服務(wù)器,在匯聚層與接入層設(shè)備上部署8個(gè)MSTP的Instance,每個(gè)Instance中包含8個(gè)VLAN,使用測(cè)試儀器在每個(gè)VLAN中模擬100個(gè)HostServer,總共64個(gè)VLAN,6400個(gè)Server。

            3. 最后構(gòu)造測(cè)試流量,定義1萬(wàn)個(gè)Client源IP地址一一對(duì)應(yīng)到模擬的1萬(wàn)條散列OSPF路由中,目的IP地址64個(gè),分別為模擬的64個(gè)VLAN中每個(gè)VLAN隨機(jī)抽取的各一個(gè)HostServer地址??偣矠?4萬(wàn)條IP測(cè)試流。

            上述測(cè)試參數(shù)定義均可通過(guò)測(cè)試儀器配置完成。

            當(dāng)測(cè)試環(huán)境部署完畢后,即可使用測(cè)試儀器進(jìn)行整網(wǎng)性能指標(biāo)的測(cè)試執(zhí)行工作。

          關(guān)鍵指標(biāo)及測(cè)試方法

            衡量云計(jì)算數(shù)據(jù)中心的網(wǎng)絡(luò)性能根據(jù)使用的網(wǎng)絡(luò)設(shè)備不同擁有很多指標(biāo)。常見(jiàn)的關(guān)鍵性能指標(biāo)包括以下幾項(xiàng):

            1. L4新建速率(CPS)

            2. L4并發(fā)數(shù)(CC)

            3. L7吞吐量(GoodPut)

            4. L7響應(yīng)時(shí)間(ResponseTime)

            其中L4測(cè)試一般使用TCP協(xié)議構(gòu)造流量,L7測(cè)試使用HTTP協(xié)議構(gòu)造流量。下面就這幾項(xiàng)關(guān)鍵指標(biāo)的測(cè)試方法進(jìn)行介紹。

            L4新建速率測(cè)試

            L4新建速率指通過(guò)數(shù)據(jù)中心中間網(wǎng)絡(luò)每秒可以處理的TCPSession速率,單位為CPS(ConnectionsPerSecond)。

            需要注意的是,這里的“新建”指的是一個(gè)TCPSession成功建立并關(guān)閉的整個(gè)過(guò)程,并不是單純指字面意義上的連接建立速率。在常見(jiàn)的L4新建速率測(cè)試中,主要使用TCP80端口的HTTP服務(wù)進(jìn)行測(cè)試。測(cè)試配置中,關(guān)鍵在于以下幾點(diǎn):

            1. 將TCP關(guān)閉方式選擇使用TCPFIN報(bào)文觸發(fā)的4次握手關(guān)閉方式。此種方式最符合當(dāng)前普遍的網(wǎng)絡(luò)協(xié)議應(yīng)用模型。在部分特殊業(yè)務(wù)需求的測(cè)試場(chǎng)景下可以采用TCPRESET方式進(jìn)行快速會(huì)話關(guān)閉,以測(cè)出網(wǎng)絡(luò)系統(tǒng)能夠支持的極限性能。

            2. 將TCP的會(huì)話關(guān)閉等待時(shí)間設(shè)置為0ms,既服務(wù)器端收到請(qǐng)求后立刻進(jìn)行回應(yīng)關(guān)閉,避免中間設(shè)備的表項(xiàng)資源消耗對(duì)測(cè)試結(jié)果的干擾。

            3. 將HTTP的傳輸數(shù)據(jù)載荷設(shè)置為盡量小(常見(jiàn)為64byte),以加快測(cè)試儀表模擬的Client和Server報(bào)文交互速率,便于更準(zhǔn)確地測(cè)試出設(shè)備能力上限。

            4. 將每TCPConnection中的HTTPTransaction數(shù)量設(shè)置為1,減小不必要的測(cè)試干擾,得出更精確的測(cè)試結(jié)果。

            5. 需要設(shè)定一定長(zhǎng)度的相同新建速率測(cè)試持續(xù)時(shí)間(如3600s),以保證測(cè)試結(jié)果的有效性。

            6. 在測(cè)試開(kāi)始前記錄網(wǎng)絡(luò)中主要設(shè)備的CPU/Memory等關(guān)鍵性能指標(biāo),測(cè)試過(guò)程中和結(jié)束后對(duì)這些指標(biāo)進(jìn)行監(jiān)控,實(shí)時(shí)了解整個(gè)網(wǎng)絡(luò)的運(yùn)行情況。

            L4新建速率測(cè)試的結(jié)果將主要體現(xiàn)數(shù)據(jù)中心網(wǎng)絡(luò)中L4-L7設(shè)備的CPU(根據(jù)不同廠商設(shè)備的具體可以指NP、ASIC和協(xié)處理器等進(jìn)行TCP新建表項(xiàng)計(jì)算的處理單元)運(yùn)算處理能力。其線性關(guān)系如圖2所示。

          圖2  L4新建速率結(jié)果與網(wǎng)絡(luò)設(shè)備CPU關(guān)系示意圖

            L4并發(fā)數(shù)測(cè)試

            L4并發(fā)數(shù)指通過(guò)數(shù)據(jù)中心中間網(wǎng)絡(luò)可以同時(shí)并發(fā)存在的最大TCPSession數(shù)量,單位為CC(CurrentConnections)。

            對(duì)于L4并發(fā)數(shù)測(cè)試來(lái)說(shuō),尤其需要關(guān)注其上層協(xié)議的具體應(yīng)用,一個(gè)Telnet連接保持1小時(shí)與一個(gè)HTTP連接保持1小時(shí)在協(xié)議處理流程上是有很大不同的,應(yīng)盡量根據(jù)實(shí)際網(wǎng)絡(luò)中的業(yè)務(wù)流量設(shè)計(jì)測(cè)試模型。以下仍以最常見(jiàn)的HTTP協(xié)議進(jìn)行測(cè)試舉例說(shuō)明。

            由于實(shí)際的網(wǎng)絡(luò)模型都是在不斷的進(jìn)行TCP連接建立和關(guān)閉,因此并發(fā)數(shù)測(cè)試結(jié)果也要在穩(wěn)定的新建速率下獲得,而不能同時(shí)將所有TCP連接一起打 入再進(jìn)行等待。過(guò)高的新建速率會(huì)導(dǎo)致中間網(wǎng)絡(luò)設(shè)備的處理能力下降,從而影響到并發(fā)數(shù)的測(cè)試結(jié)果;而較低的新建速率則會(huì)導(dǎo)致超長(zhǎng)的會(huì)話保持時(shí)間,也與實(shí)際模 型相背

            舉例:期望的網(wǎng)絡(luò)并發(fā)數(shù)為300萬(wàn),使用1千CPS的速率進(jìn)行新建,則需要將測(cè)試儀器的會(huì)話回應(yīng)等待時(shí)間調(diào)整至 3,000,000/1,000=3000s才能得到接近期望的測(cè)試結(jié)果,而如此長(zhǎng)的會(huì)話保持時(shí)間對(duì)網(wǎng)絡(luò)中間設(shè)備來(lái)說(shuō)屬于并不符合實(shí)際網(wǎng)絡(luò)業(yè)務(wù)模型的處理 方式。

            因此正確的測(cè)試方法是,先測(cè)試出中間網(wǎng)絡(luò)的極限CPS能力,然后取中間設(shè)備穩(wěn)定運(yùn)行時(shí)(如CPU使用率在60%)能夠處理的新建速率,再根據(jù)并發(fā)數(shù)期望測(cè)試結(jié)果計(jì)算出測(cè)試儀的會(huì)話回應(yīng)關(guān)閉等待時(shí)間,通過(guò)調(diào)整此時(shí)間測(cè)試出實(shí)際的設(shè)備并發(fā)數(shù)處理能力。

            舉例:先測(cè)試出的網(wǎng)絡(luò)新建速率極限值為20萬(wàn)CPS,CPU穩(wěn)定在60%時(shí)的最大新建速率值為15萬(wàn)CPS,期望的最大并發(fā)數(shù)為300萬(wàn),則在 測(cè)試并發(fā)數(shù)時(shí)設(shè)置測(cè)試儀器的新建速率為15萬(wàn)CPS,會(huì)話回應(yīng)關(guān)閉等待時(shí)間為20s上下調(diào)整,以確認(rèn)網(wǎng)絡(luò)能夠達(dá)到的實(shí)際最大并發(fā)數(shù)。

            L4并發(fā)數(shù)測(cè)試配置需要注意以下幾點(diǎn):

            1. 根據(jù)網(wǎng)絡(luò)L4新建速率測(cè)試結(jié)果,設(shè)置穩(wěn)定的新建速率參數(shù)和會(huì)話回應(yīng)關(guān)閉等待時(shí)間參數(shù)。

            2. 可以適當(dāng)調(diào)整TCP會(huì)話關(guān)閉方式,以減少中間網(wǎng)絡(luò)設(shè)備壓力,如采用Reset方式關(guān)閉。

            3. 同新建速率測(cè)試一樣,設(shè)置HTTP載荷為盡量小值(如64byte),并將每個(gè)TCPConnection中的HTTPTransaction數(shù)量設(shè)置為1,減少對(duì)測(cè)試結(jié)果的干擾。

            4. 將整個(gè)測(cè)試周期時(shí)間設(shè)置為一個(gè)較長(zhǎng)值(如3600s),同步驗(yàn)證網(wǎng)絡(luò)的穩(wěn)定性。

            5. 測(cè)試前中后的整個(gè)過(guò)程中記錄網(wǎng)絡(luò)主要設(shè)備的關(guān)鍵性能指標(biāo),進(jìn)行比較確認(rèn)。

            L4并發(fā)數(shù)測(cè)試結(jié)果體現(xiàn)了整網(wǎng)會(huì)話保持與表項(xiàng)存儲(chǔ)的能力,與網(wǎng)絡(luò)中L4-L7處理設(shè)備的內(nèi)存大小有直接關(guān)系。這里的內(nèi)存大小依據(jù)各個(gè)廠商設(shè)備實(shí)現(xiàn)的不同也指DRAM、接口內(nèi)存和CAM等TCP會(huì)話表項(xiàng)存儲(chǔ)單元容量。TCP并發(fā)數(shù)與內(nèi)存使用大小的線性關(guān)系如圖3所示。

            圖3  L4并發(fā)數(shù)結(jié)果與網(wǎng)絡(luò)設(shè)備Memory使用率關(guān)系示意圖

            L7吞吐量測(cè)試

            L7吞吐量指當(dāng)前網(wǎng)絡(luò)可以有效傳輸?shù)淖畲驢TTP數(shù)據(jù)量,也被稱(chēng)為有效吞吐GoodPut,區(qū)別于傳統(tǒng)意義上的測(cè)試指標(biāo)L3吞吐量ThroughPut,結(jié)果單位為BPS(BytePerSecond)。

            L7吞吐量測(cè)試結(jié)果很大程度上依賴(lài)于L4新建速率能力,其間關(guān)系類(lèi)似于傳統(tǒng)L3吞吐量BPS(BitPerSecond)與網(wǎng)絡(luò)設(shè)備包轉(zhuǎn)發(fā)能力 PPS(PacketsPerSecond)之間的關(guān)系。在測(cè)試L7吞吐量的過(guò)程中,首先測(cè)得網(wǎng)絡(luò)的新建速率,然后將新建速率測(cè)試結(jié)果乘以一定比率系數(shù) (例如80%),作為L(zhǎng)7吞吐量測(cè)試中使用的的穩(wěn)定新建速率參數(shù)始終不變,測(cè)試時(shí)逐步提高HTTP有效載荷大小,通過(guò)觀察出現(xiàn)HTTP連接出現(xiàn)失敗前的有 效載荷最大傳輸速率,得到其L7吞吐量測(cè)試結(jié)果。

            舉例:采用的穩(wěn)定持續(xù)新建速率為20萬(wàn)CPS,能夠無(wú)失敗傳輸?shù)淖畲笥行лd荷值為500Byte,則系統(tǒng)的L7吞吐量為100MBPS(BytePerSecond)。

            在L7吞吐量測(cè)試中還需要注意的是可以適當(dāng)提高每TCPConnection中的HTTPTransaction數(shù)量,如采用1:10的比例, 這樣能夠進(jìn)一步提高L7吞吐量測(cè)試結(jié)果。但需要注意采用多Transaction方式時(shí),需要將測(cè)試儀器上的HTTP協(xié)議類(lèi)型設(shè)置為HTTP1。 1,HTTP1。0協(xié)議不支持此種傳輸加載方式。

            L7吞吐量的測(cè)試結(jié)果除了受L4新建速率的直接影響外,還會(huì)受到網(wǎng)絡(luò)中各設(shè)備的交換架構(gòu)、接口總線等元件單位間處理能力的限制,其測(cè)試結(jié)果也直接體現(xiàn)了整個(gè)網(wǎng)絡(luò)的應(yīng)用數(shù)據(jù)吞吐轉(zhuǎn)發(fā)能力。

            L7響應(yīng)時(shí)間測(cè)試

            L7響應(yīng)時(shí)間指從客戶(hù)端發(fā)起http請(qǐng)求,到得到正確數(shù)據(jù)響應(yīng)所經(jīng)歷的時(shí)間,一般用來(lái)衡量中間網(wǎng)絡(luò)的綜合處理能力,單位為毫秒。

            L7響應(yīng)時(shí)間與L7延遲時(shí)間的主要區(qū)別是:延遲時(shí)間指客戶(hù)端發(fā)出報(bào)文到服務(wù)器接收到此報(bào)文或反向發(fā)送接收的間隔時(shí)間;響應(yīng)時(shí)間則指的時(shí)一個(gè)完整 連接的客戶(hù)端于服務(wù)器報(bào)文來(lái)回交互過(guò)程時(shí)間。在數(shù)據(jù)中心網(wǎng)絡(luò)中,響應(yīng)時(shí)間可以更好的表現(xiàn)出整個(gè)網(wǎng)絡(luò)對(duì)有狀態(tài)的流量處理能力,在HTTP這種需要客戶(hù)端與服 務(wù)器進(jìn)行反復(fù)交互的應(yīng)用協(xié)議使用中尤為重要。

            響應(yīng)時(shí)間的測(cè)試方法主要有兩種:一種是基于真實(shí)服務(wù)器的業(yè)務(wù)響應(yīng)時(shí)間測(cè)試,此測(cè)試結(jié)果包含了中間網(wǎng)絡(luò)設(shè)備與服務(wù)器兩部分處理延遲時(shí)間;另一種是 通過(guò)測(cè)試儀模擬服務(wù)器快速響應(yīng)請(qǐng)求的測(cè)試,這種測(cè)試方法可以盡量減少服務(wù)器端處理延遲的影響,得到近乎純粹的網(wǎng)絡(luò)處理延遲時(shí)間。

            L7響應(yīng)時(shí)間測(cè)試要在一定的新建速率下進(jìn)行,這樣做也是為了盡量貼近實(shí)際網(wǎng)絡(luò)情況。但此測(cè)試中的新建速率需要維持在一個(gè)較低的水平線上,最好是根據(jù)真實(shí)環(huán)境平均值設(shè)定,這是因?yàn)樾陆ㄋ俾瘦^高時(shí)會(huì)導(dǎo)致CPU資源占用較高,影響設(shè)備對(duì)連接的處理能力。

            常用測(cè)試工具

            使用專(zhuān)用測(cè)試工具測(cè)試數(shù)據(jù)中心網(wǎng)絡(luò)性能時(shí),可以采用軟件與硬件兩類(lèi)。

            軟件測(cè)試工具指需要運(yùn)行在例如UNIX、Linux和Windows等開(kāi)放的操作系統(tǒng)及通用的硬件架構(gòu)上,并且只需對(duì)現(xiàn)有系統(tǒng)做出微小甚至不做改動(dòng)就能夠完成測(cè)試任務(wù)的軟件。

            部分性能測(cè)試軟件如下:

            HTTP–HTTPLOAD,WebServerStress,LOADRunner,WebBench,WebStone,SPECweb99

            MAIL–Loadsim,Medusa(MicrosoftExchange),

            DB-BenchmarkFactoryforDatabases,Jetstress,DBstress

            IPSAN–IOmeter,Iozone,Bonnie++,dd

            硬件測(cè)試工具指使用單獨(dú)的硬件設(shè)備配合裝載在PC上的控制軟件完成測(cè)試工作,其性能要遠(yuǎn)優(yōu)于一般的軟件測(cè)試工具,但相對(duì)的缺點(diǎn)是價(jià)格較高和可擴(kuò) 展性較差(功能升級(jí)有時(shí)需要對(duì)硬件產(chǎn)品進(jìn)行改變,成本很高)。基于數(shù)據(jù)中心以應(yīng)用為根本的網(wǎng)絡(luò)流量特點(diǎn),通常采用支持L7應(yīng)用的測(cè)試儀器進(jìn)行測(cè)試。目前主 流的測(cè)試儀器廠商有Spirent、IXIA和BreakingPoint等。

            在云計(jì)算數(shù)據(jù)中心網(wǎng)絡(luò)性能測(cè)試中,如果需要更好的仿真業(yè)務(wù)應(yīng)用,建議采用軟件集群服務(wù)器安裝測(cè)試方式;如果希望得到最大的極限能力,建議采用硬件測(cè)試儀器來(lái)進(jìn)行測(cè)試。

            結(jié)束語(yǔ)

            在數(shù)據(jù)中心網(wǎng)絡(luò)性能測(cè)試中,還有以下一些常用經(jīng)驗(yàn)可以在測(cè)試設(shè)計(jì)和執(zhí)行中進(jìn)行參考:

            1. 當(dāng)測(cè)試模擬的流量越接近真實(shí)網(wǎng)絡(luò),測(cè)試環(huán)境就需要越復(fù)雜。

            2. 永遠(yuǎn)不能通過(guò)測(cè)試設(shè)計(jì)去完全的模擬真實(shí)網(wǎng)絡(luò)環(huán)境。

            3. 沒(méi)有任何兩個(gè)測(cè)試環(huán)境是完全相同的,因此所有測(cè)試結(jié)果只有參考性,不具標(biāo)準(zhǔn)性。

            4. 不同的網(wǎng)絡(luò)環(huán)境體現(xiàn)不同的流量模型,最好的不見(jiàn)得是最適合的。

            5. 數(shù)據(jù)中心性能測(cè)試結(jié)果永遠(yuǎn)向網(wǎng)絡(luò)中性能最差設(shè)備指標(biāo)看齊。

            6. 所有測(cè)試之前一定先要進(jìn)行測(cè)試工具的自測(cè)試,了解其能力限制。

            云計(jì)算數(shù)據(jù)中心的廣泛部署是一個(gè)持續(xù)漸進(jìn)的過(guò)程,而基于云計(jì)算數(shù)據(jù)中心的測(cè)試是使其大范圍推廣的關(guān)鍵保障。做好云計(jì)算數(shù)據(jù)中心網(wǎng)絡(luò)的測(cè)試設(shè)計(jì)和 執(zhí)行,可以更好的了解當(dāng)前網(wǎng)絡(luò)設(shè)計(jì)的能力范疇,以便更準(zhǔn)確的應(yīng)對(duì)基于云計(jì)算技術(shù)的應(yīng)用業(yè)務(wù)需求,為云應(yīng)用提供更好的通道架構(gòu)服務(wù)。

          posted @ 2011-10-13 17:38 順其自然EVO| 編輯 收藏

          功能測(cè)試中遇到不可重現(xiàn)軟件缺陷的解決策略

               摘要: 在測(cè)試人 員提交軟件缺陷報(bào)告后,最不希望看到的這些缺陷被開(kāi)發(fā)人員忽略,盡管你堅(jiān)信這一定是軟件缺陷,而罪魁禍?zhǔn)拙褪沁@些缺陷不可重現(xiàn)!一旦出現(xiàn)這樣的情況,測(cè)試 人員會(huì)很被動(dòng),開(kāi)發(fā)人員也會(huì)對(duì)測(cè)試人員有意見(jiàn)。這就使得關(guān)系本來(lái)就不怎么融洽的測(cè)試人員和開(kāi)發(fā)人員之間的關(guān)系更加緊張;對(duì)于整個(gè)時(shí)間緊湊的項(xiàng)目來(lái)說(shuō),無(wú)異 于是火上澆油。為了減少這種尷尬情況的出現(xiàn),非常有必要分析一下軟件缺陷不能重現(xiàn)的原因?! ?. 測(cè)試...  閱讀全文

          posted @ 2011-10-13 17:19 順其自然EVO| 編輯 收藏

          僅列出標(biāo)題
          共394頁(yè): First 上一頁(yè) 382 383 384 385 386 387 388 389 390 下一頁(yè) Last 
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類(lèi)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 嘉峪关市| 保康县| 韶关市| 邮箱| 阳春市| 孝义市| 德州市| 左云县| 贡觉县| 苏尼特右旗| 玉林市| 临城县| 阿瓦提县| 八宿县| 格尔木市| 阿拉尔市| 正宁县| 乐业县| 平和县| 宁都县| 四平市| 德清县| 太仆寺旗| 宜君县| 南靖县| 健康| 漯河市| 徐水县| 南陵县| 工布江达县| 湖南省| 竹北市| 通榆县| 雅江县| 石家庄市| 临泉县| 肥西县| 潜江市| 洛阳市| 项城市| 全州县|