一道可以判別測試面霸的用例設計筆試題
相信不少朋友在筆試的時候都遇到過測試用例設計的筆試題。通常是一個登陸頁面,上面有用戶名,密碼的輸入框,再多一點的有個驗證碼。
不過要是你見到的是以下的這道測試用例設計筆試題,不用問,面試官一定是看過《Google軟體測試之道》的。(也腦補一下,萬一面試官是看過CC先生的簡書呢?嗯嗯,夢想還是要有的)
出題時間:
在一個Web測試頁面上,有一個輸入框,一個計數器(count)按鈕,用於計算一個文本字元串中字母a出現的個數。這裡的問題是,請設計一系列測試用例用以測試這個Web頁面。
很多朋友可能拿到這道題的時候已經開始寫下1.2.3.了,不過根據經驗上來說,追求數量而非質量的傾向,是一種低效的工作方式。(特別在有面試官在旁邊看到你答題的時候,請保持沉思者狀保持10-15秒)
能夠針對題目提出一些問題來的候選者會被認為更有潛質來做測試人員,比如大寫還是小寫?只是英語嗎?計算完成後文本會被清除嗎?多次按下按鈕會發生什麼事情?諸如此類。
通常說來,我們考慮一個測試對象的時候至少從以下六方面來考慮。
- 功能性
- 易用性
- 可靠性
- 性能
- 安全
- 兼容性
如果你是一個測試菜鳥,從功能性出發,你可能會列出以下一個典型的列表:
- 「banana」:3(一個合法的英文字)。
- 「A」 和「a」:1(一個簡單有正常結果的合法輸入)。
- 「」:0(一個簡單的結果為0的合法輸入)。
- Null:0(簡單的錯誤輸入)。
- 「AA」 和「aa」:2(個數大於1並且所有字元都為a/A的輸入)。
- 「b」:0(一個簡單的非空合法輸入,結果為0)。
- 「aba」:2(目標字元出現在開頭和結尾,以尋找循環邊界錯誤)。
- 「bab」:1(目標字元出現在中間)。
- space/tabs:N(空白字元與N個a的混合)。
- 不包含a的長字元串:N(N大於0)。
- 包含a的長字元串:N(N是a的倍數,試試龍媽的名字)。{java/C/HTML/JavaScript}:N是a出現的個數(可執行字元,或錯誤,或代碼解釋)。….
更優秀的測試工程師,會開始考慮後面五個方面,設計以下用例
- 質疑界面的外觀、調色板和對比度(這與相關應用風格一致么?)
- 文本框太小了,建議加長以便顯示更長的輸入字元串
- 這個應用能否在同一台伺服器上運行多個實例,多個用戶同時使用是否會有問題。
- 是否會根據用戶的輸入自動匹配內容?
- 建議使用真實的數據,如從詞典或書中選擇輸入內容。
- 提出疑問:「輸入的數據是否會被保存」,輸入字元串可能包含地址或其他身份信息。
- 輸入HTML和JavaScrip,看是否會破壞頁面渲染。
- 嘗試複製/粘貼字元串。
- 提出疑問:「計算足夠快么?在大並發下使用」。
- 提出疑問:「用戶怎麼找到該頁面?」
- 提出疑問:「有快捷鍵的設置么?比如輸完字元後敲入回車鍵而不是點擊提交按鈕」
還有一些測試點,只有經驗豐富的測試工程師才會想到。
- 意識到計算會通過URL-encodedHTTP GET請求傳遞到伺服器,字元串可能會在網路傳輸時被截斷,因此,無法保證支持多長的URL。
- 建議將此功能參數化,為什麼只對字母a計算呢?
- 考慮計算其它語言中的a(α,Alpha)。
- 考慮到該應用是否應該國際化。
- 考慮到輸入法全形輸入和半形輸入是否相同。
- 考慮編寫腳本或者手工採樣來探知字元串長度的上限,然後確保在此區間內功能正常。
- 考慮背後的實現和代碼。也許已經有一個計數器遍歷該字元串。
- 提出疑問:「HTTP POST方法和參數會被黑掉碼?也許有安全漏洞?」
- 用腳本創建各種有趣的排列組合和字元串特性,如長度、a的個數等,自動生成測試輸入和驗證。
相信很多看完上面列表的朋友,內心是這樣的:
不要嘗試去背上面的列表;好吧,就算你背住,我希望你是在理解的基礎上背完上面的列表的。對我個人而已,最好的方式就是自己拿一張白紙,先寫下 題目中自己考慮的答案再對比以上列表,有遺漏的地方會記得更牢固的。
對於這個題目,還有更多思考方式的朋友也歡迎留言哦~註:本文由蝸牛學院測試導師 CC老師 首發自個人簡書https://www.jianshu.com/p/ac364c1ffa39。希望繼續在IT行業突破提升自己的各位朋友,也歡迎加群384053806,不管你自我感覺牛不牛B。
推薦閱讀:
※[軟體測試] 可測性分析和實踐
※中國成長好應用12月20日報,「智動校園」體驗不同
※工具應用:Robot Framework->實現數據驅動測試
※webdriver介紹&與Selenium RC的比較1
※站在新手的角度:淺談軟體測試