能做出沒有BUG的軟件嗎 軟件bug是什么意思

1. 什么是Bug
Bug,指軟件中的缺陷,它可能會引發軟件失效 。
關于軟件中的缺陷被稱為Bug,即蟲子,這是有一段故事的 。在早期的計算機中,常采用大量的繼電器,用繼電器的開合來表示二進制 。馬克二型計算機就是這樣的 。1945年9月9日,下午三點,馬克二型計算機無法正常工作了,技術人員試了很多辦法,最后定位到第70號繼電器出錯 。負責人哈珀觀察這個出錯的繼電器,發現一只飛蛾躺在中間,已經被繼電器打死 。她小心地用攝子將蛾子夾出來,用透明膠布帖到“事件記錄本”中,并注明“第一個發現蟲子的實例 。”自此之后,引發軟件失效的缺陷,便被稱為Bug 。
2. 能做出完全沒有Bug的軟件么?
很抱歉,答案是不能 。
任何軟件都有缺陷,這是軟件測試領域的一個真理 。
在軟件質量標準中,軟件的可靠度用R(t)表示,它表示在指定的運行條件下,軟件在規定的時間內不發生故障的概率 。
一定有R(0)=1,即軟件在初始運行時刻一定是無故障的,否則說明軟件還沒有開發完成,尚不能運行 。一定有R(+∞)=0即任何軟件都是有缺陷的,在無限長時間運行后一定會發生故障 。
3. 在故障原因上,軟件有何特點
與我們常見的橋梁、樓宇、手機、文具等各類實體產品不同,軟件有一個非常重要的特點:它不會因為復制、運行而發生衰退 。
畢竟軟件不會生銹、老化、分解等 。這算是軟件的一大優點 。
因此理論上,我們可以通過不斷的投入測試成本來降低軟件發生故障的概率 。但即便如此,軟件的故障概率會趨向于0,而永遠不會等于0 。
況且,在現實中“不計成本”這種事情是不會發生的 。
現實中的軟件往往存在大量缺陷,其一大原因是因為軟件的復雜性 。具體可能產生bug的因素會在下節講 。
軟件測試十分必要 。但是要記住一點,軟件測試不是為了清除軟件中的bug,而是減少軟件中的bug 。
4. Bug是如何產生的?
這就回到了我們問題的重點,Bug如何產生 。
接下來我們按照軟件的生命周期順序一一介紹 。
A: 需求錯誤–未知需求
問:這個軟件為什么不能上傳Excel導入數據?
愣:開發前你有提到過說要用Excel導入數據么?
B:需求錯誤–未理解需求
問:這個軟件為什么按鈕文字上沒有拼音?小朋友不認識字?。?br /> 愣:啥?小朋友?啥?拼音?
C:設計錯誤–模型選擇錯誤
問:這兩個操作能不能一起執行?。?br /> 愣:壞了,選的是責任鏈模式,不支持并行?。?br /> D:設計錯誤–模式選擇錯誤
問:再接一個輸入源好不好?
愣:沒采用適配器模式,不好改??!咋辦?
F:設計錯誤–框架選擇錯誤
問:好,那我們去手機端看一下頁面 。
愣:完了,選的框架不支持動態適配 。還看啥啊,界面一定亂了!
G:設計錯誤–并發不達標
問:為什么人少的時候可以,人一多就會停止服務?
愣:壞了,當時沒考慮這個問題 。
H:設計錯誤–兼容性不達標
問:我們升級了一下別的應用,它就不工作了 。
愣:壞了,寫死綁定那個應用了,那個應用不能升級啊 。
I:設計錯誤–容量不達標
問:數據一多,就存不進去了 。
愣:壞了,設計的容量出問題了 。
J:開發錯誤–外部依賴缺陷
問:這個地方報錯了 。
愣:媽蛋!引用的開源包有問題!
K: 開發錯誤–死循環
問:點一下就死機了 。
愣:我看看,你這么輸入的啊……那,壞了,觸發死循環了 。
L: 開發錯誤–越界
問:數個空格進去,就報錯了 。
愣:壞了,空格被忽略了,但是計數器沒調整,肯定越界了 。
M:開發錯誤–異常未捕獲
問:沒網絡的時候,點一下就死機 。
愣:壞了,有異常拋到了最上層 。
N:開發錯誤–IO未關閉
問:重啟完機器就正常了,過幾天就沒響應了 。
愣:搞半天,每次操作都忘關IO了,導致socket被耗盡 。
O:開發錯誤–空指針異常
問:突然就死掉了 。
愣:原來是,文件沒找到,報了NullPoniterException 。
P:開發錯誤–變量混亂
問:輸出的結果,驢唇不對馬嘴 。
愣:我去,變量wife和wifi用混了 。
Q:開發錯誤–手誤
問:為什么顯示“下樓好”? 。
愣: 奧,輸錯了,應該是“下午好” 。
R: 開發錯誤–日志未關閉
問:硬盤被打滿了!
愣:是不是正式版忘了關調試日志?
S: 開發錯誤–內存未初始化
問:第一遍運行正常,第二遍就有亂碼 。
愣:難不成,變量沒初始化?
T: 開發錯誤–類型轉換異常
問:全數字的身份證號是沒問題的,一輸入后面帶字母X的就報錯 。
愣:壞了,把身份證號當數字處理了 。
U: 開發錯誤–顏色設置錯誤
問:為啥他登陸后名字是綠色的?
愣:奧,錯了,應該是背景是綠色的,弄混了!
V: 開發錯誤–忘記屏蔽
問:為啥她能看到我的密碼?
愣:我去,大問題!忘了脫密了!
W: 使用錯誤–忘記插線
問:為啥鼠標無法操作?
愣:我去,你鼠標線都沒插 。
X: 使用錯誤–輸入錯誤
問:為什么總是說信息輸入錯誤?
愣:你為什么在“姓名”欄位寫個“男”
Y: 使用錯誤–理解功能錯誤
問:為啥你的軟件不能顯示附近的人?
愣:這是外賣軟件……約人的活真干不了 。
因此要想保證軟件的正確,必須保證需求、規劃、開發、使用各個環節都正確 。這,太難了 。
可見,軟件開發者不容易 。
寫一個成功軟件的道路沒幾條,而寫一個失敗軟件的道路數不清!
要不是英文字母不夠了,還能列舉下去!
Z: 使用錯誤–操作失誤
問:為什么不能點贊?
【能做出沒有BUG的軟件嗎 軟件bug是什么意思】愣:你點了么?再點一下試試!