功能測試——表格測試
表格作為數據庫數據在UI層面的直觀展示,是用戶實現信息管理的最佳媒介,因此在測試活動中經常涉及到這方面的測試。
【案例 后臺商品管理列表測試】
ECShop系統的后臺商品管理功能頁面,采用的是表格形式展現數據,如圖1所示。

圖1 ECShop后臺商品信息列表
表格測試一般關注數據顯示、翻頁、附加功能等幾個方面。
01
數據顯示
用戶與系統的交互信息,很多時候通過數據形式記錄在數據庫中,通過邏輯代碼處理,以表格形式展示相關信息,用戶增加、修改、刪除以及查詢數據的最終結果都體現在表格上,因此驗證數據顯示的正確性是表格測試的核心。
數據顯示主要涉及標題欄、數據內容、字符編碼、列寬等幾個方面。
1) 標題欄
標題欄應該與產品需求/DEMO設計相同,字體設計一致,排序需遵從用戶習慣確定,如果系統有增加數據的功能,則標題欄的內容、順序應與增加界面的布局相同。
以ECShop商品管理為例,添加商品的界面如圖2所示。

圖2 添加商品信息界面
從上圖得知,商品信息添加功能的字段分別是:商品名稱、商品貨號以及價格,那么商品列表標題欄顯示順序也應當是商品名稱、商品貨號、價格等,如圖3所示。如果商品貨號排在商品名稱前面,則測試工程師可提出建議性缺陷。

圖3 商品列表顯示界面
圖3標題欄顯示順序與添加商品信息界面中的字段布局相同,因此測試通過。但需注意的是,添加商品信息時的“商品貨號”在商品列表中顯示為“貨號”,這種情況雖無大礙,但測試工程師可以提交一個建議性的缺陷,建議開發工程師將二者表述統一,做到上下文一致。
2) 數據內容
表格顯示格式確定后,需驗證數據內容是否正確,如果“商品名稱”列下顯示的是“商品貨號”,則是很嚴重的缺陷,測試工程師應當細致檢查數據,尤其是通過字段名稱跳轉到新頁面的數據信息,如點擊“商品名稱”可打開該商品的詳細信息,在測試過程中需仔細校對數據的正確性。
3) 字符編碼
字符編碼一般跟程序代碼有關,可能由于瀏覽器編碼設置錯誤,導致亂碼,如圖4所示。

圖4 商品信息顯示亂碼
上述情況是由于FireFox瀏覽器編碼改為簡體中文,導致數據顯示亂碼,將瀏覽器重新設置為Unicode格式后顯示正常,測試工程師在執行測試時,需確認是由于瀏覽器編碼原因導致亂碼錯誤還是因為程序代碼字符集設計錯誤導致亂碼。
有時候亂碼錯誤可能是因為數據導入數據庫時造成的錯誤,以Mysql數據庫為例,執行SQL導入時,如果不進行匹配的字符集設置,可能導致亂碼,這種情況一般是環境搭建問題,與程序代碼無關,設置好數據庫字符集格式即可。

圖5 數據庫數據亂碼
4) 列寬
列寬設置不合理將會導致表格界面顯示錯亂,或者當列數據內容較多時,會導致頁面被撐開,從而導致界面顯示錯誤,這種情況下,需測試系統是否具有自適應功能,當數據超過界面定義的邊界時自動截取或收縮,如果沒有自適應功能,則具體情況具體分析,但必須保證界面顯示美觀。

圖6 商品分類列寬顯示界面
ECShop商品分類管理中,針對商品類別名稱長度進行了控制,當超過20個漢字時,系統自動截取,僅保留前20個漢字,并在顯示列表中固定列寬,這種情況下,就不會出現界面被撐開、顯示錯亂的現象。但此處仍有個細節問題,商品分類列表中,單行可容納20個漢字,但在19個漢字時換行,第二行僅有1個字,測試工程師可提出建議,加大列寬,以容納換行的1個漢字,或者單行超過10個漢字時換行,盡可能美化UI,當然,這僅僅是建議,可根據UI設計人員的設計測試。
02
翻頁
翻頁功能是絕大多數表格都應用到的功能,通常有第一頁、最后一頁、上一頁、下一頁、跳轉第_頁等,這類功能測試根據字面意思測試即可,跳轉功能這可根據文本編輯框的測試方法進行,如輸入非數字、輸入單引號等。
有些翻頁功能設計時,次頁顯示的第一條數據是前一頁的最后一條數據,設計如此,并非缺陷,測試工程師在測試時應當與開發工程師確認。
03
附加功能
表格中有時候會提供查看、增加、修改、刪除數據以及設置每頁顯示多少條數據的功能,測試工程應當逐個測試,以確保每項功能正確。
1) 查看數據
不同的設計方法,提供了不同的功能,有些表格通過記錄名稱打開數據詳細信息,有些則通過功能按鈕打開數據詳細信息,無論哪種,需確保數據信息的正確性,這類測試如有條件,可連接數據庫通過SQL語句直接查詢相關數據,與界面數據信息進行對比測試。
2) 增加數據
測試增加數據功能時,點擊“增加”按鈕,如果是彈出窗口,則表格數據信息不應當刷新,在新的界面中添加相關數據,添加完成返回時,界面應當全部或局部刷新,顯示新增加的數據。
如果新增加的數據未能出現在列表中,首先應當確認該數據是否應該顯示在當前頁面,如果是,再檢查是否是因為瀏覽器緩存問題導致頁面刷新錯誤,最后驗證數據庫是否存入成功數據。
3) 修改數據
很多產品在設計修改功能時,要求將原來的設計讀取出來,這點與根據產品設計確定。如果需讀出原數據,測試工程師需確認原數據讀取是否正確,其他測試方法與增加數據類似。
修改數據時,有些字段是不可重新編輯的,如系統自動生成的id號,或者分配的流水號,貸款申請單號等,如果進入修改頁面,這些數據處于可編輯狀態,無論是否能否真正編輯,都應當提交缺陷。
修改數據時的必填項設置應該與增加數據設置一致。
修改數據具有一定的破壞性,因此數據修改操作在提交時應該給予信息提示,提示信息應與產品需求一致。
修改數據需考慮數據鎖定問題,即數據被其他用戶或操作打開時,該數據不可編輯(修改或刪除),以保證數據的一致性與安全性。
4) 刪除數據
刪除數據最具破壞性,在執行刪除數據操作前,系統應當給予提示,如有必要可進行二次確認,如果用戶放棄刪除操作,則列表不應當刷新,如果用戶確認執行刪除操作,刪除操作完成后,列表進行刷新,已刪除的信息不應當出現。
刪除數據與修改數據一樣,同樣需考慮數據鎖定問題,用戶在打開某條記錄時,其他用戶或操作不可進行修改或刪除操作。常用的一個測試方法是具有權限的兩個用戶同時打開某條記錄,A用戶先執行刪除操作,B用戶再執行修改操作,驗證被測對象的處理方式。
以ECShop商品類別管理為例,后臺管理分別利用兩個瀏覽器登陸后,選擇某個商品類別進行修改及刪除操作。先刪除類別,再進行修改,ECShop提示修改成功,但返回類別列表時,該類別并不存在,這種情況測試工程師應當提出缺陷,因為用戶在實際應用過程中可能會出現類似沖突的問題,系統應當給予合理的處理。
5) 設置每頁顯示條數
與跳轉功能一樣,需測試合法輸入與非法輸入的情況,其他根據需求確認即可。

