天天看點

巧測字段最大長度

相信在測試過程中,大家都會碰到一個費時又枯燥的工作,即“測試輸入項可接受的最大長度是否符合需求。”尤 其是當一個新系統剛開發的時候,有大量的字段需要測試。而當衆多的新功能需要測試的時候,這個測試點常常優先級不高,測試人員往往隻是挑了其中一些重要的 或者偶然碰到的字段進行了測試,有時甚至忘記這檔子事了。不幸的是,根據來自生産環境的缺陷報告,我們幾乎每個項目都碰到過由于使用者輸入了超長的字段而産 生的産品缺陷,有的甚至嚴重妨礙了使用者操作。這個差異告訴我們“應該要測試字段的最大長度,而且要用一種更簡單易行的辦法使得做這個工作的代價較低。”

有時,我們還需要貪心一點。想想,james工具隻能一個一個地準備資料,而把這些資料粘貼到對應的輸入框裡還是需要手工來做。看資料字典、生成字串、粘貼、送出、驗證;看資料字典、生成字串、粘貼、送出、驗證。。。如此五步需要大量重複,是否也可以自動化呢?讓我們以一個基于extjs的web應用為例,借助sahi這個開源的輕量級web自動化工具,來嘗試測試字段最大長度的更省力的辦法。

思路1: 從頁面元素得到它的長度限制,然後生成一個最大長度的字串和一個最大長度加1(此處用邊界值法簡化)的字串,進行測試。但困難在于頁面元素的長度限制在ui層得不到,隻好放棄。

思路2:在整個頁面的字段中找到那個允許長度最長的字段,然後以這個最長的長度加1的随機串去填充各個某種特定輸入類型(如textbox或者textarea)的所有字段,儲存,看是否每個字段都報錯。報錯時頁面應該提示資料非法(所有有長度校驗的字段都失敗),且此時失敗的字段個數及相應的提示(最大長度是多少)應與資料字典一緻。(需要人工檢查)如果db出了異常,我們應該可以從伺服器傳回的資訊或者異常的日志中知道哪個字段出錯。

這個思路沒有大的問題,但是在我們具體的程式實作技術下碰到了兩個問題。一、我們程式的頁面上有些list因為也是textbox類型,是以被賦了值非法的長值。這并不是我們想要的,因為它把非法值的校驗的和長度的校驗揉雜在一起了。是以,我通過資料字典那邊隻抽出需要校驗自由輸入的長度的字段來屏蔽這個問題。二、我發現一些系統生成的隻讀的textbox字段,如某對象的id,不應該通過我們的sahi程式将它的值修改掉。還有一些ui不可見的元素,如開發人員設計中特意用到的一些oid,因為也是textbox類型,如果用我們的長字串代替了就會出錯。是以我僅僅對ui可見的且非隻讀的textbox來做。經過上述修正,最後我的方法如下:

準備工作:

準備一個包含兩列的excel,第一列是需要驗證字段長度的字段名,第二列是該字段允許的最大長度。當然,你也可以準備一個三列的excel,其中多一列字段的類型,以便你既可以生成字串又可以生成數字。

步驟:

打開一個待測試的頁面

跑驗證字段長度的腳本

将excel中每個頁面label對應的textbox都填上excel中指定長度的字元串,然後一起儲存。預期結果應該是儲存成功(不因為字段長度的校驗而失敗)。以此方法還可以順便就把label拼寫錯誤(ui label與資料字典label比對不上)的情況輕松地暴露出來。

将excel中每個頁面label對應的textbox都填上excel中指定長度再加1的字元串,觀察系統行為。如果在前台已經做了校驗,則觀察前台的提示。如果前台不會禁止掉使用者的超長輸入,則通過儲存來送出背景,預期結果應該是儲存失敗。

繼續閱讀