- 軟件自動化測試實戰解析:基于Python3編程語言
- 徐西寧編著
- 885字
- 2021-07-23 16:17:29
1.4.2 放棄追求完美
有些軟件的功能非常簡單,比如簡單的數學運算,或者統計用戶輸入字符的數量;有些軟件的功能非常復雜,比如操作系統,或者汽車的自動駕駛算法等。
對于復雜的軟件,因為它們有很高的復雜度,所以我們很容易理解它們為什么很難完美。
那么,對于特別簡單的軟件,我們是不是可以進行徹底的測試,保證它們是完美的呢?
這是不可能的!即使擁有無限的預算,我們也無法做到這一點。
我們來分析一個簡單的程序:接受用戶輸入的字符串,統計其中的字符數量。比如,對于輸入字符串Python,統計結果為6;對于test,統計結果為4……
要確保這個程序是完美的,我們就需要驗證所有可能的輸入。用戶可能輸入一個簡單的字符,也可能輸入整部《三國演義》,我們無法預知用戶的輸入是什么。用戶輸入字符的數量在理論上可以是任意一個自然數,而自然數的數量是無窮大的,我們無法把所有的情況都覆蓋到。
如果把問題簡化,限定用戶最多只能輸入10個字符,超過10個字符就告知用戶無法處理,這種情況下,我們能否進行徹底的測試?
這也是不可能的!在用戶輸入超過10個字符的情況下,程序真的會告知用戶無法處理嗎?為了確認這一點,我們需要把所有超過10個字符的輸入都覆蓋到,確保程序會告知無法處理,而不是意外地返回一個錯誤的統計值。大于10的自然數仍然是無窮多的,我們還是無法把所有的情況都覆蓋到。
如果我們把問題再度簡化,只測試字符數量在10個以內的有效輸入呢?
世界上有許多語言和文字,unicode編碼可以涵蓋世界上所有語言的字符,包含字符的數量級大概是一百萬。粗略地估算下來,用戶輸入字符數量為1個的情況,我們有100萬個測試要驗證;用戶輸入字符數量為10個的情況,我們有100萬的10次方個測試要驗證。只要有一個測試沒有被覆蓋到,我們就不能說在這種情況下程序可以正常工作,也就不敢說程序沒有bug。
在現實世界中,大部分軟件程序比這個字符統計的程序要復雜得多,它們一定有bug沒有被發現,或者有bug被發現了卻沒有被修復,它們肯定稱不上完美,卻仍然達到了較高的軟件質量,這當然不是因為它們把測試做得非常徹底,而是因為放棄追求不切實際的完美,在預算范圍內采用了合適的測試策略,得到較高的投資回報率。
- Angular UI Development with PrimeNG
- Microsoft Application Virtualization Cookbook
- Java虛擬機字節碼:從入門到實戰
- Web全棧工程師的自我修養
- 面向對象程序設計(Java版)
- Effective Python Penetration Testing
- AutoCAD VBA參數化繪圖程序開發與實戰編碼
- 零基礎學Python網絡爬蟲案例實戰全流程詳解(入門與提高篇)
- Advanced Express Web Application Development
- Learning Hadoop 2
- C++從入門到精通(第6版)
- Android移動應用開發項目教程
- Software-Defined Networking with OpenFlow(Second Edition)
- Visual FoxPro程序設計實驗教程
- Python程序設計現代方法