天天看點

出現難以解決的技術問題該如何分析原因?這裡給你提供兩種思路 。

在測試的時候,有時候經常會遇到一些難以複現的bug ,比如有的線上bug在少部分使用者那裡出現,但是自己複現卻是沒有問題的 ;亦或者是在測試環境上發現了一個偶現bug ,然後再複現就很難以找到了 ;亦或者是出現一個技術問題 ,像環境部署,明明部署的是沒有問題,按照正确的步驟來的,但是就是無法通路系統。

那麼,像這類問題它都屬于恢複性問題 ,就是正常情況下 ,它都是沒有問題的 ,但是在操作的過程中産生了某些微小變化導緻了問題的産生。如果沒有發生任何變化 ,則情況就保持不變 。這類問題往往需要找到問題産生的根因 ,也就是這個微小的變化在哪 ?是以這個微小的變化是分析問題根因的一個很重要因素 。

出現難以解決的技術問題該如何分析原因?這裡給你提供兩種思路 。

接下來介紹的兩種方法,都可以有效的找到問題原因 。它們分别是:構成條件法 和 差異對比法

1.構成條件法

所謂的構成條件法 ,就是一個功能要完成正常的操作,它所需要的構成條件,這些條件都是必要的,如果有一個條件不具備,那麼該功能就無法完成 。就比如通過xshell連接配接Linux伺服器的功能。若正常情況下,隻要有正确的連接配接資訊 ,你都能連接配接正常 。但是就是這個簡單連接配接操作 ,也依然會出現連接配接失敗的情況 ,連接配接失敗你也未必找到具體的原因。

就以上面的案例我們通過構成條件法來分析下 ,首先想要成功連接配接到伺服器 ,就必須具備兩個條件 :

  1. 必須要有正确的連接配接資訊 ,
  2. 網絡的連通性

以上兩個條件缺一不可 ,那如果連接配接失敗 ,我們就可以對這兩個條件逐一去排查 。

首先我們再次确認連接配接資訊輸入的是否正确 。

  • 連接配接的使用者名和密碼是否正确 ,因為有時候系統已經修改了密碼導緻了連接配接失敗 ,但是你不知道。
  • 連接配接ip位址是否正确 ,比如有的系統ip位址突然發生變化了 ,你還是拿之前的ip進行連接配接,那肯定失敗了 。
  • 端口号 ,這個一般不會變 ,不過也可以檢查下 。

通過以上的排查 ,你可能已經找到了問題的答案(原因) ,當然也可能排查了上面的情況但問題依然存在,那這種情況就繼續往下排查 。接下來就排查網絡的連通性 ,造成連通性不通的情況也可能有如下情況 ,可以進行逐一排查 。

  • 網絡是否聯網 ,因為有的時候,網絡中途斷開 ,我們也是不知道 ,這個時候可以先排查下網絡 。
  • 檢查防火牆是否啟用 ,如果啟用了防火牆 ,可以關閉或者加通行政策 。

通過以上的排查 ,你可能已經找到了問題的答案(原因) ,當然也可能排查了上面的情況但問題依然存在。

無論排查結果如何 ,通過條件分析法,就是通過分析它的構成條件,然後看它的構成的構成條件是否因為外部因素而發生了改變 。

如果此方法不能排查出問題的話 ,那麼接下來就可以考慮下面的方法 。

2.差異對比法

所謂的差異對比,就是通過和正常的條件/環境進行比較 ,找出它們之間的差異 ,從差異中在分析可能産生的原因,然後再進行驗證 。

同樣還是上面的案例 ,通過使用差異法進行比對的話 ,那麼就是找一套好的環境或者沒有問題的連結和它進行相比較 ,試圖找出差異 ,具體如下 。

觀察到的現象 比較對象 說明 驗證
xshell連接配接服務端失敗 使用同一台機器的putty連接配接正确 若還有問題說明主要問題還是xshell用戶端的操作的 。而且證明網絡也沒問題
本機的xshell連接配接失敗 其它同學的xshell能正确連結 若還有問題說明隻針對個人的xshell是有問題的 , 接下來驗證正确xshell和有問題xshell的版本,安裝方式等,
本機的xshell連接配接失敗 相同版本的xhsell進行安裝 若還有問題說明不是xshell的版本有問題 , 可能儲存的配置有問題 ,嘗試清除這些配置重新嘗試
本機的xshell連接配接失敗 删除配置後重新連接配接 若還有問題說明已經不是配置檔案導緻的了 , 接下來去了解xshell連接配接的内部邏輯 ,确定内部的連接配接步驟 。

在這個比較的過程中,你會發現一個現象,通過一個能正常操作的比較對象 ,然後一步步去進行比對 ,每進行一次比對都能排除一些原因 ,然後再找新的比對對象 ,它的範圍往往會更小 。也就是說每比對一次,範圍會縮小一次 ,但是越往後越難去找新的比對對象,因為越往後就越涉及到具體的細節了,往往都是你看不到的東西 。想要搞清楚,你甚至要了解軟體内部的業務邏輯 。

3.總結

通過以上的方法,可以大大的提高了我們定位問題的能力 ,但是有些問題已經涉及到了個人的技術知識盲區了,很多出錯的原因都是我們壓根就不知道的 。 是以,你最好還要結合百度來一起排查 ,盡量掃清你的知識盲區 。

最後 ,我們總結一下 ,針對一些難以複現的bug或者遇到的技術問題 ,找到根本原因很重要 。可以通過以下的思路進行開展 。

  1. 描述具體問題 ,通過不同的方法(構成條件法和差異比對法)來進行分析可能存在的原因(假設)
  2. 進行驗證假設 ,如果驗證結果符合你的預期 ,那麼根因也就找到了 ,到這裡就結束了。如若還不符合你的預期,繼續新的假設,繼續驗證 。依次循環此過程 。
  3. 總結原因并複盤分析過程 ,為下次分析提供一些經驗 。

繼續閱讀