為什么定位問(wèn)題如此重要?
可以明確一個(gè)問(wèn)題是不是真的“bug”
很多時(shí)候,我們找到了問(wèn)題的原因,結(jié)果發(fā)現(xiàn)這根本不是bug。原因明確,誤報(bào)就會(huì)降低
多個(gè)系統(tǒng)交互,可以明確指出是哪個(gè)系統(tǒng)的缺陷,防止“踢皮球”,提高問(wèn)題解決的效率
增強(qiáng)開(kāi)發(fā)對(duì)測(cè)試的信任度,溝通更有效,配合的更好,開(kāi)發(fā)修改bug時(shí)效增強(qiáng)
更有效的了解系統(tǒng)的內(nèi)部邏輯、數(shù)據(jù)流處理流程,更能提高測(cè)試人員的水平,缺陷修復(fù)后,影響的測(cè)試范圍評(píng)估更精準(zhǔn),復(fù)測(cè)更準(zhǔn)確
可以降低缺陷率
這個(gè)可以說(shuō)是最重要的。在bug系統(tǒng)中,會(huì)要求開(kāi)發(fā)人員記錄bug產(chǎn)生的原因。只有我們自己對(duì)bug有一個(gè)較全面的認(rèn)識(shí),才會(huì)判別出開(kāi)發(fā)寫(xiě)的是不是真正的原因,也才能有助于我們后續(xù)對(duì)bug進(jìn)行分析歸類,根據(jù)bug分析,有針對(duì)性地未雨綢繆,進(jìn)而提升產(chǎn)品質(zhì)量,降低缺陷
01、定位原因之前
遇到問(wèn)題時(shí),先別急著去定位原因。
1、保存bug產(chǎn)生的記錄:
首要做的是保存bug產(chǎn)生的記錄,保證可以復(fù)現(xiàn)。
為什么要保存記錄?因?yàn)槿绻院蟛荒軓?fù)現(xiàn),那就不能證明bug的存在。
2、排除低級(jí)問(wèn)題:
然后是排除QA的低級(jí)問(wèn)題,常見(jiàn)的低級(jí)問(wèn)題:
【hosts不對(duì)】
hosts文件主要是加快某個(gè)域名或者網(wǎng)站的解析速度,從而達(dá)到快速訪問(wèn)的作用,也可以屏蔽網(wǎng)站。
hosts異??赡軙?huì)導(dǎo)致部分網(wǎng)頁(yè)無(wú)法訪問(wèn),能夠加載,但是網(wǎng)頁(yè)無(wú)法正常顯示。
【網(wǎng)絡(luò)不通】:抓包、ping
工具的影響導(dǎo)致的,例如fiddler
以及操作姿勢(shì)不正確等。
3、排除數(shù)據(jù)問(wèn)題(臟數(shù)據(jù)):
有時(shí)候會(huì)遇到服務(wù)端報(bào)500錯(cuò)誤,查看日志后,報(bào)空指針,那么很有可能就是數(shù)據(jù)庫(kù)中關(guān)聯(lián)表的數(shù)據(jù)被人為刪掉導(dǎo)致的。
臟數(shù)據(jù):從目標(biāo)中取出的數(shù)據(jù)已經(jīng)過(guò)期、錯(cuò)誤或者沒(méi)有意義,這種數(shù)據(jù)就叫做臟數(shù)據(jù)
臟讀:讀取出來(lái)臟數(shù)據(jù)就叫臟讀
02、定位問(wèn)題的思路
排查順序:
用戶環(huán)境層面 -> 展示層面 -> 邏輯控制層面 -> 服務(wù)層面 -> 數(shù)據(jù)庫(kù)層面
1、用戶環(huán)境層面
主要是指基礎(chǔ)環(huán)境是否可以使用。比如:
網(wǎng)絡(luò)是否ping通
ip和端口配置是否正確
jdk版本是否符合標(biāo)準(zhǔn)
有可能是由于jdk版本不兼容導(dǎo)致系統(tǒng)運(yùn)行異常,這種問(wèn)題根據(jù)實(shí)際情況來(lái)決定要不要兼容。
網(wǎng)絡(luò)設(shè)了代理
弱網(wǎng)(如js/css未加載完全、請(qǐng)求超時(shí))
瀏覽器不支持
系統(tǒng)版本不支持
數(shù)據(jù)庫(kù)被刪除
測(cè)試環(huán)境臟數(shù)據(jù)
項(xiàng)目配置開(kāi)關(guān)
測(cè)試環(huán)境切了分支等
檢查完成后,可以轉(zhuǎn)到第二步
2、用戶展示層
用戶在使用過(guò)程中,通過(guò)查看等操作發(fā)現(xiàn)的一些問(wèn)題:
頁(yè)面樣式(css樣式問(wèn)題)
交互過(guò)程中js的提示(js交互問(wèn)題)
終端控制的提示信息
文本的展示(html文本問(wèn)題)
3、邏輯控制層
用戶操作過(guò)程中,業(yè)務(wù)的處理邏輯有沒(méi)有按照前期的設(shè)計(jì)實(shí)施。或者中間環(huán)節(jié)出現(xiàn)異常,比如緩存服務(wù)器(如redis)、消息中間件(如rabbitMQ)、數(shù)據(jù)存取中間件等。
4、服務(wù)層
服務(wù)層往往檢查服務(wù)器的配置,如可能是tomcat配置、nginx配置、jdbc配置等的問(wèn)題。測(cè)試人員最好能夠了解下它們的各項(xiàng)配置。
5、數(shù)據(jù)庫(kù)層
可能出現(xiàn)測(cè)試環(huán)境和正式環(huán)境數(shù)據(jù)庫(kù)版本不同,前后端數(shù)據(jù)格式、長(zhǎng)度限制不同。用戶操作完成后,交易流程非常順暢,這樣也不代表整個(gè)交易沒(méi)有問(wèn)題,還需要測(cè)試人員檢查數(shù)據(jù)庫(kù)登記的表和字段是否正確
如果發(fā)現(xiàn)登記的字段與預(yù)期的結(jié)果不一致,則可以查看日志,檢查請(qǐng)求報(bào)文送的字段是否正確,是否與前臺(tái)填寫(xiě)的一致
有的一個(gè)操作會(huì)登記多張表,所以要檢查多張表登記或者更新的是否正確,測(cè)試人員也需要對(duì)被測(cè)系統(tǒng)的數(shù)據(jù)表結(jié)構(gòu)熟悉
6、經(jīng)驗(yàn)法則
有經(jīng)驗(yàn)的測(cè)試人員對(duì)于有部分bug已經(jīng)見(jiàn)過(guò)多次,能夠很快找到根源,直奔主題,迅速報(bào)告或者解決bug
7、其他
常見(jiàn)的bug可能還有構(gòu)建方面的原因
比如代碼本身沒(méi)錯(cuò),但是合并代碼到主干后出現(xiàn)了問(wèn)題
比如代碼存在沖突時(shí)手動(dòng)解決的情況
03、定位問(wèn)題的方法
1、常用的定位策略:
常用的定位策略分為三類:原始類(brute force)、回溯類(backtracking)、排除類(causeeliminations)
原始類定位方法
原始類定位方法是最常用也是最低效的方法,只有在萬(wàn)般無(wú)奈的情況下才使用它,主要思想是“通過(guò)計(jì)算機(jī)找錯(cuò)”。
回溯法
回溯法能成功地用于程序的排錯(cuò)
方法是從出現(xiàn)bug征兆處開(kāi)始,人工地沿控制流程往回追蹤,直至發(fā)現(xiàn)出錯(cuò)的根源,不幸的是程序變大后,可能的回溯路線顯著增加,以致人工進(jìn)行完全回溯到望而不可及。
排除法
基于歸納和演繹原理,采用“分治”的概念。
首先確定所有與bug出現(xiàn)有關(guān)的所有數(shù)據(jù),設(shè)想一個(gè)導(dǎo)致bug的原因,用這些數(shù)據(jù)證明或反駁它?;蛘咭淮瘟谐鏊锌赡艿脑?,通過(guò)測(cè)試一一排除。只要某次測(cè)試結(jié)果說(shuō)明某種假設(shè)已呈現(xiàn)倪端,則立即精化數(shù)據(jù),乘勝追擊
2、查看狀態(tài)碼
4xx狀態(tài)碼:一般表示是客戶端問(wèn)題(當(dāng)然也有可能是服務(wù)器端配置問(wèn)題),比如:
發(fā)生了401,那么要看下是否帶了正確的身份驗(yàn)證信息
發(fā)生了403則要看下是否有權(quán)限訪問(wèn)
404則要看下對(duì)應(yīng)的URL是否真實(shí)存在
5xx狀態(tài)碼:一般表示服務(wù)端出現(xiàn)問(wèn)題。比如:
發(fā)生了500錯(cuò)誤,則表明是服務(wù)器內(nèi)部錯(cuò)誤,這個(gè)時(shí)候要配合服務(wù)器log進(jìn)行定位
發(fā)生了502錯(cuò)誤則可能是服務(wù)器掛了導(dǎo)致的問(wèn)題
發(fā)生503錯(cuò)誤可能是由于網(wǎng)絡(luò)過(guò)載導(dǎo)致的問(wèn)題
發(fā)生504錯(cuò)誤則可能是程序執(zhí)行時(shí)間過(guò)長(zhǎng)導(dǎo)致超時(shí)
3、查看服務(wù)器日志
如果發(fā)生5xx問(wèn)題,或者需要檢查后端接口執(zhí)行的sql是否正確,我們最常見(jiàn)的排查方法就是去看服務(wù)器日志,比如tomcat日志。開(kāi)發(fā)人員一般會(huì)打出關(guān)鍵信息和報(bào)錯(cuò)信息,從而找到問(wèn)題所在,所以,測(cè)試人員也要養(yǎng)成看日志的習(xí)慣。
4、檢查配置
很多時(shí)候,bug不是代碼的問(wèn)題,而是tomcat配置、nginx配置、jdbc配置等的問(wèn)題。在這個(gè)層面上,測(cè)試人員最好能夠了解下它們的各項(xiàng)配置,在發(fā)現(xiàn)問(wèn)題后可能就會(huì)想到這方面的問(wèn)題。
5、查看需求文檔
有時(shí)候,前端和服務(wù)端的交互都正確,但是從測(cè)試的角度看不合理。這個(gè)時(shí)候,我們應(yīng)該翻翻需求文檔。如果和需求文檔不符,那么就要看下改什么比較合理,是改前端,還是改服務(wù)端,或者兩者都要改。
這里有一個(gè)原則,就是前端盡可能少地去承擔(dān)邏輯,只負(fù)責(zé)渲染展現(xiàn)。當(dāng)然,不要以為需求文檔就全部正確,它也可能會(huì)有錯(cuò)誤,我們也應(yīng)該去發(fā)現(xiàn)需求文檔的bug,然后再去協(xié)調(diào)PM,敦促FE或者RD進(jìn)行修改。
6、向開(kāi)發(fā)尋求可測(cè)性支持
有時(shí)候,涉及到開(kāi)發(fā)過(guò)程的一些測(cè)試,也需要開(kāi)發(fā)提供可測(cè)性支持。
比如,要查看接口給另一個(gè)接口發(fā)的請(qǐng)求是否正確,可以讓開(kāi)發(fā)打印出完整的請(qǐng)求log,還有一些邏輯開(kāi)關(guān)、修改頁(yè)面數(shù)據(jù)條數(shù)等,都屬于可測(cè)性支持的范疇。
04、bug定位常用工具
Firefox——firebug、web developer、live http - headers、http fox
IE插件——httpwatch
第三方工具——fiddler
慢速網(wǎng)模擬工具——firefox throttle
05、如何區(qū)分前端/后端bug
為什么要區(qū)分前端/后端BUG?
如果是一個(gè)多人開(kāi)發(fā)的系統(tǒng),不能明確定位到這個(gè)bug是誰(shuí)造成的,容易提交給錯(cuò)誤的開(kāi)發(fā)人員。
同時(shí)提交給前后端開(kāi)發(fā)人員,每個(gè)人都會(huì)有依賴心理,bug會(huì)像皮球一樣被開(kāi)發(fā)踢來(lái)踢去,耽誤開(kāi)發(fā)解決bug的時(shí)間。
另外,如果團(tuán)隊(duì)規(guī)模較大,或者由各地的項(xiàng)目組拼湊而成,勢(shì)必會(huì)增加溝通成本,這更需要我們?cè)陬愃贫U道或者Jira等項(xiàng)目管理軟件中提交bug時(shí),先指明是誰(shuí)的bug,避免互相踢皮球的現(xiàn)象。
所以測(cè)試必須要自己學(xué)會(huì)區(qū)分出是前端還是后端bug,經(jīng)過(guò)bug分類處理,整個(gè)團(tuán)隊(duì)的效率都會(huì)有所提高。
前后端BUG各有什么樣的特點(diǎn)?
1、利用抓包工具來(lái)進(jìn)行分析
一般有httpwatch,firebug,fiddler,charles等抓包(數(shù)據(jù)包)工具。
httpwatch,firebug都是瀏覽器的插件,需要額外下載
fiddler,charles也需要額外下載安裝包另行安裝
還有一個(gè)簡(jiǎn)單實(shí)用的抓包工具,那就是瀏覽器的F12調(diào)試器
2、定位前端的bug
前端的bug通常是功能、界面和兼容性等有關(guān),涉及到j(luò)stl,jsp,js,css,html方面比較多。bug主要有兩塊:
JS相關(guān)
頁(yè)面
3、定位后端的bug
后臺(tái)涉及到servlet,jms,ejb,還有很多框架struts,hibernate,spring,ibatis等
bug 比較難改,但是好找,主要就是看控制臺(tái)報(bào)錯(cuò),然后定位錯(cuò)誤行號(hào)。如果配置文件沒(méi)有問(wèn)題,那么一般的報(bào)錯(cuò)就是空指針,或者是數(shù)組下標(biāo)越界??锤浇兞浚捶椒ǖ膮?shù)基本上都可以定位錯(cuò)誤。
06、定位完問(wèn)題后
在發(fā)現(xiàn)問(wèn)題或者定位到問(wèn)題原因后,一定要進(jìn)行一步,就是再次確認(rèn)問(wèn)題。所謂確認(rèn)問(wèn)題,就是弄清楚問(wèn)題是否每次都發(fā)生,還是概率事件,或者是工具相關(guān)的問(wèn)題:
比如換個(gè)瀏覽器是否依然出現(xiàn)?如果換個(gè)瀏覽器不出現(xiàn)的話,很可能就是前端的兼容性問(wèn)題。
比如翻頁(yè)控件,待測(cè)的系統(tǒng)有很多頁(yè)面都有翻頁(yè)控件,那么就要看下是否每個(gè)頁(yè)面都會(huì)出現(xiàn)這個(gè)問(wèn)題,進(jìn)而報(bào)bug時(shí)進(jìn)行統(tǒng)一說(shuō)明,也更加方便開(kāi)發(fā)人員批量處理,防止漏改。
最后感謝每一個(gè)認(rèn)真閱讀我文章的人,禮尚往來(lái)總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:
軟件測(cè)試面試小程序
被百萬(wàn)人刷爆的軟件測(cè)試題庫(kù)!?。≌l(shuí)用誰(shuí)知道?。?!全網(wǎng)最全面試刷題小程序,手機(jī)就可以刷題,地鐵上公交上,卷起來(lái)!
涵蓋以下這些面試題板塊:
1、軟件測(cè)試基礎(chǔ)理論 ,2、web,app,接口功能測(cè)試 ,3、網(wǎng)絡(luò) ,4、數(shù)據(jù)庫(kù)?,5、linux
6、web,app,接口自動(dòng)化 ,7、性能測(cè)試?,8、編程基礎(chǔ),9、hr面試題 ,10、開(kāi)放性測(cè)試題,11、安全測(cè)試,12、計(jì)算機(jī)基礎(chǔ)
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-683943.html
這些資料,對(duì)于【軟件測(cè)試】的朋友來(lái)說(shuō)應(yīng)該是最全面最完整的備戰(zhàn)倉(cāng)庫(kù),這個(gè)倉(cāng)庫(kù)也陪伴上萬(wàn)個(gè)測(cè)試工程師們走過(guò)最艱難的路程,希望也能幫助到你!???文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-683943.html
到了這里,關(guān)于軟件測(cè)試技術(shù)分享丨遇到bug怎么分析?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!