軟件測試中非常重要的一個工作就是生成和維護測試數據,而這個工作恰恰是繁瑣、重復而極易出錯的。無疑找到一種通用的數據生成方法是極具意義的。本文闡釋了如何使用腳本語言 PHP,加上簡單的 ini 配置文件來達到這個目的的。
測試的數據生成和維護在軟件測試中是非常重要的一環。很多用例實際上就是在修改所測程序的輸入數據以確保程序的邏輯是按照自己的預期進行地。
比如我們測試一個用戶登錄系統,我們需要測試正常用戶名 + 正常密碼、正常用戶名 + 錯誤密碼、錯誤用戶名 + 錯誤密碼等基本的用例。在執行用例之前,就需要事先在數據庫中設置好相應的數據,比如有一條記錄為正常用戶名 + 正常密碼,然后我們在登陸界面輸入該用戶名和密碼,預期結果為正常登陸。
不同的程序有不同格式的輸入數據。但不管格式千變萬化,我們總可以把它們歸結為基于行和列的格式,就像數據庫中的表一樣。一行為一條記錄,每一條記錄都有相同的字段組成,每一個字段有自己的數據格式,字段和字段之間可能有分隔符。
我們可以在執行每一個用例時,手工修改數據,然后再執行用例。但這樣存在一些問題。
1. 重復,數據重用性差。當前用例所需的數據很有可能在下個用例中被破壞了。
2. 效率低,尤其是當數據格式比較復雜,而且又需要大量數據的時候。
3. 不靈活。但數據發生變動的時候,數據的維護成本會很高。
4. 容易出錯。
那有沒有一種方法來解決這個問題呢?答案是肯定的。下面我們一起來實現一個簡單的工具來解決這個問題。
需要實現的基本功能
首先我們來列舉一下這個軟件測試工具需要實現的基本功能:
1. 通用性:能夠描述各種不同格式的數據。
2. 擴展性:當需要新的數據格式時,可以任意擴展。
3. 易用性:配置文件不易復雜。
4. 跨平臺:我們需要一款可以在windows、linux、FreeBSD等系統下面運行的工具。
我們選擇的開發工具
我們選擇的開發工具是 PHP,配置文件采用了 ini 格式的文件。
之所以選擇 PHP,是因為 PHP 是解釋性腳本語言,其弱類型的特點以及強大的數組、字符串處理功能,十分適合我們這種應用場合。而且 PHP 有著良好的擴平臺性,使用 PHP 開發的腳本基本上不用修改就可以在各個平臺下面運行。
之所以選擇 ini 格式的文件來作為配置,是因為 ini 文件相比較于 xml 而言比較簡單。而且程序處理起來也非常的方便。在 PHP 中使用 parse_ini_file 的內置函數就可以解析整個 ini 文件。
配置語法
首先我們需要來定義一下我們的配置語法。前面講到,數據是由行和列組成,每一列中有若干字段,每一個字段有自己的生成數據類型,有自己的前綴,字段和字段之間還有分隔符。我們最終的配置語法格式如下:
清單一:example.ini
[field1]
datatype="list, range=[10-20]"
prefix="int_"
postfix=" "
[field2]
datatype="list, range=[A-Z, a-z]"
prefix="char_"
postfix=" "
[field3]
prefix=""
datatype="list, range=[abc,123,xyz, 100-110]"
postfix=" "
[field4]
prefix=""
datatype="list, range=[100-200:2]"
postfix=" "
我們來解釋一下語法的格式:
1. 字段名使用[]引起來。后面使用 key=value 的形式來定義這個字段的屬性。
2. 字段有三個基本的屬性:datatype 指定字段的取值范圍,prefix 設定字段的前綴,postfix 則設定字段的后綴。
3. datatype 中最基本的數據類型就是 list,一個無所不包的列表。你所需要指定的就是這個字段的取值范圍參數 range。
4. range 參數可以采用 1-10 這樣的區間表達,也可以用逗號“ , ”來連接多個區間或者元素。區間還可以指定遞增的步長。
上面的 example.ini 文件中定義了四個字段,字段和字段之間使用兩個空格分隔,第一個字段的取值范圍為 10-20,前綴為 int_,第二個字段取值范圍是大小寫英文字母,前綴為 char_,第三個字段取值范圍是混合的,第四個字段則從 100 到 200,遞增步長為 2 。
原文轉自:http://www.uml.org.cn/Test/201204263.asp