• 軟件測試技術
  • 軟件測試博客
  • 軟件測試視頻
  • 開源軟件測試技術
  • 軟件測試論壇
  • 軟件測試沙龍
  • 軟件測試資料下載
  • 軟件測試雜志
  • 軟件測試人才招聘
    暫時沒有公告

字號: | 推薦給好友 上一篇 | 下一篇

軟件測試中用組合提高軟件測試用例的生成

發布: 2010-9-27 13:31 | 作者: 網絡轉載 | 來源: 領測軟件測試網采編 | 查看: 103次 | 進入軟件測試論壇討論

領測軟件測試網
  

軟件測試中用組合提高軟件測試用例的生成

測試用例(Test Case)是為某個特殊目標而編制的一組測試輸入、執行條件以及預期結果,以便測試某個程序路徑或核實是否滿足某個特定需求。

  測試用例(Test Case)目前沒有經典的定義。比較通常的說法是:指對一項特定的軟件產品進行測試任務的描述,體現測試方案、方法、技術和策略。內容包括測試目標、測試環境、輸入數據、測試步驟、預期結果、測試腳本等,并形成文檔。

 

 

 

測試一直是軟件開發過程中的一個重要過程,而三個因素使得它扮演了更重要的角色。首先,微軟.Net的環境已經顯著地提高了程序員編寫自定義自動化測試的能力,以前需要兩周時間創建的測試項目,現在在.Net Framework下只用幾個小時便可完成。第二,程序和系統越趨于復雜,所需的測試就越精密。最后,軟件安全性已不再是程序開發最后才考慮的問題,它是絕對必要的。在以前有可能存在一款軟件沒有經過完整的測試就已向外發布的情況,但如今這已不再可行。為了幫助你滿足現今的測試挑戰,我將在這個欄目里每隔幾個月就向你展示軟件測試的最佳方法、原則和技術。

  這個月我將從組合在軟件測試中的角色開始說起。編程產生組合的能力,能夠為你的測試用例輸出提供強有力的方法。首先我談談我所說的組合的意思:如果你現在正在寫一個撲克牌的程序,需要你手動輸入5張牌牌型的所有可能情況,你一定不會樂意。但如果你用這個欄目里的代碼來處理,你將能夠在幾分鐘內做好這件事:

MILY: Courier New; BACKGROUND-COLOR: #dddddd" align=center>
string[] deck = new string[] { "Ac""Ad""Ah""As""Kc", (...) };
Combination c 
= new Combination(52,5); // 52 cards, 5 at a time
string[] pokerHand = new string[5];
        
while (c != null)
{
  pokerHand 
= c.ApplyTo(deck);
  PrintHand(pokerHand);
  c 
= c.Successor();
}

在大量的自動化測試方案中,你一旦學習并認識了組合,你會發現它驚人的有用。再舉一個例子,假如你正在測試某個系統,要用戶從文本框接收用戶傳入的10個字符。用戶可能會輸入"ABCDEFGHIJ",或者是")(*&^%$#@!",你想知道共有多少種測試的用例。假定你要求輸入字符的可選類型等于20種(這可能根據系統要求的不同而不同,比如從大寫的'A'到'Z',或者是從0到9等等)。

要特別強調的是,你必須從20個不同的字符中一次性選取10個,即Choose(20,10)——這個函數我會在稍后解釋。請注意,這里我其實簡化了問題。實際上,你可能還需要考慮每個邊界條件和其他測試概念的排列組合。

現在,我將會創建一個C#語言寫的的組合類,并向你展示怎樣用組合來提高測試的性能。我想你一定會認為理解并運用組合及其相關的理論是有價值的。

圖1 Combinations Demo

  貼上截圖是讓你能夠跟上我思路的最好方式。圖1是一個Windows@-based應用程序的截圖,它演示了組合的應用。正如你所看見的,組合就是一組元素的無序子集。在這個例子中我們有5個元素——Adam,Barb,Carl,Dave和Eric——我只對3個元素的組合感興趣。從5個元素中一次性選出3個,共有10種不同組合:

{ Adam, Barb, Carl }, { Adam, Barb, Dave }, . . . { Carl, Dave, Eric }

  注意,無序子集的意思是,{Carl,Barb,Adam}和{Adam,Barb,Carl}是等價的,兩者都代表同一個子集。圖1還說明了一點,在用給定的元素集合大小和子集大小生成組合時,我們還需要計算出不同組合的總數。

  數學中組合的定義是:n是從整數0到n-1的集合,從4個元素的集合中一次選取2個的6種組合即是:

01 }{ 12 }
02 } { 13 }
03 } { 23 }

  正如我之前所說,組合在軟件測試、開發、管理等各種領域中都有著很大的作用。組合在數學領域中是古典而又深刻的,但我發現有很多程序員對它的理解都不夠徹底,現有網絡中的一些與組合相關的代碼不是寫錯了,就是執行效率低下。

延伸閱讀

文章來源于領測軟件測試網 http://www.anti-gravitydesign.com/

TAG: 軟件測試


關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97