功能測試——控件測試

對於單個邏輯功能,測試工程師需要關注其是否正確實現了需求定義的功能性需求,並需明確該需求是否確實應該在需求中體現。

 

例如,登陸功能,需關注其能否正確實現合法數據能夠登陸,而非法數據拒絕登陸。商品查詢功能中的排序功能,如果系統默認設計爲降序排序,則需弄清楚用戶是否有此需求,如果有,則驗證該排序是否正確實現了默認降序功能。

 

貫穿於整個業務系統的邏輯功能,需保證其單個功能的正確性,然後纔是整個業務流程的正確性測試。

 

【案例1 ECShop註冊控件測試】

Web系統中,客戶端通過Post等方式發送請求與服務器交互時,大部分是以表單的方式發送,如圖1所示。

圖1 ECShop用戶註冊頁面

 

圖1是ECShop網站用戶註冊頁面,用戶填寫相關數據信息後,使用Post方法提交請求至“user.php”邏輯處理頁面進行註冊操作。該表單上共有6個表單控件:用戶名文本編輯框、email文本編輯框、密碼文本編輯框、確認密碼文本編輯框、複選框、註冊按鈕,其對應的頁面源代碼如下:

<form action="user.php" method="post" name="formUser" onsubmit="return register();">
      <table width="100%"  border="0" cellpadding="5" cellspacing="3">
        <tr>
          <td width="13%">用戶名</td>
          <td width="87%">
          <input name="username" type="text" size="25" id="username" onblur="is_registered(this.value);"/>
            <span id="username_notice" style="color:#FF0000"> *</span>
          </td>
        </tr>
        <tr>
          <td>email</td>
          <td>
          <input name="email" type="text" size="25" id="email" onblur="checkEmail(this.value);" />
            <span id="email_notice" style="color:#FF0000"> *</span>
          </td>
        </tr>
        <tr>
          <td>密碼</td>
          <td>
          <input name="password" type="password" id="password1" onblur="check_password(this.value);" onkeyup="checkIntensity(this.value)" style="width:179px;" />
            <span style="color:#FF0000" id="password_notice"> *</span>
          </td>
        </tr>
        <tr>
          <td>密碼強度</td>
          <td>
            <table width="145" border="0" cellspacing="0" cellpadding="1">
              <tr>
                <td width="33%" id="pwd_lower">弱</td>
                <td width="33%" id="pwd_middle">中</td>
                <td width="33%" id="pwd_high">強</td>
              </tr>
            </table>
          </td>
        </tr>
        <tr>
          <td>確認密碼</td>
          <td>
          <input name="confirm_password" type="password" id="conform_password" onblur="check_conform_password(this.value);"  style="width:179px;"/>
            <span style="color:#FF0000" id="conform_password_notice"> *</span>
          </td>
        </tr>
                      <tr>
          <td>&nbsp;</td>
          <td><label>
            <input name="agreement" type="checkbox" value="1" checked="checked" />
            我已看過並接受《<a href="article.php?cat_id=-1" style="color:blue" target="_blank">用戶協議</a>》</label></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td>
          <input name="act" type="hidden" value="act_register" >
          <input type="hidden" name="back_act" value="" />
          <input name="Submit" type="submit" value="">
          </td>
        </tr>
        <tr>
          <td colspan="2">&nbsp;</td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td>
          <a href="user.php?act=login">我已有賬號,我要登陸</a><br />
          <a href="user.php?act=get_password">您忘記密碼了嗎?</a>
          </td>
        </tr>
      </table>
    </form>

常見的業務系統基本頁面元素從用戶角度考慮一般包含編輯框、按鈕、圖片/音頻/視頻、下拉列表、單選按鈕、複選框、Flash插件等幾種。

 

01、編輯框

需考慮其默認焦點、輸入長度、輸入內容類型(字母、漢字、特殊符號、腳本代碼等)、輸入格式限制、能否粘貼輸入、能否刪除文本等因素。例如,圖5- 14中的“用戶名”字段,測試時需考慮其用戶名長度、組成、格式限制、是否重名等情況,測試用例設計時,可利用等價類、邊界值方法詳細設計。

 

圖1假設是ECShop系統的DEMO原型圖,測試工程師可根據該DEMO,提取需求,如表1所示。

上表僅列出了DEMO中明確給出的顯性需求,測試工程師在考慮顯性需求的同時還應當關注被測對象的隱性需求,如“email”郵箱格式、“確認密碼”應當與“密碼”輸入保持一致等。更新後的需求表如表2所示。

 

通過類似的方法,測試工程師進行編輯框對象測試分析時,需明確每個輸入框的限制條件,這樣才能保證測試覆蓋率,降低漏測風險。

02、按鈕

大部分Web系統都用常規按鈕提交請求或實現功能跳轉,也可能使用圖片或其他控件實現按鈕功能。對於按鈕而言,一般需考慮其默認焦點、按鈕視圖、按鈕功能、腳本觸發等方面。

 

HTML中的按鈕有三種屬性:Button、Submit、Reset。

 

1) Button

 

