功能测试小结(一)
功能測試是所有測試的基礎,不管是自動化、性能、安全還是其他方面的測試工作,都需要在功能測試的基礎上進行。至今工作七八年了,為以后工作能夠更順利的進行,準備做一個小結。
測試基本上是從界面、功能、性能、安全性、易用性、兼容性六個方面進行考慮。
簡單來講,以一個簡單的軟件作為例子:
外觀界面測試:主要是測試軟件界面功能模塊的布局是否合理、整體風格是否一致、界面中文字是否正確、命名是否統一,頁面是否美觀、文字、顏色、圖片組合是否完美等;
功能測試:測試軟件所呈現給用戶的所有功能點是否都能正常使用和操作,主流程分支流程能否完整運行,對于異常流程能否正確做出反應,是否滿足軟件需求規格說明書的要求;
易用性測試:測試軟件是否易操作,主觀性比較強,站在用戶的角度體驗軟件產品好不好用;
兼容性測試:測試該軟件與其他軟件或者不同平臺上的運行情況是否正常,例如比較常見的平臺兼容性、瀏覽器兼容,更深一些的軟件本身的功能和功能之間,軟件和第三方之間的兼容性;
安全性測試:測試該軟件防止非法入侵的能力;
性能測試:測試軟件在不同環境的壓力下是否能正常運轉,很重要的一個指標是系統響應時間,例如多人同時訪問某個網頁時,網頁是否能在規定時間內打開等指標;
當然,與之相對的測試用例設計方法也存在不少,舉幾個比較常用的方法比如:
等價類劃分法:就是將測試的范圍劃分成幾個互不相交的子集,他們的并集是全集,從每個子集選出若干個有代表性的值作為測試用例。
例如,我們要測試一個用戶名是否合法,用戶名的定義為:8位數字組成的字符。
我們可以先劃分子集:空用戶名,1-7位數字,8位數字,9位或以上數字,非數字(特殊字符或者漢字英文),數字和非數字混合。
然后從每個子集選出若干個有代表性的值:
空用戶名:“” (無效等價類實例,指對于軟件規格說明而言,沒有意義的、不合理的輸入)
1-7位數字:”234” (無效等價類實例)
8位數字:”00000000” (有效等價類實例,能檢驗程序是否實現了規格說明中所規定的功能和性能)
9位或以上數字:”1234567890” (無效等價類實例)
非數字:”abc&!!!” (無效等價類實例)
數字和非數字混合:“ab123dc2”(無效等價類實例)
他們6個,就是用等價類劃分選出的測試用例。實際上,對于1-7位數字的子集來說,選“234”和“11111”沒有本質的區別。
等價類的劃分,最關鍵的是子集的劃分。
邊界值分析法:長期的測試工作經驗告訴我們,大量的錯誤是發生在輸入或輸出范圍的邊界上,而不是發生在輸入輸出范圍的內部。因此針對各種邊界情況設計測試用例,可以查出更多的錯誤。選出的測試用例,應選取正好等于、剛剛大于、剛剛小于邊界的值, 例如,對于在區間min,max的值,測試用例可以記為min,min+,max,max-。
例如,假定 X 為整數,10≤X≤100,那么 X 在測試中應該取的邊界值為:10,11,99,100。
注:上面只是說邊界值,如果是完整的測試,除了邊界值外,還需要一個正常值,即12-98之間的任意值。
錯誤推測法是指:在測試程序時,人們可以根據經驗或直覺推測程序中可能存在的各種錯誤,從而有針對性地編寫檢查這些錯誤的測試用例的方法。這種方法沒有固定的形式,依靠的是經驗和直覺,很多時候,我們都會不知不覺的使用到。
判定表法(策略表),基于策略表的測試,是功能測試中最嚴密的測試方法。該方法適合于邏輯判斷復雜的場景,通過窮舉條件獲得結果,對結果再進行優化合并,會得到一個判斷清晰的策略表。
例如,某公司對客戶分類標準如下:
顧客每次訂貨額在1000元以上(含1000元),信譽好的,訂單設“優先”標志;
信譽不好,但是老客戶的,訂單設“優先”標志;
信譽不好,但是新客戶的,訂單設“正常”標志;
每次訂貨額在 1000元以下,訂單設“正常”標志。
繪制的決策表如下:
這里寫圖片描述
此表分兩大行,兩大列,分別用不同的顏色區別。
淺藍:列出所有條件(或稱為輸入)
淺灰:列出所有結果(或稱為輸出,行動或決策)
淺黃:窮舉所有條件的組合
淺綠:根據每一列的條件,判斷出結果
正交實驗法:用語言描述正交實驗法會很抽象難懂,簡單說,就是在各因素互相獨立的情況下,設計出一種特殊的表格,找出能以少數替代全面的測試用例。
其中,上面所說的特殊表格就是正交表,是按照一定規則生成的表。
雖然說是特殊的表格,實際表現形式跟一般的表格沒有什么區別,正交表的主要特征是,“均勻分布,整齊劃一”,正是因為“均勻”的,所以才能以少數代替全部。正交表的講解和圖解網上都有不少,屬于比較常用的方法,這里就不多述了。
功能測試用例設計方法還有很多,例如因果圖法,狀態轉換測試法等,他們都略為復雜,像正交實驗法一樣,有各自的一套東西,不過本質都是通過畫圖,讓我們更好的思考,最后轉化成判定表。
實際上常用的是前面五種方法,包括:等價類劃分法、邊界值分析法、錯誤推測法、判定表法、正交實驗法。
如果被人問到,在測試這個行業中,最重要的能力是什么,相信會存在很多不同的答案,但是在我心中,測試最重要的其實還是業務分析能力,不管是做功能也好,自動化也好,性能也好,安全也好,最最基礎的都是必須要將被測產品的業務理解完全,才能開展 后續的工作,上面所說的測試點考慮方面、用例設計方法,如果不是建立在業務吃透的情況下,就算測試通過了,估計上線后也是會存在不少問題,更有可能出現重大測試事故。為了提醒自己不要忘記這個重點,提筆寫下了這篇總結,后續將會對測試點的六個方面進行詳解,也是對自己的一個總復習吧。
總結
- 上一篇: 卫塞节
- 下一篇: Java 常用函数式接口 —— Supp