前言
測(cè)試過程中伴隨很多問題的產(chǎn)出,比如程序缺陷、環(huán)境問題等,作為一個(gè)專業(yè)的測(cè)試人員,我們的任務(wù)應(yīng)該不是僅僅做到把問題丟出去給開發(fā),而是自己也要養(yǎng)成對(duì)問題的分析能力,進(jìn)一步提升自己對(duì)問題處理和系統(tǒng)的理解。下面會(huì)簡(jiǎn)單介紹日常測(cè)試問題(程序缺陷、環(huán)境問題)的分類和分析步驟。
寫在前面的話:不管遇到什么問題,首先進(jìn)行測(cè)試重現(xiàn),確認(rèn)非偶發(fā)后,按照以下步驟進(jìn)行分析;若為偶發(fā),則先記錄下來,測(cè)試時(shí)注意問題是否會(huì)規(guī)律發(fā)生。
一、程序缺陷分析
一般情況下,常見的程序缺陷可以分為這幾類:程序處理報(bào)錯(cuò)(拋異常),頁(yè)面JS報(bào)錯(cuò),業(yè)務(wù)邏輯錯(cuò)誤等。
1、程序處理報(bào)錯(cuò)(拋異常)
這類問題一般有這幾種表現(xiàn)形式:頁(yè)面直接輸出異常、頁(yè)面彈框提示、服務(wù)器打印異常日志。
1)頁(yè)面直接輸出異常是比較低級(jí)的處理方式,這種情況下我們是可以直接確認(rèn)為程序問題,即使是臟數(shù)據(jù)引起的異常,這種異常表現(xiàn)方式是需要進(jìn)行修復(fù)的。
2)頁(yè)面彈框提示,比較友好的情況下我們可以看出是什么操作或者控制出了問題,這時(shí)根據(jù)提示文字可以確定問題;如果僅僅彈出諸如“操作錯(cuò)誤”等指向不明的信息,需要保留現(xiàn)場(chǎng),將使用的數(shù)據(jù)和頁(yè)面狀態(tài)截圖留下。然后通過服務(wù)器上的日志來定位問題。
3)服務(wù)器打印異常日志,一般的系統(tǒng)都會(huì)記錄兩種日志,跟蹤日志和錯(cuò)誤日志。跟蹤日志可以記錄下在系統(tǒng)操作時(shí)的業(yè)務(wù)軌跡,錯(cuò)誤日志則記錄下系統(tǒng)出錯(cuò)時(shí)詳細(xì)的日志信息,登錄到服務(wù)器之后,用簡(jiǎn)單的指令可以得到對(duì)應(yīng)的日志,如tail -f xxxx.log(實(shí)時(shí)刷新日志),grep ‘xxxxxx’ xxx.log(在日志中抓取包含XXXXXX的日志上下文)。一般通過錯(cuò)誤日志可以直接定位到錯(cuò)誤發(fā)生的代碼行,可以更快速直接地解決問題。
2、頁(yè)面JS報(bào)錯(cuò)
這類問題一般多見于操作時(shí)未出現(xiàn)任何提示,但是沒有預(yù)期的響應(yīng)結(jié)果。通過F12按鍵打開控制臺(tái),切換到console模塊,如果有js報(bào)錯(cuò),這里可以直接看到,一般通過這些信息可以直接定位到出問題的代碼行。
還有一種是由于瀏覽器兼容性引起的問題,常見于IE瀏覽器edge以下的版本,但不局限于這種瀏覽器版本。在其他瀏覽器如chrome等表現(xiàn)正常,但在某一瀏覽器上頁(yè)面加載出現(xiàn)異常且無法正常操作,如果是IE,則通過F12按鍵打開控制臺(tái),在控制臺(tái)右上角查看是否瀏覽器版本過低,切換到edge,如果顯示正常,則是版本問題導(dǎo)致。
二、環(huán)境問題分析
環(huán)境問題會(huì)阻礙測(cè)試執(zhí)行,也會(huì)影響我們判斷一個(gè)問題是否是程序缺陷,所以對(duì)環(huán)境問題有基本的判斷和分析能力是必要的,有一定的了解之后我們也是可以著手去解決環(huán)境問題,避免等待耗費(fèi)寶貴的測(cè)試時(shí)間。
1、服務(wù)器異常(內(nèi)存溢出等)
當(dāng)出現(xiàn)服務(wù)器異常時(shí),頁(yè)面上會(huì)有比較固定的表現(xiàn),比如頁(yè)面404頁(yè)面500或者提示無響應(yīng)等,引起此類問題原因有很多種,常見的有系統(tǒng)部署、服務(wù)器內(nèi)存溢出等等。在前面我們已經(jīng)知道了怎么在服務(wù)器查看日志,這里是類似的,先在服務(wù)啟動(dòng)日志里查看是否正在執(zhí)行重啟,如果沒有部署,則查看錯(cuò)誤日志或跟蹤日志,人為刷新一下系統(tǒng),查看實(shí)時(shí)產(chǎn)生的日志,是否有異常信息諸如out of memory、target not exist、fail to response等,則可能是服務(wù)器出了異常,需要進(jìn)行重啟或者進(jìn)一步問題定位。
2、數(shù)據(jù)庫(kù)異常
如果服務(wù)器并無異常,則需查看數(shù)據(jù)庫(kù)連接是否正常,一般直接本地連接一下數(shù)據(jù)庫(kù)即可知曉?;蛘咄ㄟ^上述服務(wù)器日志查詢過程,一般可以看到數(shù)據(jù)庫(kù)連接異常,也可定位到問題。重啟數(shù)據(jù)庫(kù)或者重啟數(shù)據(jù)庫(kù)所在的服務(wù)器可以解決問題,但是需先確認(rèn)數(shù)據(jù)庫(kù)及服務(wù)器是否有其他用途,溝通后再執(zhí)行重啟。
3、部署包、配置文件問題
如果上述現(xiàn)象都沒有出現(xiàn),那還有可能是部署包或者配置文件出現(xiàn)問題。重啟系統(tǒng),然后在啟動(dòng)日志中,可以看到相關(guān)的異常日志,如部署包不存在、配置文件找不到某個(gè)配置、配置項(xiàng)出現(xiàn)語法錯(cuò)誤等,因?yàn)榇虬l(fā)布一般是通過指令拷貝到服務(wù)器上,在這中間可能出現(xiàn)問題導(dǎo)致包沒有同步過去,此時(shí)需要重新部署包。配置文件中的很多配置項(xiàng)目跟系統(tǒng)啟動(dòng)息息相關(guān),如果缺失或者格式錯(cuò)誤,會(huì)引起系統(tǒng)運(yùn)行異常。
三、數(shù)據(jù)問題分析
數(shù)據(jù)是測(cè)試的重要組成部分,但是大部分測(cè)試環(huán)境由于長(zhǎng)期的大量測(cè)試執(zhí)行,會(huì)積累不少錯(cuò)誤數(shù)據(jù),也是引發(fā)問題的一個(gè)重要方面。當(dāng)執(zhí)行用例后沒有達(dá)到預(yù)期結(jié)果,我們還需要確認(rèn)下自己使用的數(shù)據(jù)是干凈完整的。
1、如果是自己新做的數(shù)據(jù),先檢查下數(shù)據(jù)庫(kù)中相關(guān)字段是否已有值并且寫入的值正確,確認(rèn)是否做數(shù)據(jù)過程中系統(tǒng)存在BUG導(dǎo)致數(shù)據(jù)錯(cuò)誤;如果數(shù)據(jù)在庫(kù)里是正確的,那么根據(jù)上述第一、第二大點(diǎn)進(jìn)行繼續(xù)排查,過程中記得保存數(shù)據(jù)及操作截圖。
2、如果是從系統(tǒng)或數(shù)據(jù)庫(kù)直接找的歷史數(shù)據(jù),先確認(rèn)該數(shù)據(jù)是否符合當(dāng)前系統(tǒng)的邏輯,因?yàn)樵摂?shù)據(jù)可能不包含現(xiàn)有功能需要的字段,或者數(shù)值不符合當(dāng)前的要求,從而導(dǎo)致變成了臟數(shù)據(jù)影響測(cè)試結(jié)果;再則是確認(rèn)數(shù)據(jù)庫(kù)中相關(guān)字段是否已有值并且寫入的值正確。
3、還有一種情況是系統(tǒng)權(quán)限問題,配置不正確也會(huì)導(dǎo)致問題。如果系統(tǒng)有明確的權(quán)限劃分,角色、菜單、數(shù)據(jù)讀取限制等,出現(xiàn)操作錯(cuò)誤時(shí),檢查當(dāng)前用戶是否具備對(duì)應(yīng)的權(quán)限。