昨天參加了
單元測試的分享,加上最近項目做的挺多,以及慢慢體會<<Systematic software Testing>>(英文版)書中感覺,總結如下,其中有些點還不透徹.
軟件測試過程中,產品需求到交付測試執行這個流程中,測試設計是重中之重,結合自己的
工作經驗,個人認為:測試設計就是軟件需求轉換成測試需求,通過建模,從測試角度羅列功能對象,了解,分析被測對象,并不斷和相關者溝通,確認,最終得到驗證該模型的
測試用例過程.
引用Rick D. Craig and Stefan P. Jaskiel大師的一張圖,說的是白盒測試+黑盒測試能改進軟件的質量達60%,如圖:
所以,測試之前很有必要對測試對象進行分析設計,以下是我在
黑盒測試設計以及白盒(目前做SDK項目)測試設計的心得:
黑盒設計經驗總結:
1.設計過程是一個反復溝通,反復確認的過程.多問幾個為什么
2.關注重點和難點,單個測試風險和整體測試風險,80%的精力集中到重點和難點,一定不要低估這個地方.
3.白盒的手段,黑盒的思想.看代碼為補充.
4.白盒的思想,黑盒的手段,基于功能點分析.
5.黑盒思想,黑盒手段,場景很重要.
6.根據線上bug設計保持最新狀態,個人認為:測試設計有效性,以項目上線1-3個月為維度,調整設計,激發測試思想.
7.探索性測試為補充(取消法,后退法,逆向思考很重要)
8.單元腳本也是測試設計的參考
9.測試設計歷程(個人理解):基于需求的設計->基于經驗的設計->基于風險的設計.
10.設計評審很重要,測試設計很有必要專門安排時間
11.設計過程關注單模塊,多模塊之間的耦合(bug都來自此)
12.根據不同項目,熟練使用測試用例方法,增強測試用例發現bug幾率.(一般情況,開發自測測到的點不容易發現問題,考慮沒測到的點容易發現問題.).
13.設計過程考慮測試類型,安全,性能,兼容.
14.不同產品測試設計特性不同,web產品(缺陷容忍度高)電信,金融產品(業務復雜,流程重.修復長,具體到某個sql字段)移動app產品(適配).
白盒或者說接口設計經驗總結:
1. 熟悉代碼,一個SDK的代碼量不是很多,通過不斷和開發溝通,弄清楚分支,然后特定場景是否有異常處理;
2. 如果一個SDK有UI層,有接口層,先做UI層的黑盒測試 設計,然后做接口層基于接口入參,出參設計,以及基于核心function的測試設計,因為在做黑盒也就是業務層的設計時,反饋給開發,提升開發代碼的兼容和遺漏.SDK目前個人歸納為這么四類: 有UI層的SDK, 集成mtop接口的SDK,包含so包的SDK,以及只包含
java層的SDK,不同的SDK產品,測試設計的重點不同. UI層的SDK側重適配測試, 集成mtop的SDK側重異常處理,包含so包的側重接口和適配,java層的sdk側重接口.
3.SDK設計,看代碼同時除了
學習設計模式外,更重要是為做測試設計分析服務,發現溝通漏洞.
4.基于底層的function設計,有些邏輯復雜的,要細分,想辦法把每個節點測試到.
5.測試過程中,白盒測試不要脫離了黑盒測試,有些系統復雜的,白盒測試單個節點測試了沒問題,但是聯調有問題.
6.SDK Demo測試不能覆蓋所有的邏輯,一定要針對Demo也要有測試思路,爭取全面覆蓋接口分支,代碼邏輯分支.
7.寫好的用例后,加入持續集成,能有度量工具對代碼度量(satement coverage,分支度量,路徑度量),關注未測試到的代碼.
最后,推薦這幾天一直在看的幾篇文章,很有思考價值: <<不能成為專業測試的十大理由>>,
<<怎樣做測試?>>
<<測試人員需要經歷的階段>>