Ⅰ 測試中遇到不可重現的Bug怎麼辦
測試中遇到不可重現的Bug處理辦法:
一、一定要提交。
1. 記得有這么個缺陷,以後再遇到的時候可能就會了解發生的原因。
2. 盡力去查找出錯的原因,比如有什麼特別的操作,或者一些操作環境等。
3. 程序員對程序比測試人員熟悉的多,也許你提交了,即使無法重新,程序員也會了解問題所在。
4. 無法重現的問題再次出現後,可以直接叫程序員來看看問題。
5. 對於測試人員來說,沒有操作錯誤這條.既然遇到,就是問題。即使真的操作錯了,也要推到程序員那裡,既然測試人員犯錯誤,用戶也可能會犯同樣的錯誤。錯誤發生的時候,Tester最大。
二、程序不是測試人員寫的,出問題也不是測試人員的原因。
至於無法重現,可能的原因很多,因為測試人員看到的只是程序的外部,無法深入程序內部,所以把責任推給測試人員是不對的。測試人員的任務只是盡力重現問題,而不是必須重現。
三、下次再遇到的時候,拉他們來看就可以了。
因為問題如果無論如何無法重現,程序員確實也沒有什麼好的解決方法。而且此類問題即使程序員說修改了,測試員也沒有好的方法去驗證是不是。
四、你可以告訴程序員,測試過程是沒有錯誤的。
測試人員只是檢查程序中可能存在的問題,雖然測試人員使用一定的手段方法努力去覆蓋所有的情況,但這些都是理論的推測。在實際中,可能因為人員、環境、配置等種種原因出現各種各樣的問題,在測試人員這里發現問題是公司內部的事情,程序發到外面可就是公司的形象問題了。
五、問題無法重現,也要提出,程序員那裡可以回復無法再現。問題放在那裡,等到再次出現的時候,就立刻叫程序員過來查看。實在沒有再次出現,最後可以寫到報告中,說出現了什麼現象,但無法再現(比較嚴重的問題才如此處理,小問題經理之間商量商量可能就算了)。
Ⅱ 程序員修復一個Bug到底需要多長時間
James Shore在《The Art of Agile 》一書中,明確指出要想修復問題得先知道問題的所在。而我們之所以無法准確估計時間是因為我們不知道需要多久才能發現症結的所在,只有清楚這一點,我們才能合理估計修復bug所需要花費的時間。不過,這個時候恐怕黃花菜都涼了。
Steve McConnell曾說過:
「發現問題—理解問題—這就是程序員90%的工作。」
很多bug都只需改動某一行代碼即可。但是需要投入大量時間的是,後面還得指出怎麼樣才是正確的——就像我們在釣魚的時候,得知道往哪裡下誘餌,什麼時候魚兒容易上鉤等等。
話說bug有四種類型:
Ⅲ 程序員為什麼要一直改bug,不能一次性寫好嗎
軟體可能在使用過程中沒有任何問題,但不符合產品的預期下圖源自「How projects really work?」,很形象的突出了客戶需要的產品和最終得到的產品不一致。
所以軟體想要變得成熟,Bug收集和處理機制是非常有必要的,比如:會影響客戶使用的優先順序高的Bug要優先修復。Bug是軟體的影子,也是程序員的噩夢實際上不能存在沒有bug的軟體,Bug和軟體如影隨形。就像我們使用的Windows,窮盡無數優秀的軟體工程師來設計給用戶優秀的桌面體驗,但也有各種層出不窮的bug。
程序員對Bug有多愛就有多恨,Bug無處不在,即使再牛逼的程序員也逃脫不了Bug的魔掌。想要完全避免Bug幾乎是不可能的,所以也不在一次性就寫好的程序。以上個人淺見,歡迎批評指正。認同我的看法,請點個贊再走,感謝!喜歡我的,請關注我,再次感謝!
Ⅳ 程序員,如果寫的代碼日後被發現bug,給客戶或者公司造成損失,會有什麼後果本人還是一名學生,偶然
不會,因為每個軟體都有BUG,只要比你技術好基本就能發現你的缺陷。總不能你寫出一個完美的軟體來吧
Ⅳ 你們工作中遇到過什麼詭異的bug,最後怎麼解決的
這讓我想起了自己曾經做程序員的苦逼日子,那一次遇見的BUG超級頭疼。讓我現在都記憶猶新。從發現bug到最終解決耗時一個月,當時項目已經馬上要發版本,所以期間每天搞到12點。累計投入1個專職測試,最高峰時期有一個10人的攻關小組,這很菊花廠,其中一半以上的都是seniordeveloper,一個價值上百萬的bug。調試的難度可以說是災難級的,讓我來回憶一下自己的經歷吧。
總之,遇見問題一定要冷靜,仔細分析,詢問老前輩。最後祝願你能解決每一個難題!
Ⅵ 資深程序員可以避免敲代碼時出現bug嗎
程序員遇到bug是在正常不過的事情了,就算非常資深的程序員也無可避免bug的存在,一般來說,除非你寫一輩子 Hello World。
不過世界上的確存在一些鳳毛麟角天才的程序員,他們差不多能做到這一點。接到任務之後,思考,冥想,在筆記本上畫出數據結構或某個演算法片段,腹稿打的差不多了就開 始編程,用 Vim、Emacs 或 IDE 工具,大部分時候能夠一氣呵成,然後構建代碼,構造測試數據,運行程序,在反復調試中修復幾個編程過程中沒有考慮到的問題,就可以提交到代碼庫了。
他們的 代碼交給測試和其他開發者,少有人能挑出 bug,因為他們對代碼有敏銳的感覺,能夠在別人忽略的地方發現代碼的壞味道,並給出巧妙而優雅的解決方案。
他們是天生的代碼創造者,這樣的人往往效率高 而且少有錯誤,以至於會被一些平庸的團隊忽略,因為技術領導總是會下意識的去關注那些最容易出事的環節,但這些人才是團隊真正的脊樑,不是那些四處救火者。
Ⅶ 遇到無法重現的缺陷,被開發打回來了,怎麼處理
測試中遇到不可重現的Bug處理辦法:
一、一定要提交。
1. 記得有這么個缺陷,以後再遇到的時候可能就會了解發生的原因。
2. 盡力去查找出錯的原因,比如有什麼特別的操作,或者一些操作環境等。
3. 程序員對程序比測試人員熟悉的多,也許你提交了,即使無法重新,程序員也會了解問題所在。
4. 無法重現的問題再次出現後,可以直接叫程序員來看看問題。
5. 對於測試人員來說,沒有操作錯誤這條.既然遇到,就是問題。即使真的操作錯了,也要推到程序員那裡,既然測試人員犯錯誤,用戶也可能會犯同樣的錯誤。錯誤發生的時候,Tester最大。
二、程序不是測試人員寫的,出問題也不是測試人員的原因。
至於無法重現,可能的原因很多,因為測試人員看到的只是程序的外部,無法深入程序內部,所以把責任推給測試人員是不對的。測試人員的任務只是盡力重現問題,而不是必須重現。
三、下次再遇到的時候,拉他們來看就可以了。
因為問題如果無論如何無法重現,程序員確實也沒有什麼好的解決方法。而且此類問題即使程序員說修改了,測試員也沒有好的方法去驗證是不是。
四、你可以告訴程序員,測試過程是沒有錯誤的。
測試人員只是檢查程序中可能存在的問題,雖然測試人員使用一定的手段方法努力去覆蓋所有的情況,但這些都是理論的推測。在實際中,可能因為人員、環境、配置等種種原因出現各種各樣的問題,在測試人員這里發現問題是公司內部的事情,程序發到外面可就是公司的形象問題了。
五、問題無法重現,也要提出,程序員那裡可以回復無法再現。問題放在那裡,等到再次出現的時候,就立刻叫程序員過來查看。實在沒有再次出現,最後可以寫到報告中,說出現了什麼現象,但無法再現(比較嚴重的問題才如此處理,小問題經理之間商量商量可能就算了)。
Bug英文單詞,本意是臭蟲、缺陷、損壞、犯貧、竊聽器、小蟲等意思。現在人們將在電腦系統或程序中,隱藏著的一些未被發現的缺陷或問題統稱為bug(漏洞)。 由於現在社會的發展,bug另有一種引申意義,用來形容某事物厲害的超乎想像,BUG可以使電腦系統崩潰、容易被施詐者攻擊,現有修復漏洞的工具。
Ⅷ 為什麼總是有清不完的bug
為什麼總是有清不完的bug?現代網路上面存在很多不同bug,這讓很多人不是很理解,因為網路技術越來越成熟,按說應該bug越來越少,可是看起來似乎越來越多,其實這裡面有很多原因,只不過很多人不熟悉網路運行知識,下面給大傢具體解釋一下:
三、網路時代相互攻擊,從而造成了很多bug:
目前互聯網之間攻擊的事情很多,國家之間都會相互指責,因此也會產生很多bug,這也是bug,無法控制的一個重要因素。
Ⅸ 優秀的程序員是如何處理技術 Bug 的
從初入職場菜鳥到職場大咖,很多程序員在努力充實自己,有時候我們需要對自己進行一次能力定位,了解自己的優勢和沒有掌握的技術。芯學苑列出幾點作為初入職場的新手評估自己,明了前進學習的方向。
1、技術能力(解決問題的能力)
這是非常重要的事;過硬的技術能讓你得到面試機會,並在工作中游刃有餘。當公司招聘一個Java開發人員時,是會優先考慮能力因素的。在實際的項目開發中,一個程序員的技術能力等於其解決問題的能力。
如果拿一個尺度來衡量這個能力的話,一個程序員的能力可以用能完成任務的數量和難度來衡量。一個程序員能基本無誤的完成項目中的一個功能算是合格,但在此之前,他對項目的生產力為負,為他布置的任務,中間環節的溝通,修補bug的時間其實要多於自己直接完成該功能的時間的。能較好完成一個完整模塊的程序員才算是較好的程序員,也是項目中的主要開發者。能獨立完成整個項目才是優秀的程序員。
2、專業基礎(知識的積累)
一個程序員的知識積累很大程度上決定了其解決問題的能力。知道如何編寫代碼是基本的技能,但是知道Java編程語言的原理,知道代碼背後的演算法將使你從人群中脫穎而出。
3、主流編程工具
今天,事實是,你不能成為一個樣樣都懂的人(雜而不精)。你必須選擇你要掌握的工具。有時這是由工作的環境決定的,但是按照下面說的去做也是一個很好的選擇:
構建工具:Maven或Gradle。
SCM:Git(不是GitHub。大不相同)。
構建自動化:Jenkins。
IDE:Netbeans或Eclipse——不僅用於編寫代碼,而且還從IDE中重構和調試代碼。我遇到了很多沒有如何從他們最喜歡的IDE調試的開發人員。
Bug跟蹤:Bugzilla或Jira。
4、JSF的知識
應用程序伺服器
所有Java開發人員應該知道如何在Apache Tomcat中部署。
當Glassfish開發停止時,下一個最好的事情是J Boss Wild Fly。
5、溝通的能力
溝通是我們做好一切事情的關鍵。我們必須與我們周圍的環境保持互動,無論是在我們的私人還是職業生活中。一個良好的程序員知道如何在各種團體面表達自己。也許對你來說顯而易見的東西在他人的角度來看並非如此。
從大的尺度(比如一個人的工作生涯)來看,一個程序員知識積累的多少只決定於其自學能力和他對編程本身的興趣。
在一個分工明確的項目中,程序員需要理解產品,和領導溝通理解自己的任務,和同事們溝通以正確的方式進行合作。無論哪一個方面溝通出了問題都不是小事情,同時,程序員還需要正確的傳達設計的實現難度,以及讓別人正確的理解自己設計模塊的介面。在不寫文檔時,正確的口頭溝通非常重要,需要寫文檔時,良好的編輯能力也算做是溝通能力的一部分。
6、自學能力
這是一個非常重要的技能,在你自己的空閑時間學習新的技能。不要等待公司為你提供培訓。你需要自己去學習新技術,提升自己在相關領域的水平。從Java後端開發到架構模式,總是有一些新事物值得學習。經常閱讀博客和論壇,嘗試加入本地聚會小組。你學到的東西可以幫助你的事業。知識刷新頻率極快讓人無法追趕的這個時代,難免會有超出自己知識范圍的時候,此時你的自學能力決定了你能多快的完成任務。
7、良好的團隊合作精神
無論是部分編程還是大型項目,所有開發人員都是作為團隊的一部分在協同工作。你需要致力於團隊的目的,或幫助新的團隊成員克服障礙。不要存在這種「我只要做好我的本職工作,下班就直接回家」的態度。成為團隊的一部分,幫助周圍的同事,對自己的能力也是不小的提升。
就像拿破崙說的不想當元帥的士兵不是好士兵,追求參與一個大型軟體系統的開發,是每個程序員的夢想。在此之前,應該學習更多的專業知識,達到優秀程序師的標准。最後希望各位程序員閱讀本文後能夠得到一些裨益,在這條路上走得更好。
Ⅹ 程序員遇到解決不了的bug怎麼辦
大部分程序員都有一個問題就是不太願意測試自己的代碼。他們草草的調式完成以後就認為工作結束,測試那是測試人員的工作。
1. 影響了程序員自己的聲譽
2. 影響了產品的質量
3. 影響了客戶的信任度
4. 這個時候再 DEBUG 難度增大了許多。
大的不說,就說多自己聲譽的影響吧。如果你的程序總會有這樣那樣的 BUG ,你得到收益會減少,即使你寫了很多代碼。
程序員必須克服一些自身的致命缺點才能夠從根本上解決這個問題。那麼這個問題是什麼?前面我們已經提到,程序員對自己的代碼都非常寬容,認為那是正確的沒有問題。實際上這種想法比較正常,程序是通過程序員思考和設計之後才寫出來,程序員不會將自己認為不正確的東西寫到代碼里,而到這個時候都一直假設程序是正確的;但人非聖賢,怎麼可能不犯錯誤來。實際上程序員在對待其他程序員時候的態度就很好,帶著一種挑剔和學習的態度;但一旦對待自己的代碼就很難這么做;這就是最致命的。程序員也必須對自己的代碼帶著挑剔和學習的態度;這個基礎是假設自己的代碼是錯誤的,然後需要做的是怎麼樣證明自己的代碼是正確的。程序員自身可以在程序生成的每個階段做這些工作:仔細的設計(這個時候畫點時間是值得的,必須保證我們對自己的程序有清晰的輪廓後才能開始動手寫)、編寫代碼時、單元測試(單元測試的重要性就不在贅婿了)、功能測試。