Button本身不具備數據提交傳遞功能,如需實現提交功能,需綁定腳本,如點擊某個按鈕,出現新的界面。
 

<input   type="button"   value="彈出窗口"   onclick="window.open(’/test.hmtl’','_blank')">

被測對象如果包含此類button,測試工程師應當關注其實現方式是否正確,是否能夠觸發相關操作。

 

2)Submit

Submit是Button最常用的類型,當需將表單數據提交至服務器時,可利用Submit按鈕,自動提交數據信息。需注意的是,如果代碼中增加了輸入驗證類的JS腳本,提交數據時可能出現重複提交數據的缺陷。ECShop用戶註冊表單中的“立即註冊”按鈕使用的是“Submit”類型。

<input name="Submit" type="submit" value="">

 

3)Reset

當頁面數據信息輸入錯誤或需重新填寫時,可使用Button的“Reset”屬性。測試工程師測試此類按鈕時需關注reset功能是否實現,並且光標位於第一個必填項。

 

除了Button類型需驗證外,還需驗證Button的文字描述及UI設計。

 

03、圖片

圖片在軟件系統中應用非常廣泛,用戶往往因爲某些精美的圖片吸引他而選擇使用軟件系統,測試工程師測試實施時,需對系統中的圖片進行測試,保證良好的用戶體驗。

 

圖片測試包括圖片內容、大小、顯示、Alt屬性、鏈接等幾個方面。

 

1)內容

圖片內容應該準確表述當前需表述的主題,如購物車示意圖,一般使用類似圖5- 15所示的樣式表示,而不會用箱包、手提袋等形象,不恰當的示意圖容易引起誤解。

 

圖2 圖片形象表示圖

 

如果涉及顏色設計,一般也有特定的要求,需根據界面原型設計實現。同時,任何圖片內容均不能違法。

 

每個人對色彩的理解不一樣,應當根據原型設計進行驗證,如果沒有,測試工程師可根據自己的感覺判斷,但提出帶有主觀性質的缺陷一般定義爲最低級別。

 

2)大小

圖片容量大小關乎頁面響應性能,因此應適當降低圖片容量大小,選擇更便於網絡傳輸的圖片格式,如jpg、png等。

 

除了圖片容量大小外,尺寸大小也應當考慮,不能造成整體界面顯示變形,有任何違和感。

 

3)顯示

圖片顯示更多關注於圖片顯示的清晰度、協調性,以ECShop中的商品圖片爲例,顯示較爲模糊,當然這個跟上傳的商品圖片質量有關,但如果系統設計了圖片壓縮功能,導致圖片顯示不清晰,則需提出缺陷。圖3所示的圖片顯示較爲模糊,不夠清晰。

 

圖3 商品圖片顯示

 

4)Alt屬性

有時候需對圖片進行備註,尤其是圖片作爲菜單時,鼠標移動到該圖片時,顯示對應的菜單名稱,測試工程師應當測試該alt屬性表述是否正確,是否有錯別字,字體設置是否正確。Alt屬性示例如圖4所示。

 

圖4 圖片Alt屬性示例

 

5)鏈接

Web系統設計時,有時候將圖片作爲鏈接進行頁面跳轉,也可能將圖片作爲按鈕使用,測試時需驗證是否實現了對應的功能。

 

04、音頻

如果Web系統中引用了某些背景音樂時,需根據產品需求驗證自動播放功能是否正常實現,音頻文件是否正確,播放插件能否正常啓用等。如果產品設計不允許用戶下載音頻文件,則測試工程師需進行音頻鏈接安全性測試。

 

05、視頻

與音頻類似,視頻除了測試播放控制、播放插件、鏈接安全性之外,還需考慮視頻的壓縮格式、數據緩衝情況。

 

06、下拉列表

下拉列表在多元化的數據信息展示傳輸過程中經常被用到,在測試過程中需關注其列表值是否正確,是否有重複,選中後能否正確傳遞、是否可以多選等方面。

圖5 添加商品分類界面

 

某些下拉列表中的數據來源於其他功能,測試時需考慮功能間的耦合及先後邏輯關係。

 

07、單選按鈕

單選按鈕在Web系統中非常常見,當需實現多選一功能時,一般會使用單選按鈕。測試過程中需關注單選按鈕是否有默認設置以及選中後能否保存數據。

 

圖6單選按鈕功能

 

08、複選框

當需要選擇多個數據時,需使用複選框。Web測試中需考慮多選後能否實現期望的業務功能,如批量設置、批量刪除,能否在提交請求時,觸發應該觸發的腳本代碼。

 

圖7 複選框功能

 

09、Flash插件

很多時候,爲了實現更好的交互性,可能使用Flash插件或其他應用程序插件與用戶進行交互,在此類元素的測試過程中需考慮其單獨功能的實現情況,以及其與應用系統的接口能否正確傳遞參數,保證業務流程的正確性。

 

單個邏輯功能測試時,需考慮的因素較多,因此測試工程師在測試時需仔細認真,不能遺漏任何測試點,因爲無法確切模擬最終用戶的業務活動,僅能儘可能地模擬它們,降低系統發佈後出錯的可能性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章